Views
No views yet
| Adapter folder | Base model | Task | SMD variant | Paper table |
|---|---|---|---|---|
lora_qwen2.5-7b_qa_v5/ | Qwen2.5-7B-Instruct | Motion QA (BABEL-QA + HuMMan-QA) | All-26 joints + trajectory | Main QA row (66.7% / 90.1%) |
lora_qwen2.5-7b_caption_v5/ | Qwen2.5-7B-Instruct | Motion Captioning (HumanML3D) | All-26 joints + trajectory | Main caption row (R@1 = 0.584) |
lora_qwen2.5-7b_qa_v5_top3/ | Qwen2.5-7B-Instruct | Motion QA | Top-3 joints per body part | Attention visualization §Interpretability |
lora_qwen2.5-7b_caption_v5_top3/ | Qwen2.5-7B-Instruct | Motion Captioning | Top-3 joints per body part | Attention visualization §Interpretability |
lora_gemma3-4b_qa_top3/ | google/gemma-3-4b-it | Motion QA | Top-3 | Backbone portability |
lora_qwen3-8b_qa_top3/ | Qwen/Qwen3-8B | Motion QA | Top-3 | Backbone portability |
lora_llama3.1-8b_qa_top3/ | meta-llama/Llama-3.1-8B-Instruct | Motion QA | Top-3 | Backbone portability |
lora_glm4-9b_qa_top3/ | THUDM/glm-4-9b-chat | Motion QA | Top-3 | Backbone portability |
adapter_config.json, adapter_model.safetensors, and the tokenizer files of the corresponding base model (LoRA-only, so each adapter is ≈ 65 MB).scripts/finetune/train_lora_llm.py):scripts/slurm/slurm_train_qa.sh / slurm_train_caption.sh /
slurm_train_backbone.sh in the code repo for exact commands.1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
4
5# 1. Load the base LLM
6base_id = "Qwen/Qwen2.5-7B-Instruct"
7tok = AutoTokenizer.from_pretrained(base_id)
8base = AutoModelForCausalLM.from_pretrained(
9 base_id, torch_dtype=torch.bfloat16, device_map="auto"
10)
11
12# 2. Attach the LoRA adapter from this repo
13model = PeftModel.from_pretrained(
14 base,
15 "zyyy12138/motion-smd-lora",
16 subfolder="lora_qwen2.5-7b_qa_v5",
17)
18model.eval()
19
20# 3. Use: build a prompt with SMD text + question
21smd_text = """Motion: 3.2s (64 frames at 20 FPS)
22Trajectory: displacement 0.12m, height change +0.01m, avg height 0.94m
23Global Trajectory: ... (full SMD)
24Joint Angles: ... (full SMD)"""
25
26question = "Which body part is moving?"
27options = ["Left arm", "Right arm", "Head", "Torso"]
28prompt = f"""Motion description:
29{smd_text}
30
31Question: {question}
32Options: {chr(10).join([f'{i}) {o}' for i, o in enumerate(options)])}
33
34Answer:"""
35
36inputs = tok(prompt, return_tensors="pt").to(model.device)
37out = model.generate(**inputs, max_new_tokens=8)
38print(tok.decode(out[0], skip_special_tokens=True))scripts/finetune/dataset_text_only.py and
captioning/scripts/dataset_caption.py in the code repo.| Adapter | Task | Benchmark | Metric | Value |
|---|---|---|---|---|
lora_qwen2.5-7b_qa_v5 | QA | BABEL-QA (test) | Accuracy | 66.7% |
lora_qwen2.5-7b_qa_v5 | QA | HuMMan-QA (test) | Accuracy | 90.1% |
lora_qwen2.5-7b_caption_v5 | Caption | HumanML3D (test) | R@1 | 0.584 |
lora_qwen2.5-7b_caption_v5 | Caption | HumanML3D (test) | CIDEr | 53.16 |
adapter_model.safetensors) are
released under the Apache-2.0 license.1@article{zhang2026smd,
2 title = {Encoder-Free Human Motion Understanding via Structured Motion Descriptions},
3 author = {Zhang, Yao and Liu, Zhuchenyang and Ploetz, Thomas and Xiao, Yu},
4 journal = {arXiv preprint arXiv:2604.21668},
5 year = {2026}
6}yao.1.zhang@aalto.fi