How do motion models score Parkinson's severity?

Parkinson's disease gradually impairs movement, and one of the clearest places this shows up is in walking, or gait. A clinician watching a patient walk can immediately notice the disease and get a sense for the severity of this impairment. To turn that impression into something trackable, clinicians use the gait item of the MDS-UPDRS, the standard Parkinson's rating scale, to score the impairment. The higher the score, the more severe the impairment. General purpose AI models can meaningfully track this score, potentially helping scale diagnosis and tracking of Parkinson's. In this report, we ask how such models produce these scores and what motion characteristics they pay attention to.

CARE-PD, released by Adeli et al. (2025) [1] is a public benchmark for rating Parkinsonian gait from movement. It pools five anonymized clinical gait datasets from different sites into a common format: every recording, whether from a motion-capture lab or a clinic video camera, becomes the same 17-joint skeleton in a shared world frame, so nothing site-specific about the camera or the room reaches a model.

What the models predict is the gait item of the MDS-UPDRS, the standard clinical rating scale for Parkinson’s. A rater watches someone walk and scores one integer for the whole walk, called the score. On one of the datasets, called BMCLab, the grades present are 0, 1 and 2 (341, 276 and 162 walks), so a model has to sort walks into three degrees of gait impairment. Medication state and demographics are not model inputs, and grade 0 is mild Parkinson’s rather than a healthy control: six participants carry both a 0-scored and a nonzero-scored walk across medication states.

The benchmark is a comparison of pretrained motion encoders under one fixed protocol. Seven general-purpose encoders, trained elsewhere on generic human motion, are each frozen; their per-frame output is averaged over a three-second clip; and one linear layer is trained on that average to predict a grade. Everything downstream of the encoder is identical across the seven, so a difference in grade is a difference in what the encoder already represents. With MotionBERT, the default encoder, and one participant held out at a time, the pipeline reaches 0.6620 macro-F1 over the 3 grades on 23 participants and 4,350 clips.

So the natural question to ask becomes: when the pipeline says a walk is more severe, what is it reading? Five analyses in this line of work answered that from different directions: what the encoder’s summary contains, what happens when a measurement is erased from it, what happens when a real walk is edited, what individual learned features respond to, and whether any of it is specific to one encoder.

Every skeleton below is a recorded walk from the benchmark. Nothing is animated by hand and no gait is synthesised. Where a walk has been edited, the edit is a geometric change to that recorded walk, and the grade printed under it is the grade the model gave that exact edited clip.

Question one

What does the model actually look at?

A pose estimator turns the video into a stick figure: 17 joints, 90 frames, three seconds at 30 frames per second. A frozen encoder reads that clip and emits one vector per frame. Those vectors are averaged over the whole clip into 8,704 numbers, and one linear layer turns that average into a grade. No gait parameter is computed anywhere along the way, and nothing is fine-tuned except the final layer.

video or motion captureone walk17-joint skeleton90 framesfrozen encoderone vector per frameaverage over frames8,704 numbersone linear layer3 gradesNo gait measurement appears anywhere in this path.
The whole path from walk to grade. Because pooling is a plain mean and the head has no hidden layer, a grade decomposes exactly into a sum over frames and joints — an identity that holds here to 6.33e-08 logits, which is what makes the attributions later in this page arithmetic rather than approximation.

Here is what the model sees at the two ends of the scale. Each of these real walks is the clip closest to the median walking speed of its own grade.

Grade 0 — no gait impairment scored
walking speed 1.066 m/scovers 3.15 m in three secondsmodel’s expected grade 0.7560
Grade 2 — the most impaired grade in this cohort
walking speed 0.454 m/scovers 1.33 m in three secondsmodel’s expected grade 1.6958
Two recorded BMCLab walks, gridlines every half meter, floor at the base line. The mild walk is the median-speed example among the 610 clips recorded at its grade, the severe walk among 1,135. Sequences SUB03__SUB03_off_walk_5_down0 and SUB05__SUB05_off_walk_10_down1. The expected grade is one number for the whole three seconds, not a running score.

Question two

How much of the walk is in there?

Before asking what the grade uses, it is worth asking what is available. Fifteen classical gait measures were computed from the same joints the encoder sees, and each was predicted from the pooled vector with a ridge probe, held out participant by participant. Nine of the fifteen clear their own permutation floor. Four sit close to the ceiling of how reliably the measure can be taken at all: trunk flexion at 0.9734 [0.917, 0.987] against a measurement reliability of 1.0000, gait speed 0.9582, right arm-swing amplitude 0.9460, stride length 0.9266.

00.250.50.751trunk flexiongait speedarm swing, rightarm swing, leftstride lengthfoot clearanceknee range of motionhip range of motioncadencestep widthstride timestance-to-swing ratiostep-time asymmetryarm-swing asymmetry, unsignedstride-time variability
Held-out R-squared per measure, clip level, BMCLab. Darker bars clear their participant-permutation floor. The measures at the bottom are mostly ones a three-second window cannot hold or the instrument cannot take twice the same way — stride-time variability lands at -0.0074. The unsigned arm-swing asymmetry near the bottom is not one of those: a linear probe can take a difference but not an absolute value, so that bar says nothing about the encoder. The signed form of the same quantity reads at 0.7273, and question five uses it.

So the encoder’s summary is not a black box that happens to correlate with severity: most of the vocabulary a clinician would use for gait is sitting in it, linearly, at close to measurement precision. Whether the grade uses any of it is a separate question.

Question three

How many dimensions does the decision use?

Very few. Reconstruct the pooled vector from its top few principal directions, fitted inside each fold on the training participants only, and rescore. Eight directions are enough for every one of the seven backbones the benchmark publishes to recover at least 90.1% of its own macro-F1 — out of pooled widths from 128 to 8,704. MotionBERT, the benchmark’s default, comes back at 103.8% and first matches its own untruncated score at eight directions.

8090100110POTR128 dimensions pooledMotionBERT8,704 dimensions pooledMotionAGFormer8,704 dimensions pooledMotionCLIP512 dimensions pooledMixSTE512 dimensions pooledPoseFormerV21,088 dimensions pooledMoMask512 dimensions pooled
Recovery at eight principal components, as a percentage of each encoder’s own untruncated macro-F1; the vertical line is that own score. Above 100% means the truncation helped, which is what a low-rank signal in a wide noisy vector looks like. These encoders are not variations on one design: two of them never see a two-dimensional pose at all.

The representations themselves are not equally concentrated — their participation ratio, the effective number of directions carrying their variance, runs from 1.16 for MotionBERT to 12.70 for POTR. What does not vary is that the severity readout lives in a few dozen directions regardless. Inside MotionBERT the same flatness shows up one level down: its per-frame, per-joint activation has an effective dimension of 2.054 in the posterior view and 2.614 in the lateral one, five of its 512 coordinates carry 95% of the variance, and 16 directions rebuild the grade at 0.6598 against 0.6620 for the whole vector.

Question four

Which gait features does it use?

The size-and-rate channel: how far the steps reach and how fast the body moves. Two independent methods agree. Erasing gait speed from the pooled vector and refitting the same linear head costs 0.2106 macro-F1 [0.0463, 0.3380]; erasing stride length costs 0.1884 [0.0239, 0.3199]. Removing a random direction of the same rank costs 0.0390 (±0.0192 across draws), so those losses are not the price of damaging the representation. The two erasures are almost the same intervention: the directions they remove sit at an absolute cosine of 0.9988 to each other.

Erasure changes the model’s input summary. The stronger test changes the walk. Take a recorded walk, shorten every stride by 30% while holding body size and step rate fixed, push the edited walk through the unchanged encoder and the same held-out head, and read the grade.

The recorded walk
stride length 0.895 mwalking speed 0.737 m/scovers 2.17 mexpected grade 1.1769
The same walk with its strides shortened 30%
stride length 0.627 mwalking speed 0.519 m/scovers 1.52 mexpected grade 1.6370
One recorded BMCLab walk, sequence SUB01__SUB01_off_walk_2_down0, above its own edited copy. Gridlines every half metre. The edited skeleton is the same size — mean head height 1.514 m before and 1.514 m after — and every bone length is restored after the edit, so what changed is how far the body carries per step: 2.17 m of ground becomes 1.52 m. The grade under each panel is the one the model gave that clip: it rises by 0.4600.

Across the cohort that edit moves the expected grade by 0.4601 [0.3485, 0.5645], and by 0.3489 [0.3075, 0.3890] on the independent video cohort. The clip above was chosen for being ordinary: its own shift, 0.4600, is the closest of 2,510 eligible clips to the cohort median of 0.4602.

Shortening strides also slows the walk down, so this alone does not separate reach from rate. A second edit changes the step rate while holding stride length in meters, and comparing the two at matched speed does separate them. On BMCLab the two routes end up within 0.5% of each other’s speed change, and trading away 0.323 m of stride length for 32.5 extra steps per minute at fixed speed still moves the grade by 0.0351 [0.0224, 0.0477]. So the readout is not purely a speedometer — but that residual is 7.6% of the size-and-rate response, which leaves speed carrying almost all of it. This contrast was defined after seeing the main result, and it does not check out on the video cohort, whose two routes differ in speed too much to match.

Every feature the dictionary learned, one at a time

A sparse dictionary trained on MotionBERT’s activations gives a handle on the same question from the inside. Of 2,033 live features, 30 were interpreted: the twenty largest contributors to the severity logit, and ten more sampled across the firing histogram so the rare ones are represented. Every one of them is here. In the panel below, pick one on the left and the panel shows four of its walks, where it reads them off the body, and what the model loses without it.

The four walks are not the feature’s four strongest. They sit at the 100th, 90th, 50th and 10th percentiles of its activation over the 2,778 clips with a full three-second window. The extreme tail of almost any direction looks coherent, so top-only exemplars are the standard way to over-read a feature. Seeing the middle of the range is what tells you whether an impression formed at the maximum survives.

The animations only give you a guess about what a feature does. The real check is in the numbers next to them: how well each of the fifteen gait measures predicts the feature’s activation, what its average activation is at each grade, and its removal cost — how much macro-F1 the model loses when you drop that one feature from the reconstruction. You have to read the walks against those numbers, because the two often disagree. Take feature 1224, the one the panel opens on. It has the clearest physical reading in the top twenty: gait speed predicts its activation at 0.8554 R². But its removal cost is −0.0041, so the model does just as well without it. A feature can look convincing in every walk and rise steadily with the grade and still be one the model doesn’t need, because other features already carry the same information.

rankfeatureshare of contributionremoval

100th percentile
90th percentile
50th percentile
10th percentile
Where it reads, over the seventeen joints
Mean activation by clinical grade
How well each of the fifteen gait measures predicts its activation, held out
Where the four walks sit in its activation range
The panel opens on the feature the report animated before, and on the same walk: sequence SUB07__SUB07_off_walk_12_down1, its strongest. Each walk is a recorded three-second clip, hip-locked so the limb motion is what moves; the circles mark where the feature’s activation is read, sized by that joint’s share. Under each skeleton is the feature’s activation frame by frame, on a scale shared by all four walks, with the marker on the frame you are watching. The bars beneath show the held-out R-squared of each gait measure against the feature’s activation, with the permutation floor marked, and the participant-averaged mean activation at each grade.

Two things are visible as soon as you page down the list.

  1. The top of the ranking is mostly one measurement: fifteen of the top twenty have gait speed as their clearest association.
  2. Contributing is not the same as being needed. The four largest contributors do cost the model something when removed — between 0.1063 and 0.1738 macro-F1 each — but eleven of the top twenty cost nothing at all: the head scores the same or better without them. Feature 1386 is the sharpest case, the 5th largest contributor at 2.881% of the total, and taking it out moves macro-F1 by -0.0210. That is redundancy seen from the inside: these features carry much the same thing, so removing any one of them leaves the rest to cover it.

The ten features sampled from the rare end behave differently again. 4 of them are silent on more than half the walks, one of them on 99.3%, so their lower-percentile exemplars are a silent walk drawn at random from hundreds of equally silent ones. The flat trace under the skeleton is what that looks like, and it is the honest picture: for those features there is no middle of the range to inspect.

Question five

Does it see which side is worse?

Parkinson’s typically affects one side of the body more than the other, causing some asymmetric motion on one side and stays asymmetric. The information representing asymmetry is in the encoder’s summary: a probe reads signed between-limb asymmetry — which arm swings less, and by how much — at 0.7273 R-squared [0.507, 0.854]. However, the grade does not appear to use it. Erasing signed laterality and refitting the head changes macro-F1 by -0.0251 — a shade better without it, which is what removing an unused direction looks like — and the upper bound on any loss is 0.0191 on BMCLab and 0.0342 on the video cohort.

The edit makes that concrete. Damping one arm’s swing by 40 mm is a manipulation a clinician would score. Watch it happen, and watch the grade not move.

Recorded
left arm 0.069 mright arm 0.108 mgrade 1.1769
Left arm damped 40 mm
left arm 0.029 mright arm 0.108 mgrade 1.1753
Right arm damped 40 mm
left arm 0.069 mright arm 0.068 mgrade 1.1703
Both arms damped 20 mm each
left arm 0.049 mright arm 0.088 mgrade 1.1718
The same recorded walk as question four, hip-locked, with each wrist’s path over the three seconds drawn behind it. The damped arm is the one whose trace collapses: left wrist excursion falls from 0.068 m to 0.028 m in the second panel, right from 0.108 m to 0.068 m in the third. Every grade shown is the recorded value for that exact edited clip. The fourth panel removes the same total swing from both arms, which changes how much the arms move without changing which side moves less.

The laterality signal is the difference between the second and third panels, because damping either arm also reduces how much the arms move overall, and the grade does use that. Across the cohort that difference comes to -0.001344 of a grade per standard deviation of signed asymmetry [-0.002521, -0.000314] — 208 times weaker than the stride-length route, and it reverses sign on the video cohort, where the same contrast gives +0.000623 [-0.000052, +0.001240]. The instrument is not at its limit: the bilateral control in the fourth panel moves the grade 4.06 times more than the asymmetry contrast does, at 0.002491 [0.000928, 0.004187].

Overall arm swing is different: damping both arms moves the grade in the same direction in both cohorts, -0.01173 per standard deviation on BMCLab and -0.04367 on the video cohort. How much the arms move is used. Which arm it is, is not.

Question six

Does this extend to the other motion models?

No. Taking three of the seven encoders down to individual learned features shows the same accuracy reached two different ways. MixSTE scores 0.6599 macro-F1 against MotionBERT’s 0.6620 and MotionAGFormer’s 0.6589 — the three span 0.0031 macro-F1, with participant intervals that overlap heavily — and it gets there without a speed readout. Over the features carrying 90% of its severity logit, gait speed predicts the median feature at -0.0234, against 0.3857 in MotionBERT.

-0.200.20.40.6MotionBERTMotionAGFormerMixSTE
How well gait speed predicts the median severity-relevant feature, with the spread across folds. A value at zero means gait speed predicts that encoder’s typical severity feature no better than the feature’s own mean does. All three encoders score within a few thousandths of each other.

What MixSTE pays for it is interpretability. It spreads the decision over 615 features (±12 across folds) where MotionBERT uses 122 (±2.5), and only 71.0% of them are predicted by any of the fifteen physical measures, against 93.7%. Nearly a third of what MixSTE reads has no name in this vocabulary, so its readout is harder to describe rather than obviously better. One thing it does not do either is read laterality: the best any of its severity-relevant features manages on signed asymmetry is 0.3177, and MotionBERT’s best is 0.3188.

So the takeaway is that equal accuracy is reachable through features speed does not predict. No encoder here relies on asymmetry in the motion.

How the findings were obtained

Six techniques produced everything above. They answer different questions, and what each one can and cannot show is the reason the answers on this page are phrased the way they are.

Linear probes, read against a floor and a ceiling. A ridge regression predicts one gait measurement from the encoder’s summary of a clip, fitted inside the training participants of a fold and scored on the participant held out. On its own that score is hard to read, so it sits between two anchors. The floor comes from shuffling the measurement across participants and refitting: it is what the score looks like when there is nothing to find. The ceiling comes from the measurement rather than the model: the same walk is split into two disjoint halves, measured separately, and the agreement between the halves is how repeatably the quantity can be taken at all. A probe cannot beat the reliability of its own target, so the ceiling is what decides whether a middling score means the information is weak or the measurement is noisy. What a probe produces is evidence about what the representation contains, and nothing about whether the grade uses it.

An encoder-free expressibility control. Before a low probe score can be read as a fact about the model, the target has to be shown recoverable at all. So the probe is given the underlying quantities directly, with no encoder anywhere in the path, and asked for the same thing. This is what caught the largest error in this line of work: handed both arm amplitudes exactly, a linear probe recovers their signed difference at 0.999999 R-squared and their absolute difference at 0.0254. A floor-level score on a target expressed as a magnitude, a ratio or a coefficient of variation therefore says nothing about the model. The evidence this produces is about the question rather than the representation: whether a null is a fact about the encoder or about the arithmetic being asked for.

Concept erasure, with verified removal and rank-matched controls. To move from what the summary contains to what the grade uses, one measurement’s linear information is removed from the pooled vector, the benchmark’s own linear head is refit on what remains, and the accuracy lost is the measurement. Two checks are what make it a measurement rather than an assertion. Re-probing the erased vector has to show the quantity really is gone and not merely attenuated. And removing random directions of the same rank has to leave accuracy intact, which is why rank is matched rather than assumed: taking out a single direction is surgical, while taking out many at once degrades the representation on its own and would read as a loss whatever had been erased. The evidence produced is about use: whether the classifier reads what the representation holds.

Editing real walks. Erasure changes the model’s summary of a walk; this changes the walk. A recorded clip is altered in clinical units — slowed down, its strides shortened at fixed body size, one arm’s swing damped — with every bone length preserved, and the edited skeleton is pushed through the unchanged encoder and the same held-out head so the shift in predicted grade can be read for that same clip. Two gates stand in front of it. The edit has to achieve the parameter change it requested, re-measured after the fact rather than assumed from the code. And it has to be visible in the normalised input the encoder actually reads: each clip is rescaled into a fixed frame before the model sees it, so a change to overall body size would be invisible, and an edit that survives normalisation is one the model can respond to. This shares no machinery with erasure beyond the model itself, so where the two agree the agreement is independent evidence. What it produces is a causal response, in units a clinician would recognise.

A sparse dictionary over the internal activations, with additive attribution. One level below the pooled summary, an overcomplete sparse basis is learned for the model’s per-frame, per-joint activations, so each activation is written as a few active learned features rather than as hundreds of coordinates. Because the pipeline averages over frames and the classifier is a single linear layer, each feature’s contribution to the severity score decomposes additively, and that decomposition is exact up to the dictionary’s own reconstruction error — no gradients and no approximation enter it. Features are then ranked by contribution, checked for necessity by removing them and rescoring, and interpreted by what they respond to: which gait measurements predict a feature’s activation, which joints it is read off, and how it moves with clinical grade. The evidence produced is which pieces the score is built from, discovered from the model rather than chosen in advance.

Rank truncation. The classifier’s input is rebuilt from only its strongest few principal directions — computed inside the training participants of each fold, never the held-out one — and the model is rescored on what survives. This counts how many independent directions the decision actually needs, as opposed to how many the vector has. It assumes nothing about a particular architecture, which is what let the same measurement run over every encoder the benchmark publishes, whatever each one produces. The evidence produced is the dimensionality of the decision.

What the six share is the discipline the numbers rest on. Every result is evaluated on participants held out entirely, never on other clips from someone the model has already met. Uncertainty is a bootstrap over participants rather than clips, which is the honest unit at this cohort size and a good deal wider than a clip-level interval would look. And wherever something had to be selected — which features to read, which directions to keep — the selection happened inside the training participants of each fold, so the cost of getting it wrong is measured on held-out data rather than assumed away.

What this does not settle

The cohorts are small: 23 participants on BMCLab and 30 on the video cohort. Every interval on this page is a bootstrap over participants, which is the binding constraint at that size, and it is why several erasure results read as “not distinguishable at this power” rather than as zero.

Two of the benchmark’s five cohorts are missing here, excluded before any model was run because their gait measurements do not survive their own instrument. The test is whether two independent estimates of walking speed on the same clip agree within 5%: BMCLab passes on 96.2% of clips, the video cohort on 56.8%, and the two excluded cohorts on a quarter and a fifth. A construct you cannot measure twice cannot be erased or edited meaningfully.

Feature-level interpretation covers three of the seven encoders, not all of them, so the claim that no backbone reads laterality rests on the dictionary evidence for three of them plus the rank evidence for all. And the accuracy ordering is weak: the best encoder is only 0.0736 macro-F1 above the fourth, whose interval reaches 0.7258 and overlaps the leader’s. This page orders what the encoders read, not how well they score.

Finally, the edited walks are evidence about the readout, not about clinical validity. A 30% stride reduction at fixed body size is a clean intervention on the model’s input; it is not a claim about what happens to a real patient, and a walk edited this way is a walk no one took.

How the animations were made

Every skeleton is a recorded walk. The unedited ones are the benchmark’s own three-second clips, drawn in metres from the canonical world-frame joints, projected orthographically from the side; the forward origin is shared inside each pair so distance covered is comparable across panels.

The edited walks are re-rendered rather than stored. The intervention experiment kept a prediction for every one of its 4,350 clips under every edit condition, but not the edited trajectories, which at that size would have run to gigabytes. So each edited skeleton here is produced by re-applying that experiment’s editors to the recorded walk. Those editors are deterministic functions of one clip and a magnitude, fitted on nothing. To confirm that the picture belongs with the number, each re-rendered clip is re-measured with the same fifteen-parameter dictionary and checked against the measurements recorded for that clip and condition: all of them agree exactly, at a relative difference of 0. The stride edit asked for a ratio of 0.70 and achieved 0.699957 on this clip; the arm edit asked for 0.040 m of swing to come off one arm and removed 0.039993 m, both inside the 0.05 tolerance the source experiment’s gate used.

No prediction on this page was recomputed. Every grade is the value the source experiment recorded for that exact clip under that exact edit, and where no such value exists there is no animation.

Reference

Adeli, V., Klabučar, I., Rajabi, J., Filtjens, B., Mehraban, S., Wang, D., Hoang, T.-H., Do, M. N., Seo, H., Muller, C., Coelho, D. B., de Oliveira, C. E. N., Ginis, P., Gilat, M., Nieuwboer, A., Spildooren, J., McKay, J. L., Kwon, H., Clifford, G., Esper, C. D., Factor, S. A., Genias, I., Dadashzadeh, A., Shum, L. C., Whone, A. L., Mirmehdi, M., Iaboni, A., and Taati, B. CARE-PD: A Multi-Site Anonymized Clinical Dataset for Parkinson’s Disease Gait Assessment. The Thirty-ninth Annual Conference on Neural Information Processing Systems, Datasets and Benchmarks Track, 2025. https://openreview.net/forum?id=bDBxf9f5Li