Введение
Сегодня я расскажу о своей первой работе в области распознавания образов, которую реализовал около 6 лет назад. Данной статьей я хотел бы заинтересовать молодых разработчиков областью распознавания и анализа изображений. Здесь я описал, как решал на тот момент данную задачу, при помощи несложного метода. Алгоритм анализа не претендует на высокую точность при работе с искаженными входными данными или со сложными изображениями.
Целью работы является идентификация расы человека по входному образу (фронтальный снимок лица человека).
Решение проблемы
Чтобы подойти к задаче идентификации, нужно было определиться, с какими параметрами исходного изображения следует работать. Погуглив в Интернете я пришел к выводу, что можно отталкиваться от следующих критериев: пропорция головы, ширина челюсти, форма носа, форма губ, разрез глаз, цвет кожи и волос.
Рейтинговая система параметров
В связи с тем, чтобы было удобно работать с данными критериями, необходимо было перейти к относительным параметрам, поэтому я выделил следующие:
- Пропорция головы — отношение ширина лица к его высоте (3 балла)
- Отношение ширины челюсти к ширине лобной части (2 балла)
- Отношение ширины носа к ширине челюсти (2 балла)
- Отношение ширины губ к ширине челюсти (3 балла)
- Пропорция губ — отношение ширины губ к высоте (3 балла)
- Пропорция глаз — отношение ширины глаз к высоте (3 балла)
- Цвет кожи — усредненный цвет кожи (5 баллов)
- Цвет волос — усредненный цвет волос (2 балла если темный, 3 балла если светлый)
В скобках указан субъективный рейтинг параметра, определяющий его важность в рамках данной задачи, определялся он на базе испытаний. Каждый разработчик может устанавливать свою важность параметров.
В одной энциклопедии предлагалась следующая базовая классификация рас: европеоидная, монголоидная, негроидная и австралоидная. На самом деле, существуют различные классификации, но мне эта показалась достаточная, при этом были составлены снимки основных представителей данных рас, на базе которых были основаны классы для разрабатываемой системы. На рис. ниже визуализированы представители рас. Точность при вырезании лица желательна высокая, но небольшие погрешности особо не влияют на результат.
Определение потенциальных областей паттернов лица
Примерное расположение паттернов (частей лица) рассчитывается на базе априорной информации. Мы знаем, что глаза находятся выше центра лица по вертикали, примерно симметрично относительно центра по горизонтали. Губы расположены в центре по горизонтали, ниже центра лица по вертикали и т.д.
Исходя из подобных предположений можно вывести примерные формулы для вычисления областей, на которых расположены требуемые паттерны (губы, нос, глаза).
Регион расположения лобной части
[MinX, MinY + (MinY+MaxY)/4, MaxX, MinY + (MinY+MaxY)/4],
где MinX и MaxX — крайняя левая и соответственно правая точки изображения по оси Х,
MinY и MaxY — крайняя верхняя и соответственно нижняя точки изображения по оси Y
Регион расположения челюсти
[MinX, MaxY – (MinY+MaxY)/5, MaxX, MaxY – (MinY+MaxY)/5]
Регион расположения губ
[JawX1 + (JawX2-JawX1)/5, MaxY-(MaxY+MinY)/4, JawX2 — (JawX2-JawX1)/ 5, MaxY-(MaxY+MinY)/8],
где JawX1 и JawX2 — левая и соответственно правая точки челюсти (по оси Х)
Регион расположения носа
[MinX+(MaxX+Minx)/3, MaxY-(MaxY+MinY)/3, MaxX-(MaxX+MinX)/3, MaxY-(MaxY+MinY)/4]
Регион расположения глаз
[MinX+(MaxX+Minx)/6, (MaxY+MinY)/2 — (MaxY+MinY)/30, (MaxX+MinX)/2 — (MaxX+MinX)/2, (MaxY+MinY)/2 + (MaxY+MinY)/20]
и [(MaxX+MinX)/2 + (MaxX+MinX)/12, (MaxY+MinY)/2 — (MaxY+MinY)/30, MaxX-(MaxX+Minx)/6, (MaxY+MinY)/2 + (MaxY+MinY)/20]
Регион среднего цвета кожи
[JawX1, (MinY+MaxY)/2, (JawX1+JawX2)/3, (MinY+MaxY)/2 + (MinY+MaxY)/3]
Регион среднего цвета волос
[MinX, MinY, MaxX, MinY+(MaxY-MinY)/15]
Определение паттернов лица
Основные действия, выполняемые при обходе заданных областей на наличие паттернов:
- Для заданного участка, который описывается прямоугольником вычисляется средний цвет пикселей.
- Для каждого пикселя прямоугольника анализируется его цвет, если он темнее среднего цвета, то значит он относится к данному объекту.
- Вычисляются максимальные и минимальные значения объекта по оси Х и Y. По данным критическим точкам строится регион, в котором описан паттерн.
Снизу представлено изображение, которое содержит лицо и обнаруженные паттерны.
Побочные объекты (например, усы, борода или очки) могут отрицательно сказаться на определении паттернов.
Определение принадлежности к расе
На базе разработанных методов были просканированы эталонные изображения представителей рас и сохранены в БД. Для определения принадлежности исходного образа к некоторой расе, необходимо, использовать рейтинговую систему параметров, которая описана выше. Если параметр исходного образа имеет схожу величину с параметром эталона, то балл засчитывается. Проанализировав все параметры, можно сделать вывод, с какой расой исходный образ имеет наибольшее сходство.
При анализе параметра можно сделать возможное отклонение, при котором балл будет засчитываться, если даже не совпадает. Можно установить фиксированную величину, величину в % или подбирать интеллектуальным методом с обучением, который описан в данной статье.
Например, данные входные образы система определила как «Европеоидная»
А баскетболиста Wang Zhizhi как «Монголоидная»
Заключение
В данной статье описана реализация поставленной цели. Решение носит больше академический характер. Разработанный метод можно дополнить автоматическим определением лиц на изображении, чтобы не приходилось вырезать область. Паттерны лица или их потенциальные области можно обнаруживать тоже автоматически, если обучить систему на это. Например, статья по обнаружению глаз.
Автор: sermal
Здравствуйте! Есть программы, для смартфона, автоматом определяющая принадлежность к расе?
Хочу узнать расу