sinBoo1 commited on
Commit
89b8b1b
Β·
verified Β·
1 Parent(s): 2081f54

Revise model card: architecture, 7 FPS note, method figure

Browse files
Files changed (3) hide show
  1. .gitattributes +1 -0
  2. README.md +74 -68
  3. vtm-elf-method.png +3 -0
.gitattributes CHANGED
@@ -34,3 +34,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  VTM-elf.pt-000060000 filter=lfs diff=lfs merge=lfs -text
 
 
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  VTM-elf.pt-000060000 filter=lfs diff=lfs merge=lfs -text
37
+ vtm-elf-method.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -11,72 +11,96 @@ tags:
11
  - human-pose
12
  - keypoints
13
  - diffusion
 
 
14
  - vtuber
15
  - anime
16
- - real-time
17
  - windows
18
  - cuda
19
  ---
20
 
21
- # VTM-Elf 0.01
 
 
22
 
23
- **A from-scratch pose-transfer + image-generation model built for VTubers.**
24
 
25
- VTM-Elf takes a live pose (from your camera / skeleton) and renders a character image in that pose. Pose transfer and image generation live in the **same model base** β€” not a bolted-on ControlNet stack on top of a generic SD checkpoint.
 
26
 
27
- > **Status: Beta**
28
- > Image quality is still limited. That is expected at this stage and mostly comes down to **model size** and a **small training dataset** β€” not a permanent ceiling.
29
 
30
  ---
31
 
32
- ## What this model is for
33
 
34
- | | |
35
  |---|---|
36
- | **Audience** | VTubers / live avatar pipelines |
37
- | **Task** | Pose transfer β†’ character image |
38
- | **Input** | Pose (keypoints / skeleton derived from camera) + identity/reference context |
39
- | **Output** | Character image matching the given pose |
40
- | **Style** | Anime / VTuber-oriented |
 
 
 
 
 
41
 
42
- ### Pipeline (high level)
 
 
 
 
43
 
44
  ```text
45
- Camera frame
46
- ↓
47
- Skeleton / keypoints
48
- ↓
49
- Pose normalizer (scale, center, consistent body frame)
50
- ↓
51
- VTM-Elf (pose-conditioned generation)
52
- ↓
53
- Character image in your pose
54
  ```
55
 
56
- The normalizer is important: it averages and remaps joints into a consistent space so the character comes back with **correct proportions / dimensions**, not a warped copy of your raw camera pose.
57
 
58
  ---
59
 
60
- ## Getting started
61
 
62
- ### Requirements (current)
 
 
63
 
64
- | Requirement | Support |
65
- |---|---|
66
- | **OS** | **Windows only** (other platforms not supported yet) |
67
- | **GPU** | **NVIDIA + CUDA only** |
68
- | **CPU / macOS / AMD** | Not supported |
69
 
70
- If you are not on Windows with an NVIDIA CUDA GPU, this release will not run for you yet.
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
- ### Download the weights
 
 
 
 
 
 
73
 
74
  ```bash
75
  hf download sinBoo1/VTM-Elf-0.01 VTM-elf.pt-000060000 --local-dir ./VTM-Elf-0.01
76
  ```
77
 
78
- Or with Python:
79
-
80
  ```python
81
  from huggingface_hub import hf_hub_download
82
 
@@ -84,56 +108,38 @@ ckpt = hf_hub_download(
84
  repo_id="sinBoo1/VTM-Elf-0.01",
85
  filename="VTM-elf.pt-000060000",
86
  )
87
- print(ckpt)
88
  ```
89
 
90
  ### Files
91
 
92
- | File | Notes |
93
  |---|---|
94
- | `VTM-elf.pt-000060000` | Main checkpoint (~436 MB) β€” step 60k |
95
- | `README.md` | This model card |
96
-
97
- ---
98
-
99
- ## Dataset & quality notes
100
-
101
- This model was trained on a **small dedicated VTuber/character dataset**:
102
-
103
- - about **1,500 characters**
104
- - roughly **16–30 images per character**
105
 
106
- That scale is the main reason generation quality is still rough in beta, together with the current model size. More data and a larger model should improve fidelity, identity consistency, and overall look over time.
107
-
108
- **Please treat outputs as experimental** β€” fine for testing pose drive and pipeline work, not as a finished production look.
109
 
110
  ---
111
 
112
  ## Limitations
113
 
114
- - **Beta quality** β€” soft detail, identity drift, and artifacts can happen
115
- - **Small dataset** β€” limited character coverage and pose variety
116
- - **Windows + NVIDIA CUDA only** for now
117
- - Not a general-purpose text-to-image model β€” it is a **pose-driven VTuber renderer**
 
118
 
119
  ---
120
 
121
  ## Intended use
122
 
123
- - Live / near-live VTuber pose driving
124
- - Research and prototyping of pose β†’ character pipelines
125
- - Building on top of a VTuber-first backbone instead of generic SD pose tools
126
-
127
- **Not intended for:** photoreal people generation, production-final art, or non-CUDA / non-Windows setups (yet).
128
 
129
  ---
130
 
131
- ## Citation / credit
132
-
133
- If you use VTM-Elf in a project, a link back to this repo is appreciated:
134
-
135
- [`https://huggingface.co/sinBoo1/VTM-Elf-0.01`](https://huggingface.co/sinBoo1/VTM-Elf-0.01)
136
 
137
- ---
138
-
139
- *Built from scratch for VTubers. Still early β€” quality will improve with more data and scale.*
 
11
  - human-pose
12
  - keypoints
13
  - diffusion
14
+ - dit
15
+ - rectified-flow
16
  - vtuber
17
  - anime
 
18
  - windows
19
  - cuda
20
  ---
21
 
22
+ <div align="center">
23
+ <img src="vtm-elf-method.png" alt="VTM-Elf method overview: pose keypoints β†’ normalized pose β†’ generated character" width="100%"/>
24
+ </div>
25
 
26
+ # VTM-Elf 0.01
27
 
28
+ Pose-conditioned character generation for VTuber pipelines.
29
+ **Status:** beta Β· **Platform:** Windows + NVIDIA CUDA only
30
 
31
+ VTM-Elf maps a body pose to a character image. Pose control and appearance generation are trained in one backbone (not a separate ControlNet on a frozen SD UNet).
 
32
 
33
  ---
34
 
35
+ ## Architecture
36
 
37
+ | Component | Detail |
38
  |---|---|
39
+ | Backbone | Dual-stream DiT (`i1DiT` / MM-DiT-style joint attention) |
40
+ | Size preset | **DiT-30M** β€” depth 10, hidden size 320, 5 heads, MLP ratio 4.0 |
41
+ | Transport | Rectified flow, **velocity** prediction |
42
+ | VAE | SD VAE (4-channel latents), inference at **768Γ—768** |
43
+ | Pose input | 37 keypoints Γ— 4 (`x, y, score, visible`), rasterized pose maps; optional keypoint RoPE |
44
+ | Identity | Reference latent tokens (whole-body + face crop tokens) |
45
+ | Conditioning | AdaLN; independent dropout on pose / ref / text during training |
46
+ | Other | Patch size 2, SwiGLU, RMSNorm, QK-norm, sinusoidal + RoPE positions |
47
+
48
+ Training recipe (from `scratch_keypoint_ref`): keypoint conditioning + ref tokens, face-weighted velocity loss, optional VAE-REPA early in training, EMA.
49
 
50
+ **Checkpoint:** `VTM-elf.pt-000060000` (~436 MB, step 60k).
51
+
52
+ ---
53
+
54
+ ## Method (short)
55
 
56
  ```text
57
+ camera frame
58
+ β†’ keypoint / skeleton estimate
59
+ β†’ pose normalizer (consistent crop / scale / body frame)
60
+ β†’ Dual-Stream DiT-30M (pose maps + ref identity tokens)
61
+ β†’ SD VAE decode
62
+ β†’ character image
 
 
 
63
  ```
64
 
65
+ The normalizer remaps raw tracker joints into model space (`norm_crop`, roughly `[-1, 1]` after pad-to-square) so scale and framing stay consistent between training and live drive.
66
 
67
  ---
68
 
69
+ ## Measured latency
70
 
71
+ | Hardware | Resolution | Observed rate |
72
+ |---|---|---|
73
+ | **RTX 5060 Ti** | 768Γ—768 (current live path) | **~7 FPS** |
74
 
75
+ This is the current end-to-end live figure on that GPU, not a theoretical peak. Throughput depends on sampling steps, CFG, and tracker overhead.
 
 
 
 
76
 
77
+ ---
78
+
79
+ ## Data
80
+
81
+ Training used a small private character set:
82
+
83
+ - ~**1,500** characters
84
+ - ~**16–30** images per character
85
+
86
+ Generation quality in this release is limited mainly by **model capacity (DiT-30M)** and **dataset scale**, not by the pose-conditioning design itself.
87
+
88
+ ---
89
+
90
+ ## Getting started
91
 
92
+ ### Requirements
93
+
94
+ - **Windows**
95
+ - **NVIDIA GPU + CUDA**
96
+ - Other OS / AMD / CPU: **not supported** in this release
97
+
98
+ ### Download
99
 
100
  ```bash
101
  hf download sinBoo1/VTM-Elf-0.01 VTM-elf.pt-000060000 --local-dir ./VTM-Elf-0.01
102
  ```
103
 
 
 
104
  ```python
105
  from huggingface_hub import hf_hub_download
106
 
 
108
  repo_id="sinBoo1/VTM-Elf-0.01",
109
  filename="VTM-elf.pt-000060000",
110
  )
 
111
  ```
112
 
113
  ### Files
114
 
115
+ | File | Description |
116
  |---|---|
117
+ | `VTM-elf.pt-000060000` | DiT-30M weights (step 60k) |
118
+ | `vtm-elf-method.png` | Method overview figure |
119
+ | `README.md` | This card |
 
 
 
 
 
 
 
 
120
 
121
+ Runtime code for live camera β†’ keypoints β†’ inference is separate from this weight repo.
 
 
122
 
123
  ---
124
 
125
  ## Limitations
126
 
127
+ - Beta: soft detail, identity drift, and pose errors are common
128
+ - Small data + DiT-30M capacity constrain image quality
129
+ - ~7 FPS on RTX 5060 Ti at 768 β€” not real-time 30 FPS yet
130
+ - Windows + CUDA only
131
+ - Not a general text-to-image model; pose + reference driven
132
 
133
  ---
134
 
135
  ## Intended use
136
 
137
+ Research and prototyping of VTuber pose β†’ image pipelines (live drive, pose retarget experiments). Not a finished production renderer.
 
 
 
 
138
 
139
  ---
140
 
141
+ ## BibTeX / link
 
 
 
 
142
 
143
+ ```
144
+ https://huggingface.co/sinBoo1/VTM-Elf-0.01
145
+ ```
vtm-elf-method.png ADDED

Git LFS Details

  • SHA256: 05ca2f04ee947d33156281fe4bc0c93d9f502e9bbae09e5627ea22cb53e572b9
  • Pointer size: 132 Bytes
  • Size of remote file: 1.44 MB