Справочная информация: Я пытаюсь обучить свой собственный классификатор Хаара OpenCV для распознавания лиц.Я работаю на виртуальной машине с Ubuntu 16.04, в моем рабочем каталоге есть 2 подкаталога: лицо , содержащее 2429 изображений позитивов, не лицо , содержащее 4548 изображений негативов.Все изображения в формате PNG, серая шкала имеют ширину и высоту 19 пикселей.Я сгенерировал файл positives.info , который содержит абсолютный путь к каждому положительному изображению, за которым следует «1 0 0 18 18», например:
/home/user/ML-Trainer/face/face1.png 1 0 0 18 18
/home/user/ML-Trainer/face/face2.png 1 0 0 18 18
/home/user/ML-Trainer/face/face3.png 1 0 0 18 18
и другой файл positives.txt , который содержит абсолютный путь к каждому положительному изображению
/home/user/ML-Trainer/non-face/other1.png
/home/user/ML-Trainer/non-face/other2.png
/home/user/ML-Trainer/non-face/other3.png
Сначала я выполнил следующую команду:
opencv_createsamples -info positives.info -vec positives.vec -num 2429 -w 19 -h 19
и получил позитивов.vec , как и ожидалось, затем я создал пустой каталог data и запустил следующее:
opencv_traincascade -data data -vec positives.vec -bg negatives.txt -numPos 2429 -numNeg 4548 -numStages 10 -w 19 -h 19 &
Кажется, что он работает гладко:
PARAMETERS:
cascadeDirName: data
vecFileName: positives.vec
bgFileName: negatives.txt
numPos: 2429
numNeg: 4548
numStages: 10
precalcValBufSize[Mb] : 1024
precalcIdxBufSize[Mb] : 1024
acceptanceRatioBreakValue : -1
stageType: BOOST
featureType: HAAR
sampleWidth: 19
sampleHeight: 19
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: BASIC
Number of unique features given windowSize [19,19] : 63960
===== TRAINING 0-stage =====
<BEGIN
POS count : consumed 2429 : 2429
NEG count : acceptanceRatio 4548 : 1
Precalculation time: 13
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 1|
+----+---------+---------+
| 3| 0.998765| 0.396218|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 1 minutes 7 seconds.
Нозатем я получаю следующую ошибку:
===== TRAINING 1-stage =====
<BEGIN
POS current samplOpenCV Error: Bad argument (Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file.
) in get, file /home/user/opencv-3.4.0/apps/traincascade/imagestorage.cpp, line 158
terminate called after throwing an instance of 'cv::Exception'
what(): /home/user/opencv-3.4.0/apps/traincascade/imagestorage.cpp:158: error: (-5) Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file.
in function get
Как мне решить эту проблему:
samplOpenCV Ошибка: неверный аргумент
Любая помощь будет оченьоценил.
РЕДАКТИРОВАТЬ: я изменил -numPos на меньшее число: 2186 (0,9 * 2429), я сделал это после прочтения этот ответ , и это привело меня к
===== Тренировка 3-этапная =====
, и это дает мне ту же ошибку.Как настроить параметры для команды opencv_createsamples ?