File size: 2,428 Bytes
1d27dd6 3a24e10 1d27dd6 3a24e10 1d27dd6 3a24e10 1d27dd6 3a24e10 1d27dd6 3a24e10 1d27dd6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | ---
license: agpl-3.0
library_name: coreml
tags:
- pose-estimation
- keypoint-detection
- fitness
- coreml
- onnx
base_model: Ultralytics/YOLOv8
---
# Spotter models
Models for **Spotter**, a quiet AI spotter for new gym-goers and people returning from injury
(Knight Hacks IX). The iPhone app runs the pose model on-device; the form model scores reps.
The app reads `manifest.json` on launch and downloads any model that changed.
Manifest version **2**, published 2026-10-10T17:03:35+00:00.
| Model | Format | Path | Size |
|---|---|---|---|
| `form-quality-label-onnx` | onnx | `form/form_quality_label.onnx` | 0.9 MB |
| `form-quality-score-onnx` | onnx | `form/form_quality_score.onnx` | 0.2 MB |
| `pose-256-coreml` | coreml | `pose/yolov8n-pose-256.mlpackage` | 6.7 MB |
| `pose-320-coreml` | coreml | `pose/yolov8n-pose-320.mlpackage` | 6.7 MB |
| `pose-320-onnx` | onnx | `pose/yolov8n-pose-320.onnx` | 13.3 MB |
## Pose: YOLOv8n-pose
- Ultralytics YOLOv8n-pose (COCO keypoints), exported at 320 and 256 px to Core ML (FP16, no NMS)
and at 320 px to ONNX.
- Output: one tensor `[1, 56, N]` of raw candidates: 4 box values, person confidence, then
17 joints x (x, y, visibility), with sigmoid already applied. Decoding and orientation rules:
`docs/pose/how-it-works.md` and `docs/pose/pose-result-contract.md` in the Spotter repo.
- Video never leaves the phone; only joint positions are sent to the cloud.
## Form quality
- `spotter.ml.form_quality` version 4
from Databricks Unity Catalog, as two ONNX graphs: `label` (clean, partial_range, knees_in,
forward_lean, fast_lowering, other) and `score` (quality, clip to 0-1).
- Inputs, one row per rep: `exercise_id`, `range_deg`, `weight_kg`.
`exercise_id` is a string; unseen exercises are ignored. Numeric inputs may be missing (NaN).
- Held-out metrics: label_accuracy 0.188, label_macro_f1 0.2427, quality_mae 0.0807, quality_r2 0.153, test_lifters 40.0, test_reps 35816.0.
- **Limitations:** a baseline gradient-boosted model trained on labels derived from the phone's
rule flags and synthetic sessions, not hand-labelled clips. Expect it to be replaced.
## Intended use
Real-time rep counting and form feedback for recreational lifting. **Not a medical device** and
not for diagnosing injuries.
## License
The pose model is derived from Ultralytics YOLOv8 and is released under **AGPL-3.0**, the license
of the original weights.
|