tensorflow - 在为语义分割训练深度学习模型时,处理背景像素类 (ignore_label) 的最佳方法是什么?
问题描述
我正在尝试在具有 20 个“有用”语义类和一堆可以忽略的背景类(例如天空、自我车辆、山脉、路灯)的城市景观数据集上训练UNET模型。为了训练模型忽略这些背景像素,我在互联网上使用了以下流行的解决方案:
- 我为属于忽略类的所有像素分配一个公共
ignore_label
(例如:)ignore_label=255
cross_entropy
使用每个像素预测的损失训练模型- 在损失中提供
ignore_label
参数cross_entropy
,因此计算的损失会忽略具有不必要类别的像素。
但是这种方法有一个问题。一旦经过训练,模型最终会将这些背景像素分类为属于 20 个类别之一。这是预期的,因为我们不会因为模型对背景像素所做的任何分类而惩罚模型。
因此,第二个明显的解决方案是为所有背景像素使用一个额外的类。因此它是城市景观中的第 21 类。但是,在这里我担心我会通过教它对这个额外的不必要的类进行分类来“浪费”我的模型的能力。
处理背景像素类的最准确方法是什么?
解决方案
绝对第二种解决方案是更好的解决方案。这是最好的解决方案,背景类绝对是附加类,但不是不必要的,因为这样可以在您要检测的类和背景之间有明显的区别。
事实上,这是分割中推荐的标准程序,将类分配给背景,其中背景当然代表除特定类之外的所有其他内容。
推荐阅读
- python - Pandas - 向量化“下一时间范围内列中的任何元素为真”
- makefile - 具有多个目标的 Makefile 规则,用于单次调用
- python - PyQt5 线程化 Selenium 脚本
- php - ini 文件无法解析为数组
- angular - “错误类型错误:无法读取未定义的属性'名称'”Angular
- c# - JSON.NET - 在复杂对象中通过值正则表达式查找 JObject?
- apache-spark - SparkSQL Windows:基于数组列创建框架
- angular - 用户登录后重定向到受保护的路由不起作用 - Angular 应用
- azure-data-explorer - Azure 数据资源管理器 Kusto:按日期时间进行分组
- r - 如何在 R 中直接显示路径视图图(而不是保存为文件)?