АННОТАЦИЯ 2
ВВЕДЕНИЕ 7
1 ПОСТАНОВКА ЗАДАЧИ 8
2 АЛЬТЕРНАТИВНЫЕ МЕТОДЫ РЕШЕНИЯ 9
2.1 Сравнение шаблонов 9
2.2 Сравнение эластичных графов 9
2.3 Гибкие контурные модели 11
2.4 Синтез объектов линейных классов 11
2.5 Методы, основанные на геометрических характеристиках лица 12
2.6 Метод главных компонент 13
2.7 Выводы 15
3 ДЕТЕКТИРОВАНИЕ ЧЕЛОВЕЧЕСКОГО ЛИЦА НА ИЗОБРАЖЕНИИ
ДЛЯ ВХОДА СВЕРТОЧНОЙ СЕТИ 16
3.1 Описание метода 16
3.2 Интегральное представление изображений 16
3.3 Признаки Хаара 17
3.4 Построения классификатора на основе алгоритма бустинга и построение
каскадной структуры 18
3.5 Выводы 19
4 НАХОЖДЕНИЕ ТОЧЕК ЛИЦА ПО ДЕТЕКТИРОВАННОМУ
СЕКТОРУ 20
4.1 Структура сверточных нейронных сетей 20
4.2 Принцип работы сверточных нейронных сетей 21
4.2.1 Convolution слой 21
4.2.2 Pooling слой 21
4.2.3 Fully-connected 21
4.3 Принцип обучения сверточных нейронных сетей градиентными
методами 22
4.3.1 Вычисление ошибки 22
4.3.2 Вычисление градиента 23
4.4 Выводы 23
В данном разделе рассматривается архитектура сверточной нейронной сети, процесс ее предсказания и обучения 23
5 МЕТОДЫ ПРИМЕНЯЕМЫЕ ПРИ ОБУЧЕНИИ 24
5.1 Обучение на GPU 24
5.2 Увеличение тренировочной выборки 24
5.3 Предотвращение переобучения 24
5.4 Dropout 25
5.5 Перемешивание обучающих примеров 26
5.6 Предотвращение паралича сети 26
5.6 Выводы 26
6 АРХИТЕКТУРА СВЕРТОЧНОЙ НЕЙРОННОЙ СЕТИ В ДАННОЙ
РАБОТЕ 27
6.1 Общая струтктура 27
6.2 Подробности архитектуры 27
6.3 Количество выходов, при заданной архитектуре 27
6.4 Количество настраиваемых весов, при заданной архитектуре 28
6.5 Выводы 28
7 РЕЗУЛЬТАТЫ 29
ЗАКЛЮЧЕНИЕ 30
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 31
ПРИЛОЖЕНИЕ 1 ТЕКСТ ПРОГРАММЫ НА ЯЗЫКЕ PYTHON 32
Искусственные нейронные сети в настоящее время получили широкое распространение в различных сферах человеческой деятельности, таких как распознавание и классификация образов, прогнозирование, управление. Пример конкретных задач - автоматическое управление автомобилем, распознавание изображений, речи, текстовые чат боты. Это произошло благодаря тому, что они имеют возможность синтезировать какие-либо алгоритмы, вычленяя из больших выборок данных произвольные закономерности. Изначально они построены по примеру биологических нейронных сетей - сетей нервных клеток животного. Один из видов искусственных нейронных сетей - сверточные нейронные сети, в основном применяющиеся для работы с изображениями. Причину этого можно увидеть в предпосылках их зарождения. Сверточные сети построены по примеру обработки визуальной информации у живых существ - в мозге есть области, выделяющие какие-либо инвариантные закономерности в изображениях - например линии.
Целью выпускной квалификационной работы является исследование возможностей применения сверточных нейронных сетей в области детекции произвольных объектов на RGB изображении. Эта область стала актуальной, в связи с появлением задач, где данный инструмент является вспомогательным а порой ключевым. А именно: досмотр людей на таможне, проект «Умный дом», различные задачи киноиндустрии, 3D анимация человекоподобных моделей и т.д. На сегодняшний день в данной сфере не существует решения дающего результат, хоть как-то близкий к идеальному.
Для достижения поставленной цели необходимо исследовать предметную область, исследовать методы для решения аналогичных задач, исследовать вспомогательные методы.
Также требуется разработать архитектуру нейронной сети для конкретной задачи - для детекции ключевых точек лица человека. Этот тип задачи относиться к классу регрессионных задач, то есть восстановление каких-либо зависимостей. Аналогичные методы решения возможно применять к схожим проблемам - распознавание рукописного текста, номеров автомобилей, дорожных знаков.
Разработан и протестирован комплекс алгоритмов для распознавания точек лица человека.
Был использован достаточно эффективный метод Виолы-Джонса, который дал приемлемый результат. Обучение признаков Хаара не производилось, так как это весьма длительный процесс и сети Интернет есть уже обученные признаки. Выполнялось их использование.
Произведен подбор архитектуры нейронной сети, процесс подготовки данных: сбор обучающей выборки - порядка 2000 изображений различных людей. Выполнены манипуляции по преподготовке данных для обучения - оказалось, что для обучения нейронной сети достаточно размерности изображений 100х100, соответственно были отмасштабированы все изображения.
Написана программа по забору изображений с веб камеры с помощью OpenCV.
Итого был реализован программный комплекс состоящий из пяти этапов:
1. С помощью OpenCV получаем изображение с веб камеры.
2. Методом Виолы-Джонса детектируем лица на полученном изображении
3. Приводим детектированные участки изображений с лицами к размерности 100х100
4. Подаем на вход нейронной сети полученные изображения и получаем от нее детектированные точки
5. Отрисовываем полученные точки на исходном изображении и выводим пользователю полученный результат
Тест полученного решения проводился в режиме реального времени. Установлено, что приемлемый уровень качества возможен при присутствии перед камерой количества лиц не более шести. При шести лицах в кадре происходит обработка 7 кадров в секунду. При одном лице - 25 кадров в секунду.
Возможно существенное улучшение работы алгоритма за счет следующих подходов:
1. Уменьшение “глубины” нейронной сети без потери качества.
2. Распараллеливание предсказания точек лица, по областям определенным методом Виолы-Джонса
3. Использование более качественных детекторов лиц, чем метод Виолы- Джонса.
4. Расширение обучающей выборки для получения лучшего результата.
5. Использование языков более низкого уровня для предсказания по предобученной модели определенной архитектуры