首页 > 解决方案 > 在为语义分割训练深度学习模型时,处理背景像素类 (ignore_label) 的最佳方法是什么?

问题描述

我正在尝试在具有 20 个“有用”语义类和一堆可以忽略的背景类(例如天空、自我车辆、山脉、路灯)的城市景观数据集上训练UNET模型。为了训练模型忽略这些背景像素,我在互联网上使用了以下流行的解决方案:

  1. 我为属于忽略类的所有像素分配一个公共ignore_label(例如:)ignore_label=255
  2. cross_entropy使用每个像素预测的损失训练模型
  3. 在损失中提供ignore_label参数cross_entropy,因此计算的损失会忽略具有不必要类别的像素。

但是这种方法有一个问题。一旦经过训练,模型最终会将这些背景像素分类为属于 20 个类别之一。这是预期的,因为我们不会因为模型对背景像素所做的任何分类而惩罚模型。

因此,第二个明显的解决方案是为所有背景像素使用一个额外的类。因此它是城市景观中的第 21 类。但是,在这里我担心我会通过教它对这个额外的不必要的类进行分类来“浪费”我的模型的能力。

处理背景像素类的最准确方法是什么?

标签: tensorflowmachine-learningdeep-learningpytorchsemantic-segmentation

解决方案


绝对第二种解决方案是更好的解决方案。这是最好的解决方案,背景类绝对是附加类,但不是不必要的,因为这样可以在您要检测的类和背景之间有明显的区别。

事实上,这是分割中推荐的标准程序,将类分配给背景,其中背景当然代表除特定类之外的所有其他内容。


推荐阅读