Описание тестовой задачи: сделать прототип сервиса по распознаванию лиц.
Интерфейс - 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}
]
- Должен быть реализован риалтайм механизм пополнения базы лиц - т.е. без остановки сервиса и пересчёта всей базы.
- Это прототип - поэтому тесты, линтеры, документация - не нужны.
- Хоть это и прототип, предполагается что будет заложена основа для масштабируемой архитектуры, как минимум для обсуждения вариантов как скейлиться под любой поток.
- Стэк - пайтон 3.9+, остальное на усмотрение.
- Можно взять любую реализацию для вычисления эмбеддингов, например эту https://github.com/deepinsight/insightface, можно для теста инференс делать на CPU.