我是否应该包括 Tensorflow 对象检测的负面示例 API?
Should I include negative examples for Tensorflow object detection API?
我正在使用Tensorflow's object detection API构建一个RCNN检测网络。
我的目标是检测户外视频中动物的边界框。大多数框架没有动物,只是动态背景。
大多数教程都专注于训练自定义标签,而没有提及负面训练样本。这些 class 检测器如何处理不包含感兴趣对象的图像?它只是输出一个低概率,还是会强制尝试在图像中绘制边界框?
我目前的计划是在opencv中使用传统的背景减法来生成潜在的帧并将它们传递给经过训练的网络。我还应该包括 class 个 'background' 个边界框作为 'negative data' 吗?
最后的选择是使用 opencv 进行背景减除,使用 RCNN 生成边界框,然后使用作物的class化模型来识别动物与背景。
如果您希望您的模型能够区分 "found a figure" 和 "no figure",那么您几乎肯定需要在负样本上对其进行训练。将这些标记为 "no image"。在"no image"情况下,是的,使用整个图像作为边界框;不要建议模型识别任何更小的东西。
在 "no image" 情况下,您 可能 得到一个较小的边界框,但这没关系:在推理中,您将简单地忽略返回的任何框"no image".
当然,这里的关键问题是尝试一下,看看它对你的效果如何。
一般来说,没有必要明确包含 "negative images"。在这些检测模型中发生的事情是,它们使用图像中不属于带注释对象的部分作为底片。
我通过扫描我的地面实况找到了成功,复制框区域加上边距,然后将这些框区域的平铺粘贴到新的背景图像上(保证没有对象),并创建相应的 XML带有框类别断言的文件。
我将非对象收集为 "uncategorised" 个盒子 - 通常来自我最新模型输出中的故障。这些是平铺的(就像 "is-objects")但不会在 XML 文件中更新。
我生成各种比例的切片来构建每个新的训练集。
这里有进一步的解释和示例 python 代码:
https://github.com/brentcroft/ground-truth-productions
我正在使用Tensorflow's object detection API构建一个RCNN检测网络。
我的目标是检测户外视频中动物的边界框。大多数框架没有动物,只是动态背景。
大多数教程都专注于训练自定义标签,而没有提及负面训练样本。这些 class 检测器如何处理不包含感兴趣对象的图像?它只是输出一个低概率,还是会强制尝试在图像中绘制边界框?
我目前的计划是在opencv中使用传统的背景减法来生成潜在的帧并将它们传递给经过训练的网络。我还应该包括 class 个 'background' 个边界框作为 'negative data' 吗?
最后的选择是使用 opencv 进行背景减除,使用 RCNN 生成边界框,然后使用作物的class化模型来识别动物与背景。
如果您希望您的模型能够区分 "found a figure" 和 "no figure",那么您几乎肯定需要在负样本上对其进行训练。将这些标记为 "no image"。在"no image"情况下,是的,使用整个图像作为边界框;不要建议模型识别任何更小的东西。
在 "no image" 情况下,您 可能 得到一个较小的边界框,但这没关系:在推理中,您将简单地忽略返回的任何框"no image".
当然,这里的关键问题是尝试一下,看看它对你的效果如何。
一般来说,没有必要明确包含 "negative images"。在这些检测模型中发生的事情是,它们使用图像中不属于带注释对象的部分作为底片。
我通过扫描我的地面实况找到了成功,复制框区域加上边距,然后将这些框区域的平铺粘贴到新的背景图像上(保证没有对象),并创建相应的 XML带有框类别断言的文件。
我将非对象收集为 "uncategorised" 个盒子 - 通常来自我最新模型输出中的故障。这些是平铺的(就像 "is-objects")但不会在 XML 文件中更新。
我生成各种比例的切片来构建每个新的训练集。
这里有进一步的解释和示例 python 代码: https://github.com/brentcroft/ground-truth-productions