Code Monkey home page Code Monkey logo

software-engineer-neutral-face-task's Introduction

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

Задача - написать классификатор нейтрального лица, с упором на его дальнейшее использование в мобильном приложении в 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"

software-engineer-neutral-face-task's People

Contributors

danil328 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.