На сегодняшний день возможности создания, хранения, передачи изображений довольно широки и легкодоступны. Каждый день создаются, копируются, выставляются в сеть миллионы фотографий. К тому же во всем мире все больше и больше уделяется внимание безопасности в общественных местах, например, в транспорте, в офисных помещениях и многих других. Такие устройства как фото-регистрация позволяют в режиме реального времени логировать события в виде фотографий. Благодаря этому мы располагаем огромным объемом данных, который непрерывно пополняется [1]. В связи с этим существует необходимость обработки огромного массива изображений, а также распознавания различных образов, а в частности признаков человека.
Определение антропологических признаков человека, таких как возраст, пол, национальность, раса, очевидны для человека, но для компьютера идентификация таких признаков — очень сложная задача, ведь это требует огромной вычислительной мощности. Благодаря вышеописанным факторам идентификация черт человека по лицу, приобрела важное значение.
Данное направление не стоит на месте и успешно развивается. На данный момент в этом направлении важное место занимает машинное обучение. На практике машинное обучение одно из самых успешных, конструктивных, универсальных и оптимальных методов для распознавания объектов и признаков на изображении. Одним из инструментов машинного обучения является нейронная сеть, которая показывает одни из самых высоких показателей точности в указанных задачах[9].
Цель работы - построение такой нейронной сети, которая смогла бы определять заданные признаки человека по изображению. То есть нейронная сеть должна:
1) решать задачи классификации признаков пола и расы;
2) решать задачу регрессии для возраста.
Для этого были поставлены следующие задачи:
1) изучить принципы работы нейронных сетей;
2) изучить виды и особенности архитектур;
3) реализовать наиболее подходящую архитектуру;
4) обучить модель нейронной сети.
На сегодняшний день мы располагаем огромным объемом данных, который непрерывно пополняется. В связи с этим существует необходимость обработки изображений, для самых разнообразных целей, в том числе в сфере безопасности. Распознавание различных образов, а в частности признаков человека, является сложной задачей для компьютера.
Мощным инструментом компьютерного зрения являются сверточные сети. Данное направление постоянно развивается. Растет мощность вычислительных машин, растет объем данных, а вместе с ним обучающая выборка, совершенствуются алгоритмы, а также разрабатываются разнообразные архитектуры, специализированные на конкретных задачах, а значит, дающие высокую точность [1].
Была поставлена цель создать архитектуру и обучить модель нейронной сети, которая смогла бы определять заданные признаки человека по изображению: классификация пола и расы, регрессия для возраста. В ходе работы были проведены эксперименты с различными гиперпараметрами нейронной сети.
Полученные результаты показывают, что модель хорошо решает задачу определения пола, достигая точности свыше 90%, однако имеет своеобразные трудности в задаче определения расы, точность которой 70%, и возраста, средняя ошибка которой 8 лет.
При определении возраста, модель уверенно предсказывает изображен ли на фото человек зрелого или пожилого возраста, при этом модель часто ошибается на возрастах от 25 до 40 лет. Можно сделать небольшую скидку на то, что даже человек с трудом может точно определить узкую расу или точный возраст человека, а ошибка в несколько лет считается нормальной.
Большое влияние на результат оказывает содержание датасета. Чаще в обучающей выборке представлены представители классов White и Asian. И модель гораздо быстрее и увереннее предсказывает принадлежность классу white, нежели чем классу Hispanic. Данная проблема частично решается формированием сбаласированных батчей.
Так как модель показала неплохие результаты, на классах содержащих большое количество представителей этих классов, логично предположить, что модель удачна и хорошо обучается. Для лучших результатов возможно необходимо наличие в датасете больше представителей узких рас. Потенциально можно увеличить количество классов для классификатора, добавить более узкие расы, однако для этого необходимо подкрепить модель достаточным количеством обучаемых данных.