2014-11-17 5 views
7

Я пытаюсь создать классификатор Хаара для распознавания объектов, однако я не могу понять, что такое таблица результатов, которая создается на каждом этапе.Описание таблицы результатов классификатора OpenCV Haar

E.g. 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> 

Е.Г. 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| 
+----+---------+---------+ 

Я не уверен, что N, HR и FA имеют в виду в каждом из этих случаев. Может кто-нибудь объяснить, что они означают и что они означают?

ответ

11

Поиск «HR» в OpenCV source приводит нас к this файлам. Линии 1703-1707 внутри CvCascadeBoost::isErrDesired печати таблицы:

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; 

Так HR и FA стоять коэффициент попаданий и ложных тревог. Концептуально: hitRate =% положительных выборок, которые классифицируются как таковые. falseAlarm =% отрицательных образцов, неправильно классифицированных как положительные.

Чтение кода для CvCascadeBoost::train, мы можем увидеть следующее время цикла

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

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

Просто глядя на это, и не зная многое о специфике повышения, мы можем сделать обоснованное предположение, что обучение не работает до тех пор ошибки достаточно низка, как измерено falseAlarm.

+0

Только один вопрос о%. Когда он печатает '1', это 1% или 100% с' 0.7432' составляет 0.7% или 74% соответственно? – Colin747

+2

Здесь 1 составляет 100%, а 0,7432 - 74,32% –

+0

. Какова единица времени предварительного расчета? минуту или час? – speedious

Смежные вопросы