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.
This commit is contained in:
@@ -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 |
|
| `--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) |
|
| `--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) |
|
| `--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 |
|
| `--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 |
|
| `--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 |
|
| `--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
|
## Notes
|
||||||
|
|
||||||
- Runs every frame of every scene until a face qualifies, then waits
|
- Runs every frame of every scene until a face qualifies, then waits
|
||||||
|
|||||||
Reference in New Issue
Block a user