OpenCV Haar分类器结果表说明

Col*_*747 11 opencv haar-classifier

我正在尝试创建一个哈尔分类器来识别对象但是我似乎无法弄清楚每个阶段产生的结果表代表什么.

例如1

===== TRAINING 1-stage =====
<BEGIN
POS count : consumed   700 : 700
NEG count : acceptanceRatio    2500 : 0.452161
Precalculation time: 9
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1|        1|
+----+---------+---------+
|   4|        1|        1|
+----+---------+---------+
|   5|        1|   0.7432|
+----+---------+---------+
|   6|        1|   0.6312|
+----+---------+---------+
|   7|        1|   0.5112|
+----+---------+---------+
|   8|        1|   0.6104|
+----+---------+---------+
|   9|        1|   0.4488|
+----+---------+---------+
END>
Run Code Online (Sandbox Code Playgroud)

例如2

===== TRAINING 2-stage =====
<BEGIN
POS count : consumed   500 : 500
NEG count : acceptanceRatio    964 : 0.182992
Precalculation time: 49
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
Run Code Online (Sandbox Code Playgroud)

我不知道了么N,HRFA指的是在每一种情况下.有人可以解释他们的立场和意义吗?

Jon*_*Lee 20

OpenCV源中搜索"HR" 会将我们引导至此文件.内线CvCascadeBoost::isErrDesired打印1703-1707行:

cout << "|"; cout.width(4); cout << right << weak->total;
cout << "|"; cout.width(9); cout << right << hitRate;
cout << "|"; cout.width(9); cout << right << falseAlarm;
cout << "|" << endl;
cout << "+----+---------+---------+" << endl;
Run Code Online (Sandbox Code Playgroud)

因此,HR和FA代表命中率和误报.从概念上讲:hitRate =正确分类的阳性样本的百分比.falseAlarm =阴性样本的百分比被错误地归类为阳性.

读取代码CvCascadeBoost::train,我们可以看到以下while循环

cout << "+----+---------+---------+" << endl;
cout << "| N  | HR      | FA      |" << endl;
cout << "+----+---------+---------+" << endl;

do
{
    [...]
}
while( !isErrDesired() && (weak->total < params.weak_count) );
Run Code Online (Sandbox Code Playgroud)

只是看看这个,并且不太了解提升的具体细节,我们可以做出有根据的猜测,即训练有效,直到误差足够低,如falseAlarm所测量.

  • 显然,输入更多字符会杀死 OpenCV 开发人员:| 谢谢你的回答 BTW (4认同)
  • 这里1是100%,0.7432是74.32% (2认同)