训练语义分割深度学习模型时,如何最好地处理背景像素类别(ignore_label)?

我正在尝试在cityscapes数据集上训练一个UNET模型,该数据集有20个“有用”的语义类别,还有一些可以忽略的背景类别(例如天空、自车、山脉、路灯)。为了训练模型忽略这些背景像素,我在网上使用了以下常见解决方案:

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

但这种方法存在一个问题。一旦训练完成,模型最终会将这些背景像素分类为20个类别中的一个。这是可以预见的,因为在损失中我们没有对模型对背景像素的任何分类进行惩罚。

因此,第二个显而易见的解决方案是为所有背景像素使用一个额外的类别。因此,它是cityscapes中的第21个类别。然而,我担心这样做会“浪费”模型的容量,因为它需要学习分类这个额外的不必要类别。

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


回答:

第二种解决方案无疑是更好的。这是最佳解决方案,背景类别确实是一个额外的类别,但不是不必要的,因为这样可以清楚地区分你想要检测的类别和背景。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注