Я хочу обучить классификатор LBP. У меня 103 положительных и 500 отрицательных образцов. Я использовал почти значения по умолчанию, кроме -featureType LBP
и -numPos 88
.
opencv_traincascade -data "$NAME"_Output \
-vec "$NAME".vec \
-bg "$NAME"_Negative.txt \
-numPos 88 \
-numNeg 500 \
-numStages 20 \
-stageType BOOST \
-featureType LBP \
-w 32 \
-h 48 \
-bt GAB \
-minHitRate 0.995 \
-maxFalseAlarmRate 0.5 \
-weightTrimRate 0.95 \
-maxDepth 1 \
-maxWeakCount 100
Классификатор застревает на этапе 2 после того, как 1-й этап получил полную скорость удара и нулевую ложную тревогу. Я пробовал играть с параметрами numPos, numNeg и bt, но он всегда получает примерно такой же результат.
===== TRAINING 0-stage =====
<BEGIN
POS count : consumed 88 : 88
NEG count : acceptanceRatio 500 : 1
Precalculation time: 1
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 0.046|
+----+---------+---------+
END>
===== TRAINING 1-stage =====
<BEGIN
POS count : consumed 88 : 88
NEG count : acceptanceRatio 500 : 0.0456038
Precalculation time: 0
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 0|
+----+---------+---------+
END>
===== TRAINING 2-stage =====
<BEGIN
POS count : consumed 88 : 88
Я не знаю достаточно об этом, но я предполагаю, что его полный после первого этапа, но он все еще пытается создать еще 18 этапов. Мой набор данных довольно прост, положительный должен быть очень похожим, а отрицательные изображения одного размера.
Зависит от ваших данных обучения. Если его действительно просто отличить положительные и отрицательные данные, то вполне возможно, что для выполнения этой работы достаточно двух этапов. Вопрос в том, как он выполняется на тестовых данных, т.е. Является вашим представителем учебных данных для теста, или вам нужны более (и более сложные) образцы обучения. Если нет, все готово. Поздравляю.