Логика распознавания лиц - PullRequest
5 голосов
/ 21 июля 2010

Я хочу разработать приложение, в котором пользователь вводит изображение (человека), и система должна иметь возможность идентифицировать лицо по изображению человека.Система также работает, если на изображении присутствует более одного человека.

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

Ответы [ 3 ]

15 голосов
/ 07 августа 2010

Eigenface может быть хорошим алгоритмом для начала, если вы хотите построить систему в образовательных целях, поскольку она относительно проста и служит отправной точкой для множества других алгоритмов в этой области. По сути, вы берете кучу изображений лиц (обучающие данные), переключаете их в оттенки серого, если они RGB, изменяете их размер так, чтобы каждое изображение имело одинаковые размеры, делайте изображения на векторы, складывая столбцы изображений ( которые теперь являются двумерными матрицами) друг над другом, вычисляют среднее значение каждого пикселя во всех изображениях и вычитают это значение из каждой записи в матрице, чтобы векторы компонентов не были аффинными. Как только это будет сделано, вы вычисляете ковариационную матрицу результата, решаете для ее собственных значений и собственных векторов и находите главные компоненты. Эти компоненты послужат основой для векторного пространства и вместе описывают наиболее значимые отличия изображений лиц друг от друга.

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

Если вы решили пойти по этому пути, будьте осторожны, выбирая изображения лиц, которые были сделаны при соответствующем диапазоне условий освещения и углов позы. Эти два фактора играют огромную роль в том, насколько хорошо ваша система будет работать при представлении с новыми лицами. Если учебная галерея не учитывает свойства пробного изображения, вы получите бессмысленные результаты. (Однажды я натренировал систему с собственным лицом на случайных фотографиях, снятых из Интернета, и это дало мне Билла Клинтона как сильнейшего соперника для картины Елизаветы II, хотя в галерее была еще одна картина Королевы. У них обоих была белая волосы были направлены в одну сторону и были сфотографированы при одинаковых условиях освещения, и этого было достаточно для компьютера.)

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

Машинное обучение является краеугольным камнем многих важных процессов в системе FR, поэтому я не могу не подчеркнуть важность хороших данных обучения. Существует множество алгоритмов обучения, но самым важным, на мой взгляд, является наивный байесовский классификатор; другие методы сходятся в байесовском по мере увеличения размера набора обучающих данных, поэтому вам нужно проявить фантазию, только если вы планируете работать с меньшими наборами данных. Просто помните, что качество ваших обучающих данных будет создавать или разрушать систему в целом, и пока она надежна, вы можете выбирать любые деревья из дерева алгоритмов, которые были написаны для поддержки предприятия.

РЕДАКТИРОВАТЬ: Хорошая проверка работоспособности ваших тренировочных данных состоит в том, чтобы вычислить средние лица для вашего зонда и изображений галереи. (Это именно то, на что это похоже; после контроля размера изображения возьмите сумму каналов RGB для каждого изображения и разделите каждый пиксель на количество изображений.) Чем лучше ваша предварительная обработка, тем более человечными будут выглядеть средние лица. Если два средних лица выглядят как разные люди - разный пол, этническая принадлежность, цвет волос и т. Д. - это предупреждающий знак того, что ваши данные о тренировках могут не соответствовать вашим ожиданиям.

3 голосов
/ 21 июля 2010

Взгляните на Распознавание лиц Hompage - есть алгоритмы, документы и даже некоторый исходный код.

0 голосов
/ 07 августа 2010

Существует много разных алгоритмов. По сути, вы ищете " компьютерное зрение ". Мы сделали проект в университете, основанный на распознавании и распознавании лиц. То, что вам нужно сделать, это широко использовать Google и попытаться понять все это. Здесь есть немного математики, так что будьте готовы. Сначала перейдите на Википедию . Тогда вам нужно будет найти pdf публикаций конкретных алгоритмов.

Вы можете пойти нелегким путем - сами напишите реализацию всех алгоритмов. Или простой способ - использовать библиотеку компьютерного зрения, такую ​​как OpenCV или OpenVIDIA .

И на самом деле это не так сложно сделать что-то, что будет работать. Так что будь смелым. Намного сложнее создать программное обеспечение, которое будет работать в разных и постоянно меняющихся условиях. И здесь Google не поможет вам. Но я полагаю, вы не хотите идти так глубоко.

...