我正在尝试使用OpenCV中的Haar级联来检测图像中的特定对象。
假设我对检测风景图像中的停止标志感兴趣。为我的训练集定义正像样本时,这将是最好的图像:(a)我的对象的完整图像,(b)中等作物或(c)紧缩作物?
同样,对负面图像最好的是什么?这会影响过度拟合吗?我还要感谢那些有经验的人提供的其他一般性建议。感谢。
图片参考:http://kaitou-ace.deviantart.com/art/Stop-sign-on-a-country-road-Michigan-271990933
答案 0 :(得分:3)
您只需要在阳性样本中检测要检测的功能。所以C图像对于阳性样本是正确的。
对于负面样本,你想要其他一切。虽然如果您在特定环境中使用探测器,这显然是不现实的,那么进行训练以检测为负是正确的方法。即许多风景照片(没有停止标志的照片)
答案 1 :(得分:2)
最好的选择是(c)因为(a)和(b)包含太多的特征,所有特征都在标志的边界附近,对你来说并不感兴趣。
它们不仅无用,而且会严重影响算法的性能
在情况(c)中,其目的是识别在当前窗口中存在您正在寻找的特征的情况。
但是(b)和(c)呢?
在这些情况下,算法必须检测窗口一角的有趣特征(不幸的是,角落可能无处不在),同时与该角落周围可能发生的所有无限可能性保持一致。
你需要大量的样本,无论如何,即使你最终设法获得可接受的命中率,分离正面和负面的工作也是如此困难,以至于运行时间非常长。
对于底片收集,理想情况下,您应该选择能够重现您认为最终探测器所针对的图像的图像。
例如,如果您认为室内图像对此不感兴趣,请将其丢弃。如果您认为探测器将会运行某种类型的景观,请保留大部分景观
但这只是理论上的,我觉得改进是可以忽略不计的。只收集尽可能多的图像,不同图像的数量,这真的很重要。