如何训练Tensorflow目标检测模型以识别不包含物体的图像?

10

我正在使用Tensorflow的目标检测功能训练一个物体检测网络。

https://github.com/tensorflow/models/tree/master/research/object_detection

我可以成功地基于自己的图像和标签训练网络。然而,我有一个包含没有任何标记对象的大型图像数据集,并且我想要训练网络以在这些图像中不检测任何内容。
据我了解,使用Tensorflow目标检测,我需要提供一组图像和相应的XML文件来框定并标记图像中的对象。脚本将XML转换为CSV,然后再转换为另一种格式进行训练,并且不允许没有对象的XML文件。
如何提供没有对象的图像和XML文件?
或者,网络如何学习什么不是对象?
例如,如果您想检测“热狗”,则可以使用一组带有热狗的图像进行训练。但是如何训练它不是热狗的内容呢?

似乎这是与我们从https://github.com/datitran/raccoon_dataset使用的脚本有关的问题,它们将ImageNet XML文件转换为csv,然后转换为tf-records。我会看看能否修复这些脚本,假设tf-records可以在没有对象的情况下进行训练? - James
我们最终修复了脚本,以支持在转换为csv和tfrecords时处理空的xml文件。我们还创建了一个脚本,用于生成一个没有对象的图像集的空xml文件。 - James
你能告诉我们如何解决这个问题吗? - Vikram
2个回答

8
一种物体检测卷积神经网络可以通过让它看到没有标签的图像示例来学习什么不是物体。
有两种主要的架构类型:
1. 两阶段,第一阶段是对象/区域提议(RPN),第二阶段是分类和边界框微调; 2. 单阶段,直接根据特征向量对应于特定单元格中的特征映射来分类和回归BB。
无论哪种情况,都有一个负责决定什么是对象和什么不是对象的部分。在RPN中,你有“objectness”得分,在单阶段中,通常有分类的置信度,其中通常有一个背景类别(即不支持的所有类别)。
因此,在这两种情况下,如果图像中的特定示例没有任何受支持的类别,则教授CNN降低对象性得分或相应地增加背景置信度。

1
感谢提供信息。来自 https://github.com/tensorflow/models/tree/master/research/object_detection 的 Python 脚本不允许图像的 XML 文件没有对象,因此这只是一个脚本问题。 - James

3
你可能需要查看这个解决方案。为了使tensorflow目标检测API包括负例,你需要将负例添加到从xml创建的csv文件中,可以通过修改生成csv文件的脚本或在之后添加示例来实现。使用LabelImg生成没有类标签的xml文件,可以通过按“验证图像”按钮完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接