Проект сайта "на какую знаменитость ты похож".
Состоит из трех сервисов.
- Веб-морда. Страничка загрузки пользовательской картинки и страничка с результатами. Полученную картинку посылает на сервис эмбеддинга и получает эмбеддинг. Полученный эмбеддинг посылает сервису индекса и получает имя файла с фото самой похожей знаменитости, которое отображается на страничке с результатами.
- Сервис эмбеддинга. Принимает картинку через POST-запрос, выделяет лицо и делает необходимую предобработку для facenet и считает эмбеддинг по предобученной модели facenet. Используются фото знаменитостей датасета CelebA. Тест accuracy на датасете LFW. Примеры наиболее похожих фото на датасете CelebA.
- Сервис индекса. Строит индекс по предварительно подсчитанным эмбеддингам для raw celebrities, принимает POST-запросы с векторами, возвращает имя картинки, соответствующей ближайшему вектору. Пока что в качестве индекса используется Annoy. Написан на C++ идекс Navigable Small World algorithm, который подключается через cython, но возникает проблема при отдаче результата работы плюсового кода в питон. Предполагалось тестить его accuracy на 1000 посчитанных facenet эмбеддингов датасета CelebA https://github.com/YuliaNikonova/celebrity_faces/blob/nsw_index_to_work/index/accuracy_test.py.
- Все сервисы запускаются в docker'ах через docker-compose. Все сервисы написаны на Python/Flask.