我无法正确训练分类器。当我使用生成的 cascade.xml 时,无法识别对象。相反,对象的某些部分是。
训练的命令行是这样的:
opencv_traincascade -data data -vec samples.vec -bg negatives.txt -numPos 200 -numNeg 100 -numStages 13 -w 80 -h 80 -featureType LBP -minHitRate 0.999 -maxFalseAlarmRate 0.5
虽然训练输出看起来像这样:
===== TRAINING 10-stage =====
<BEGIN
POS count : consumed 200 : 200
NEG count : acceptanceRatio 100 : 0.00586029
Precalculation time: 2
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 0.09|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 6 minutes 9 seconds.
===== TRAINING 11-stage =====
<BEGIN
POS count : consumed 200 : 200
NEG count : acceptanceRatio 100 : 0.00724585
Precalculation time: 3
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 0.09|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 6 minutes 49 seconds.
===== TRAINING 12-stage =====
<BEGIN
当我用它来检测我的物体时(在我的例子中,物体是方向盘),结果是:
对于尺寸为 80x80 的图像,您使用的图像太少作为样本。我会最小化图像的尺寸,同时添加更多样本。另一件事是负面形象的集合。你用什么作为负样本?尝试通过添加错误检测 block 来扩大负片图像集。
我是一名优秀的程序员,十分优秀!