【问题标题】:General Tips to Improve Haar Vision Training Data Results [openCV]改善 Haar 视觉训练数据结果的一般提示 [openCV]
【发布时间】:2014-07-16 12:18:43
【问题描述】:

使用 trainCascade 训练类似 HAAR 的功能。向社区寻求建议以获得更好的结果。一般来说,什么被认为是好的接受率?

我从一个较小的培训开始,遵循此链接作为指导:http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html

这是我的数据:

PARAMETERS:
cascadeDirName: classifier
vecFileName: samples.vec
bgFileName: negatives.txt
numPos: 68
numNeg: 436
numStages: 20
precalcValBufSize[Mb] : 3072
precalcIdxBufSize[Mb] : 3072
stageType: BOOST
featureType: HAAR
sampleWidth: 80
sampleHeight: 80
boostType: GAB
minHitRate: 0.999
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: ALL

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 1
Precalculation time: 296
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|0.0206422|
+----+---------+---------+
END>

===== TRAINING 1-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 0.0810108
Precalculation time: 228
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.259174|
+----+---------+---------+
END>

===== TRAINING 2-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 0.0399304
Precalculation time: 279
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.155963|
+----+---------+---------+
END>

===== TRAINING 3-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 0.0106487
Precalculation time: 255
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.275229|
+----+---------+---------+
END>

===== TRAINING 4-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 0.0031086
Precalculation time: 295
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.399083|
+----+---------+---------+
END>

===== TRAINING 5-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 0.00127805
Precalculation time: 282
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.389908|
+----+---------+---------+
END>

===== TRAINING 6-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 0.000522627
Precalculation time: 299
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.502294|
+----+---------+---------+
|   4|        1| 0.247706|
+----+---------+---------+
END>

===== TRAINING 7-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 0.000149988
Precalculation time: 283
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.511468|
+----+---------+---------+
|   4|        1|     0.25|
+----+---------+---------+
END>
===== TRAINING 8-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 4.31894e-05
Precalculation time: 226
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.440367|
+----+---------+---------+
END>

===== TRAINING 9-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 2.12363e-05
Precalculation time: 208
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.541284|
+----+---------+---------+
|   4|        1| 0.291284|
+----+---------+---------+
END>

===== TRAINING 10-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 7.5647e-06
Precalculation time: 294
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1| 0.451835|
+----+---------+---------+
END>

===== TRAINING 11-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 3.79627e-06
Precalculation time: 226
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1| 0.463303|
+----+---------+---------+
END>

===== TRAINING 12-stage =====
<BEGIN
NEG count : acceptanceRatio    436 : 2.03777e-06
Precalculation time: 184
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1| 0.396789|
+----+---------+---------+
END>

===== TRAINING 13-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 1.06732e-06
Precalculation time: 262
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1| 0.415138|
+----+---------+---------+
END>

===== TRAINING 14-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    436 : 6.80241e-07
Required leaf false alarm rate achieved. Branch training terminated.

我发现第 7 阶段和第 8 阶段的分类器效果最好,尽管并不完美。

您发现了什么可以构成良好的阳性样本?较小的图像?更大的图像?轮换? (我确实旋转了我的正样本(90,180 和 270 度)。对于负图像?

有没有人尝试过各种不同等级的图像?例如从具有良好图像传感器(如佳能 Rebel)的相机拍摄的照片与使用手机相机拍摄的照片。这对你的教练有很大的影响吗?

我也认为我在训练我的教练寻找镀铬物体时犯了一个错误。我认为它的反射虽然很小,但对它的训练效果有很大影响。

【问题讨论】:

    标签: opencv computer-vision


    【解决方案1】:

    根据我基于 haar 特征训练手(手掌)检测器的经验,您首先要问自己的是 我要检测的对象是否容易受到 haar 特征检测的影响。在我解释这一点之前,让我提醒一下 haar 特征实际上是什么 - 它们只是(或至少)能够检测 梯度变化特征 - 我的意思是例如任何类型的垂直和水平线组合(单线,两条线之间的线等)是的,基本上就是这样。梯度变化。如果您考虑一下,某些对象具有这样的特征,即它们中存在某种子结构,这使它们易于了解对象中“存在”哪些haar特征。例如,人脸是最著名的。它有几个关键点可能并且被认为是 haar 特征的存在。这就是我所说的易受特征影响的描述。在开始训练分类器之前,您必须回答这个问题。如果答案是否定的,请不要尝试寻找其他解决方案。

    例如,我考虑过检测张开手掌的手势。我认为可以通过 haar 方法检测到什么样的手势。我认为一种解决方案是将手势限制在手掌张开、笔直、拥挤的情况下。这个简单的技巧会导致更好的 haar 检测和学习,因为在相互接触的手指之间存在额外的“边缘”。所以除了这些边缘。即使背景与肤色相似,边缘也是可见的。我训练了分类器,主要基于手指之间的边缘(因为你不能依赖手周围的边缘,因为它取决于背景——在某些情况下,这些边缘甚至会消失)。我使用了这个命令:

    opencv_traincascade -data HAAR -vec samples.vec -bgnegative.dat -numStages 20 -minHitRate 0.999 -numPos 700 -numNeg 2500 -w 20 -h 11 -mode ALL -featureType HAAR

    如您所见,我使用了 700 个正样本和 2500 个负样本。请注意 -w 和 -h 参数。它是检测器窗口的大小。所有来自正样本的裁剪区域都被缩放到这个大小,所以请记住,你裁剪的区域必须具有相同的纵横比。最后,我成功创建了一个能够检测特定手势的 haar 分类器 - 手掌张开、伸直并紧挨在一起。

    编辑:您可以查看培训日志here

    【讨论】:

    • 一般来说,在处理您训练过的数据时,您发现哪种接受率范围是最好的?
    • 我已经添加了训练日志。
    猜你喜欢
    • 2018-01-29
    • 2019-01-21
    • 2012-06-07
    • 2015-12-06
    • 2017-12-02
    • 2011-05-06
    • 2020-10-16
    • 2014-02-14
    • 2020-04-19
    相关资源
    最近更新 更多