我一直在尝试训练图像数据库以使用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。
有人可以在这里引导我吗?