Detect and handle duplicate Immich people with the same name
When Immich has multiple person records sharing a name (e.g. unmerged
face clusters), winnow would previously run separate jobs for each,
with the second job wiping the first job's output directory — resulting
in far fewer training images than expected.
New behaviour:
- At startup, duplicate names are detected and a warning is printed
showing asset counts for each duplicate.
- By default (MERGE_DUPLICATE_PEOPLE=false), only the person with the
most assets is processed; smaller duplicates are skipped cleanly.
- With MERGE_DUPLICATE_PEOPLE=true, the duplicates are permanently
merged inside Immich via PUT /api/people/{id}/merge (keeps the
largest), then the people list is re-fetched before jobs run.
Also adds an explicit comment in executor.py confirming that replacement
targets come exclusively from tracker-mapped files, so manually-added
Frigate training images are never selected for deletion.
This commit is contained in:
@@ -26,6 +26,7 @@ services:
|
||||
# - SKIP_PEOPLE=Unknown # Comma-separated; skip these people
|
||||
# - MIN_FACE_COUNT=5 # Skip people with fewer than N assets in Immich
|
||||
# - YEARS_FILTER=10 # Only include images from the last N years (default: 10)
|
||||
# - MERGE_DUPLICATE_PEOPLE=true # Auto-merge Immich people with the same name (keeps most assets)
|
||||
|
||||
# ── Image Quality ─────────────────────────────────────────────────────
|
||||
# - MIN_FACE_WIDTH=50 # Minimum face width in pixels (default: 50)
|
||||
|
||||
Reference in New Issue
Block a user