【问题标题】:Bad trained cascade in OpenCVOpenCV中训练有素的级联
【发布时间】:2015-01-27 13:41:24
【问题描述】:

我无法正确训练分类器。当我使用生成的 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

当我使用它来检测我的对象(在我的情况下,对象是方向盘)时,结果是:

【问题讨论】:

    标签: opencv object-detection object-recognition haar-classifier cascade-classifier


    【解决方案1】:

    对于尺寸为 80x80 的图像,您使用的图像样本太少。 我会最小化图像的尺寸,同时添加更多的样本。 另一件事是负像的集合。你用什么作为负样本?尝试通过添加此错误检测到的块来扩大您的负面图像集。

    【讨论】:

    • 真的,非常感谢您的回答。作为负样本,我使用除了我的对象之外的任何东西。感谢您的建议,我会遵循它,我希望它会奏效。这个对象是不是很复杂才能被识别,还是我只需要正确训练级联?
    • 仅供参考,尺寸并不重要。 viola jones 方法将样本缩小到 24x24 并在训练前对其进行灰度化。
    • 如果您查看问题,您会发现我使用了 LBP 特征类型,它不是 viola jones 方法。
    • 那么,@canberk 你有什么建议吗?
    • 使用 20000 个负样本而不是 100 个将是一个好的开始。带有负样本的东西是 adaboost 高度依赖于它们。由于提高了(浮点)分辨率,类似 haar 的功能 - viola jones - 将是另一个增强功能。
    猜你喜欢
    • 2019-01-21
    • 2012-12-05
    • 1970-01-01
    • 2017-11-21
    • 2015-12-16
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多