What the contest asked for

Name which emotion a person is acting, from the movement of their body alone, for people the system has never seen before.

Entrants in the MMAC Challenge are given motion capture recordings of people acting emotions, each one labelled with the emotion the performer was asked to act, and have to build a system that names the emotion in a recording it was not trained on. The organisers keep the labels of the test recordings to themselves, so no entrant can score their own system on the test set, and a leaderboard the organisers run decides the contest.

A machine that reads a body rather than a face is useful wherever a face is not there to be read: at a distance, in the dark, turned away from the camera, or in a setting where filming faces would not be acceptable.

The recordings come from the Diverse Intercultural E-Motion Database of Asian Performers, DIEM-A, published by Cheng, Tseng, Fujiwara, Schneider and Kitamura at ACII 2025. One recording is one performer acting one emotion while a motion capture system follows reflective markers worn on the body: a 57-marker Vicon rig for most of the corpus, and a 41-marker OptiTrack rig for the five earliest Japanese performers, none of whom appear in the training split used here. What reaches the model is the skeleton that tracking produces: 24 body joints moving in three dimensions, plus one node carrying where the body is in the room, so 25 points in total. There is no video of the face, no sound and no view of the scene. Recordings run at 120 frames per second and a typical one lasts about 845 frames; every model on this page reads a fixed window of 64 of them, about half a second of movement (0.53 s), the window the organisers' own reference system reads.

There are twelve emotions to choose between: anger, contempt, disgust, fear, joy, sadness, surprise, jealousy, shame, guilt, gratitude and pride. Naming one of twelve by chance is right 8.3% of the time. Two things make it hard to do much better. Emotions close in meaning move alike, so a system takes jealousy for contempt and guilt for sadness or shame. And every person moves in their own way, so the gap between two people acting the same emotion can be wider than the gap between one person acting two emotions. The contest puts that second problem at the centre by splitting the performers 74 for training and 18 for test with nobody in both, which stops a system from succeeding by learning how one particular person moves.

Entries are scored by Macro-F1, which scores each of the twelve emotions on its own and averages the twelve results, so a system cannot do well by getting the common emotions right and ignoring the rare ones. It runs from 0 to 100%. The training split holds 7,992 recordings from 40 Japanese and 34 Taiwanese performers, 666 for each emotion. The test split holds 1,944 recordings from 18 performers, 9 Japanese and 9 Taiwanese.

Only one number on this page is scored against the organisers' test labels, since entrants do not have them: the final leaderboard result, 37.23% Macro-F1 and 37.50% accuracy over the 18 test performers, which received the Best Performance Award. Every other number here is measured on a stand-in built from the training performers alone: those 74 are divided into ten groups, and the whole procedure runs ten times, each time training on nine groups and testing on the group left out. One such run is a fold, and the paper calls the arrangement leave-performers-out, since nobody in a run's test recordings appears in its training recordings. It reproduces what makes the contest hard, on data whose labels we hold, and the leaderboard score sits inside the range that stand-in predicted.

What this work found

Combining models that make different mistakes did better than any single model we could build, and the account of what the model reads was tested rather than drawn.

36.80 ± 4.00% Macro-F1 of the submitted eleven-model system Mean and spread over the ten runs, each tested on performers held out of its training
+11.07 pp percentage points of Macro-F1 above the organisers' own reference model, retrained here on the same split That reference scores 25.73 ± 4.03%. The gain is +43% of it, and the result is about 4.4 times chance, which is 8.3%
ρ = +0.500 vs +0.033 agreement between the body parts the model used and the ones a movement analyst would name The +0.033 is a control built from ordinary motion measurements; for the submitted system itself the agreement is +0.517

Retrained on that split, the reference model the organisers supply, STGCN++, reaches 25.73 ± 4.03% Macro-F1. It treats the skeleton as a graph, with joints for nodes and bones for edges. The system submitted here reaches 36.80 ± 4.00%, which is 11.07 percentage points higher, written +11.07 pp.

That gain comes from disagreement between models rather than from a better model. Eleven models each score the twelve emotions, and the system averages those scores, with nothing in the averaging learned or tuned. The eleven are built in four ways, which is the point, because models built differently make different mistakes: graph convolution, attention, hybrid MLP, and models trained beforehand on other motion data and left unchanged here. Making one model bigger did not do the same work: the best single model we trained reaches 30.05 ± 3.48%. How far apart their mistakes fall is measured below.

The other half of the work tests its explanations instead of drawing them. Six tests were run and all six are reported, five positive and one negative. The main positive result concerns Laban Movement Analysis, a vocabulary movement professionals use to describe how a body moves, in terms such as how far the head bows or how far the trunk leans, written by people rather than learned from data. Rank the four body regions, head, arms, legs and torso, by how much the model used them, rank them again by those written attributes, and the two orders agree at Spearman ρ = +0.500, where +1 would be the same order, 0 no relation and −1 the reverse. A control built from ordinary motion measurements reaches only +0.033, about fifteen times weaker. For sadness the parts the model used are the ones an analyst would name: a bowed head, a lower head height, and a forward lean of the trunk.

The work claims less than those numbers might suggest on their own. The headline is the ten-run stand-in on the labelled training performers rather than the leaderboard score; that score, 37.23% Macro-F1 on the hidden test set, is a single number with no spread; and a Macro-F1 near 37% is low, which we do not defend as good. The limits section states each of these with the check that bounds it.

Results

Every row below is scored on the same ten runs over held-out performers, so the numbers compare directly.

The eleven models hold 12.98 M learned numbers between them. Answering one recording means running all eleven over the same 64-frame window and averaging their scores, with no fitted weights. Averaging the raw scores rather than the probabilities is worth +1.15 pp, and not because one model produces larger numbers than another: rescaling every model's scores to a common spread first still leaves +0.99 pp, and keeping only the order in which each model ranks the twelve emotions leaves +0.69 pp.

Main results table
Loading the results table from assets/data/results.json …
Table 1. Macro-F1 and accuracy for the reproduced baseline, the strongest single model, and the two combined systems. The +11.07 pp is the difference between the reproduced baseline row and the submitted system row. The first row is the organisers' own figure over all 92 performers, which we quote and did not re-run, so it is an outside reference point rather than a result of ours.

On the organisers' hidden test set, whose labels entrants never see, the submitted system scored 37.23% Macro-F1 and 37.50% accuracy on the final leaderboard and received the challenge's Best Performance Award. That is one score over 18 performers with no spread to report, so it stays out of Table 1; it sits inside the 36.80 ± 4.00% range from the ten runs.

Figure 1. The gain arrives in stages. Each bar is the mean Macro-F1 over the ten runs, with the spread across them. The blue marker beside it scores the same system the other way, gathering the held-out answers from all ten runs and scoring them once, with a 95% interval from resampling those answers. Combining models beats the best single model by about 6.8 pp, and the improvement over the reproduced baseline stays above zero in all ten runs (95% interval [9.86, 12.33] pp when runs are resampled, [9.14, 12.17] pp when whole performers are).

Scope 36.80 ± 4.00% comes from the ten-run stand-in on the labelled training performers, which is cross-validation and not a leaderboard placement. On the organisers' hidden test set the same system scored 37.23% Macro-F1 and 37.50% accuracy, a single score with no spread that sits inside the stand-in's range.

Why combining the models works

The eleven models, which the paper calls members, rarely fail on the same recording, and no single one of them carries the result.

Taken pair by pair, the correlation between which recordings two of them get wrong falls between 0.15 and 0.43, and the lowest values belong to the models trained beforehand on other data, which differ most from the rest. This is what the title of the work calls orthogonal errors: the members go wrong in different directions, so the average cancels their mistakes rather than piling them up. Moderate correlation does not mean redundancy: the pair whose errors agree most still supply the largest single contribution. Removing the whole pretrained block at once costs −2.91 pp, so the gain is spread across the four kinds of model rather than carried by one.

Figure 2. Removing any one member costs accuracy. Each bar is what happens to Macro-F1 when that member leaves the average, against a base of 36.94% on the pooled held-out answers. All eleven changes are negative, from −0.84 pp to −0.09 pp, so every member contributes and none dominates. The two smallest losses belong to graph-convolution members, which duplicate each other most. Dropping all four pretrained members together costs −2.91 pp, more than any single member.

The errors that survive fall where the task itself is ambiguous, between emotions close in meaning: jealousy into contempt, guilt into sadness or shame, which matches a low maximum confidence of about 62%. Macro-F1 varies by roughly a factor of four from one performer to another, about half of it how hard the performer is for any model and the other half which model is looking. The averaging cancels that second half, and the explanations below look at the same disagreement.

Explanations that were tested

Every explanation here comes with a test that could have failed, and one of the six did.

A picture of where a model looked cannot be wrong, since a decorative one looks exactly like a real one. So each claim here is paired with a check that could fail: hide a body part, add noise to it, or edit how it moves, and see whether the answer changes. The checks run after training on a strong member of the submitted system, cost 0 pp of Macro-F1 and need no retraining, and the two that carry the most weight were run again on the eleven-model system itself.

Uses what it points to pass

Table 3: Faithful

Hiding the parts the model called important costs more accuracy than hiding the parts it called unimportant. Plotted as accuracy against how much is hidden, the gap between the two curves is +0.124 ± 0.031 over six body parts, positive in every run, and +0.199 when the body is cut into all 25 tracked points.

Steady under noise pass

Table 3: Stable

The ranking of parts barely moves when small random noise is added to the input. Before and after agree at Spearman ρ = +0.983 ± 0.039, and the top-ranked part never changes. A ranking that moved under noise would be an accident, and the match below would mean nothing.

Matches a movement analyst pass

Table 3: Semantically grounded

The parts the model used agree with the written Laban attributes at ρ = +0.500, against +0.033 for the control built from ordinary motion measurements. Resampling whole emotions gives a 95% interval of [+0.150, +0.733], and shuffling the region scores within each emotion reaches a match this strong less than once in a thousand times (p < 0.001).

Edits move the answer pass

Table 3: Behaviourally corroborated

Editing the motion moves the answer. Freezing the head is the most disruptive edit: the score for the correct emotion falls by Δp_true = −0.0164 and 41% of answers change, while amplifying an arm changes 23.1%. Hiding a part and editing its motion are different kinds of interference, and both put the head and neck first.

Its written accounts hold up pass

Table 3: Grounded narration

The system puts each decision into words on a card. Of the 50 cards we audited, 0 contain a claim the underlying scores do not support. The cards are qualitative, so we report grounding for them and no accuracy figure.

Cannot pick out a frame reported negative

Table 3: Frame localization

Inside the 64-frame window, no frame counts for much more than any other. Frame importance is about 98.7% as even as it could possibly be, 99.5% averaged within a class, and the gap the first check measures is about +0.002 in time against +0.124 across the body. The model's evidence is spatial. This says no single frame carries the answer, not that the model ignores time, since playing a recording backwards does change accuracy.

The checks group the body differently. Hiding works over six body parts, and again over all 25 tracked points; the Laban comparison works over four regions, which are head, arms, legs and torso. The noise in the second check has σ = 0.02.

On the submitted eleven-model system the Laban agreement is ρ = +0.517 (95% interval [+0.333, +0.700], p = 0.001) and the part-hiding gap stays positive in all ten runs, so the finding describes the system we submitted and not only one member of it. The motion edits corroborate that the model relies on that motion without proving causation, and the agreement between hiding and editing is itself only suggestive, at ρ = 0.49 over 6 body parts, p = 0.33, so the claim rests on the 0.500 against 0.033 contrast instead.

Figure 3. How closely the parts the model used match how a movement analyst would describe the same motion, emotion by emotion. Each row compares two rankings of four regions, so a single row takes only a few values and none of them carries the claim alone. The match is positive for 10 of the 12 emotions for the member (p = 0.039, median ρ = +0.70) and for 11 of 12 for the submitted system (p = 0.001). What the legend calls the kinematics control is the ordinary motion measurements. The dashed line adds the same data up a second way: it pools all forty-eight emotion-and-region pairs into one correlation, which is the number the paper quotes, so it is not the average of the rows beside it. Pooled that way the control comes to +0.033; taken one emotion at a time it averages about +0.23. Both describe the same gap between the model and the control.

What this work does not claim

Each limit below comes with the check that bounds it.

What did not work is part of the record too. Pulling same-emotion recordings together during training, routing each recording to one of four specialist models instead of averaging all of them, matching recordings against written descriptions of the scene, copying the answers of a model that reads images and text, and rescaling the model's confidence after training all failed or made results worse here. They are why the design went after disagreement between models instead of a better single model.

Terms

The table and the charts keep the paper's wording. These are the words they use that the text above does not.

STGCN++
The model the organisers supply as a reference point. It treats the skeleton as a graph, with joints as nodes and bones as edges.
LPO, leave-performers-out
The arrangement described at the top of this page, in which nobody appears in both the training and the test recordings.
Logit-mean
How the eleven models are combined: average the raw score each of them gives each emotion, before those scores are turned into probabilities. Nothing in the average is learned or tuned.
Pooled out-of-fold
Figure 2 labels its axis this way. Pooling gathers the held-out answers from all ten runs and scores them once, which gives 36.94%. The headline 36.80 ± 4.00% scores each run and averages the ten instead. The two are conventions on one system and should not be mixed.
Kinematics control
What Figure 3 calls the control built from ordinary motion measurements: each joint's speed, acceleration, range of motion and energy.
Trainable parameters
The count of numbers a model learns during training. The eleven here come to 12.98 M between them.

Citation

We will add pages and a DOI once the proceedings are published.

@inproceedings{nishida2026orthogonal,
  title     = {Orthogonal Ensembles and Tested Explanations for
               Performer-Independent Body-Motion Emotion Recognition},
  author    = {Nishida, Naoto and Ishiguro, Yoshio},
  booktitle = {2026 International Conference on Affective Computing and
               Intelligent Interaction Workshops and Demos (ACIIW)},
  year      = {2026},
  note      = {MMAC Challenge: Cross-Cultural Emotion Recognition from
               Body Movements}
}

The paper appears in the ACII 2026 Workshops proceedings for the MMAC Challenge. A preprint is on arXiv: arxiv.org/abs/2609.02510. The code is at github.com/nawta/diema-challenge.