Я ищу надежный алгоритм/библиотеку распознавания лиц, желательно на C (С++ тоже в порядке, а на других языках я могу при необходимости портировать). Я использовал OpenCV в прошлом, но я не думаю, что он инвариантен к вращению. Не обязательно быть в режиме реального времени, но это тоже не должно быть ужасно медленным (возможно, одна или две секунды на фотографию в порядке). Ищете высокую надежность, а не много ложных срабатываний. Кто-нибудь знает о каких-либо хороших реализациях?
Надежное распознавание лиц в C/С++?
Ответ 1
Посмотрите эту страницу на OpenCV Wiki об обнаружении лица с помощью Haar-подобные функции.
@floppydisk: тот же парень опубликовал еще один project, реализующий эти Haar-подобные функции для обнаружения лица.
Концепцию не сложно понять, и вы даже можете ее реализовать самостоятельно. Возможно, самая сложная часть - это создание каскада усиленных классификаторов (но openCV имеет все, что легко реализовать!)
Некоторые другие методы, которые могут быть использованы при распознавании лиц, которые могут быть сделаны инвариантными к аффинным преобразованиям, включают в себя:
- Eigenfaces с SVD/PCA
- Дескрипторы Фурье
- Модели статистической формы (в этой статье в частности)
Ответ 2
Вы можете попробовать взглянуть на эту библиотеку:
http://vasc.ri.cmu.edu/NNFaceDetector/
Он показывает на одной из поверенных поверенных лиц. Как вы можете видеть, это было сделано как диссертация, поэтому вы также можете прочитать эту статью, если хотите.
Ответ 3
Mark - вы говорите, что OpenCV не может быть инвариантным к вращению
Что помешало бы вам выполнить четыре сравнения, вращая 90 & deg; после каждого сравнения?
Ответ 4
В проекте Code Project кто-то разместил подробное описание проекта для распознавания лиц, а также некоторый исходный код С++ для проекта и ссылки на библиотеки, которые он использовал. Его алгоритм фокусируется на использовании цветовых различий для поиска патчей кожи, а затем тестирования, чтобы увидеть, соответствуют ли 19x19 пиксельные изображения лицам. Я не знаком со всеми библиотеками для распознавания лиц, но, прочитав некоторые из его кода, многие методы и функции имеют CV в названии, поэтому он может использовать библиотеку OpenCV, но я не знаком с ним, м не на 100%. Тем не менее, он дает много объяснений о своем приложении и исходных файлах, поэтому он может быть хорошей отправной точкой.
Ответ 5
Единственное, с чем я работал, это Visionics FaceIt. Он работал довольно хорошо, но в последнее время я знал, что очень, очень, очень далек от свободного (как в пиве, так и в речи).
Ответ 6
Я не использовал функции Haar для распознавания лиц, но из того, что, как я помню, может быть более эффективным при обнаружении лица, чем у собственных /pca.
Я столкнулся с проблемой о проблемах вращения с лицом. Моя мысль, может быть, вы могли бы попробовать совпадение формы и попытаться исправить объект. Попробуйте и ориентируйте его на нормальное соотношение сторон головы. Я никогда не получал так много в своем проекте с Eigenface, но дайте мне знать, как это работает. Это должно быть легко в Matlab.: P