【问题标题】:How to train Tensorflow Object Detection images that do not contain objects?如何训练不包含对象的 TensorFlow 对象检测图像?
【发布时间】:2019-04-12 11:00:34
【问题描述】:

我正在使用 Tensorflow 的对象检测训练一个对象检测网络,

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

我可以根据自己的图像和标签成功训练网络。 但是,我有一个不包含任何标记对象的大型图像数据集,我希望能够训练网络不检测这些图像中的任何内容。

根据我对 Tensorflow 对象检测的理解,我需要为其提供一组图像和相应的 XML 文件,用于对图像中的对象进行框和标记。脚本将 XML 转换为 CSV,然后再转换为另一种训练格式,并且不允许 XML 文件没有对象。

如何给出没有对象的图像和XML文件?

或者,网络如何学习什么不是对象?

例如,如果您想检测“热狗”,您可以使用一组带有热狗的图像对其进行训练。但是如何训练它什么不是热狗呢?

【问题讨论】:

  • 似乎这是我们从 github.com/datitran/raccoon_dataset 使用的脚本的问题,他们将 ImageNet XML 文件转换为 csv,然后转换为 tf-records,我会看看我是否可以修复脚本,假设tf-records 可以在没有对象的情况下进行训练吗?
  • 我们最终修复了脚本以在转换为 csv 和 tfrecords 时支持空 xml 文件。我们还创建了一个脚本,为图像集(无对象)生成一个空的 xml 文件

标签: python tensorflow deep-learning object-detection object-detection-api


【解决方案1】:

对象检测 CNN 可以通过查看没有任何标签的图像示例来了解什么不是对象。

有两种主要的架构类型:

  1. 两阶段,第一阶段对象/区域建议(RPN),第二阶段 - 分类和边界框微调;
  2. one-stage,直接根据特征图中某个cell对应的特征向量对BB进行分类和回归。

在任何情况下,都有一部分负责决定什么是对象,什么不是。在 RPN 中,您有“objectness”分数,在一个阶段中,有分类的置信度,通常是背景类(即所有不支持的类)。

因此,在这两种情况下,如果图像中的特定示例没有任何受支持的类,您可以教 CNN 相应地降低对象性分数或增加背景置信度。

【讨论】:

【解决方案2】:

您可能想看看this solution

为了让 tensorflow 对象检测 API 包含您的负面示例,您需要将负面示例添加到您从 xml 创建的 csv 文件中,方法是修改生成 csv 文件的脚本或在之后添加示例.

要使用LabelImg 生成没有类标签的 xml 文件,您可以通过按“验证图像”来执行此操作。

【讨论】:

    猜你喜欢
    • 2021-02-17
    • 2018-12-07
    • 2019-06-28
    • 1970-01-01
    • 2018-05-15
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多