2009-05-25 6 views
19

Я ищу надежный алгоритм/библиотеку распознавания лиц, желательно на C (C++ тоже в порядке, а на других языках я могу при необходимости портировать). Я использовал реализацию OpenCV в прошлом, но я не думаю, что это инвариантно к вращению. Не обязательно быть в режиме реального времени, но это тоже не должно быть ужасно медленным (возможно, одна или две секунды на фотографию в порядке). Ищете высокую надежность, а не много ложных срабатываний. Кто-нибудь знает о каких-либо хороших реализациях?Надежное распознавание лиц в C/C++?

+4

@mark: «Вы можете сделать это быстро, дешево или точно, выбрать любые два« это честно выглядит, как будто вы просите луну. – Tarrant

+5

@Wergan: Я * не * попрошу быстро и дешево. Точное распознавание лица может быть выполнено менее чем за 50 мс. Я сказал, что это может занять до 2000 года. Это совсем не спрашивает. – mpen

+1

Распознавание образов - ОЧЕНЬ трудный предмет, особенно если вы работаете с одноугольным видом, как с фотографией. Он будет поражен и пропущен весь путь: (разумно) хорошо для кружек; (невозможно) трудно для полноцветных толчков. – slashmais

ответ

9

Проверьте эту страницу на OpenCV Wiki об обнаружении лица, используя Haar-like features.

@floppydisk: тот же парень опубликовал еще project, реализуя эти Haar-подобные функции для обнаружения лица.

Концепцию не сложно понять, и вы даже можете ее реализовать самостоятельно. Пожалуй, самая трудная часть построения каскада форсированных классификаторов (! Но OpenCV имеет все, что легко реализуется)

Некоторые другие методы, которые могут быть использованы при обнаружении лица, которые могут быть сделаны инвариантные к аффинным преобразованиям относятся:

  • Eigenfaces с СВД/PCA
  • дескрипторы Фурье
  • Статистические модели формы (this paper в частности)
1

Единственное, с чем я работал, это Visionics FaceIt. Он работал довольно хорошо, но в последнее время я знал, что очень, очень, очень далек от свободного (как в пиве, так и в речи).

+1

Должен упомянуть «свободный» тоже хорошо. FaceIt выглядит как программное обеспечение для распознавания лиц .... Я ищу алгоритм с открытым исходным кодом. – mpen

5

Вы можете попробовать взглянуть на эту библиотеку:

http://vasc.ri.cmu.edu/NNFaceDetector/

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

+0

Хм ... только около 80% отзыва, но низкие ложные срабатывания (высокая точность). Я не уверен, хорошо это или нет? О, хорошо, это хорошо для начала, если я могу его собрать. Спасибо :) – mpen

+0

- высокая точность важнее для меня в любом случае. Остальные 20% могут быть помечены вручную, если необходимо, но я бы предположил, что мы можем получить ставки более 95%. Возможно, я ошибаюсь. – mpen

+0

Хорошо, это не нравится компилировать на 64-битном Ubuntu. – mpen

2

В проекте Code Project кто-то разместил проект detailed description проекта для распознавания лиц, а также некоторый исходный код на C++ для проекта и ссылки на библиотеки, которые он использовал. Его алгоритм фокусируется на использовании цветовых различий для поиска патчей кожи, а затем тестирования, чтобы увидеть, соответствуют ли 19x19 пиксельные изображения лицам. Я не знаком со всеми библиотеками для распознавания лиц, но, прочитав некоторые из его кода, многие методы и функции имеют CV в названии, поэтому он может использовать библиотеку OpenCV, но я не знаком с ним, м не на 100%. Тем не менее, он дает много объяснений о своем приложении и исходных файлах, поэтому он может быть хорошей отправной точкой.

+1

Возможно, он пытается создать свою собственную библиотеку cv. Я думал, что он, возможно, разорвал части opencv, но ничего на самом деле это не указывает. Он может похвастаться 98% точностью, но это было в первую очередь обучено и проверено на его собственном лице, так что это не говорит много. Не упоминает ничего о вращении ... Хотелось бы, чтобы он дал более подробную оценку. Кривые прецизионного отзыва являются удивительными. Хорошо, спасибо за это. Я тоже могу попробовать ... может быть очень хорошо для всего, что я знаю. – mpen

+1

У меня есть лучшая статистика, что парень, который претендует на 98% точности. 99.99999999999% ГЭС лжет или тренируется. Распознавание лиц нигде не приближается к точному, даже самые лучшие системы не так точны. – monksy

3

Марк - Вы говорите, что OpenCV не может быть инвариантна к повороту

Что бы помешать вам делать четыре сравнивает, вращая 90 ° после каждого сравнения?

+0

Ничто не помешало бы этому. Это правильный ответ;) – mpen

1

Я не использовал функции Haar для обнаружения лиц, но из того, что, как я помню, может быть более эффективным при обнаружении лица, чем у собственных/pca.

Я столкнулся с проблемой о проблемах вращения с лицом. Моя мысль, может быть, вы могли бы попробовать совпадение формы и попытаться исправить объект. Попробуйте и ориентируйте его на нормальное соотношение сторон головы.Я никогда не получал так много в своем проекте с Eigenface, но дайте мне знать, как это работает. Это должно быть легко в Matlab. : P

 Смежные вопросы

  • Нет связанных вопросов^_^