Проект сайта "на какую знаменитость ты похож".
Состоит из трех сервисов.
- Веб-морда. Страничка загрузки пользовательской картинки и страничка с результатами. Полученную картинку посылает на сервис эмбеддинга и получает эмбеддинг. Полученный эмбеддинг посылает сервису индекса и получает имя файла с фото самой похожей знаменитости, которое отображается на страничке с результатами.
- Сервис эмбеддинга. Принимает картинку через POST-запрос, выделяет лицо, используя Haar Cascades из OpenCV, делает необходимую предобработку для facenet и считает эмбеддинг по предобученной модели facenet.
- Сервис индекса. Строит индекс по предварительно подсчитанным эмбеддингам для cropped celebrities, принимает POST-запросы с векторами, возвращает имя картинки, соответствующей ближайшему вектору. Пока что в качестве индекса используется Annoy и поиск проихсходит по урезанному датасету из ~13k картинок из lfw dataset.
Все сервисы написаны на Python/Flask.
- Заменить Annoy на свой индекс. Индекс будет основан на Navigable Small World algorithm, написан на C++ (в процессе) и подключаться через cython к Flask-сервису индекса.
- Запускать все сервисы в своих docker'ах через docker-compose.
- Заменить датасет лиц знаменитостей на больший.
- Сделать сайт красивее.