Everyframe · computer vision
Redact the crowd, keep your subject.
A Tour de France broadcast clip, run through the Everyframe engine: every face detected, then pixelated, all except the lead rider, pinned by his tracking id and left untouched. Detection and redaction run on the machine that holds the footage.
The result, live
The pixelated cut, with the detector's per-frame face count tracking beneath it. The counter and the playhead are driven by the same detection records the redactor consumes.
Face detections per frame · retinaface_mv2
Every face the detector finds is pixelated except the lead rider, who is pinned by his track_id and left visible (see the pipeline ). The waveform is the live face count; the amber playhead marks where the clip is.
What the machine sees
Before anything is hidden, every frame runs through retinaface_mv2, a RetinaFace detector that returns a box, a confidence and five landmarks per face. ByteTrack then stitches those boxes into tracks so each person carries a stable track_id, the handle the redactor filters on.
Three stages, all inside the Everyframe engine: detect faces, track them into stable ids, then redact every track except the ones you keep. No step leaves the host.
Detect retinaface_mv2
A RetinaFace-MobileNetV2 face detector, run per frame at a 0.5 confidence gate. Boxes below the gate never enter the pipeline.
let faces = detect_with(&v, "retinaface_mv2", DetectParams {
threshold: Some(0.5), // confidence gate
..Default::default()
});Track ByteTrack
Per-frame boxes become tracks. ByteTrack assigns each face a track_id that persists across frames, so a person can be referred to by identity rather than by pixel position.
let tracked = track(faces, TrackAlgorithm::ByteTrack); // each detection now carries a stable track_id
Isolate & redact Everyframe
Drop the tracks you want to keep, then pixelate the rest. Redaction is by identity, not by drawing a box every frame by hand: keep the lead rider, hide everyone else.
let to_redact = filter_detections_with(tracked, FilterDetectionsOpts {
exclude_track_id: Some(1), // keep the lead rider
..Default::default()
});
let out = v.try_pipe(redact(to_redact,
RedactMode::Pixelate { size: 16 }))?; // or ::Black / ::BlurWays to hide a face
The same tracks, a choice of redaction mode. redact takes black, pixelate or blur: one enum on the op, everything upstream identical. This clip was rendered in the first two, below.