Skip to content

Latest commit

 

History

History
16 lines (13 loc) · 2.33 KB

README.md

File metadata and controls

16 lines (13 loc) · 2.33 KB

celebrity_faces

Проект сайта "на какую знаменитость ты похож".

Архитектура.

Состоит из трех сервисов.

  1. Веб-морда. Страничка загрузки пользовательской картинки и страничка с результатами. Полученную картинку посылает на сервис эмбеддинга и получает эмбеддинг. Полученный эмбеддинг посылает сервису индекса и получает имя файла с фото самой похожей знаменитости, которое отображается на страничке с результатами.
  2. Сервис эмбеддинга. Принимает картинку через POST-запрос, выделяет лицо, используя Haar Cascades из OpenCV, делает необходимую предобработку для facenet и считает эмбеддинг по предобученной модели facenet.
  3. Сервис индекса. Строит индекс по предварительно подсчитанным эмбеддингам для cropped celebrities, принимает POST-запросы с векторами, возвращает имя картинки, соответствующей ближайшему вектору. Пока что в качестве индекса используется Annoy и поиск проихсходит по урезанному датасету из ~13k картинок из lfw dataset.

Все сервисы написаны на Python/Flask.

Планы.

  1. Заменить Annoy на свой индекс. Индекс будет основан на Navigable Small World algorithm, написан на C++ (в процессе) и подключаться через cython к Flask-сервису индекса.
  2. Запускать все сервисы в своих docker'ах через docker-compose.
  3. Заменить датасет лиц знаменитостей на больший.
  4. Сделать сайт красивее.