Skip to content

Danil328/Software-engineer-neutral-face-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Классификатор нейтрального лица

Задача - написать классификатор нейтрального лица, с упором на его дальнейшее использование в мобильном приложении в real-time. Предлагается в качестве базового варианта опираться на стандартную разметку 68 ключевых точек, которая использовалась в MULTI-PIE. В рамках этого задания мы будем считать, что данная задача разбивается на две: Детектор открытого рта Детектор улыбки

Ограничения:

  • не более 200 ms на фотографии с найденными ключевыми точками
  • не более 1000 ms на поиск ключевых точек на фотографии
  • не более 150 MB
  • общераспространенные зависимости (opencv, dlib, numpy, scipy, tensorflow, …) использовать можно, но они должны присутствовать в инструкции по установке
  • языки: C++, Python

Ограничения по времени следует считать ориентировочными, можете их понимать как ограничения для конкретного компьютера, на котором вы будете выполнять задание (также допускается их поднятие в случае наличия у вас компьютера, далекого от современных стандартов).

В процессе работы разрешается любые общедоступные датасеты для обучения и/или тестирования. В случае использования 68 ключевых точек разрешается использовать готовые решения для их поиска (их размер не будет учитываться в ограничении на занимаемое место).

Результатом вашей работы является программа, которая по набору путей до фотографий выводит 2 списка (по одному для каждого классификатора) фотографий, проходящих соответствующий фильтр. Также требуется предоставить программный код (лучше в виде приватного репозитория на github), поясняющую документацию для запуска и выборки, использованные для обучения/валидации моделей.

Плюсом будет являться описание того, какие метрики вы использовали при обучении/валидации классификаторов и почему, как бы вы подбирали параметры классификаторов в зависимости от возможных требований (например, при известной цене ошибки первого или второго рода).

Примеры фотографий можно найти здесь https://drive.google.com/file/d/1JcJGUX8NOkZvCUyxinxtkn4qjGD-DgQF/view?usp=sharing (пароль к архиву "Iephohn9" без кавычек).

Так как решение должно быть ориентировано на работу в мобильных устройствах, была выбрана сеть NASNetMobile.

Сеть обучалась на датасете http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html

В файле Annotation присутствует метка только для "Smile", для получения "open_mouth" было размечено около 4-х тысяч изображений.

В качестве оценки алгоритма использовалась F-мера, так как в тестовом датасете наблюдается дисбаланс классов.

Scores

Without Landmarks:
Validation score in CelebA:    f1_smile - 0.9612, f1_open_mouth - 0.9675
Test score in "example_data":  f1_smile - 0.5579, f1_open_mouth - 0.3892

With Landmarks:
Validation score in CelebA:    f1_smile - 0.8677, f1_open_mouth - 0.8763
Test score in "example_data":  f1_smile - 0.4931, f1_open_mouth - 0.6493

Clone repository

git clone https://github.com/Danil328/Software-engineer-neutral-face-task.git

Install requirements

pip3 install -r requirements.txt

Solution without landmark

cd Solution\ without\ landmarks/
python main.py "path_to_images" "path_to_submission"

Solution with landmark

cd Solution\ with\ landmarks/
python main.py "path_to_images" "path_to_submission"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published