Перейти к содержимому
Compvision.ru
Андрей_Андрей

Обучение каскада Хаара

Recommended Posts

Пробую учить каскад хаара. Изучил  https://habrahabr.ru/post/208092/   Запускаю opencv_traincascade.exe -data haar -vec samples.vec -bg Bad.dat -minhitrate 0.990 -maxFalseAlarmRate 0.5 -numPos 68 -numNeg 49 -numStages 16 -w 30 -h 10 -featureType LBP -acceptanceRatioBreakValue 10e-5 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -numThreads 4 из opencv версий 2.4.10 и 2.4.11 и 3.1. примеров 450, контрпримеров 98. 

на opencv 2.4.10 останавливается на 5-й минуте обсчета, параметры запуска такие: 

C:\cars>opencv_traincascade.exe -data haar -vec samples.vec -bg Bad.dat -minhitrate 0.990 -maxFalseAlarmRate 0.5 -numPos 68 -numNeg 49 -numStages 16 -w 30 -h 10 -featureType LBP -acceptanceRatioBreakV
alue 10e-5 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -numThreads 4
Training parameters are loaded from the parameter file in data folder!
Please empty the data folder if you want to use your own set of parameters.
PARAMETERS:
cascadeDirName: haar
vecFileName: samples.vec
bgFileName: Bad.dat
numPos: 68
numNeg: 49
numStages: 16
precalcValBufSize[Mb] : 2048
precalcIdxBufSize[Mb] : 2048
stageType: BOOST
featureType: LBP
sampleWidth: 30
sampleHeight: 10
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   68 : 68
NEG count : acceptanceRatio    49 : 1
Precalculation time: 0.006
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 0 minutes 0 seconds.

===== TRAINING 1-stage =====
<BEGIN
POS count : consumed   68 : 68
Train dataset for temp stage can not be filled. Branch training terminated.

C:\cars>pause
Для продолжения нажмите любую клавишу . . .

 

Собственно вопрос - что не так? 
Почему он останавливается с ошибкой через 5 минут учебы?
Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Маленькая обучающая выборка. Надо больше и позитив и негатив сэмплов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

https://github.com/Itseez/opencv/blob/fd1b66b37d260aea97403c5ff500f694e1f5ba57/apps/traincascade/cascadeclassifier.cpp

 

if ( !updateTrainingSet( requiredLeafFARate, tempLeafFARate ) )
{
    cout << "Train dataset for temp stage can not be filled. "
            "Branch training terminated." << endl;
    break;
}

Похоже еще можно поиграться с false acceptance rate.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

огромное спасибо за советы, каскад хотя-бы начал учиться. Параметры такие:
opencv_traincascade.exe -data haar -vec samples.vec -bg Bad.dat -minhitrate 0.990 -maxFalseAlarmRate 0.4 -numPos 689 -numNeg 800 -numStages 16 -w 30 -h 10 -featureType LBP -acceptanceRatioBreakValue -1 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -numThreads 4

доходит до 12 stage и потом та-же ошибка :

POS count : consumed   689 : 707
Train dataset for temp stage can not be filled. Branch training terminated.

Опять ему мало примеров?

каскад обучаю на поиск номерных знаков. то,  что обучилось на картинке находит следующее: см. вложение.

Скажите - почему столько ложных обнаружений? плохая выборка контрпримеров? 

В какую сторону копать дальше?

Спасибо.

Badhaar.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну 700 примеров это совсем не серьезно, десяток тысяч хотя бы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×