УДК 004.8
Тимергалин А.Р. студент магистратуры Набережночелнинский институт
филиал КФУ г.Набережные Челны Ахметов Р.Д. студент магистратуры Набережночелнинский институт
филиал КФУ г.Набережные Челны Князев О.А. студент магистратуры Набережночелнинский институт
филиал КФУ г.Набережные Челны
РАСПОЗНАВАНИЕ ЛИЦ С ИСПОЛЬЗОВАНИЕМ ГЛУБОКОГО
ОБУЧЕНИЯ
Аннотация: Статья посвящена технологии распознавании лиц с использованием алгоритма машинного обучения.
Ключевые слова: Python, алгоритм, обучение, камера.
Timergalin A.R. student
Naberezhnye Chelny Institute Kazan Federal University Naberezhnye Chelny Akhmetov R.D. student
Naberezhnye Chelny Institute Kazan Federal University Naberezhnye Chelny Knyazev O.A. student
Naberezhnye Chelny Institute Kazan Federal University Naberezhnye Chelny
NFC AS A MEANS OF AUTOMATING THE HOME AND INDUSTRIAL
EVIRONMENT
Abstract: The article is devoted to face recognition technology using a machine-learning algorithm.
Key words: Python, algorithm, training, camera
За последние годы компьютерное зрение набирает популярность и выделилось в отдельное направление. Постоянно идет разработка новых приложений, которыми пользуются во всем мире.
Одной из таких технологий является распознавание лиц. При правильном использовании эта технология может применяться во многих сферах жизни.
В данной работе рассматривается, целесообразность введения данной системы в различные сферы жизнедеятельности человека.
Распознавание лиц в соцсетях. Facebook заменил присвоение тегов изображения вручную на автоматически генерируемые предложения тегов для каждого изображения, загружаемого на платформу.
Распознание лиц в сфере безопасности. Примером тут может служить использование технологии распознавания лиц для защиты личных данных - разблокировка смартфона «по лицу».
Распознавание лиц для подсчета количества людей. Данную технологию распознавания лиц можно использовать при подсчёте количества людей, посещающих какие-либо мероприятие.
Перечисленные задачи можно решить применением одного алгоритма обучения машины.
Распознавание лиц представляет собой фактически последовательность нескольких связанных проблем.
1. Обнаружение изображения и локализация на нем лица.
2. Концентрация на каждом лице и определение.
3. Выделение уникальных характеристик лица, которые можно использовать для отличия его от других людей - например, размер глаз, форма лица и т.п.
4. Сравнение уникальных характеристик лица с характеристиками других людей, чтобы определить человека.
Человеческий мозг проделывает все это автоматически и мгновенно, но компьютеры неспособны к такому рода высокому уровню обобщения, поэтому необходимо обучить их каждому шагу в этом процессе отдельно.
Требуется устроить «конвейер», который будет находить решение на каждом этапе процесса распознавания объекта отдельно и передавать результат текущего шага на следующий. Таким образом, мы соединим в одну цепь несколько алгоритмов обучения машины.
Разберем каждый этап алгоритма отдельно.
На первом этапе требуется распознать лица на фотографии, прежде чем приступать далее. Современные камеры могут автоматически выделять лица, убедившись, что все лица были в фокусе, прежде чем
делать снимок. Но мы будем использовать этот алгоритм для другой цели — нам нужно выделить области на изображении, которые мы передадим следующему шагу нашего конвейера.
Будем использовать метод, изобретенный в 2005 году — гистограмма направленных градиентов (Histogram of Oriented Gradients) — или просто HOG, для краткости. Чтобы обнаружить лица на изображении, в первую очередь обработаем изображение в черно-белый цвет. Далее мы рассмотрим каждый пиксель на нашем изображении, один за другим. Интересует нас не столько сам пиксель, сколько пиксели, окружающие его.
Наша цель — выяснить, насколько темным является текущий пиксель по сравнению с соседними. Затем мы рисуем стрелку, показывающую, в каком направлении изображение становится темнее.
Выполнив эту процедуру для каждого отдельного пикселя изображения, вы замените каждый пиксель стрелкой. Эти стрелки называются градиентами, и они показывают направление от светлых пикселей к темным по всему изображению.
Проанализировав пиксели напрямую, то увидим, что темные изображения и светлые изображения одного и того же человека будут иметь совершенно разные значения яркости пикселей. Но, рассматривая только направление изменения яркости, мы получим одинаковую картину независимо от яркости исходного изображения, что значительно упрощает задачу.
Разделив изображение на маленькие квадраты размером 16x16 пикселей каждый. В каждом квадрате подсчитаем, сколько точек градиента повернуто в каждом из основных направлений (вверх, вверх, вправо, вправо и т. д.). Затем заменим этот квадрат на изображении стрелочками, направленными туда же, куда и большинство.
В итоге мы преобразовываем исходное изображение так, что ясно проглядывается базовая структура лица.
Чтобы найти лицо на HOG-изображении, нужно найти часть нашего изображения, которая наиболее похожа на известный Рис. HOG, полученный из множества других лиц в ходе обучения.
Используя данный метод, мы легко можем найти лица на любом изображении.
Теперь мы должны решить проблему, когда лица, повернутые в разные стороны, кажутся компьютеру разными лицами. Преобразовываем каждое изображение так, чтобы глаза и губы всегда находились в каком-то конкретном месте. Это упростит задачу сравнения лиц на следующих этапах.
Для этого используем алгоритм под названием оценка ориентиров лица (face landmark estimation). Будем использовать метод, изобретенный в 2014 году Вахидом Каземи (Vahid Kazemi) и Жозефиной Салливан (Josephine Sullivan).
Метод заключается в том, что мы отметим 68 особых точек (называемых ориентирами), которые существуют на каждом лице — верхняя часть подбородка, внешняя точка каждого глаза, внутренняя точка каждой брови и т. д. Далее мы обучим алгоритм машинного обучения находить эти 68 особых точек на любом лице.
Когда нашли, где глаза и где рот, мы можем вращать, масштабировать и сдвигать изображение так, чтобы глаза и рот были как можно лучше центрированы. Используем только базовые преобразования изображений, такие как поворот и масштабирование, которые сохраняют параллельные линии (аффинные преобразования).
Независимо от того, повернуто ли лицо, мы можем центрировать глаза и рот примерно в одно и то же положение на изображении. Это позволит сделать следующий этап более точным.
После того как мы научились определять лицо на изображении его необходимо распознать.
Простой подход к распознаванию лица заключается в непосредственном сравнении неизвестного лица, которое мы обнаружили на втором шаге, со всеми изображениями людей, которые уже были отмечены ранее. Если мы найдем ранее отмеченное лицо, очень похожее на распознаваемое лицо, то это наверняка будет один и тот же человек.
Существует проблема - такой сайт, как Facebook, на котором миллиарды пользователей и огромное множество фотографий, не может сравнивать все отмеченные ранее лица с каждым новым загруженным изображением — это займет слишком много времени. Например, мы можем измерить размер губ, расстояние между глазами, длину носа и т. д.
Этот процесс обучения сверточной нейронной сети для получения карты лиц требует большого количества данных и мощного компьютера.
Как только сеть будет обучена, она сможет генерировать измерения для любого лица, даже для такого, которое видит впервые! Поэтому это нужно сделать всего один раз. В OpenFace уже сделали это и опубликовали несколько обученных сетей, которые мы можем использовать. Пропускаем изображения лиц через готовую обученную сеть, чтобы получить 128 измерений для каждого лица. Нас интересует что сеть генерирует практически одинаковые числа по двум изображениям одного и того же человека.
Последний этап. Все, что нам нужно сделать, это найти человека в нашей базе данных, измерения которого ближе всего к полученным нами.
Это можно сделать, используя любой базовый алгоритм классификации машинного обучения. Используем простой линейный классификатор SVM (метод опорных векторов), но подойдут и другие алгоритмы классификации.
Все, что нам нужно сделать, — это обучить классификатор, который будет брать измерения из проверяемого изображения, и скажет нам, какой
известный нам человек больше всего похож на него. Запуск классификатора занимает миллисекунды, а на выходе имя человека!
Использованные источники:
1. Гейтгей А. Распознавание лиц с помощью глубокого обучения [Электронный ресурс] URL: https://medium.com/@ppleskov/4-14931b3c912b. (дата обращения: 05.07.2021)
2. Шайх З. Создание модели распознавания лиц с использованием глубокого обучения на языке Python [Электронный ресурс] URL: https://habr.com/ru/company/netologyru/blog/434354/ (дата обращения: 06.07.2021)