docs: update for 0.5.0 — adaptive strategy default, SQLite tracker, migration note

2026-06-14 21:26:13 +00:00
parent 80892477fb
commit 51e6b79772
3 changed files with 7 additions and 5 deletions
+2 -2
@@ -8,7 +8,7 @@ No — with one exception. winnow only reads from Immich (assets, people, face b
## How many images should I upload to Frigate?
The `auto` strategy decides this for you — it keeps selecting until adding more images would be redundant. In practice this is usually 10–40 per person. You can cap it with `MAX_AUTO_IMAGES` (default `20`).
The `adaptive` strategy (default) decides this for you — it keeps selecting until adding more images would be redundant. In practice this is usually 10–40 per person. You can cap it with `MAX_AUTO_IMAGES` (default `20`).
The default is intentionally conservative. The goal is for winnow to **supplement** a training set that should be primarily built from manually-curated images — photos you took specifically for recognition, in controlled conditions, uploaded directly through Frigate's UI. winnow is for the people you can't do that for: faces in your library you want Frigate to recognise but don't have dedicated training photos for.
@@ -74,4 +74,4 @@ docker compose pull
docker compose up -d
```
The `latest`, `cpu`, `rocm`, and `intel` tags on GHCR always point to the latest release. Versioned tags (e.g. `ghcr.io/sudolulo/winnow:v0.4.10`) are also published for each release and are useful for pinning to a known-good version.
The `latest`, `cpu`, `rocm`, and `intel` tags on GHCR always point to the latest release. Versioned tags (e.g. `ghcr.io/sudolulo/winnow:v0.5.0`) are also published for each release and are useful for pinning to a known-good version.
+2 -2
@@ -180,7 +180,7 @@ docker exec winnow cat /app/frigate_train/winnow.log
| Variable | Default | Description |
| :--- | :--- | :--- |
| `STRATEGY` | `auto` | `auto` (embedding-based adaptive), `standard` (30 images), `broad` (100 images) |
| `STRATEGY` | `adaptive` | `adaptive` — embedding-based diversity selection, stops when candidates become redundant; `standard` — fixed 30 images; `broad` — fixed 100 images. `auto` is a legacy alias for `adaptive` |
| `LIMIT` | *(unset)* | Exact image count — overrides `STRATEGY` preset |
| `AUTO_MODE` | *(auto)* | Force non-interactive mode in a terminal; auto-detected otherwise |
| `VERBOSE` | `false` | Enable DEBUG-level console output (log file is always DEBUG) |
@@ -224,7 +224,7 @@ The following variables control quality thresholds that are pre-calibrated for F
| `FORCE_CPU` | `false` | Disable GPU — fall back to CPU for all inference |
| `OPENVINO_DEVICE` | `CPU` | Intel variant only: `GPU` = iGPU/Arc (requires `/dev/dri`); `CPU` = OpenVINO CPU plugin (optimised CPU kernels, not the iGPU) |
| `ENABLE_CACHE` | `true` | Cache computed embeddings to disk (speeds up re-runs on the same library) |
| `CACHE_DIR` | `.if_cache` | Path for embedding cache and upload tracker files |
| `CACHE_DIR` | `.if_cache` | Path for embedding cache and upload tracker database (`winnow_tracker.db`) |
| `INSIGHTFACE_HOME` | *(system)* | InsightFace model cache path (Buffalo_L) |
### Output
+3 -1
@@ -142,10 +142,12 @@ docker exec winnow cat /app/frigate_train/winnow.log | grep -i "provider\|execut
## Same images uploaded every run
The upload tracker is stored in `CACHE_DIR` (`/app/.if_cache` by default). If this volume isn't persisted between runs, the tracker resets and images are re-uploaded.
The upload tracker is stored in `CACHE_DIR` (`/app/.if_cache` by default) as `winnow_tracker.db` (SQLite). If this volume isn't persisted between runs, the tracker resets and images are re-uploaded.
Make sure `/app/.if_cache` is mounted to a persistent host path.
**Upgrading from 0.4.x:** winnow automatically migrates the legacy JSON tracker files (`frigate_uploaded_ids.json` / `frigate_rejected_ids.json`) to SQLite on the first run and renames them to `.json.bak`. No manual action is required.
---
## Re-uploading a specific person