Тип работы:
Предмет:
Язык работы:


Разработка приложения для определения и идентификации лиц на фотографии на языке Python

Работа №46836

Тип работы

Бакалаврская работа

Предмет

информатика

Объем работы78
Год сдачи2018
Стоимость4230 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
236
Не подходит работа?

Узнай цену на написание


Введение 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
Приложения

Существует множество задач, которые связаны с нахождением неявных характеристик у наблюдаемого объекта, на основании которых можно сделать некоторые выводы относительно его. В работе с изображениями одной из самых популярных считается задача идентификация человека по его фотографии, то есть выявление характеристик, с помощью которых, с определённой долей вероятности, можно будет сделать вывод о том, какому человеку принадлежит изображение на фотографии. Она возникает во многих сферах деятельности человека: от социальных сетей, где необходимо определить и отметить всех знакомых и друзей, кто изображен на фото, до обнаружения опасных субъектов в видеопотоке с камер уличного наблюдения и мест большого скопления людей. Ее суть заключается в том, чтобы, имея некоторую базу с именами людей и их изображениями, определить кто именно из базы является владельцем нового изображения или же такого человека вообще нет в базе. Данная задача предполагает обработку большого потока информации и не имеет однозначного решения, так как не ясно какие черты человека необходимо выделить, а какие не очень и важны при анализе схожести одного человека с другим. Таким образом, автоматизация процесса идентификации субъекта по его изображению является не совсем тривиальной задачей. Для её решения необходим инструмент, способный выделять признаки в исходном изображении, желательно численно интерпретируемые. Лидирующим инструментом в сфере выявления различных факторов и признаков на изображениях и не только являются нейронные сети. Методы с использованием нейросетевых технологий достигают в задах идентификации человека огромных успехов. Однако вычислительная сложность из-за огромных размеров обучающих выборок, на которых натренированы нейронные сети, или очень сложной архитектуры зачастую не позволяют самостоятельно реализовать поставленную задачу. Существуют готовые решения с уже натренированными нейронными сетями для идентификации человека, реализованные в виде различных библиотек. Но использование сложных функций библиотек в проектах не всегда хорошо, так как это ограничивает возможности по дальнейшему развитию проекта и зависимостью от разработчика библиотеки. Эта зависимость выражается в определенном формате входных и выходных данных, гиперпараметрах нейронной сети, полю восприятия нейронной сети и т.д. Уместнее изучить различные существующие решения задачи идентификации человека по его фото, проанализировать их с учётом их особенностей и своих возможностей, потребностей, и реализовать самостоятельно. Это позволит глубже понять суть работы выбранного метода, чем при знакомстве с документацией библиотеки, реализующей нужную задачу. Однако не означает, что для реализации подзадач, возникающих в процессе реализации, нужно «изобретать велосипед» и переписывать хорошо зарекомендовавшие себя программные продукты, а то, что надо найти компромисс и решить какие блоки проекта можно доверить на исполнение сторонним программам, а какие требуют большего внимания и собственноручной реализации.
Целью работы является реализация облачного сервиса по распознаванию человека на фотографии. Решаться будет немного более узкая задача, а именно идентификация субъекта по изображению его лица. В итоге будет получена программа, адаптированная под относительно небольшие вычислительные мощности и ограничения на количество обучающих данных, с точностью близкой к лучшим продуктам в сфере распознавания лиц людей по их фотографии.
Определение хода выполнения работы и выделение подзадач
Исходными данными, с которым придется работать программе: база с изображениями людей и новое поступающее на «вход» изображение, относительно которого необходимо сделать вывод о том, есть ли человек, который изображен на этой фотографии на изображениях из базы или нет и сообщить это, как результат работы программы. Если на фото не один человек, выявить всех людей и вернуть уже список с опознанными и неопознанными лицами. На первый взгляд задача, которую необходимо решить напоминает задачу классификации, но не при условии постоянного пополнения/уменьшения изображений в базе. Это условие потребует постоянного переобучения нейронной сети из-за изменения количества классов. При постоянном использовании сервиса в работе некоторого ресурса или предприятия недопустимы такие частые отказы в его работе. Они будут обусловлены тем, что для переобучения нейронной сети потребуется некоторое время, за которое человек, которого удалили из базы сможет проходить успешно идентификацию, а человек которого добавили в базу определяться как незнакомец. Решение той проблемы заключается в разработке некоторого компаратора, который мог бы брать к сравнению изображение из базы и входное изображение. Причем необходимо потребовать от компаратора вероятностного подхода к оценке двух изображений, то есть сообщать на сколько похожи люди на разных фотографиях. На этом моменте сформировались основные требования к реализуемой программе. Необходимо выделить подзадачи и определить инструменты для их решения.
Первая подзадача представляет собой писк обучающих данных. Выборка фотографий должна быть достаточно большой и содержать в себе изображения под различными ракурсами, углами наклона, уровнями яркости и с другим факторами фото-производства. Особенности человеческой внешности тоже должны быть учтены, так как человек в разное время может иметь различную прическу, носить очки, иметь предметы гардероба, скрывающие часть лица и т.д. Для анализа будут взяты следующие базы с фотографиями:
Вторая подзадача представляет собой способ выделения всех лиц на фотографии. Так как поступать в программу будут поступать различные изображения человека, необходимо выбрать способ выделения лиц на этих фотографиях. К рассмотрению будет взята пара «Метод Виола-Джонса» и «Гистограмма направленных градиентов».
Третья подзадача выражается в сведении выделенных лиц к единому стандарту. Для ее решения необходимо изучить метод, способный приводить изображения лиц, сделанные под разным углом и наклоном, сохраняя закономерности, присущие искаженному изображению. Такого рода преобразования называются - аффинными. Далее они получат более подробное описание.
Четвертая подзадача является основной. Она подразумевает реализацию функции, которая способна выявлять характерные черты человеческого лица. Её можно тоже разбить на множество подзадач, таких как выбор гиперпараметров нейронной сети, вида функции потерь, метода ее оптимизации и так далее. Она так же получит более подробное описание в теоретической части работы.
Пятой подзадачей является программная реализация предыдущих задач, сбор их в единое приложение и размещение на сервере, с возможностью подключения к нему из других приложений.
После определения подзадач можно перейти к описанию инструментов, с помощью которых они будут реализованы.


Возникли сложности?

Нужна помощь преподавателя?

Помощь студентам в написании работ!


В ходе выполнения данной работы были изучены передовые материалы и методы идентификации человека по его двумерному изображению с помощью сверточных нейронных сетей, а также получен опыт работы с ведущими фреймворками машинного обучения и обработки изображений и реализовано веб-приложение, которое имеет широкое применение в различных сферах. Мною был проделан весь путь от постановки задачи машинного обучения в теории, заканчивая ее реализацией в готовый к применению продукт. Данная работа помогла приобрести мне бесценный опыт и позволила продемонстрировать навыки, приобретённые в ходе обучения, в таких сферах как: статистический анализ данных, программирование, умение работать с сырыми данными и систематизировать их.


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


Работу высылаем на протяжении 30 минут после оплаты.




©2024 Cервис помощи студентам в выполнении работ