我使用了 OpenCV 的典型 haar-cascade。并在训练过程中设置阶段为 5,但在 xml & cascade 文件夹中仅找到 3 个阶段。
为什么我的阶段比预期的少?有什么解决办法吗?
我使用了 OpenCV 的典型 haar-cascade。并在训练过程中设置阶段为 5,但在 xml & cascade 文件夹中仅找到 3 个阶段。
为什么我的阶段比预期的少?有什么解决办法吗?
以这个示例训练命令为例:
opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt\
-numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000\
-numNeg 600 -w 80 -h 40 -mode ALL -precalcValBufSize 1024\
-precalcIdxBufSize 1024
这有一个maxFalseAlarmRate
0.5,当分类器达到这个值时,它将完成。
对于您的问题,我想您已将 numStages 设置为 5,但经过 3 个阶段后,它已达到maxFalseAlarmRate
并完成了培训。
为了确认/消除这一点,您需要提供:
您很可能没有提供traincascade
足够的信息来学习。这很可能是因为我们人类非常懒惰并且讨厌工作。如果它认为可以从您指定的数据中了解更多信息,它将继续运行。
采取更多积极的态度。请记住,您可以以稍微倾斜的角度(10º-20º 左右)拍摄对象的多张图像。并确保提供至少数百个对象,特别是如果对象之间存在相当多的差异,例如面部。
如果您仍然卡住,请参阅我编写的本教程,希望对您和其他人有所帮助:http: //johnallen.github.io/opencv-object-detection-tutorial/