Сравнение двух лиц - PullRequest
       16

Сравнение двух лиц

1 голос
/ 01 апреля 2012

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

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

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

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

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

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

0 голосов
/ 01 апреля 2012

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...