OpenCV Haar分类器:培训过早停止

时间:2018-10-17 13:50:15

标签: opencv face-detection haar-classifier

我一直在尝试训练图像数据库以使用Haar级联来检测人脸。我做了2次尝试:

1)我已经使用以下数据库获取正面图像:  http://robotics.csie.ncku.edu.tw/Databases/FaceDetect_PoseEstimate.htm#Our_Database_(6660张图像)  对于负片图像,我使用了此数据库:  https://github.com/sonots/tutorial-haartraining/tree/master/data/negatives(3300张图片)

我已使用此命令来训练样本: opencv_createsamples -info info.dat -vec samples2.vec -w 32 -h 24 -num 6660

我已经使用此命令来训练数据: opencv_traincascade -data ./classifier3 -vec samples2.vec -bg bg.txt -numPos 6000 -numNeg 12000 -numStages 30 -precalcValBufSize 5120 -precalcIdxBufSize 5120 -numThreads 12 -acceptanceRatioBreakValue 10e-5 -w 32 -h 24 -minHitAlateRate0.99 0.5模式ALL

培训进行到第9阶段。然后越过acceptanceRatio中断值。(已达到模型所需的acceptanceRatio,以避免训练数据过度拟合。分支培训终止。)

我不明白这里的问题。我仅使用推荐值作为参数。我曾尝试将minHitRate更改为0.95,但结果是相同的。我可以想到一些潜在的原因:

i)我直接使用正像而没有裁剪。但是我不    认为这应该是一个问题,因为背景是完全简单的。

ii)图像数据库包含不同姿势的脸部。那可能导致     训练时出现并发症。训练脸部是个好主意吗     使用同一级联分类器在不同姿势下?还是我应该     每个姿势使用不同的分类器?

iii)我的负面图片与正面图片可能有太大差异      图片。是这样吗如果是,应该使用什么样的负片      我在找吗?

我尝试在一些示例图像上测试cascade.xml文件,但是什么也没检测到。

2)考虑到i)的潜在原因,我使用已经裁剪的该数据库来获取正面图像:http://conradsanderson.id.au/lfwcrop/(约13000张图像)

但是问题仍然存在。这次它将训练到阶段11。在这种情况下,我将-numPos用作8000 -numNeg作为20000(增加比率以提供更多的负样本训练),-w用作24,-h用作24。

有人可以在这里引导我吗?

0 个答案:

没有答案