在Haar Cascade中创建多个图像的训练集

时间:2017-08-27 05:20:34

标签: python-2.7 python-3.x haar-classifier cascade-classifier

我目前正致力于检测给定图像中的多个水果。例如,给定的图像可以有水果,如香蕉(如黄色,红色和绿色),芒果,橙子等。我能够使用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文件作为输出从多个图像创建训练集?

是否有其他方法可以检测给定图像中的多个水果?

2 个答案:

答案 0 :(得分:1)

haar-classifier非常适合快速检测一类类似的外观对象,如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),这些分类器是针对特定类别的对象。

除非要检测的物体相似(如具有不同特征的面部或不同品牌和型号的车辆),否则每个水果的分类器(例如香蕉,橙子,芒果等)的训练会更​​有效。

要创建基于多个正样本图像的训练向量(并且对于哈尔分类器训练的任何其他方面,我建议步骤here - 步骤5和6 - 以及{ {3}}。在您的情况下,正面图像应包括所有类型的香蕉,橙子,芒果等,包括颜色的变化等。

答案 1 :(得分:1)

如果您想训练具有相同水果的不同变体的分类器,您可以按照here所描述的多个图像生成训练样本。

但是,请注意Haar分类器在灰度级工作,很难保证红色和黄色香蕉等物体之间的区别。

如果您想在一个分类器中使用多个类,我建议YOLO(您只需查看一次)或SSD(单镜头多盒检测器)。