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

Creating training set from multiple images in Haar Cascade

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

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

haar-classifier 非常适合快速检测一个 class 相似的对象,如 opencv 文档 http:// docs.opencv.[=17= 中所述。 ].4/modules/objdetect/doc/cascade_classification.html.例如,opencv 存储库 (https:// github.com/opencv/opencv) 有一个 classifier 列表 (https:// github.com/opencv/opencv/ tree/master/data/haarcascades) 针对特定 classes 对象进行训练。

除非要检测的对象相似(例如具有不同特征的面孔或不同品牌和型号的汽车),使用 class 每个水果的过滤器训练会更有效 - 例如,香蕉、橙子、芒果ETC。,。

要基于多个正样本图像创建训练向量(以及对于 haar-classifier 训练的任何其他方面,我推荐步骤 here - steps 5 and 6 - and the details covered at http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html。在您的情况下,正图像应包括所有类型的香蕉、橙子、芒果等,包括颜色变化等。

如果你想用同一种水果的不同变体来训练分类器,你可以从多个图像生成训练样本,如here所述。

但是,请注意 Haar 分类器在灰度下工作,很难保证区分红色和黄色香蕉等对象。

如果你想在一个分类器中使用多个 类,我推荐 YOLO (You Only Look Once) or SSD(单发多盒检测器)。