Целью работы является реализация облачного сервиса по распознаванию человека на фотографии. Решаться будет немного более узкая задача, а именно идентификация субъекта по изображению его лица. В итоге будет получена программа, адаптированная под относительно небольшие вычислительные мощности и ограничения на количество обучающих данных, с точностью близкой к лучшим продуктам в сфере распознавания лиц людей по их фотографии.
Определение хода выполнения работы и выделение подзадач
Исходными данными, с которым придется работать программе: база с изображениями людей и новое поступающее на «вход» изображение, относительно которого необходимо сделать вывод о том, есть ли человек, который изображен на этой фотографии на изображениях из базы или нет и сообщить это, как результат работы программы. Если на фото не один человек,
выявить всех людей и вернуть уже список с опознанными и неопознанными лицами. На первый взгляд задача, которую необходимо решить напоминает задачу классификации, но не при условии постоянного пополнения/уменьшения изображений в базе. Это условие потребует постоянного переобучения нейронной сети из-за изменения количества классов. При постоянном использовании сервиса в работе некоторого ресурса или предприятия недопустимы такие частые отказы в его работе. Они будут обусловлены тем, что для переобучения нейронной сети потребуется некоторое время, за которое человек, которого удалили из базы сможет проходить успешно идентификацию, а человек которого добавили в базу определяться как незнакомец. Решение той проблемы заключается в разработке некоторого компаратора, который мог бы брать к сравнению изображение из базы и входное изображение. Причем необходимо потребовать от компаратора вероятностного подхода к оценке двух изображений, то есть сообщать на сколько похожи люди на разных фотографиях. На этом моменте сформировались основные требования к реализуемой программе. Необходимо выделить подзадачи и определить инструменты для их решения.
Первая подзадача представляет собой писк обучающих данных. Выборка фотографий должна быть достаточно большой и содержать в себе изображения под различными ракурсами, углами наклона, уровнями яркости и с другим факторами фото-производства. Особенности человеческой внешности тоже должны быть учтены, так как человек в разное время может иметь различную прическу, носить очки, иметь предметы гардероба, скрывающие часть лица и т.д. Для анализа будут взяты следующие базы с фотографиями:
Вторая подзадача представляет собой способ выделения всех лиц на фотографии. Так как поступать в программу будут поступать различные изображения человека, необходимо выбрать способ выделения лиц на этих фотографиях. К рассмотрению будет взята пара «Метод Виола-Джонса» и «Гистограмма направленных градиентов».
Третья подзадача выражается в сведении выделенных лиц к единому стандарту. Для ее решения необходимо изучить метод, способный приводить изображения лиц, сделанные под разным углом и наклоном, сохраняя закономерности, присущие искаженному изображению. Такого рода преобразования называются – аффинными. Далее они получат более подробное описание.
Четвертая подзадача является основной. Она подразумевает реализацию функции, которая способна выявлять характерные черты человеческого лица. Её можно тоже разбить на множество подзадач, таких как выбор гиперпараметров нейронной сети, вида функции потерь, метода ее оптимизации и так далее. Она так же получит более подробное описание в теоретической части работы.
Пятой подзадачей является программная реализация предыдущих задач, сбор их в единое приложение и размещение на сервере, с возможностью подключения к нему из других приложений.
После определения подзадач можно перейти к описанию инструментов, с помощью которых они будут реализованы.
Введение......................................................................................................................................... 3
Определение хода выполнения работы и выделение подзадач............................................. 4
1. Теоретические основы............................................................................................................... 6
1.1. Методы нахождения человеческих лиц на фотографии............................................ 6
1.1.1. Метод Виолы-Джонса............................................................................................. 6
1.1.2. Метод Направленных Градиентов..................................................................... 10
1.2. Приведение изображения лица к единому стандарту. Аффинные преобразования 11
1.3. Нейронные сети............................................................................................................ 12
1.3.1. Понятие нейрона, нейронной сети..................................................................... 12
1.3.2. Функция активации............................................................................................. 14
1.3.3. Понятие глубокой нейронной сети..................................................................... 14
1.3.4. Структура сверточной нейронной сети.............................................................. 15
1.3.5. Обучение сверточных нейронных сетей............................................................ 19
1.3.8. Метод обратного распространения ошибки...................................................... 25
1.3.9. Стохастический градиентный спуск.................................................................. 35
1.3.10.Регуляризация нейронной сети............................................................................... 37
2. Практическая часть................................................................................................................ 39
2.1. Выбор обучающих данных.......................................................................................... 39
2.2. Выбор программного обеспечения............................................................................. 40
2.3. Подготовка данных для обучения нейронной сети................................................. 42
2.4. Загрузка данных для обучения................................................................................... 44
2.5. Ошибки в задаче идентификации.............................................................................. 46
2.6. Архитектура нейронной сети для извлечения bottleneck признаков..................... 50
2.7. Реализация функции потерь на основе триплетов.................................................. 52
2.8. Процесс обучения и тестирования и тестирования................................................. 53
2.9. Реализация обученной нейронной сети как функции в виде API на python....... 57
Заключение.................................................................................................................................. 58
Список литературы..................................................................................................................... 59
Приложения................................................................................................................................. 60
1) D. G. Lowe. Distinctive image features from scale-invariant keypoints. IJCV, 60(2):91-110, 2004.
2) Vahdat Kazemi and Josephine Sullivan. One millisecond face alignment with an ensemble of regression trees. In Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on, pages 1867–1874. IEEE, 2014.
3) Bull. Math. Biophys. – 1943. – v.5. – pp.115–133. Русский перевод • первоначальная публикация: Мак-Каллок У.С., Питтс В. Логическое исчисление идей, относящихся к нервной активности
4) Горбань А. Н. Обучение нейронных сетей. – М. : ПараГраф, 1990.
5) F. Schroff, D. Kalenichenko, and J. Philbin, “Facenet: A unified embedding for face recognition and clustering,” in CVPR, 2015.
6) S. Sankaranarayanan, A. Alavi, C. D. Castillo, and R. Chel-lappa. Triplet probabilistic embedding for face verificationand clustering. In Biometrics Theory, Applications and Sys-tems (BTAS), 2016 IEEE 8th International Conference on,pages 1–8. IEEE, 2016.
7) Q. Cao, L. Shen, W. Xie, O. M. Parkhi, and A. Zisserman. Vggface2: A dataset for recognising faces across pose and age. arXiv preprint arXiv:1710.08092, 2017.
8) Ян Гудфеллоу. Глубокое обучение / Ян Гудфеллоу, Аарон Курвилль, Иошуа Бенджио. – М.: ДМК Пресс, 2017. – С. 21-314.
9) Антонио Джулли. Библиотека Keras – инструмент глубокого обучения/ Антонио Джулли, Суджит Пол. – М.: ДМК Пресс, 2017. – С. 20-290
10) Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke. Inception- v4, Inception-ResNet and the Impact of Residual Connections on Learning