2010-07-21 5 views
5

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

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

+2

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

+0

@Petar: извините, я был саркастичным. Я все равно удалил комментарий. Просто пытался сказать, что это, вероятно, одна из самых сложных проблем в информатике, это не то, что вы просто хлопаете вместе через пару дней после того, как кто-то из SO сказал вам алгоритм :) – fearofawhackplanet

+0

@fear Нет проблем :) –

ответ

15

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

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

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

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

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

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

+0

Из любопытства, что вы делаете для жизни? –

0

Существует много разных алгоритмов. В основном то, что вы ищете, это «компьютерное зрение». Мы создали проект в университете, основанный на распознавании и обнаружении лица. Что вам нужно сделать, это google широко и попытаться понять все это. Есть немного математики, поэтому нужно быть готовым. Сначала перейдите к wikipedia. Затем вам нужно будет найти pdf публикации конкретных алгоритмов.

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

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

Смежные вопросы