3

所以我遇到了很多关于OpenCV的haartraining和级联培训工具的教程。特别是我有兴趣使用createsamples工具来训练一个汽车分类器,但是关于-w和-h参数的地方似乎存在冲突的声明,所以我很困惑。 我指的命令:OpenCV正面样本维度?

$ createsamples -info samples.dat -vec samples.vec -w 20 -h 20 

我有以下三个问题:

  • 据我了解,阳性样品的纵横比应该是一样的纵横比你从上面的-w和-h参数。但是,所有阳性样本的-w和-h参数是否必须与大小相同?例如。我有近1000张图片。他们都必须在种植后的大小相同吗?

  • 如果它不是尺寸,但纵横比是重要的,那么与OpenCV工具中提到的-w和-h参数相比,正确样本的纵横比必须有多高精度匹配?我的意思是,分类器是非常敏感的,所以即使几个像素在这里和那里会影响其性能?或者你会说,只要眼睛的比例大致相同,就可以安全地使用图像。

  • 我已经裁剪几个图像到相同的大小。但为了使它们的尺寸完全相同,其中一些包围在边框中的背景比其他一些更多,而另一些则具有略微不同的边缘。 (例如,请参阅下面的两张图片:较大的汽车占据了更多的图像,但较小的汽车周围有较宽的边距)。我只是想知道是否有像这样的图像集合是好的,或者它会降低分类器的准确性,因此我应该确保围绕所有感兴趣的对象(在这种情况下是汽车)更紧的边界框?

big carsmall car

+0

我只能评论说,有更好的汽车检测方法比haar/LBP级联更好。 – GilLevi

+0

嗯,我不能帮助,因为我已经被雇用遵循这种方法,但是您认为什么是更好的方法呢? – user961627

+0

latent-svm-detector。你可以很快得到它,它会给出更好的结果。 – GilLevi

回答

3

第一个问题:是的,可以使用所有的图像进行培训已成为大小相同。 (至少在最后一次我做了面部检测样本训练,在这里应该是一样的,如果我没有错,如果图像尺寸不一样,会出现错误,但是你可以试试看看是否有时间许可证。)

第二个问题:不太确定你在这里问什么。但分类器并不像你想象的那样敏感。距离感兴趣的对象几个像素,比如说手,如果小指缺少几个像素(由于裁剪),并且其他图像对于拇指缺少少许像素,则分类器将仍然是能够检测到手。因此,在这里和那里缺少几个像素或添加了几个背景像素,在一天结束时不会影响分类器。

第三个问题:您应该裁剪图像以使其仅由最大效果组成。尽量消除尽可能多的背景。我做了一个基于具有嘈杂背景,黑色背景和最小背景裁剪样本的样本的研究。从我所记得的情况来看,在背景最小的情况下裁剪出的样本在假阳性和假阴性方面显示出最好的结果。

U可以使用对象标记来做到这一点:http://achuwilson.wordpress.com/2011/02/13/object-detection-using-opencv-using-haartraining/

繁琐的方法是使用涂料来调整所有的图像以相同的像素值裁剪后。

这个链接也应该回答你的问题:http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html

我也同意GilLevi有比较哈尔,豕,LBP级联更好的检测方法。培训图像可能需要数天时间(取决于训练图像的数量)。如果您真的需要使用级联方法,并且您希望尽量减少训练时间,那么使用Haar-like特征进行训练比使用HoG或LBP需要更长的训练时间。但结果明智,我不确定哪个能确保更好的性能和稳健性。

希望我的回答对你有帮助。如果还有更多问题,请发表评论。

+0

谢谢...我在这里有另一个问题:http://stackoverflow.com/questions/21401827/building-positive-samples-for-rotated-images-for-cascaded-training- in-opencv,有什么想法? – user961627

+0

当然。我看看......这里的答案确实帮助你了吗?它基于我在分类器培训大约2年的经验。 – rockinfresh

+0

哦,是的,绝对有帮助! – user961627