Skip to content

Instantly share code, notes, and snippets.

@dkuryakin
Created August 18, 2023 08:24
Show Gist options
  • Save dkuryakin/a10324977c3c07e6e0f7864834712497 to your computer and use it in GitHub Desktop.
Save dkuryakin/a10324977c3c07e6e0f7864834712497 to your computer and use it in GitHub Desktop.

Описание тестовой задачи

Описание тестовой задачи: сделать прототип сервиса по распознаванию лиц.

Интерфейс

Интерфейс - HTTP API. Нужно реализовать один эндпоинт:

POST /search

Параметры:

  • image: multipart form data, JPEG/PNG

Ответ - ТОП-10 самых близких лиц из базы лиц:

[
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123},
    {"id": 123, "distance": 0.123}
]

Дополнительные детали

  1. Должен быть реализован риалтайм механизм пополнения базы лиц - т.е. без остановки сервиса и пересчёта всей базы.
  2. Это прототип - поэтому тесты, линтеры, документация - не нужны.
  3. Хоть это и прототип, предполагается что будет заложена основа для масштабируемой архитектуры, как минимум для обсуждения вариантов как скейлиться под любой поток.
  4. Стэк - пайтон 3.9+, остальное на усмотрение.
  5. Можно взять любую реализацию для вычисления эмбеддингов, например эту https://github.com/deepinsight/insightface, можно для теста инференс делать на CPU.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment