【问题标题】:Creating training set from multiple images in Haar Cascade在 Haar Cascade 中从多个图像创建训练集
【发布时间】:2018-02-04 17:09:29
【问题描述】:
我目前正在检测给定图像中的多个水果。例如,给定的图像可以有香蕉(如黄色、红色和绿色)、芒果、橙子等水果。我能够使用opencv_createsamples 一次只创建一张图片的训练集。
示例代码:
C:\opencv\build\x64\vc14\bin\opencv_createsamples.exe -img redbanana.jpg -bg bg.txt -info info/info.lst -pngoutput info -maxxangle 0.5 -maxyangle 0.5 -maxzangle 0.5 -num 100
类似地,我已经为大约 5 个水果创建了单独的 vec 文件。很难为每种水果创造。是否有可能使用单个 vec 文件作为输出从多个图像创建训练集?
还有其他方法可以检测给定图像中的多个水果吗?
【问题讨论】:
标签:
python-2.7
python-3.x
haar-classifier
cascade-classifier
【解决方案1】:
haar 分类器非常适合快速检测一类外观相似的对象,如 opencv 文档 http://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html 中所述。例如,opencv 存储库(https://github.com/opencv/opencv)有一个分类器列表(https://github.com/opencv/opencv/tree/master/data/haarcascades)为特定类训练对象。
除非要检测的对象是相似的(例如具有不同特征的人脸或不同品牌和型号的汽车),使用每个水果(例如香蕉、橙子、芒果等)分类器进行训练会更有效。
要创建基于多个正样本图像的训练向量(以及对于 haar 分类器训练的任何其他方面,我建议使用步骤 here - 步骤 5 和 6 - 以及 http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html 中介绍的详细信息。在您的情况,正面图像应包括所有类型的香蕉、橙子、芒果等,包括颜色变化等。
【解决方案2】:
如果您想用同一水果的不同变体训练分类器,您可以按照here 的描述从多张图像中生成训练样本。
但是,请注意,Haar 分类器以灰度工作,很难保证区分红色和黄色香蕉等对象。
如果您想在一个分类器中包含多个类,我推荐YOLO(You Only Look Once)或SSD(Single Shot multibox Detector)。