Я провожу небольшое исследование по обнаружению лиц и сравнения для своей статьи. В настоящее время я использую быстрое обнаружение лиц на основе хаароподобных функций, основанных на каскаде OpenCV (позже я реализую обучение). Следующий шаг - сравнение лиц. Есть ли хорошо известные алгоритмы? Было бы здорово, если есть какие-то коды C #, объясняющие их, или какие-то dll, которые их реализуют.
Обнаружение и сравнение лиц
Ответы (3)
Для создания набора собственных лиц большой набор оцифрованных изображений человеческих лиц, снятых при одинаковых условиях освещения, нормализуется для выравнивания глаз и рта. Затем все они повторно дискретизируются с одинаковым разрешением пикселей. Собственные лица могут быть извлечены из данных изображения с помощью математического инструмента, называемого анализом главных компонентов (PCA).
Собственные грани теперь можно использовать для представления новых лиц: мы можем спроецировать новое (с вычитанием среднего) изображение на собственные грани и, таким образом, записать, как это новое лицо отличается от среднего лица. Собственные значения, связанные с каждым собственным лицом, представляют, насколько изображения в обучающем наборе отличаются от среднего изображения в этом направлении. Мы теряем информацию, проецируя изображение на подмножество собственных векторов, но мы минимизируем эту потерю, сохраняя эти собственные грани с наибольшими собственными значениями.
Если ваши лица не выровнены, я бы рекомендовал прочитать следующую статью:
Аннотация: Мы представляем компонентный метод и два глобальных метода распознавания лиц и оцениваем их устойчивость к изменениям позы. В системе компонентов мы сначала находим лицевые компоненты, извлекаем их и объединяем в единый вектор признаков, который классифицируется с помощью машины опорных векторов (SVM).
Две глобальные системы распознают лица, классифицируя один вектор признаков, состоящий из значений серого на всем изображении лица. В первой глобальной системе мы обучили один классификатор SVM для каждого человека в базе данных. Вторая система состоит из наборов классификаторов SVM для конкретных точек зрения и включает кластеризацию во время обучения.
Я написал учебную и демонстрационную программу с бесплатным исходным кодом для выполнения обнаружения и распознавания лиц в реальном времени с веб-камеры (также в OpenCV):
http://www.shervinemami.info/faceRecognition.html
Существует система оценки от Беверидж. Они реализовали три алгоритма распознавания лиц с разными показателями. Алгоритмы реализованы для оценки, поэтому их может быть сложно использовать для ваших собственных программ.
Некоторые ссылки на Java API и общие ссылки можно найти в моем вопросе о распознавании лиц.