From 4856a6d36f9ef2618d6dd22f207617e8ba6df01f Mon Sep 17 00:00:00 2001 From: Holden Date: Sat, 13 Jun 2026 15:43:14 +0000 Subject: [PATCH] fix: raise MIN_FACE_WIDTH default from 50 to 90px (8k pixel floor) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 50px crops produce ~2,500–4,225 total pixels — well below Frigate's own camera capture range of 16k–50k px. 90px guarantees ≥8,100 total pixels even when face margins are fully clipped by image edges. Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 2 +- tests/test_config.py | 2 +- winnow/config.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 86702f7..480fa46 100644 --- a/.env.example +++ b/.env.example @@ -23,7 +23,7 @@ STRATEGY=auto # YEARS_FILTER=10 # Only include images from the last N years (default: 10) # ── Image Quality ───────────────────────────────────────────────────────────── -# MIN_FACE_WIDTH=50 # Minimum face width in pixels (default: 50) +# MIN_FACE_WIDTH=90 # Minimum face width in pixels (default: 90, guarantees ≥8,100px crop) # FACE_MARGIN=0.15 # Padding around face crop as fraction (default: 0.15) # ENABLE_FACE_ALIGNMENT=true # Align face before cropping (default: true) # USE_FULL_RESOLUTION=true # Use full-res images vs thumbnails (default: true) diff --git a/tests/test_config.py b/tests/test_config.py index 6e247ed..e729763 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -17,7 +17,7 @@ def test_config_loads_defaults(monkeypatch): assert cfg.API_KEY == "test-key" assert cfg.OUTPUT_DIR == "./frigate_train" assert cfg.YEARS_FILTER == 10 - assert cfg.MIN_FACE_WIDTH == 50 + assert cfg.MIN_FACE_WIDTH == 90 assert cfg.MIN_FACE_COUNT == 0 assert cfg.BLUR_THRESHOLD == 100.0 assert cfg.MIN_CONFIDENCE == 0.7 diff --git a/winnow/config.py b/winnow/config.py index ad3be2f..30f5776 100644 --- a/winnow/config.py +++ b/winnow/config.py @@ -26,7 +26,7 @@ class _Config: YEARS_FILTER: int = 10 # Quality filtering - MIN_FACE_WIDTH: int = 50 + MIN_FACE_WIDTH: int = 90 BLUR_THRESHOLD: float = 100.0 MIN_CONFIDENCE: float = 0.7 MAX_AUTO_IMAGES: int = 80 @@ -56,7 +56,7 @@ class _Config: self.API_KEY = os.getenv("API_KEY") self.OUTPUT_DIR = os.getenv("OUTPUT_DIR", "./frigate_train") self.YEARS_FILTER = int(os.getenv("YEARS_FILTER", "10")) - self.MIN_FACE_WIDTH = int(os.getenv("MIN_FACE_WIDTH", "50")) + self.MIN_FACE_WIDTH = int(os.getenv("MIN_FACE_WIDTH", "90")) self.MIN_FACE_COUNT = int(os.getenv("MIN_FACE_COUNT", "0")) self.BLUR_THRESHOLD = float(os.getenv("BLUR_THRESHOLD", "100.0")) self.MIN_CONFIDENCE = float(os.getenv("MIN_CONFIDENCE", "0.7"))