Введение.
Современные технологии компьютерного зрения активно развиваются и находят применение в самых различных сферах — от безопасности и мониторинга до социального взаимодействия и развлечений. Одной из ключевых задач, решаемых в рамках компьютерного зрения, является распознавание лиц на изображениях. Эта проблема актуальна как для научных исследований, так и для практического использования, включая создание систем видеонаблюдения, аналитики, а также разработки приложений для мобильных устройств [6].
Система распознавания лиц — это инновационная технология, которая позволяет определить или подтвердить личность на цифровых снимках и кадрах видео. Существует множество методов, применяемых в таких системах, однако все они базируются на сопоставлении черт лица, представленных на изображении, с данными о лицах, хранящимися в базе.
Метод Виолы-Джонса, предложенный в 2001 году, стал одним из первооснов для решения задачи распознавания лиц. Он сочетает в себе эффективность и высокую скорость обработки данных, что позволяет осуществлять распознавание в реальном времени. Использование нейронных сетей в контексте данного метода открывает новые горизонты в улучшении точности и способности к адаптации систем распознавания к различным условиям.
В данной статье будет рассмотрен процесс разработки программного приложения, основанного на методе Виолы-Джонса для распознавания лиц с использованием нейронных сетей. Мы проанализируем основные этапы реализации, существующие алгоритмы и решения, а также проведем эксперименты, подтверждающие эффективность выбранного подхода.
Цель исследования — разработка программного приложения для распознавания лиц на фотографиях с использованием метода Виолы-Джонса, которое будет эффективно обрабатывать изображения в реальном времени и обеспечивать высокую точность обнаружения.
Материал и методы исследования
В ходе исследования, были проанализированы научные работы отечественных и зарубежных ученых, был проведен анализ существующего программного обеспечения для распознавания лиц и разработан программный продукт.
Результаты исследования и их обсуждение
Метод Виолы-Джонса был предложен в 2001 году Пейдоном Виолой и Майклом Джонсом. Этот алгоритм включает в себя несколько ключевых моментов[4]:
· Хаара-признаки: Использование каскада простых признаков для обнаружения лиц. Эти признаки основаны на различиях в интенсивности пикселей между различными областями изображения;
· Каскадный классификатор: Алгоритм применяет несколько уровней классификации, что позволяет существенно уменьшить количество областей, нуждающихся в проверке. Это делает алгоритм быстрым и подходящим для работы в реальном времени;
· Обучение классификаторов: Алгоритм использует метод AdaBoost для выбора наиболее важных признаков и формирования конечного каскада классификаторов.
Для успешной работы алгоритма необходимы заранее собранные и размеченные данные. В этом случае требуется набор изображений лиц, на которых присутствуют различные ракурсы, условия освещения и выражения лиц. Исходные данные можно получить из открытых наборов, таких как LFW (Labeled Faces in the Wild) или собственных коллекций.
Обработка видеокадров проходит через два ключевых этапа. Сначала происходит определение лиц на кадре, затем следует процесс идентификации обнаруженных лиц. В процессе разработки системы использовался метод обнаружения лиц Виолы-Джонса, а для распознавания — метод ближайших соседей с использованием гистограмм центрально-симметричных локальных бинарных шаблонов.
Кроме основных этапов обнаружения и идентификации, в разработке присутствуют промежуточные стадии обработки найденных лиц: фильтр Гаусса, который после определения лиц уменьшает уровень шума, и маска значимых зон, позволяющая устранить влияние угловых областей изображения, содержащих задний план.
В итоге обобщённый алгоритм обработки кадров включает следующие этапы: определение лиц, обработка найденных лиц с использованием фильтра Гаусса, преобразование LBP найденных лиц с дальнейшим применением маски значимых зон, расчёт гистограмм обнаруженных лиц и классификация лиц методом ближайших соседей на основе гистограммы. Общий разрабатываемый алгоритм представлен на рисунке 1.
Рисунок 1 – Обобщенный алгоритм обработки кадров видеопотока
Также, по составленному обобщенному алгоритму обработки видеопотока, был составлен необходимый разрабатываемый функционал:
- вывод видео потока с подключенной к компьютеру камеры в реальном времени или возможность загрузки видео из файла;
- ввод информации о принадлежности распознаваемого лица к определенному классу;
возможность обучения и добавление классов лиц с использованием камеры через интерфейс приложения.
В качестве входных (начальных) данных используется дата-сет фотографий образов людей, имеющих определенный уровень доступа. В качестве "физической" единицы данных выступает текущий образ человека (см. рис. 2.)
Рисунок 2 – Диаграмма связи входящих и исходящих потоков информации
Исходящими данными будет сигнал, который уведомляет администратора о пропуске человека или образ человека, который сохраняется в базу данных.
Благодаря архитектуре системы, которая требует только датасет с образами людей по определенным правам доступа, процесс автоматического пропуска человека в здание не требует участия людей.
Система состоит из трех основных модулей и двух таблиц одной базы данных.
- Модуль камеры
- Модуль интерфейса
- Модуль распределения.
Схема архитектурных компонентов изображена на рисунке 3
Рисунок 3 – Схема архитектурных компонентов
Python бесспорный лидер среди языков программирования для создания нейронных сетей и работы с ними. Он широко используется во всех отраслях и имеет довольно лаконичный синтаксис, гибкость и масштабируемость[5].
Прежде всего, Python – это язык с открытым исходным кодом. Это означает, что он доступен для любых модификаций, которые разработчики сочтут необходимыми.
Этот язык программирования постоянно развивается, что упрощает его синтаксис и повышает его эффективность.
Во-вторых, существует большое количество готовых к использованию библиотек, которые помогают ускорить написание кода [3]. Например:
- TensorFlow широко применяется для машинного обучения и работы с наборами данных;
- Scikit – для обучения моделей машинного обучения;
- PyTorch – для обработки речи и для компьютерного зрения.
Это ощутимое преимущество, которое может помочь ускорить разработку и сэкономить ресурсы, поскольку позволяет применять готовые решения вместо их создания с нуля.
Lisp - один из старейших языков программирования, который по факту является предком нескольких языков программирования нейронных сетей. Однако, сегодня этот язык редко используется для искусственного интеллекта.
Дело в том, что многие основные функции, которые сделали Lisp пригодным инструментом для программирования ИИ, перешли в другие языки, что делает их более удачным вариантом для машинного обучения и ИИ.
У Lisp нет библиотек, и его синтаксис довольно специфичен. Кроме того, для работы с ним требуются специальные конфигурации софта и компьютера.
C++ носит звание "Самый быстрый язык программирования", поэтому его часто используют для компьютерных игр, десктопных приложений и поисковых систем. Например, Google Chrome написан с использованием C++.
Этот язык программирования в первую очередь является инструментом для создания сложных продуктов, таких как банковское программное обеспечение, облачные системы и корпоративное программное обеспечение.
Для создания искусственного интеллекта и приложений с их использованием, в частности, в C++ есть библиотеки, доступные для машинного обучения и нейронных сетей, которые способствуют более быстрому выполнению сложных алгоритмов.
При выборе языка программирования для искусственного интеллекта, C++ определенно стоит рассмотреть, как вариант из-за его основного преимущества в виде высокой скорости. Сведем сравнение данных языков программирования в сравнительную таблицу 1.
Таблица 1 сравнение языков программирования
Язык программирования |
скорость |
удобный синтаксис |
сообщество |
С++ |
+ |
– |
+ |
Lisp |
+ |
– |
– |
Python |
+ |
+ |
+ |
Разработка системы выполнялась на объектно-ориентированном языке программирования Python в среде разработки PyCharm.
В качестве основного был выбран язык python, так как обладает нужными качествами для реализации, имеет встроенную поддержку обобщений, делегатов и событий, что облегчит реализацию.
Python имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML
Важным критерием в пользу выбора данного языка программирования был опыт разработки на нем, полученный за время обучения.
Для разработки системы, также было решено использовать в качестве одной из основных - библиотеку Face_recognition. Данная библиотека разработана на C++. Face_recognition содержит алгоритмы для обработки, реконструкции и очистки изображений, распознания образов, захвата видео, слежения за объектами, калибровки камер и др. библиотека распространяется по лицензии BSD, а значит, может свободно использоваться в академических и коммерческих целях.
Поиск лиц происходит с помощью так называемого сканирующего окна, алгоритм сканирования которого выглядит так:
- есть исследуемое изображение, выбрано окно сканирования, выбраны используемые признаки;
- далее окно сканирования начинает последовательно двигаться по изображению с шагом в 1 ячейку окна (допустим, размер самого окна 24 * 24 ячейки);
- при сканировании изображения в каждом окне вычисляется примерно 200 000 вариантов расположения признаков, за счет изменения масштаба признаков и их положения в окне сканирования;
- сканирование проводится последовательно для разных масштабов;
- масштабируется не само изображение, а сканирующее окно (изменяется размер ячейки);
- все найденные признаки передаются классификатором, определяющим по их значению, является ли область изображения, соответствующая окну, лицом или нет.
Поскольку для описания объекта с достаточной точностью необходимо большее число признаков Хаара, они не очень подходят для обучения или классификации. В связи с этим, для ускорения процесса обнаружения, в методе Виолы-Джонса используется каскадный классификатор, который позволяет ускорить обнаружение лиц, фокусируя работу на наиболее интересных областях изображения.
Выводы
Разработка программного приложения для распознавания лиц на фотографиях с использованием метода Виолы-Джонса продемонстрировала высокий потенциал этого алгоритма в области компьютерного зрения. Метод сочетает в себе быстроту и эффективность, что делает его прекрасным инструментом для реального времени работы с изображениями.
Эффективность метода: использование Хаара-признаков и каскадного классификатора обеспечивает быстрый процесс обнаружения лиц, что крайне важно для прикладных решений, таких как видеонаблюдение, системы безопасности и мобильные приложения[5].
Простота реализации: доступность библиотек, таких как OpenCV, сильно упрощает процесс разработки и позволяет быстро интегрировать алгоритмы распознавания лиц в приложения, что делает технологию доступной для широкого круга разработчиков.
Ограничения метода: несмотря на высокую скорость, метод Виолы-Джонса имеет свои ограничения, включая зависимость от условий освещения и углов съемки. В случае сложных сцен, где лица могут быть частично скрыты или представлены под нестандартными углами, алгоритм может демонстрировать снижение точности.
Перспективы дальнейшего развития: для повышения точности и адаптивности системы к различным условиям предлагается интеграция методов глубокого обучения. Совмещение алгоритмов Виолы-Джонса с современными нейронными сетями откроет новые возможности для обработки изображений и повысит уровень распознавания в сложных условиях.
В целом, проект продемонстрировал, что классические методы распознавания, такие как метод Виолы-Джонса, по-прежнему имеют значительное значение в эпоху глубокого обучения и могут служить надежной основой для дальнейших исследований и разработок в области компьютерного зрения.
Библиографическая ссылка
Базилевский В.А., Мозговенко А.А. РАЗРАБОТКА ПРОГРАММНОГО ПРИЛОЖЕНИЯ ДЛЯ РАСПОЗНАВАНИЯ ЛИЦ НА ФОТОГРАФИЯХ С ИСПОЛЬЗОВАНИЕМ НЕЙРОННЫХ СЕТЕЙ // Международный студенческий научный вестник. – 2024. – № 6. ;URL: https://eduherald.ru/ru/article/view?id=21657 (дата обращения: 27.12.2024).