Надежное распознавание лиц в C / C ++? - PullRequest
19 голосов
/ 25 мая 2009

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

Ответы [ 6 ]

9 голосов
/ 27 сентября 2009

Проверьте эту страницу на OpenCV Wiki об обнаружении лиц с использованием Хаар-подобных функций .

@ floppydisk : Тот же парень опубликовал еще один проект , реализующий эти подобные Хаару функции для распознавания лиц.

Эта концепция не сложна для понимания, и вы можете реализовать ее самостоятельно. Пожалуй, самая сложная часть - это создание каскада повышенных классификаторов (но в openCV все это легко реализовано!)

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

5 голосов
/ 25 мая 2009

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

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

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

3 голосов
/ 27 сентября 2009

Mark - вы говорите, что OpenCV не может быть инвариантным к вращению

Что помешает вам сделать четыре сравнения, вращающихся на 90 & deg; после каждого сравнения?

2 голосов
/ 26 мая 2009

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

1 голос
/ 27 сентября 2009

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

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

1 голос
/ 25 мая 2009

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

...