Вопрос по – Есть ли способ получить измерение уровня достоверности при использовании распознавания лица haar с использованием OpenCV?

7

Я разработал приложение для обнаружения лиц с использованием каскадного обнаружения лиц OpenCVs HAAR. Алгоритм работает нормально, однако время от времени он находит узоры на стене или на других предметах, которые не являются гранями.
Я хочу выполнить дополнительные проверки для объекта, подозреваемого как лица, но я хочу сделать это только для объектов, которые не являются доверенными лицами, которые являются лицами. Есть ли способ получить «доверие»? уровень для лица, обнаруженного каскадом HAAR?

Ваш Ответ

4   ответа
1

Почему бы не запустить несколько каскадов Хаара (обученных по-разному) для одного и того же изображения и посмотреть, дают ли они схожие результаты? Пусть они проголосуют как бы. Таким образом, если бы только один каскад обнаружил данное лицо, а другие - нет, это дало бы вам меньше уверенности в этом заданном лице.

Мне удалось запустить 3 каскада одновременно на видеопотоке с iPhone в режиме реального времени, поэтому производительность не должна быть проблемой во многих обычных сценариях. Больше здесь: http://rwoodley.org/?p=417

3

OpenCV фактически находит более одного результата для любого конкретного объекта, причем каждая обнаруженная область в значительной степени перекрывает друг друга; затем они группируются вместе и образуют «число соседей»; сосчитать. Этот счет является так называемой уверенностью.

Когда вы выполняете обнаружение объекта, один из параметров - это минимальное количество соседей до того, как будет возвращено попадание. Увеличение его уменьшает ложные срабатывания, но также уменьшает количество возможных обнаруженных лиц.

0

Не прямой ответ на ваш вопрос, но это может помочь в уменьшении ложного обнаружения.

Вы можете получить меньше ложного обнаружения, настроив значения MinNeibhbours, CV_HAAR_FIND_BIGGEST_OBJECT и Size.

int MinNeighbours = 7;

face_cascade.detectMultiScale (frame_gray, face, 1.1, MinNeighbours, CV_HAAR_FIND_BIGGEST_OBJECT, Size (60, 60));

6

OpenCV обеспечивает достоверность с помощью аргумента «весовые коэффициенты» в функции «детектирование мультискейла»; из класса CascadeClassifier вам нужно поставить флаг & quot; outputRejectLevels & quot; к истине

Error: User Rate Limit Exceeded
ApparentlyError: User Rate Limit Exceededvoid CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& objects, vector<int>& rejectLevels, vector<double>& levelWeights, double scaleFactor, int minNeighbors, int flags, Size minObjectSize, Size maxObjectSize, bool outputRejectLevels )

Похожие вопросы