SLiM
Encoders from Less is More: Compact-Token Masked Feature Learning for Skeleton Representation Learning.
- Paper: https://arxiv.org/abs/2603.10648
- Project page: https://kaist-viclab.github.io/SLiM_site/
- Code: https://github.com/KAIST-VICLab/SLiM
SLiM patchifies a 64-frame skeleton clip with P_T = 8, P_J = 1 into a compact 8 x 25 token
grid and trains a ViT encoder (8 blocks, dim 256, 8 heads) against an EMA teacher with masked
feature prediction and global-local contrastive learning. No coordinate decoder is used, and
downstream inference costs 3.59 GFLOPs.
Available checkpoints
One encoder per evaluation protocol, each in its own subfolder. Linear evaluation uses a frozen encoder, a linear classifier and a single joint stream.
| subfolder | protocol | epoch | Top-1 (%) |
|---|---|---|---|
ntu60_xsub |
NTU RGB+D 60 X-Sub | 120 | 87.9 |
ntu60_xview |
NTU RGB+D 60 X-View | 150 | 93.2 |
NTU RGB+D 120 weights are coming and will be added here as ntu120_xsub and ntu120_xset.
Usage
git clone https://github.com/KAIST-VICLab/SLiM && cd SLiM
pip install -r requirements.txt huggingface_hub safetensors
xFormers and a CUDA GPU are required β the temporal-RoPE attention has no CPU path.
import torch
from slim.hub import SLiMEncoder
model = SLiMEncoder.from_pretrained("JeonghyeokDo/SLiM", subfolder="ntu60_xsub").eval().cuda()
# clips: (B, 3, 64, 25, M) β coordinates, frames, joints, people
clips = torch.zeros(2, 3, 64, 25, 1).cuda()
with torch.no_grad():
feats = model.get_intermediate_layers(clips, 4, return_class_token=True)
patch_tokens, cls_token = feats[-1] # (B, 200, 256), (B, 256)
Evaluate each encoder on its own protocol only. Inputs follow the repository's preprocessing: clips are resampled to 64 frames, one person per token sequence, coordinates shifted so that joint 1 of the first frame is the origin.
Files
ntu60_xsub/
βββ config.json, model.safetensors encoder β load with subfolder="ntu60_xsub"
βββ linear/ the trained linear-probe grid behind the number above
ntu60_xview/
βββ config.json, model.safetensors encoder β load with subfolder="ntu60_xview"
βββ linear/
See the repository README for the evaluation commands.
Citation
@article{do2026slim,
title = {Less is More: Compact-Token Masked Feature Learning for Skeleton Representation Learning},
author = {Do, Jeonghyeok and Chen, Yun and Youk, Geunhyuk and Kim, Munchurl},
journal = {arXiv preprint arXiv:2603.10648},
year = {2026}
}
Built on DINOv2 (Apache 2.0).