Как просмотреть положительные результаты при классификации каскада Хаара

всем, я обучил свой собственный классификатор в Opencv, и когда я запускаю его, я получаю плохие результаты. Моя цель — использовать функции Хаара в качестве ориентира, поэтому я хотел бы просматривать положительные результаты не после выполнения всего каскадного классификатора, а на каждом этапе, после каждой функции. Можно ли тогда сказать детектору остановиться на этой функции или мне нужно вручную обрезать файл xml, содержащий пороговые значения функций? Спасибо


person Maik Xhani    schedule 11.11.2013    source источник


Ответы (1)


Это возможно. Просто проверьте, как работает CascadeClassifier::detectMultiScale. В этой функции вы можете проверить this->data.stages.size(), она покажет вам, сколько ступеней в каскаде.

В частности detectMultiScale звонит detectSingleScale, потом CascadeClassifierInvoker звонит operator(), и мы видим там int result = classifier->runAt(evaluator, Point(x, y), gypWeight); строку.

Таким образом, если result больше нуля, это означает, что классификация прошла успешно и прошла все этапы. В противном случае (если не ошибаюсь) результат будет равен -[number of stage] классификатору не удалось. Таким образом, вы можете видеть, что точный классификатор стадии не прошел.

Также, если вы используете каскады в старом стиле, обратите внимание, что detectMultiScale вызывает cvHaarDetectObjectsForROC, а не detectSingleScale, но по сути делает то же самое.

Удачи.

И да, это означает, что вы собираетесь изменять исходники.

person silver_rocket    schedule 12.11.2013