Inspiration

Every AI video pipeline has the same last step: a tired human scrubbing through clips at 2 AM hoping to spot the frame where the hero's face became someone else. That step does not scale, and the defects are mechanical enough to catch mechanically.

What it does

Upload a clip (plus an optional character still and prop crop). FrameProof runs a coarse OpenCV 5 pass (shot boundaries, frozen frames, blur, flash screen, flicker), re-inspects every suspect span at full resolution, takes a second opinion before convicting, then rules: PASS, REGEN NOTE, or ESCALATE to the human, who approves or rejects in the web UI. Identity drift (YuNet + SFace) and prop persistence (ORB) plug into the same loop. Every verdict ships its evidence and a full step trace.

How we built it

OpenCV 5 throughout: HSV histogram correlation, Laplacian variance with a contrast-normalized ratio, luminance window statistics for flicker, YuNet and SFace from the OpenCV Zoo, ORB matching. A labeled evaluation set of 61 purpose-made clips drives calibration.

Challenges

The evaluation set caught us twice. A dark scene was convicted of blur because absolute sharpness collapses in the dark; fixed with a contrast-normalized ratio (dark clean 0.018 vs blurred 0.003). A single lightning frame impersonated flicker on a global average; fixed by measuring jitter as a windowed median. Both fixes are documented in EVAL.md with the numbers.

Accomplishments

A working agent loop with dense re-inspection and second opinions, 61/61 on the labeled set, and an audit trail a judge can replay. Local baseline: 2.069 ms/frame, 483 fps on a 2-core x86_64 VM, OpenCV 5.0.0.

What's next

Span-level localization scoring on a larger set, batch ingest for whole generation queues, and per-generator defect profiles.

Built With

Share this project:

Updates

Submission history