2016-10-15 2 views
0

В течение нескольких дней я пытаюсь создать свою собственную программу классификации объектов, используя Python-Open cv и Haar Cascade.Обнаружение объекта OpenCV-Python не работает

После создания образцов, вот как обучить систему:

opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt -numStages 12 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000 -numNeg 600 -w 50 -h 50 -mode ALL -precalcValBufSize 1024 -precalcIdxBufSize 1024 

и после стадии 8 я получил этот выход

===== TRAINING 8-stage ===== 
<BEGIN 
POS count : consumed 1000 : 1000 
NEG count : acceptanceRatio 600 : 0.00221078 
Precalculation time: 10 
+----+---------+---------+ 
| N | HR | FA | 
+----+---------+---------+ 
| 1|  1|  1| 
+----+---------+---------+ 
| 2|  1|  1| 
+----+---------+---------+ 
| 3|  1| 0.898333|              
+----+---------+---------+ 
| 4|  1| 0.916667| 
+----+---------+---------+ 
| 5|  1| 0.691667| 
+----+---------+---------+ 
| 6|  1| 0.681667| 
+----+---------+---------+ 
| 7|  1| 0.518333| 
+----+---------+---------+ 
| 8|  1| 0.626667| 
+----+---------+---------+ 
| 9|  1| 0.441667| 
+----+---------+---------+ 

===== TRAINING 9-stage ===== 
<BEGIN 
POS count : consumed 1000 : 1000 
NEG count : acceptanceRatio 0 : 0 
Required leaf false alarm rate achieved. Branch training terminated. 

Однако тренированная модель не обнаруживает какой-либо объект (часы в этом случае). Я застрял и не знаю, как это решить. Любые полезные идеи очень ценятся.

ответ

0

Ваши желаемые параметры были получены: "-minHitRate 0.999 -maxFalseAlarmRate 0.5".

У вас есть (согласно приведенной выше таблице): HitRate = 1 и FalseAlarmRate = 0.441667, поэтому обучение остановилось.

+0

ОК, это ответы, почему обучение остановилось, спасибо. Но почему обученная система ничего не обнаруживает? Может ли это означать, что обучение не было успешным, например, в результате переобучения? Каким образом я могу улучшить свое обучение с вашей точки зрения? –

+0

Это другой большой вопрос. Вам нужно установить правильные параметры для ваших объектов, и эти параметры сильно зависят от объекта, который вы обнаруживаете. Вы можете проверить HR и FA для набора проверки, и он покажет, перегружает ли он. Если это так, вам нужно увеличить набор тренировок (в некоторых случаях это помогает, но не обязательно, поскольку я сказал, что это сильно зависит от ваших наборов данных). –

+0

Спасибо. «Вы можете проверить HR и FA для проверки, и он покажет, перерабатывает ли он», это довольно интересно, как я могу это сделать? –