| --- |
| license: apache-2.0 |
| tags: |
| - motion-generation |
| - human-pose |
| - music-video |
| - transformer |
| - boostify |
| - motiondna |
| library_name: pytorch |
| pipeline_tag: other |
| --- |
| |
| # Boostify MotionDNA v0 |
|
|
| **MotionDNA** is Boostify's human-motion model: a compact autoregressive Transformer |
| that learns the *DNA* of how performers move in real music videos and can generate |
| new, plausible motion sequences (2D skeletal pose) from a short seed. |
|
|
| This is the **v0** checkpoint, trained end-to-end on motion extracted from real |
| music-video clips. It is intentionally lightweight so it runs (and trains) on a |
| single NVIDIA L4 (23 GB) — in fact training uses under 1 GB of VRAM. |
|
|
| ## What it does |
| - Input: a sequence of 2D human poses (17 COCO keypoints, x/y). |
| - Output: the predicted next pose, applied autoregressively to roll out new motion. |
| - Use cases: motion previews, choreography ideation, b-roll motion guides, |
| music-video editing assistance inside Boostify Dataset Studio. |
|
|
| ## Architecture |
| - Causal Transformer encoder (next-pose prediction). |
| - `d_model=256`, `n_head=8`, `n_layer=6`, window `WIN=64`, input dim `34` (17×2). |
| - ~4.77M parameters. Smooth-L1 loss. AdamW + cosine schedule. |
|
|
| ## Training data |
| Pose sequences extracted with YOLOv8-pose from real music-video clips |
| (46 clips, 11,038 frames). Poses are hip-centered and torso-scaled, then |
| standardized (mean/std stored inside the checkpoint). |
|
|
| > Source footage is used internally for research/demo. The released artifact |
| > contains only the trained weights and normalization stats — no source video. |
|
|
| ## Files |
| | File | Description | |
| |------|-------------| |
| | `motiondna_v0_best.pt` | Best checkpoint (lowest train loss). | |
| | `motiondna_v0_final.pt` | Final-epoch checkpoint. | |
| | `motiondna_sample.npy` | Example generated motion `[136, 17, 2]`. | |
| | `loss_history.json` | Per-epoch training loss. | |
| | `extract_poses.py` | Pose-extraction pipeline (YOLOv8-pose → .npy). | |
| | `train_motiondna.py` | Training script. | |
|
|
| ## Inference |
| ```python |
| import torch, numpy as np |
| ckpt = torch.load("motiondna_v0_best.pt", map_location="cpu") |
| cfg = ckpt["cfg"]; mean = ckpt["mean"]; std = ckpt["std"] |
| # rebuild the MotionDNA module from train_motiondna.py, load_state_dict(ckpt["model"]), |
| # seed with N normalized poses and roll out model(x)[:, -1:] autoregressively, |
| # then de-normalize with: pose = gen * std + mean |
| ``` |
|
|
| ## Limitations |
| - v0 trained on a small clip set → motion is coherent but limited in style range. |
| - 2D pose only (no 3D, no global translation, no audio conditioning yet). |
| - Roadmap: more clips, music/beat conditioning, 3D lift, style control. |
|
|
| ## Citation |
| Boostify MotionDNA (2026). Trained with the Boostify Dataset Studio pipeline. |
|
|