Commit Graph
14 Commits
Author SHA1 Message Date
alex 4d25975582 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.
2026-10-28 16:33:03 -04:00
alex 6b5b27477a anime_facesaver: port --probe-stride/--probe-max-per-scene to main (CUDA path)
Same schedule as feat/igpu-ov: decode stays frame-perfect; when a scene
still needs a face, inference runs every stride-th frame up to
probe_max probes, then waits for the next scene start. Default stride 1
reproduces the original every-frame loop exactly (no-op on CUDA).
2026-10-28 16:17:29 -04:00
alex de177c8f59 find_dupes: build aHash matrix as uint64 before xor (int64 array ctor overflows) 2026-10-18 18:53:58 -04:00
alex 107f48d118 find_dupes: triple-gate closeness (dHash<=6, aHash<=8, color-hist L1<=0.10) + strict linkage
Measured on verified same/different pairs: dHash alone has a false-
positive floor for same-style anime frames (distinct shots at distance
<=10 and even <=6 with different color content). Same-shot broadcast
replays are pixel-twins: near-zero color-hist distance and low aHash
distance too. Requires ALL three gates, no transitive chaining.
2026-10-18 18:51:45 -04:00
alex 7e128c4c32 find_dupes: replace union-find with strict complete-linkage clustering
Verified failure with 10/64 threshold + transitive chaining: a 90-image
'group' contained six different scenes (blonde outdoors, storm school,
night bedroom, manic grin, cat street, dining room) — chains of
similar-but-distinct frames glue unrelated shots together. Strict
linkage requires every member within threshold of every other.
Default quarantine dir renamed duplicates/.
2026-10-18 18:47:08 -04:00
alex 4816b007c0 find_dupes: fix uint64 hamming accumulation (numpy casts to float64) 2026-10-18 18:42:51 -04:00
alex a8cf8957d5 Add find_dupes.py: dHash near-duplicate clusterer for recurring scenes
Recurring OP/ED animation shots and eyecatch cards reappear in every
episode, so scene-gated extraction saves one copy per broadcast.
Reports groups with a keepsake suggestion; --move quarantines
redundant members to dupes/ (reversible). CPU-only perceptual hashing,
paranoid default threshold 10/64 bits.
2026-10-18 18:40:43 -04:00
alex caa012c1b2 Add filter_text.py: flag/move text-heavy stills via EasyOCR detect pass
Dry-run default with CSV report; --move relocates to has-text dir
(reversible). Flags on >=3 confident lines or one box >=3% frame area;
1280px downscale so big overlay cards hit and incidental small detail
doesn't.
2026-10-18 16:19:21 -04:00
alex b58bc3125a Document verified Gabriel Dropout run: 3526 stills, 4x yield, full QC passed 2026-10-18 12:57:06 -04:00
alex 16ef032611 Skip OP/ED files by default (--all-files to include)
Real-run evidence: the transformation-emblem false positive (frame 1583
of the OP, 717x857, aspect 0.84) is geometrically face-shaped and
passes every box gate; OP/ED music videos are dominated by exactly that
kind of stylized graphics. Episodes carry the character close-ups a
grounding dataset needs. Verified on the second run: feather storm
(frame 29, area .64) now correctly rejected by the area cap.
2026-10-18 11:07:53 -04:00
alex 89b0f708d7 Add geometric upper-bound gates: max face-area fraction, aspect window
Tested against real failure samples from the v2 run: full-frame feather
storm (area .64) and wide effect blob (area .70) now rejected; normal
and close-up faces pass. Note: stylized OP/ED emblems are geometrically
face-shaped and NOT catchable this way — documented, CCIP gate is the
answer for those.
2026-10-18 11:04:53 -04:00
alex 940c59d6c9 Lock GPU pin with warm CUDA alloc before ultralytics select_device runs
Ultralytics select_device() rewrites CUDA_VISIBLE_DEVICES on first
predict() when the CUDA context is uninitialized: --gpu 1 silently
became a two-GPU cuda:0,1 context that OOMed on GPU0 (Strata's card).
Initializing torch and touching cuda once after setting CVD locks the
pin; both scripts now use device cuda:0 within the pin.
2026-10-18 09:10:55 -04:00
alex e8fd716d82 Add audit_stills.py QC tool: measure how many stills in a collection have no detected face 2026-10-18 09:09:03 -04:00
alex 01eb729c2f Fork facesaver -> anime-facesaver: real anime face detector instead of COCO 'person' proxy
Original saved any frame with a big COCO person box (heads, hands,
shoes). Switches to yolov8x6_animeface (HF: Fuyucchi), keeps the
scene-change gate, adds --gpu pinning via CUDA_VISIBLE_DEVICES before
torch init, --download-model, --preview-dir QC mode, optional edge
margin and min face-area fraction.
2026-10-18 09:02:55 -04:00