我正在训练一个带有面罩rcnn的物体探测器,我尝试了几种减少误报的方法。我从带有边界框的物体图像的几千个例子开始,训练得到了不错的结果,但是当运行不包含该物体的图像时,往往会获得高度自信的错误匹配(有时候.99) )。
我尝试的第一件事是在配置文件中添加硬件示例矿工。我相信我这样做是因为我添加了一个print语句以确保创建对象。然而,对于更快的rcnn而言,没有一个配置具有硬性示例挖掘。所以我怀疑矿工只能正常使用ssd。我希望通过一个难以驾驭的矿工获得显着改善,但我没有看到它
我尝试的第二件事是添加"背景"图片。我在硬示例矿工配置中将最小负数设置为非零值,并添加了大量的背景图像,这些背景图像先前作为培训的一部分进行了错误检测。我甚至将这些图像添加到tfrecords文件中,以便与具有该对象的图像均匀地平衡。这种方法实际上使事情变得更糟 - 并且给了我更多的错误检测
我尝试的最后一件事是创建另一个类别,名为" object-background"并将所有错误的比赛分配给这个新类别。这种方法效果很好,但我将其视为黑客。
我想总结一下我的主要问题是 - 在当前的tensorflow对象检测框架中减少误报的最佳方法是什么? SSD是否会成为一种更好的方法,因为在配置中默认情况下它内置了一个硬件示例矿工?
感谢
答案 0 :(得分:1)
经过更多的研究,我实际上能够以更快的rcnn工作来获得坚硬的示例矿工。我有一个错误,实际上没有将背景图像插入到tf记录文件中。
我认为在训练单个对象检测器(一个模型的类别)时,如果要获得良好的精度/召回率,添加背景图像至关重要。如果您只有几千个对象的示例,那么对于模型来说,几乎没有足够的图像来学习您实际在为应用程序使用模型时将发送的所有各种背景噪声