spotter-models / README.md
bubblesmal's picture
Publish models v2 (form)
3a24e10 verified
|
Raw History Blame Contribute Delete
2.43 kB
---
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.