From 4d25975582a7e4c87a8814e735b6076e3a6058ed Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 28 Oct 2026 16:33:03 -0400 Subject: [PATCH] README: document probe scheduling with measured A/B numbers Adds the two probe flags to Key options plus a 'Probe scheduling' section recording the 2026-10-28 CUDA verification run (same 43k-frame special, GPU1: 6m11s/475 every-frame vs 2m34s/459 at stride25x4) and the accepted miss trade-off. --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index a14a649..d82f527 100644 --- a/README.md +++ b/README.md @@ -63,10 +63,31 @@ context leaks onto the wrong card: | `--min-aspect` / `--max-aspect` | 0.45 / 1.6 | face box W/H ratio window — effect blobs rarely keep face proportions | | `--edge-margin` | 0 | require faces this far inside frame edges; `0` accepts edge-touching faces (original hard-rejected them) | | `--scene-threshold` | 30.0 | PySceneDetect ContentDetector threshold (same as original) | +| `--probe-stride` | 1 | within a scene still needing a face, run inference every Nth frame instead of every frame (1 = original behavior). Decode stays frame-perfect; only inference is thinned | +| `--probe-max-per-scene` | 4 | with `--probe-stride > 1`, probes per scene before giving up and waiting for the next scene start | | `--imgsz` | 1280 | inference size; model was trained at 1280, `640` is faster at some recall cost | | `--all-files` | off | also scan OP/ED files. Off by default: music videos are full of stylized graphics (feather storms, transformation emblems) that false-positive as face-shaped; episodes carry the real character close-ups | | `--preview-dir` | off | also write annotated copies (green boxes) of every saved frame for eyeball QC | +### Probe scheduling (thinned inference) + +The original loop predicts on *every* frame until a scene yields a face — +free on a 3090 (~0.2 s/predict), hopeless on an iGPU (~5 s/img). With +`--probe-stride N` the decode stays frame-perfect but inference runs only +at scene starts and then every Nth frame, giving up after +`--probe-max-per-scene` probes and waiting for the next scene. Ported from +the `feat/igpu-ov` branch to main (Oct 28) so both platforms share one +schedule. + +| mode (same 43k-frame special, 3090 GPU1) | wall time | stills | +|-------------------------------------------|-----------|--------| +| default (every frame) | 6m11s | 475 | +| `--probe-stride 25 --probe-max-per-scene 4` | 2m34s | 459 (96.6%) | + +Use `25`/`4` for real runs; stride 1 keeps byte-identical behavior, so +older extracted corpora are unaffected. Accepted trade-off: a face visible +for less than ~stride frames between probes can slip through. + ## Notes - Runs every frame of every scene until a face qualifies, then waits