← Phone LunkMODEL COMPARISON

A smaller detector.
Speed and detection coverage.

Review live smoothing ↓

Compare model size, phone-detection coverage, and actual processing speed on the gym clip. This page tests recorded frames—not your camera.

Initial screening · nine frames

Same clip and thresholds: 0.40 to acquire, 0.18 to continue a nearby track. Coverage counts accepted phone tracks; it is not a general accuracy score. Confirm the box visually in the live check below.

ModelWeightsFrames ≥ 0.40Tracked framesCPU median
R50 · FP32 (baseline)175.4 MB3 / 97 / 9240 ms
R50 · INT845.5 MB2 / 95 / 9127 ms
R18 · FP3282.6 MB2 / 96 / 9116 ms
R18 · INT821.7 MB1 / 91 / 971 ms
R18 Objects365 · FP3282.6 MB4 / 99 / 9118 ms
R18 Objects365 · INT821.7 MB1 / 99 / 972 ms
R34 · INT833.3 MB0 / 90 / 994 ms

All rows use one full-frame pass. Node / ONNX Runtime on Apple M5 Max; model loading and warmup excluded. Browser and phone timings will differ. The earlier R50 two-pass preview scored 9/9 at 478 ms.

Local results

The 21.7 MB R18 Objects365 INT8 model tracked 44 of 45 decoded frames, acquiring on the second frame. Its 82.6 MB FP32 version tracked 45 of 45. Only 11 and 19 frames respectively reached the acquisition threshold independently.

Earlier desktop runs · WebAssembly · 20 measured frames
Model / inputMedianP95
R50 FP32 · two passes4946 ms4982 ms
R18 Objects365 FP32 · one pass1136 ms1181 ms
R18 Objects365 INT8 · one pass1162 ms1187 ms

GPU compatibility fixed · FP32

The verified 82.5 MB export runs on WebGPU. It matches the CPU phone boxes on nine identical clip samples and keeps the blank negative clear. The INT8 GPU export failed numerical validation and is disabled.

Updated runtime · distinct source frames · full-frame pass
Model / runtimeMedianP95Tracked
FP32 · WebGPU · run 138 ms48 ms150/150
FP32 · WebGPU · run 238 ms48 ms151/151
FP32 · WebAssembly1135 ms1137 ms8/20

The GPU keeps up with this 10 fps clip across repeated loops. Phone performance and broader detection accuracy still require testing. Each GPU run spans at least 15 seconds; model loading is excluded.

Measured October 15, 2026, on Apple M5 Max. One recorded gym clip and a blank negative control; this does not establish general accuracy. Runtime downloads and model loading are excluded from frame timing.

Live browser check

Inference runs continuously in a worker. The left panel uses the camera’s smoothing on live playback. The right panel shows fresh detections on the exact analyzed frame. No precomputed boxes. R18 Objects365 FP32 with WebGPU and one pass uses the same detector adapter as the camera.

Smoothed display: No box. Smoothing eases movement and holds the last box for at most 250 ms. Pause detections to check that the box expires.

Ready to test

Smoothed live playback · 10 source frames / sec
No frame analyzed yet
—Median frame processing
—Inference capacity / sec
0 / 0Live sampled frames with a track

Runtime for next run: WebGPU. GPU testing requires the locally prepared FP32 export (see SETUP.md). This is the current computer—not an iPhone benchmark. A phone trial is still required. Each new source frame is sampled once; inference capacity excludes waiting for the 10 fps clip. Coverage counts fresh detections only; a briefly held display box never increases detection coverage. The raw panel retains the last analyzed frame after a run, while the live overlay clears.