Skip to content

Speed

py-feat's end-to-end detector throughput (frames/sec), tracked over releases. Numbers come from scripts/bench_detectors.py --json, are appended to the py-feat/benchmarks dataset by a scheduled run, and this page re-renders whenever new data lands. Accuracy benchmarks are on the Accuracy page; methodology and the per-run archive are at the bottom.

Live data from py-feat/benchmarks, updated each scheduled run.

Throughput by detector and hardware

End-to-end frames per second for the v1 Detectorv1 (img2pose and retinaface face models) and v2 Detectorv2, on the shared test video. Left panel is single-frame (batch 1); right is batch 16. Bars are grouped by hardware — fps is only comparable within the same device.

Methodology

scripts/bench_detectors.py measures the detection + landmark + AU + emotion + identity path on reproducible test fixtures from feat/tests/data/:

  • single_face.mp4 (72 frames, 1 face/frame)
  • WolfgangLanger_Pexels.mp4 (472 frames, 1 face/frame)
  • multi_face.jpg × 16 = 80 faces

Three configurations are timed head-to-head: Detectorv1 with the img2pose and retinaface face models (both au_model='xgb', emotion_model='resmasknet', identity_model='arcface') and the v2 Detectorv2 multitask network. Swept axes: device × batch_size × num_workers. Each run is produced by bench_detectors.py --json (or --markdown for the archived reports) and ingested into the py-feat/benchmarks dataset above.

Run history

Milestone reports are archived in docs/benchmarks/: 2026-05-14, 2026-05-04, 2026-05-03.