"""Phase 3: what the detector actually costs, per format. One measured pipeline, three thin entry points -- `eval_pt.py`, `eval_onnx.py`, `eval_ncnn.py`. They differ only in which file they hand to Ultralytics. That is deliberate. The whole point of the comparison is that everything except the inference backend is identical, so three independently written scripts would drift and make the timings incomparable. The shared code lives in `pipeline.py`; each runner is about ten lines. """