所以我看到了很多关于 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 参数相比,正样本的长宽比必须有多精确匹配?我的意思是,分类器是否非常敏感,即使这里或那里有几个像素的偏差也会影响其性能?或者您会说,只要图像的肉眼观察比例大致相同,处理图像就是安全的。
我已经将几张图像裁剪为相同的尺寸。但在尝试使它们全部具有相同大小时,其中一些的边界框中包含的背景比其他的多一些,有些的边距略有不同。 (例如,参见下面的两张图片。较大的汽车占据了更多的图像,但较小的汽车周围有更宽的边距)。我只是想知道拥有这样的图像集合是否可以,或者它是否会降低分类器的准确性,因此我应该确保所有感兴趣的对象(在本例中为汽车)周围有更紧密的边界框?
第一个问题:是的,所有用于训练的图像必须具有相同的大小。 (至少我上次做人脸检测样本训练,这里应该是一样的。如果我没记错的话,如果图像大小不一样的话,就会出现错误。但是你可以尝试一下,看看时间是否正确)允许。)
第二个问题:不太确定你在这里问什么。但分类器并不像你想象的那么敏感。距离感兴趣的对象有几个像素,例如手,如果小指缺少几个像素(由于裁剪)并且其他图像缺少拇指的几个像素,等等......分类器仍然会能够检测到手。因此,各处缺少一些像素或添加一些背景像素,最终不会对分类器产生太大影响。
第三个问题:您应该将图像裁剪为仅包含汽车以获得最佳效果。尝试消除尽可能多的背景。我基于噪声背景、黑色背景和最小背景的裁剪样本进行了一项研究。据我所知,具有最小背景的裁剪样本在假阳性和假阴性方面显示了最佳结果。
你可以使用对象标记来做到这一点: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 级联相比,有更好的检测方法。图像的训练可能需要几天的时间(取决于训练的图像数量)。如果您确实必须使用级联方法并且希望最大限度地减少训练时间,
使用类似 Haar 的特征进行训练比使用 HoG 或 LBP 需要更长的时间。但就结果而言,我不太确定哪种方法可以确保更好的性能和稳健性。
希望我的回答对你有帮助。如果还有更多问题,请评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)