-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
No. winnow only reads from Immich (assets, people, face bounding boxes). It never writes back to Immich or deletes anything.
The auto strategy decides this for you — it keeps selecting until adding more images would be redundant. In practice this is usually 20–60 per person. You can cap it with MAX_AUTO_IMAGES (default 80).
When winnow reaches the cap on subsequent runs, QUALITY_REPLACEMENT=true (default) lets it swap out the lowest-scoring existing image if a better candidate is found — so the training set improves over time rather than stalling. Only images winnow uploaded are ever replaced; anything added manually through Frigate's UI is never touched.
Quality and diversity matter far more than volume. 30 well-spread images outperform 200 from the same week.
- Face mode: Extracts and aligns face crops, uploads them directly to Frigate's face training API. This is for teaching Frigate to recognize specific people.
- Object mode: Runs YOLO detection on full images and saves crops of a target class (dog, cat, car, etc.) to disk. Frigate has no API for object training data, so you place them manually.
Yes — in object mode, FRIGATE_URL is not used and crops are saved to the output volume. In face mode you need Frigate to receive the uploads, but you can use DRY_RUN=true to preview selection without uploading.
winnow computes a vector embedding for each candidate image (what the face/object actually looks like — angle, lighting, expression). It then clusters those embeddings and picks representatives that are maximally spread across the embedding space. It stops when the next-most-different image is already close to something already selected. See the README pipeline for the full breakdown.
Yes. By default it processes every named person in your Immich library. Use ONLY_PEOPLE to whitelist specific names or SKIP_PEOPLE to exclude them.
Any NVIDIA GPU with CUDA 12.x support works with :latest. AMD ROCm GPUs work with :rocm. Intel Arc and integrated GPUs work with :intel. The models (InsightFace Buffalo_L + SigLIP) fit comfortably in 4 GB VRAM.
CPU mode works but is significantly slower — typically tens of seconds per person instead of under a second on GPU.
CPU memory: Set a container memory limit of at least 2 GB (mem_limit: 2g). The models use roughly 1–1.5 GB and thumbnails are processed in bounded batches of 32, so usage stays flat regardless of library size.
ARM builds (linux/arm64) are CPU-only — GPU variants are amd64 only.
Yes — the compose.yml uses standard Docker volume mounts. Replace the example paths with whatever absolute paths suit your setup.
docker compose pull
docker compose up -dThe latest, cpu, rocm, and intel tags on GHCR always point to the latest release. Versioned tags (e.g. ghcr.io/sudolulo/winnow:v0.2.13) are also published for each release and are useful for pinning to a known-good version.