所以我遇到过很多关于OpenCV的haartraining和级联培训工具的教程。特别是我有兴趣使用createsamples工具训练汽车分类器,但是关于-w和-h参数的地方似乎存在冲突的陈述,所以我很困惑。 我指的是命令:
$ createsamples -info samples.dat -vec samples.vec -w 20 -h 20
我有以下三个问题:
我知道正样本的宽高比应该与上面的-w和-h参数的宽高比相同。但是,所有正样本的-w和-h参数是否必须与 size 相同?例如。我有接近1000张图片。裁剪后所有这些都必须是相同的尺寸吗?
如果不是大小而是纵横比,那么与OpenCV工具中提到的-w和-h参数相比,正面样本的纵横比必须精确匹配吗?我的意思是,分类器是非常敏感的,所以即使是这里和那里的几个像素也会影响它的性能?或者你会说使用图像是安全的,只要它们的眼睛比例大致相同。
我已经裁剪了几张相同尺寸的图像。但是在尝试使它们具有相同的大小时,它们中的一些在边界框中包含的背景比其他的更多,并且一些具有略微不同的边缘。 (例如,请看下面的两张图片。较大的汽车占据了更多的图像,但是较小的汽车周围有更宽的余量)。我只是想知道是否有这样的图像集是好的,或者它是否会降低分类器的准确性,因此我应该确保所有感兴趣的对象(在这种情况下,汽车)周围更紧的边界框?/ p>
答案 0 :(得分:4)
第一个问题:是的,用于训练的所有图像必须大小相同。 (至少我最后一次面对检测样本训练。这里应该是一样的。如果我没有错,如果图像大小不一样会有错误。但你可以尝试一下,看看时间许可证。)
第二个问题:不确定你在这里问的是什么。但是分类器并不像你想的那么敏感。离开感兴趣对象的几个像素,例如,如果小手指缺少几个像素(由于裁剪)而其他图像的拇指缺少像素等等,那么分类器仍将是能够检测到手。因此,这里和那里缺少一些像素或者添加了一些背景像素,在一天结束时不会对分类器造成太大影响。
第三个问题:您应该将图像裁剪为仅包含汽车以获得最大效果。尽量消除尽可能多的背景。我根据具有背景噪音,黑色背景和背景最小的裁剪样本的样本进行了研究。根据我的记忆,具有最小背景的裁剪样本在假阳性和假阴性方面显示出最佳结果。
您可以使用对象标记来执行此操作:http://achuwilson.wordpress.com/2011/02/13/object-detection-using-opencv-using-haartraining/
繁琐的方法是在裁剪后使用paint将所有图像的大小调整为相同的像素值。
此链接还应回答您的问题:http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html
我同意GilLevi的观点,与Haar,HoG,LBP级联相比,有更好的检测方法。图像的训练可能需要数天(取决于训练的图像数量)。如果您真的必须使用级联方法,并且您希望尽可能减少培训时间, 与HoG或LBP相比,具有类Haar功能的训练需要更长的时间。但结果明智,我不确定哪个会确保更好的性能和稳健性。
希望我的回答对你有所帮助。如果还有更多问题,请做出评论。