ZeyuLing commited on
Commit
940ab51
·
verified ·
1 Parent(s): 21e2408

Release Motius AIST++ music-to-dance artifact

Browse files
ATTRIBUTIONS.md ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Bailando Attribution
2
+
3
+ This implementation adapts the network architecture and evaluation protocol
4
+ from [lisiyao21/Bailando](https://github.com/lisiyao21/Bailando) at revision
5
+ `cc90b98bff81c9709570db413c9610c2562e27ca`.
6
+
7
+ Bailando is distributed under the S-Lab License 1.0. The vendored license is
8
+ included as `LICENSE`. The kinetic and geometric feature implementations used
9
+ by the evaluator originate from Meta/Facebook Fairmotion and retain their BSD
10
+ license headers.
11
+
12
+ The AIST++ reference features are derived from the AIST++ Dance Motion Dataset,
13
+ Copyright 2021 Google LLC and licensed under CC BY 4.0. The evaluator artifact
14
+ contains derived feature vectors and source-sequence audit metadata, not the raw
15
+ AIST++ motion files.
16
+
17
+ Paper: Li Siyao et al., "Bailando: 3D Dance Generation by Actor-Critic GPT
18
+ With Choreographic Memory," CVPR 2022.
LICENSE ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ S-Lab License 1.0
2
+
3
+ Copyright 2022 S-Lab
4
+
5
+ Redistribution and use for non-commercial purpose in source and
6
+ binary forms, with or without modification, are permitted provided
7
+ that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright
10
+ notice, this list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in
14
+ the documentation and/or other materials provided with the
15
+ distribution.
16
+
17
+ 3. Neither the name of the copyright holder nor the names of its
18
+ contributors may be used to endorse or promote products derived
19
+ from this software without specific prior written permission.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ In the event that redistribution and/or use for commercial purpose in
34
+ source or binary forms, with or without modification is required,
35
+ please contact the contributor(s) of the work.
README.md ADDED
@@ -0,0 +1,189 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: s-lab-license-1.0
4
+ license_link: https://github.com/lisiyao21/Bailando/blob/master/LICENSE
5
+ library_name: motius
6
+ tags:
7
+ - motion-generation
8
+ - music-to-dance
9
+ - aistplusplus
10
+ - bailando
11
+ datasets:
12
+ - yeok/danceba
13
+ ---
14
+
15
+ <h1 align="center">Bailando Model Card</h1>
16
+
17
+ <p align="center">
18
+ <strong>Actor-critic music-to-dance generation with a learned choreographic memory.</strong>
19
+ </p>
20
+
21
+ <p align="center">
22
+ <a href="https://arxiv.org/abs/2203.13055">Paper</a> |
23
+ <a href="https://www.mmlab-ntu.com/project/bailando/">Project Page</a> |
24
+ <a href="https://github.com/lisiyao21/Bailando">Original GitHub</a> |
25
+ <a href="https://huggingface.co/ZeyuLing/Motius-Bailando-AISTPP">Motius Checkpoint</a> |
26
+ <a href="../tasks/music_to_dance.md">Task Protocol</a>
27
+ </p>
28
+
29
+ Bailando is the CVPR 2022 oral work *Bailando: 3D Dance Generation by
30
+ Actor-Critic GPT with Choreographic Memory*. It learns upper- and lower-body
31
+ VQ codebooks, then composes those dance units autoregressively from music. The
32
+ Motius release implements the model, audio frontend, AIST++ dataset, pipeline,
33
+ representation bridge, and evaluator without importing an external checkout at
34
+ runtime.
35
+
36
+ ## Preview
37
+
38
+ <table>
39
+ <tr>
40
+ <td width="33%"><img src="https://raw.githubusercontent.com/ZeyuLing/Motius/main/assets/model_zoo/bailando/bailando_aistpp_break_gBR_mBR0_smpl_mesh_512_30fps.gif" alt="Bailando break dance"></td>
41
+ <td width="33%"><img src="https://raw.githubusercontent.com/ZeyuLing/Motius/main/assets/model_zoo/bailando/bailando_aistpp_krump_gKR_mKR2_smpl_mesh_512_30fps.gif" alt="Bailando krump dance"></td>
42
+ <td width="33%"><img src="https://raw.githubusercontent.com/ZeyuLing/Motius/main/assets/model_zoo/bailando/bailando_aistpp_waacking_gWA_mWA0_smpl_mesh_512_30fps.gif" alt="Bailando waacking dance"></td>
43
+ </tr>
44
+ <tr>
45
+ <td align="center"><sub>Break / <code>gBR...mBR0</code></sub></td>
46
+ <td align="center"><sub>Krump / <code>gKR...mKR2</code></sub></td>
47
+ <td align="center"><sub>Waacking / <code>gWA...mWA0</code></sub></td>
48
+ </tr>
49
+ </table>
50
+
51
+ The previews are distinct AIST++ evaluation outputs rendered as neutral SMPL
52
+ meshes at 512x512 and 30 fps. Their position-IK fit errors are 13.75, 13.89,
53
+ and 13.71 mm. MP4 sources and fit reports are stored beside the GIF assets.
54
+
55
+ ## Release Snapshot
56
+
57
+ | Item | Value |
58
+ | ---- | ----- |
59
+ | Task | Music-to-Dance |
60
+ | Dataset | AIST++ cross-modal split |
61
+ | Music input | 438D features at 7.5 fps, or raw audio through the bundled frontend |
62
+ | Native motion | AIST++ global SMPL-24 joint positions at 60 fps |
63
+ | Parameters | 173,368,139 |
64
+ | Checkpoint | [`ZeyuLing/Motius-Bailando-AISTPP`](https://huggingface.co/ZeyuLing/Motius-Bailando-AISTPP) |
65
+ | Pipeline | `motius.pipelines.bailando.BailandoPipeline` |
66
+ | Upstream revision | `lisiyao21/Bailando@cc90b98bff81c9709570db413c9610c2562e27ca` |
67
+ | License | S-Lab License 1.0, non-commercial use |
68
+
69
+ The Hugging Face artifact contains both VQ-VAE branches and the actor-critic
70
+ GPT as safetensors, plus the complete architecture config, source hashes,
71
+ license, and attribution. It does not require an upstream repository or a
72
+ second checkpoint download.
73
+
74
+ ## Usage
75
+
76
+ Install the music frontend dependencies:
77
+
78
+ ```bash
79
+ python -m pip install -e '.[music-to-dance]'
80
+ ```
81
+
82
+ Generate from an audio file:
83
+
84
+ ```python
85
+ from motius.pipelines.bailando import BailandoPipeline
86
+
87
+ pipe = BailandoPipeline.from_pretrained(
88
+ "ZeyuLing/Motius-Bailando-AISTPP",
89
+ device="cuda",
90
+ )
91
+ result = pipe("music.wav")
92
+
93
+ print(result.joints.shape) # (batch, frames, 24, 3)
94
+ print(result.music_features.shape) # (batch, music_frames, 438)
95
+ ```
96
+
97
+ For exact benchmark reproduction, pass the released 438D AIST++ feature stream
98
+ and paired initial motion. Only the first upper/lower VQ token initializes the
99
+ generation, matching the official script:
100
+
101
+ ```python
102
+ result = pipe(
103
+ music_features=music_features_7p5fps,
104
+ initial_motion=paired_gt_smpl24,
105
+ )
106
+ ```
107
+
108
+ Without `initial_motion`, the public demo seed `(423, 12)` is used. Raw-audio
109
+ inference is a convenience path; use released precomputed features when exact
110
+ paper parity across audio-library versions matters.
111
+
112
+ ## Evaluation
113
+
114
+ Motius ran the converted official epoch-500 VQ-VAE and epoch-10 GPT on all 40
115
+ cross-modal validation/test cases. FID and diversity use the 1,320 valid motion
116
+ PKLs in the AIST++ v1 reference archive. Generated features use the first 1,200
117
+ frames; reference features use complete sequences; BeatAlign uses the complete
118
+ generated sequence and the paired 60 fps music-beat stream.
119
+
120
+ | Result | FID_k | FID_g | Diversity_k | Diversity_g | BeatAlign |
121
+ | ------ | ----: | ----: | ----------: | ----------: | --------: |
122
+ | Motius reproduction | 28.11 | 9.70 | 7.73 | 6.31 | 0.2268 |
123
+ | Bailando paper | 28.16 | 9.62 | 7.83 | 6.34 | 0.2332 |
124
+ | Motius GT | 17.16 | 10.66 | 8.17 | 7.49 | 0.2247 |
125
+ | GT paper | 17.10 | 10.60 | 8.19 | 7.45 | 0.2374 |
126
+
127
+ Lower is better for FID, higher is better for BeatAlign, and diversity is
128
+ interpreted relative to GT. The paper values are shown as parity targets and
129
+ are not copied into the reproduced row.
130
+
131
+ ### Physical Diagnostics
132
+
133
+ These Motius joint-level diagnostics use the common SMPL-22 subset. They are
134
+ not metrics from the Bailando paper.
135
+
136
+ | Result | Jitter | Dynamic | Penetration | Float | Slide |
137
+ | ------ | -----: | ------: | ----------: | ----: | ----: |
138
+ | Bailando | 0.00558 | 0.02183 | 0.00000 | 0.21803 | 0.00428 |
139
+ | Paired GT | 0.00677 | 0.02276 | 0.00000 | 0.10658 | 0.00330 |
140
+
141
+ `Dynamic` is an expressiveness statistic to compare with GT rather than
142
+ minimize. The floor-dependent diagnostics are reported in native metric units.
143
+
144
+ ## Motion Representation
145
+
146
+ The public representation name is `aistpp_smpl24_joints`, shape `(T,24,3)` in
147
+ metres with Y up. Joints `0:22` are the standard SMPL body chain and convert
148
+ exactly to `smpl22_joints`:
149
+
150
+ ```python
151
+ from motius.motion import convert_motion
152
+
153
+ smpl22 = convert_motion(
154
+ result.joints[0],
155
+ source="aistpp_smpl24_joints",
156
+ target="smpl22_joints",
157
+ )
158
+ ```
159
+
160
+ Conversion to `motion135` and SMPL mesh uses position IK because the generated
161
+ tensor stores joint positions rather than local rotations. The three preview
162
+ reports expose the resulting fit errors instead of hiding this lossy step.
163
+
164
+ ## Reproduction Audit
165
+
166
+ | Check | Result |
167
+ | ----- | ------ |
168
+ | Official checkpoint load | Zero missing and zero unexpected tensors |
169
+ | VQ-VAE source SHA-256 | `35670f42a3b3092438f73f0af3ace7b52e318a8b5c00b2b05c92078176b21716` |
170
+ | GPT source SHA-256 | `903863a4e1cac01fcec30f7939c591eac8ea89f74e9837b93babe3383eecb403` |
171
+ | Generated cases | 40/40, all finite |
172
+ | Full inference time | 80.17 seconds on one H20 |
173
+ | Reference pool | 1,365 PKLs minus the official 45-entry ignore list = 1,320 |
174
+ | SMPL-24 FK calibration | 0.000066 mm MPJPE over 540,384 joint-frames |
175
+
176
+ The model code remains under the upstream S-Lab License 1.0. AIST++
177
+ annotations are CC BY 4.0. See the artifact `LICENSE` and `ATTRIBUTIONS.md`
178
+ before redistribution or commercial use.
179
+
180
+ ## Citation
181
+
182
+ ```bibtex
183
+ @inproceedings{siyao2022bailando,
184
+ title={Bailando: 3D Dance Generation by Actor-Critic GPT with Choreographic Memory},
185
+ author={Siyao, Li and Yu, Weijiang and Gu, Tianpei and Lin, Chunze and Wang, Quan and Qian, Chen and Loy, Chen Change and Liu, Ziwei},
186
+ booktitle={CVPR},
187
+ year={2022}
188
+ }
189
+ ```
bailando_config.json ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "artifact_format": "motius-bailando-v1",
3
+ "model_type": "bailando",
4
+ "source_repository": "https://github.com/lisiyao21/Bailando",
5
+ "source_revision": "cc90b98bff81c9709570db413c9610c2562e27ca",
6
+ "provenance": {
7
+ "source_repository": "https://github.com/lisiyao21/Bailando",
8
+ "source_revision": "cc90b98bff81c9709570db413c9610c2562e27ca",
9
+ "source_checkpoints": {
10
+ "vqvae": {
11
+ "filename": "epoch_500.pt",
12
+ "sha256": "35670f42a3b3092438f73f0af3ace7b52e318a8b5c00b2b05c92078176b21716"
13
+ },
14
+ "gpt": {
15
+ "filename": "epoch_10.pt",
16
+ "sha256": "903863a4e1cac01fcec30f7939c591eac8ea89f74e9837b93babe3383eecb403"
17
+ }
18
+ }
19
+ },
20
+ "config": {
21
+ "fps": 60.0,
22
+ "code_downsample": 8,
23
+ "motion_representation": "aistpp_smpl24_joints",
24
+ "default_initial_codes": [
25
+ 423,
26
+ 12
27
+ ],
28
+ "vqvae": {
29
+ "up_half": {
30
+ "levels": 1,
31
+ "downs_t": [
32
+ 3
33
+ ],
34
+ "strides_t": [
35
+ 2
36
+ ],
37
+ "emb_width": 512,
38
+ "l_bins": 512,
39
+ "l_mu": 0.99,
40
+ "commit": 0.02,
41
+ "hvqvae_multipliers": [
42
+ 1
43
+ ],
44
+ "width": 512,
45
+ "depth": 3,
46
+ "m_conv": 1.0,
47
+ "dilation_growth_rate": 3,
48
+ "sample_length": 240,
49
+ "use_bottleneck": true,
50
+ "joint_channel": 3,
51
+ "vqvae_reverse_decoder_dilation": true
52
+ },
53
+ "down_half": {
54
+ "levels": 1,
55
+ "downs_t": [
56
+ 3
57
+ ],
58
+ "strides_t": [
59
+ 2
60
+ ],
61
+ "emb_width": 512,
62
+ "l_bins": 512,
63
+ "l_mu": 0.99,
64
+ "commit": 0.02,
65
+ "hvqvae_multipliers": [
66
+ 1
67
+ ],
68
+ "width": 512,
69
+ "depth": 3,
70
+ "m_conv": 1.0,
71
+ "dilation_growth_rate": 3,
72
+ "sample_length": 240,
73
+ "use_bottleneck": true,
74
+ "joint_channel": 3,
75
+ "vqvae_reverse_decoder_dilation": true,
76
+ "acc": 1.0
77
+ },
78
+ "use_bottleneck": true,
79
+ "joint_channel": 3
80
+ },
81
+ "gpt": {
82
+ "block_size": 29,
83
+ "base": {
84
+ "embd_pdrop": 0.1,
85
+ "resid_pdrop": 0.1,
86
+ "attn_pdrop": 0.1,
87
+ "vocab_size_up": 512,
88
+ "vocab_size_down": 512,
89
+ "block_size": 29,
90
+ "n_layer": 6,
91
+ "n_head": 12,
92
+ "n_embd": 768,
93
+ "n_music": 438,
94
+ "n_music_emb": 768
95
+ },
96
+ "head": {
97
+ "embd_pdrop": 0.1,
98
+ "resid_pdrop": 0.1,
99
+ "attn_pdrop": 0.1,
100
+ "vocab_size": 512,
101
+ "block_size": 29,
102
+ "n_layer": 6,
103
+ "n_head": 12,
104
+ "n_embd": 768,
105
+ "vocab_size_up": 512,
106
+ "vocab_size_down": 512
107
+ },
108
+ "critic_net": {
109
+ "embd_pdrop": 0.0,
110
+ "resid_pdrop": 0.0,
111
+ "attn_pdrop": 0.0,
112
+ "block_size": 29,
113
+ "n_layer": 3,
114
+ "n_head": 12,
115
+ "n_embd": 768,
116
+ "vocab_size_up": 1,
117
+ "vocab_size_down": 1
118
+ },
119
+ "n_music": 438,
120
+ "n_music_emb": 768
121
+ }
122
+ }
123
+ }
conversion_report.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "output": "/apdcephfs/AILab_DHA/apdcephfs_cq11/share_1467498/home/zeyuling/Motius/outputs/checkpoints/bailando_aistpp",
3
+ "load_reports": {
4
+ "vqvae": {
5
+ "missing": [],
6
+ "unexpected": []
7
+ },
8
+ "gpt": {
9
+ "missing": [],
10
+ "unexpected": []
11
+ }
12
+ },
13
+ "provenance": {
14
+ "source_repository": "https://github.com/lisiyao21/Bailando",
15
+ "source_revision": "cc90b98bff81c9709570db413c9610c2562e27ca",
16
+ "source_checkpoints": {
17
+ "vqvae": {
18
+ "filename": "epoch_500.pt",
19
+ "sha256": "35670f42a3b3092438f73f0af3ace7b52e318a8b5c00b2b05c92078176b21716"
20
+ },
21
+ "gpt": {
22
+ "filename": "epoch_10.pt",
23
+ "sha256": "903863a4e1cac01fcec30f7939c591eac8ea89f74e9837b93babe3383eecb403"
24
+ }
25
+ }
26
+ }
27
+ }
gpt.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a9a5efd15b79d4576ff3a0546614a19b9077248fb49fb5c9117302a1b1c40439
3
+ size 433275812
model_index.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "BailandoPipeline",
3
+ "_motius_bundle": "BailandoBundle",
4
+ "artifact_format": "motius-bailando-v1"
5
+ }
vqvae.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ed0af826ef709824b59e3977ce54f9e61056929b8ed069aa33ce9d7b80675c58
3
+ size 262402692