Автоматическое предсказание пола и возраста человека по фотографиям, полученным в самых разных условиях - это важная и сложная задача, находящая применение во многих областях жизнедеятельности людей. В своем проекте мы стремились воплотить подход к решению этой задачи, основанный на сверточных нейронных сетях. Свое решение мы разбили на две составных части - детектирование лица человека и ключевых точек на его лице и дальнейшее предсказание пола и возраста по признакам лица.
Для детектирования мы используем архитектуру RetinaFace с предобученным на ImageNet-1000 ResNet-18 в качестве основой модели. В качестве обучающих данных мы используем датасет WIDER FACE с добавленными к нему пятью ключевыми точками для каждого лица. На тестовой выборке наш детектор получает значение метрики Precision равное 83%.
Для классификации найденных лиц мы используем модель на основе двух предобученных на ImageNet-1000 ResNet-18. В качестве обучающих данных мы испольуем датасеты IMDB-WIKI-101 и FGNET. В качестве тестовых данных мы используем датасет Adience, наша модель получает для возраста значение метрики Exact-accuracy 45% и значение метрики One-off-accuracy 80%, для пола значение метрики Accuracy 85%.
В итоге мы получили рабочую модель, способную обрабатывать большие массивы фотографий, детектировать на них людей и предсказывать для их пол и возраст в автоматическом режиме.