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,HR和FA指的是在每一种情况下.有人可以解释他们的立场和意义吗?
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所测量.
| 归档时间: |
|
| 查看次数: |
4672 次 |
| 最近记录: |