2012-03-31 2 views
1

Я пытаюсь сравнить только 2 лица и получить их подобие - оценка того, насколько они соответствуют. Я ищу интернет для решения, но я могу только найти распознавание лица против набора учебных образов, я не могу найти, если кто-то проводит исследование по этой проблеме - у меня есть 2 неузнаваемых лица, и я хочу узнать, есть ли у него тот же человек или нет. Можете ли вы дать мне какие-либо подсказки, какие-нибудь ресурсы, которые могли бы мне помочь? Если бы была какая-либо реализация, было бы здорово, если бы ее - C#, C++ Я пытаюсь использовать открытые грани OpenCV, распознавать грани против некоторой базы данных (получить собственное расстояние) и сравнивать эвклидовы расстояния, но я получаю плохие результаты. Возможно, мой подход ошибочен, и я не полностью понимаю границы собственных и эвклидных расстояний)Сравнение двух лиц

Большое спасибо!

ответ

1

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

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

Также натолкнулся на это link на быстрое сопоставление шаблонов с использованием более позднего интерфейса C++, но не использовал его лично.

Если на ваших лицах есть только кружки, с небольшими вариациями в повороте, перспектива и т. Д., То этот базовый подход должен быть достаточным для ваших нужд.

1

Во-первых, следует предупредить, что это далеко не проблема. На самом деле это относительно область исследований в области компьютерного зрения. Пожалуйста, посмотрите на Labeled Faces in the Wild dataset, в котором точно используется задача, о которой вы говорите, сравнивая две грани. Особый интерес для вас представляет results section, в котором есть отчеты, для которых лучше всего работают алгоритмы (и соответствующие документы).

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

В любом случае, основная вещь заключается в следующем: вы не хотите использовать пиксели для сравнения лиц, потому что они так сильно меняются при освещении и позе. (Вы должны попробовать!) Таким образом, вам нужно преобразовать пиксели таким образом, чтобы лица одного и того же человека были похожи друг на друга, а лица разных людей отличались друг от друга. Это извлечение признаков, и это, возможно, самая сложная и важная часть распознавания лиц. Как вы знаете, какой из них лучше всего их преобразовать? Вот где входят учебные наборы данных. Например, если вы используете собственные интерфейсы (кстати, у них должна быть довольно низкая производительность), вы используете данные обучения для получения собственных векторов, которые лучше всего представляют эти данные. Затем два сравнения двух лиц вы проектируете каждую грань на собственные векторы и используйте эвклидовое расстояние. (Это то же самое, что и использование расстояния Махалонобиса).

+0

Спасибо, что до сих пор я пытался разложить эти лица на тренировочные векторы - это дает мне массив расстояний от каждого набора тренировок, но когда я «усредняю ​​его» на эвклидовом расстоянии, он дает мне потрясающие результаты - фотографии того же человек имеет большее расстояние, чем лица разных людей. –

+0

Использование сходства с набором людей - неплохая идея - есть несколько документов, которые делают это более сложным образом. Но просто использование простых изображений RGB и эвклидовых функций, вероятно, не будет работать большую часть времени; распознавание лица - гораздо сложнее, чем кажется! – dimatura