SkeletonEQA weights (non-commercial): checkpoints trained on REHAB24-6, and all CTR-GCN checkpoints
Weights only, no dataset samples. These weights contain no dataset samples; obtain the data from the original authors.
They are the model checkpoints of the benchmark study Skeleton-Based Exercise Quality Assessment Under Domain Shift (MCHM '26, DOI 10.1145/3840471.3842592),
a binary squat-quality classifier (0 = incorrect, 1 = correct) on 18-joint OpenPose skeleton sequences of shape (N, 3, 100, 18, 1).
This repository holds 368 files, 3.18 GB.
What the files are and how they are named
- Every file is a PyTorch state dict (a flat
OrderedDictof tensors; no optimizer state, no wrapper keys). Layout checked by reading the zip listing and pickle opcodes of the public-condition files without loading them. - Path:
<model>/<folder>/<file>.pth, with<model>one of the lower-case model names and<folder>the experimental condition (table below). - File names inside the folders keep the names used during training:
<model>_ood_b<n>_<train>_to_<test>.pth,<model>_ood_c<n>_..._to_<test>.pth,<model>_loso_<dataset>_round<k>.pth,<model>_kfold_custom_fold<k>.pth,<model>_mixed_all_datasets.pth; ST-GCN files have no<model>_prefix. A suffix_rerunmarks the second training run of a condition (see "Preprocessing"). MANIFEST.csvlists every file with size, SHA-256, model, condition, training pool, fold and repository.- A folder name ending in
_loso_run2holds a second set of LOSO fold files written on 2026-06-21 and 2026-06-22;D1_ablation_*holds a normalisation ablation on the pooled data;B3_supconholds a SupCon variant of B3. These three groups have no table in the paper.
Code, training and seeds
- Code: https://github.com/MonicaVahd/FAIRCoachOOD, tag
v0.1.0, commit859324b343a2bf4fbd25376004692d9da078f9c6. - Training protocol (paper section 3.3): Adam, learning rate 1e-3, weight decay 1e-4, ReduceLROnPlateau (patience 10, factor 0.5), batch size 16, at most 200 epochs, early stopping on validation loss (patience 20), inverse-frequency weighted cross-entropy. The stored SkateFormer D1 script uses an early-stopping patience of 50 (
docs/KNOWN_DIFFERENCES.md, D5). - Seed 42, single run per file. Re-training is not expected to reproduce a file exactly.
Conditions in this repository
Models in this repository: ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer. Training pool and test target follow Table 3 of the paper (B: 80 % of one dataset; C: 90 % pool of two or three datasets; A: leave-one-subject-out or 5-fold).
Folders whose pool contains Custom (A3_kfold, B5, B6, B12, C2, C3, C6, C7, C9, C10, D1_ablation_hip_centering_only, D1_ablation_hip_centering_torso_scaling, D1_ablation_no_normalization, D1_mixed): the weights were trained partly on publicly available instructional videos that are not redistributed.
| Folder | Protocol | Training pool | Test target | Models | Files | File dates | Paper table (by name and date only) |
|---|---|---|---|---|---|---|---|
A1_loso |
LOSO | EC3D | held-out EC3D subject | CTR-GCN | 4 | 2026-07-14 .. 2026-07-14 | Table 5 |
A1_loso_run2 |
LOSO, second file set | EC3D | held-out EC3D subject | CTR-GCN | 4 | 2026-06-21 .. 2026-06-21 | none (second LOSO file set) |
A2_loso |
LOSO | REHAB24-6 | held-out REHAB24-6 subject | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 81 | 2026-07-14 .. 2026-07-15 | Table 5 |
A2_loso_run2 |
LOSO, second file set | REHAB24-6 | held-out REHAB24-6 subject | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 81 | 2026-06-21 .. 2026-06-21 | none (second LOSO file set) |
A3_kfold |
5-fold CV | Custom | held-out Custom fold | CTR-GCN | 5 | 2026-07-14 .. 2026-07-14 | Table 5 |
A4_loso |
LOSO | UI-PRMD | held-out UI-PRMD subject | CTR-GCN | 10 | 2026-07-14 .. 2026-07-14 | Table 5 |
A4_loso_run2 |
LOSO, second file set | UI-PRMD | held-out UI-PRMD subject | CTR-GCN | 10 | 2026-06-21 .. 2026-06-21 | none (second LOSO file set) |
B1 |
single-source OOD | EC3D | REHAB24-6 | CTR-GCN | 1 | 2026-06-16 .. 2026-06-16 | Table 6 |
B2 |
single-source OOD | EC3D | Custom | CTR-GCN | 1 | 2026-06-16 .. 2026-06-16 | Table 6 |
B3 |
single-source OOD | REHAB24-6 | EC3D | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-09 .. 2026-06-18 | Table 6 |
B3_supcon |
single-source OOD, SupCon variant | REHAB24-6 | EC3D | ST-GCN | 1 | 2026-07-03 .. 2026-07-03 | none (SupCon variant) |
B4 |
single-source OOD | REHAB24-6 | Custom | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-09 .. 2026-06-18 | Table 6 |
B5 |
single-source OOD | Custom | EC3D | CTR-GCN | 1 | 2026-06-16 .. 2026-06-16 | Table 6 |
B6 |
single-source OOD | Custom | REHAB24-6 | CTR-GCN | 1 | 2026-06-16 .. 2026-06-16 | Table 6 |
B7 |
single-source OOD | UI-PRMD | EC3D | CTR-GCN | 2 | 2026-06-16 .. 2026-06-22 | Table 6 |
B8 |
single-source OOD | UI-PRMD | REHAB24-6 | CTR-GCN | 2 | 2026-06-16 .. 2026-06-22 | Table 6 |
B9 |
single-source OOD | UI-PRMD | Custom | CTR-GCN | 2 | 2026-06-16 .. 2026-06-22 | Table 6 |
B10 |
single-source OOD | EC3D | UI-PRMD | CTR-GCN | 1 | 2026-06-16 .. 2026-06-16 | Table 6 |
B11 |
single-source OOD | REHAB24-6 | UI-PRMD | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-09 .. 2026-06-18 | Table 6 |
B12 |
single-source OOD | Custom | UI-PRMD | CTR-GCN | 1 | 2026-06-16 .. 2026-06-16 | Table 6 |
C1 |
multi-source OOD | EC3D + REHAB24-6 | Custom | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-15 .. 2026-06-19 | Table 6 |
C2 |
multi-source OOD | EC3D + Custom | REHAB24-6 | CTR-GCN | 1 | 2026-06-16 .. 2026-06-16 | Table 6 |
C3 |
multi-source OOD | REHAB24-6 + Custom | EC3D | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-15 .. 2026-06-19 | Table 6 |
C4 |
multi-source OOD | EC3D + UI-PRMD | Custom | CTR-GCN | 2 | 2026-06-16 .. 2026-06-22 | Table 6 |
C5 |
multi-source OOD | REHAB24-6 + UI-PRMD | Custom | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 18 | 2026-06-15 .. 2026-06-22 | Table 6 |
C6 |
multi-source OOD | EC3D + REHAB24-6 + Custom | UI-PRMD | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-15 .. 2026-06-19 | Table 6 |
C7 |
multi-source OOD | Custom + UI-PRMD | EC3D | CTR-GCN | 2 | 2026-06-16 .. 2026-06-22 | Table 6 |
C8 |
multi-source OOD | EC3D + REHAB24-6 + UI-PRMD | Custom | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 18 | 2026-06-15 .. 2026-06-22 | Table 6 |
C9 |
multi-source OOD | EC3D + Custom + UI-PRMD | REHAB24-6 | CTR-GCN | 2 | 2026-06-16 .. 2026-06-22 | Table 6 |
C10 |
multi-source OOD | REHAB24-6 + Custom + UI-PRMD | EC3D | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 18 | 2026-06-15 .. 2026-06-22 | Table 6 |
D1_ablation_hip_centering_only |
pooled 80/10/10, normalisation ablation | EC3D + REHAB24-6 + Custom + UI-PRMD | held-out 10 % of the pooled data | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-20 .. 2026-06-20 | none (normalisation ablation) |
D1_ablation_hip_centering_torso_scaling |
pooled 80/10/10, normalisation ablation | EC3D + REHAB24-6 + Custom + UI-PRMD | held-out 10 % of the pooled data | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-20 .. 2026-06-20 | none (normalisation ablation) |
D1_ablation_no_normalization |
pooled 80/10/10, normalisation ablation | EC3D + REHAB24-6 + Custom + UI-PRMD | held-out 10 % of the pooled data | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 9 | 2026-06-20 .. 2026-06-20 | none (normalisation ablation) |
D1_mixed |
pooled 80/10/10 | EC3D + REHAB24-6 + Custom + UI-PRMD | held-out 10 % of the pooled data | ST-GCN, CTR-GCN, InfoGCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer, HyperFormer, FreqMixFormer | 18 | 2026-06-22 .. 2026-07-15 | Table 5 (D1) |
Preprocessing
All sequences were converted to the 18-joint OpenPose layout, hip-centred (right hip), torso-scaled, padded/trimmed (UI-PRMD: interpolated) to 100 frames, transposed to (3, 100, 18), min-max normalised in x and y, and given a person axis, as in section 3.2 of the paper; the converters are in the code repository.
UI-PRMD normalize_xy note (code repository, docs/KNOWN_DIFFERENCES.md, D3 and D4).
- The UI-PRMD re-run script states that it followed a preprocessing fix in which
normalize_xyis applied to UI-PRMD. - Files whose training pool contains UI-PRMD exist in two versions for conditions B7, B8, B9, C4, C5, C7, C8, C9, C10 and D1: the original files (written 2026-06-15 .. 06-19; D1: 2026-07-15) and files with the suffix
_rerun(written 2026-06-22). Both are included. B10, B11, B12 and C6 have a single file (their original checkpoints were re-evaluated on refreshed test data in the re-run). - Which UI-PRMD preprocessing each original file was trained with is not recorded. The paper's section 6.5 reports 25 status changes between the two sets (11 recoveries, 8 regressions, 6 FC<->PC); the code repository reproduces that count from the stored confusion counts (D4).
Limitations and provenance
- The results are exploratory: one run per condition, seed 42, and the paper reports no confidence intervals.
- 77.8 % of the 198 OOD experiments collapse (154 of 198: 141 full collapse, 13 partial collapse): the classifier predicts one class for (nearly) all test samples. A non-zero macro-F1 of a collapsed cell reflects majority-class prediction, not transfer. Many of these checkpoints are therefore weak classifiers outside their training distribution.
- Files were matched to the paper only by name and date. No hash, log or manifest ties a file to a value in the paper's tables; if a file with the same name was overwritten, the statement would not detect it.
- The paper's cell values (macro-F1 and FC/PC/OK) are in
results/ood_results.csvof the code repository (Table 6) andresults/iid_results,results/mixed_results(Table 5).
Licence
This repository is licensed CC BY-NC 4.0 (license: cc-by-nc-4.0): the most restrictive licence that applies to its contents.
- REHAB24-6 (training data of every REHAB24-6 pool): Zenodo record licence field "Creative Commons Attribution Non Commercial 4.0 International"; terms: "This dataset is for academic or non-profit organization noncomercial research use only." and "By using you agree to appropriately reference the paper above in any publication making of its use."
- CTR-GCN (all CTR-GCN files, whatever their pool): upstream code licence CC BY-NC 4.0.
Other components, for the pools and models in this repository:
| Component | Licence / status |
|---|---|
| EC3D | EC3D licence not stated |
| UI-PRMD | Open Data Commons Public Domain Dedication and License v1.0 (dataset paper footnotes) |
| Custom (every folder whose training pool contains it, see "Conditions in this repository"; includes the CTR-GCN folders with Custom in the pool) | trained partly on publicly available instructional videos that are not redistributed |
| ST-GCN code | BSD-2-Clause |
| HD-GCN, ProtoGCN, SkateFormer code | MIT |
| BlockGCN, HyperFormer code (modified in the code repository) | Apache-2.0 |
| CTR-GCN code | CC BY-NC 4.0 |
| InfoGCN code | no licence file in the upstream repository |
| FreqMixFormer code | no licence file in the upstream repository |
InfoGCN and FreqMixFormer: the files are included, but the upstream code of both models has no licence file and is not distributed in the code repository. It must be fetched with scripts/fetch_upstream.py; the released builders do not load these two models. The CTR-GCN upstream code must be fetched the same way.
Loading
Tested with the released builders of the code repository at tag v0.1.0 (PyTorch 2.4.1, CPU): one checkpoint per model was loaded with torch.load(..., weights_only=True) into the builder's untrained model with strict=True, followed by a forward pass on a random input (4, 3, 100, 18, 1), which returned logits of shape (4, 2) for ST-GCN, BlockGCN, HD-GCN, ProtoGCN, SkateFormer and HyperFormer (the test used the B1 files of the open repository). Not tested: CTR-GCN, InfoGCN, FreqMixFormer (their builders are not part of the release).
import sys, torch
sys.path.insert(0, "FAIRCoachOOD") # checkout of the code repository at tag v0.1.0
from models.builders import build_hdgcn_model # also: build_stgcn_model, build_blockgcn_model,
# build_protogcn_model, build_skateformer_model, build_hyperformer_model
model = build_hdgcn_model(device="cpu") # untrained model
state = torch.load("hdgcn/B3/hdgcn_ood_b3_rehab24_to_ec3d.pth", map_location="cpu", weights_only=True)
model.load_state_dict(state, strict=True)
model.eval()
logits = model(torch.rand(4, 3, 100, 18, 1)) # (4, 2); class 1 = correct squat
Forward signatures: ST-GCN, HD-GCN and ProtoGCN model(x); SkateFormer model(x, index_t) with index_t = zeros(N, 100, dtype=long); BlockGCN model(x, y_onehot, x) (returns logits and an auxiliary loss); HyperFormer model(x, y) (returns logits and labels). build_*_model(checkpoint_path=...) in the code repository also loads a file, but it calls torch.load without weights_only=True; the recipe above is the safer variant.
References
Paper
@inproceedings{10.1145/3840471.3842592,
author = {Vahdati, Monica and Gholizadeh HamlAbadi, Kamran and Etemad, Ali and El Saddik, Abdulmotaleb},
title = {Skeleton-Based Exercise Quality Assessment Under Domain Shift: A Benchmark Study of Cross-Domain Failure Modes},
year = {2026},
isbn = {9798400729256},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3840471.3842592},
doi = {10.1145/3840471.3842592},
booktitle = {Proceedings of the 3rd International Workshop on Multimedia Computing for Health and Medicine},
pages = {43--52},
numpages = {10},
location = {Rio de Janeiro, Brazil},
series = {MCHM '26}
}
Project page: https://skeletoneqa.github.io/. Code: https://github.com/MonicaVahd/FAIRCoachOOD (tag v0.1.0).
Datasets
- EC3D: Ziyi Zhao, Sena Kiciroglu, Hugues Vinzant, Yuan Cheng, Isinsu Katircioglu, Mathieu Salzmann, Pascal Fua. 3D pose based feedback for physical exercises. Proceedings of the Asian Conference on Computer Vision (ACCV), 2022, pp. 1316-1332. arXiv:2208.03257 (https://arxiv.org/abs/2208.03257). Dataset repository: https://github.com/Jacoo-Zhao/3D-Pose-Based-Feedback-For-Physical-Exercises.
- REHAB24-6: Andrej ÄŒernek, Jan Sedmidubsky, Petra Budikova. REHAB24-6: Physical therapy dataset for analyzing pose estimation methods. International Conference on Similarity Search and Applications (SISAP), Springer, 2024, pp. 18-33. Zenodo record: https://zenodo.org/records/13305826.
- UI-PRMD: Aleksandar Vakanski, Hyung-pil Jun, David Paul, Russell Baker. A data set of human body movements for physical rehabilitation exercises. Data 3(1):2, 2018. https://pmc.ncbi.nlm.nih.gov/articles/PMC5773117/. Project page: https://webpages.uidaho.edu/ui-prmd/.
Model architectures (upstream papers and repositories)
- ST-GCN: Sijie Yan, Yuanjun Xiong, Dahua Lin. Spatial temporal graph convolutional networks for skeleton-based action recognition. AAAI 2018. https://github.com/yysijie/st-gcn
- CTR-GCN: Yuxin Chen, Ziqi Zhang, Chunfeng Yuan, Bing Li, Ying Deng, Weiming Hu. Channel-wise topology refinement graph convolution for skeleton-based action recognition. ICCV 2021, pp. 13359-13368. https://github.com/Uason-Chen/CTR-GCN
- InfoGCN: Hyung-gun Chi, Myoung Hoon Ha, Seunggeun Chi, Sang Wan Lee, Qixing Huang, Karthik Ramani. InfoGCN: Representation learning for human skeleton-based action recognition. CVPR 2022, pp. 20186-20196. https://github.com/stnoah1/infogcn
- BlockGCN: Yuxuan Zhou, Xudong Yan, Zhi-Qi Cheng, Yan Yan, Qi Dai, Xian-Sheng Hua. BlockGCN: Redefine topology awareness for skeleton-based action recognition. CVPR 2024, pp. 2049-2058. https://github.com/ZhouYuxuanYX/BlockGCN
- HD-GCN: Jungho Lee, Minhyeok Lee, Dogyoon Lee, Sangyoun Lee. Hierarchically decomposed graph convolutional networks for skeleton-based action recognition. ICCV 2023, pp. 10444-10453. https://github.com/Jho-Yonsei/HD-GCN
- ProtoGCN: Hongda Liu, Yunfan Liu, Min Ren, Hao Wang, Yunlong Wang, Zhenan Sun. Revealing key details to see differences: A novel prototypical perspective for skeleton-based action recognition. CVPR 2025, pp. 29248-29257. https://github.com/firework8/ProtoGCN
- SkateFormer: Jeonghyeok Do, Munchurl Kim. SkateFormer: Skeletal-temporal transformer for human action recognition. ECCV 2024, pp. 401-420. https://github.com/KAIST-VICLab/SkateFormer
- HyperFormer: Yuxuan Zhou, Zhi-Qi Cheng, Chao Li, Yanwen Fang, Yifeng Geng, Xuansong Xie, Margret Keuper. Hypergraph transformer for skeleton-based action recognition. arXiv:2211.09590, 2022. https://github.com/ZhouYuxuanYX/Hyperformer
- FreqMixFormer: Wenhan Wu, Ce Zheng, Zihao Yang, Chen Chen, Srijan Das, Aidong Lu. Frequency guidance matters: Skeletal action recognition by frequency-aware mixed transformer. ACM Multimedia 2024, pp. 4660-4669. https://github.com/wenhanwu95/FreqMixFormer