You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
5 days ago | |
|---|---|---|
| .. | ||
| tests | 5 days ago | |
| .env.example | 5 days ago | |
| Dockerfile | 5 days ago | |
| README.md | 5 days ago | |
| database.py | 5 days ago | |
| face_engine.py | 5 days ago | |
| main.py | 5 days ago | |
| requirements.txt | 5 days ago | |
README.md
face-service
Python + FastAPI + InsightFace buffalo_l. Считает 512-d L2-нормализованные эмбеддинги лиц, хранит в pgvector, делает cross-camera re-id и узнавание пациентов.
Эндпоинты
| Метод | Путь | Назначение |
|---|---|---|
GET |
/health |
Статус + флаг загрузки модели |
POST |
/embed |
Только эмбеддинг (без БД). Body: {frame: base64} |
POST |
/track-embeddings |
Сохранить эмбеддинг с привязкой к треку/камере |
POST |
/reid/search |
Cross-camera re-id (top-K в окне T мин) |
POST |
/recognize |
Узнать пациента (patient_id) по кадру |
POST |
/enroll |
Привязать эмбеддинги трека к пациенту |
DELETE |
/patient/{id}/embeddings |
Удалить эмбеддинги пациента (отзыв согласия) |
GET |
/patient/{id}/count |
Кол-во эмбеддингов у пациента |
Запуск (dev)
cd apps/face-service
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # либо использовать корневой .env
uvicorn main:app --reload --port 8001
Запуск (docker)
docker build -t reception/face-service .
docker run --rm -p 8001:8001 \
-e DATABASE_URL=postgresql://postgres:postgres@host.docker.internal:5434/reception \
reception/face-service
Пороги (ТЗ §4.3)
RECOGNITION_THRESHOLD=0.5— узнавание уже зарегистрированного пациента.REID_THRESHOLD=0.35— склейка треков между камерами (строже, иначе ложные склейки).
Тюним после baseline-замеров на проде.
Источник
Скопировано и расширено из work-pcs-adm-time-tracker/apps/face-service/. Изменения:
- Новая схема
face_embeddings(track_id, camera_id, patient_id, quality, captured_at) — управляется через Prisma вpackages/db. - Добавлены функции
save_embedding_with_meta,attach_track_to_patient,find_topk_in_window,find_nearest_patient,delete_patient_embeddings. - Эндпоинты
/embed,/track-embeddings,/reid/search,/enroll,/patient/.../embeddings— новые. - Эндпоинт
/recognizeтеперь работает только с эмбеддингами с проставленнымpatient_id(т.е. с согласием).