People and faces
Private face recognition that runs on our own service.
Faces are detected with InsightFace (buffalo_s, ONNX, CPU) in the PhotoMemory ML service. Each face becomes a 512-dimensional ArcFace embedding stored in PostgreSQL with pgvector; a face is matched to an existing person when the cosine distance is below 0.6, otherwise a new person is created. Nothing is sent to an outside provider and embeddings are per-user.
Managing people
- Rename a person from the People page (
PATCH /api/people/{id}). - Merge two people who are the same person (
POST /api/people/{id}/merge/{other_id}). - Filter search by person.
Face crops (256×256) are cached in storage and served as thumbnails.