How the watch finds a set, names it, and counts it
Lifting is hard for a watch. A session is mostly rest, exercises differ by small rotations of the forearm, a rep count is only useful if it is exact, and all of it has to run on the wrist because the phone is in a locker. This is how Rheo handles that, and how well it works so far.
100%
of sets named correctly
87.7% for hand-built features
92.7%
of sets found without a tap
91.6% of what it finds is a real set
71.4%
of sets counted to the exact rep
35% for the best classical counter
Held-out sessions and workouts, 84 sets from one lifter. What that does and does not show is further down.
Labelled by the lifter
The training data comes from the product. A tap starts a set and another ends it, and the lifter names the exercise and logs the reps, so every logged set is a labelled example with boundaries placed at the moment it happened.
The watch records the whole workout at 200 Hz, rest included, because the rest is what the detector learns to say no to.
- 1Barbell Bench Press, 8 reps logged
- 2Barbell Overhead Press, 6 reps logged
- 3Dumbbell Biceps Curl, 12 reps logged
- Labelled sets
- 84
- Workouts
- 13
- Exercises
- 10
- Logged reps
- 649
- Recorded
- 3.1h
Cleaning it
Each recording is low-passed at 20 Hz and resampled to 50 Hz, keeping the 6 channels public datasets also have. Sets whose logged reps could not physically fit the tapped span are skipped, and the 1.5 s around every tap is left out of the detector’s loss: a tap is a hand reaching for the wrist, not the first rep.
The most useful bug was a sign. RecoFit, a 94-subject forearm dataset, transferred at 35–45%. Its armband reads the forearm’s long axis with the opposite sign to the Apple Watch, and one fixed rotation took zero-shot accuracy to 78–100%.
Small models, in stages
A causal network decides, every 20 ms, whether a set is under way. A second names the exercise from the samples inside it. A signal-processing counter counts the reps with a configuration chosen for that exercise. Each stage had a classical baseline to beat before a network could replace it, which is why the counter is still signal processing.
- Core Motion200 Hz, 13 channels
- Anti-alias and resample50 Hz, 6 channels
- Set detectorCausal TCN, P(set) every 20 ms
- Set ruleEnter at 0.6, leave at 0.4
- Exercise classifierTCN over 6 s windowsRep counterTurning points; the classifier picks its config
- ProposalExercise, reps, last weight; confirm or correct
Why temporal convolutions. Both networks are stacks of dilated 1-D convolutions, so how far back each one sees is set by its dilations and can be matched to the movement. The classifier sees about a rep. The detector sees 10.1 s of the past, enough to tell a set from walking to the rack, and never looks ahead.
Together they are 52k parameters and 350 KB on the watch, with no hidden state to drift over an hour-long session.
Set detector causal, k = 5, width 48
Exercise classifier centred, k = 5, width 32
How well it works
Every split holds out whole sessions or workouts, and every model is scored next to the baseline it had to beat. On the boundaries the detector finds, rather than the ones the lifter tapped, the classifier is still 95.5% correct, and end to end the rep count is exact on 49% of sets, most misses one rep short.
Sets named correctly
Temporal network Hand-built features
- Leave one session out (18 folds)
- Leave one workout out (3 seeds)
- Temporal: oldest 16 sessions train, newest 8 test (3 seeds)
- Per-class 80/20 holdout, not groupedoptimistic
Sets counted to the exact rep
What these numbers are not
They come from one lifter, so none of them says how the models do on a new person; that needs the first users. The classifier knows 5 exercises and forces anything else into one of them. With 84 sets, the intervals are wide.
What did not work
Pretraining the detector on public data made it worse (85.4% against 92.7%). A learned rep counter reached 42% exact against signal processing’s 71%: it had learned how long a set lasts, not how many reps it holds.
The next model learns from the first users
Every set a new lifter confirms or corrects is a labelled example from a wrist the models have never seen.