Как я написал сервис распознавания лиц
10.04.2025
Привет! В этом посте расскажу, как я разрабатывал сервис распознавания лиц на Python.
Задача
Нужно было сделать систему, которая:
- Распознаёт лица на фотографиях
- Сравнивает лица с базой известных людей
- Возвращает результат через API
Стек
- Python 3.11
- OpenCV — обработка изображений
- face_recognition — библиотекаровка на базе dlib
- FastAPI — веб-сервис
- Docker — контейнеризация
Архитектура
Сервис работает как отдельный микросервис. Принимает изображение через POST-запрос, обрабатывает и возвращает JSON с результатами.
@app.post("/recognize")
async def recognize_face(file: UploadFile):
image = cv2.imdecode(...)
faces = face_recognition.face_locations(image)
# ... обработка
return {"faces": results}
Сложности
Самое сложное — качество распознавания при разном освещении. Пришлось добавить препроцессинг изображений и настройку порога сравнения.
Результат
Сервис работает в продакшене и обрабатывает запросы за ~200мс.