fernandotonon commited on
Commit
3c75663
·
verified ·
1 Parent(s): 8344d0c

Experimental from-scratch text-to-motion model (#411): CMU+Quaternius CC0, ONNX

Browse files
Files changed (3) hide show
  1. README.md +53 -0
  2. t2m-vocab.json +1 -0
  3. t2m.onnx +3 -0
README.md ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc0-1.0
3
+ tags:
4
+ - text-to-motion
5
+ - skeletal-animation
6
+ - qtmesheditor
7
+ - experimental
8
+ ---
9
+
10
+ # QtMeshEditor Text-to-Motion (experimental, #411)
11
+
12
+ A small, **experimental** from-scratch text-to-motion model for
13
+ [QtMeshEditor](https://github.com/fernandotonon/QtMeshEditor). Given a text
14
+ prompt (an action keyword), it generates a 40-frame, 22-joint **canonical**
15
+ skeletal clip that QtMeshEditor retargets onto an arbitrary humanoid rig.
16
+
17
+ ## Status: experimental
18
+
19
+ Render-verified quality is **action-dependent**: locomotion (e.g. `walk`) is
20
+ coherent; gestures (`wave`, `run`) can drift in the last few frames. The shipped
21
+ default in QtMeshEditor is the deterministic **template-clip retarget**; this
22
+ model is an opt-in (`--model` / GUI checkbox / MCP `model:true`) that **falls
23
+ back to the template** automatically when unavailable or out of vocabulary.
24
+
25
+ ## Training data — permissive only
26
+
27
+ Trained from scratch on **clean, dynamic, single-action windows** mined from:
28
+ - **CMU MoCap** (commercial-OK) — the bulk.
29
+ - **Quaternius Universal Animation Library** (CC0) — supplementary.
30
+
31
+ AMASS / HumanML3D / KIT-ML were **excluded** (non-commercial). Idle/near-static
32
+ and multi-action-labelled windows were filtered out (they dominated the raw set
33
+ and caused pose collapse).
34
+
35
+ ## Architecture
36
+
37
+ 6D-rotation representation, cross-attention decoder with a delta-integration
38
+ (cumsum) head for temporal continuity, CVAE latent, balanced sampling. ~7.6M
39
+ params. Exports to ONNX (one forward pass).
40
+
41
+ ## I/O contract
42
+
43
+ ```
44
+ input "tokens" float32 [1, V] one-hot over the fixed action vocab (see t2m-vocab.json)
45
+ input "seed" float32 [1, Z] latent (zeros = mean clip)
46
+ output "motion" float32 [1, T, C] C = 22*10 per-joint [tx,ty,tz, qx,qy,qz,qw, sx,sy,sz]
47
+ ```
48
+
49
+ `t2m-vocab.json` ships the `{vocab, Z, T, C, J, joints}` the host needs to build
50
+ the input and interpret the output.
51
+
52
+ Vocabulary: walk, run, jog, jump, dance, march, climb, kick, punch, sit,
53
+ stretch, throw, wave, boxing, turn, forward.
t2m-vocab.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"vocab": ["walk", "run", "jog", "jump", "dance", "march", "climb", "kick", "punch", "sit", "stretch", "throw", "wave", "boxing", "turn", "forward"], "Z": 24, "T": 40, "C": 220, "J": 22, "joints": ["hip", "abdomen", "chest", "neck", "neck1", "head", "rcollar", "rshoulder", "relbow", "rhand", "lcollar", "lshoulder", "lelbow", "lhand", "rbuttock", "rhip", "rknee", "rfoot", "lbuttock", "lhip", "lknee", "lfoot"]}
t2m.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:41da066e3ce127a4985a1b2aff2ccc0987153ff51904d1f5422cf35c16b9d704
3
+ size 17569325