UP Face: нейросеть, которая помогает хирургам рассчитать асимметрию лица по фотографии
Сервис позволяет узнать ключевые параметры человека (пол, возраст, расу и т.п.) по фото.
Так же определить пропорции лица, выявить асимметрию и узнать на кого из знаменитостей похож человек.

UP Face
Клиент
Сеть клиник пластической хирургии. Подробности — под NDA.

О проекте
Нейросеть для клиник пластической хирургии, которая оценивает асимметрию лица по фотографии.

Цели разработки
Помочь клиентам принять решение
UP Face измеряет лицо по 75 параметрам и показывает степень асимметрии в цифрах. На основе этих данных клиент решает нужна ли ему операция.

Ускорить и улучшить прием
Точные данные о пациенте до начала приема ускоряют прием и изучение анамнеза.
Нейросеть работает так:
Клиент загружает фотографию, а система показывает опорные точки на лице с помощью скрипта на базе библиотеки OpenCV и фреймворка Caffe. На основе опорных точек нейросеть строит линии для оценки симметрии и размеров лица.

Процесс разработки
У клиента уже работало приложение. Нам оставалось сделать, обучить и интегрировать в него нейросеть.
Первые этапы
Чтобы показать, как работает нейросеть, мы сделали демостенд. Демостенд распознает точки на лице, пол, возраст, расу, цвет волос, прическу, цвет глаз, наличие шрамов, пирсинга, тату других отличительных признаков.

Эмоции
  1. Злость
  2. Презрение
  3. Страх
  4. Счастье
  5. Нейтральные эмоции
  6. Печаль
Модель обучена на Pytorch.



Точность определения эмоций на этом этапе — 65%.

Эмоции, волосы, цвет кожи
После асимметрии мы научили нейросеть определять шесть типов эмоции, длину волос, седину, шрамы, макияж, татуировки, пирсинг, морщины, цвет кожи.

Вот некоторые показатели и технические подробности.
Цвет волос
  1. Блондин
  2. Брюнет
  3. Шатен
  4. Седой
  5. Крашенный
Лучшая модель: файнтюнинг на базе ResNet50 с предобученными весами. В качестве головы распознавания два внутренних полносвязных слоя и последний по числу классов.
Для снижения переобучения добавлены два слоя dropout.
Длина волос
  1. Короткая
  2. Длинная
  3. Хвост
  4. Без волос
Лучшая модель определения: файнтюнинг на базе ResNet50 с предобученными весами.



Точность на тестовой выборке ~ 86%.
График ошибок и accuracy последней архитектуры.
Точность на тестовой выборке ~ 96%.
Седина и шрамы
  1. Седина есть
  2. Седины нет
  3. Шрам есть
  4. Шрама нет

Мы применяли технологию семантической сегментации и маскирования. Коэффициент срабатывания — 1% наличия заданного цвета. Точность обнаружения — 83%.
Цвет глаз
  1. Голубые
  2. Серо-голубые
  3. Коричневые
  4. Серо-коричневые
  5. Темно-коричневые
  6. Зеленые
  7. Серо-зеленые
  8. Неопределенные
Чтобы определить цвет глаз, система определяет 68 точек на лице. На основании этих точек она определяет центры глаз, расстояние между ними и радиус радужной оболочки. Далее UP FACE создает маску, чтобы выделить радужные оболочки и при помощи OpenCV определить доминирующий цвет из набора цветовых диапазонов каждого класса.
Так выглядит результат работы: клиент загружает фотографию лица, а система показывает его параметры. Те же данные поступают врачу.
Итог
Система работает. Результаты просчитываются на внешнем сервере и передаются по API. При обработке фотографии клиент и врач получают точные данные в цифрах.
Команда
  1. Два дата сантиста
  2. DevOps
  3. Аналитик и руководитель проекта

Сроки проекта
Четыре месяца