Instructions to use Viggle/Viggle-Animate with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use Viggle/Viggle-Animate with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("Viggle/Viggle-Animate", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
docs: head-to-head vs Wan2.2-Animate, with clips
Browse files- .gitattributes +3 -0
- MODIFICATIONS.md +11 -4
- README.md +26 -20
- examples/media/compare-costume.mp4 +3 -0
- examples/media/compare-prop.mp4 +3 -0
- examples/media/compare-style.mp4 +3 -0
.gitattributes
CHANGED
|
@@ -39,3 +39,6 @@ examples/media/reference.png filter=lfs diff=lfs merge=lfs -text
|
|
| 39 |
examples/media/compare-monkey.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 40 |
examples/media/compare-parka.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 41 |
examples/media/compare-horns.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
examples/media/compare-monkey.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 40 |
examples/media/compare-parka.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 41 |
examples/media/compare-horns.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
examples/media/compare-costume.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
examples/media/compare-prop.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
examples/media/compare-style.mp4 filter=lfs diff=lfs merge=lfs -text
|
MODIFICATIONS.md
CHANGED
|
@@ -67,13 +67,20 @@ crop of it (`crop=512:768:389:0`, no scaling):
|
|
| 67 |
The driving clip itself is **not** bundled. `examples/demo.sh` rebuilds it, with the
|
| 68 |
documented crop, from your own copy of the base model.
|
| 69 |
|
| 70 |
-
**The comparison clips** β `compare-
|
| 71 |
different matter. Their driving videos are
|
| 72 |
real filmed footage that we hold the rights to, and they are among the clips this model was
|
| 73 |
-
evaluated against. Each file is a four-panel stack: painted reference, driving video,
|
| 74 |
-
Wan2.2-Animate-14B
|
| 75 |
[`Wan-AI/Wan2.2-Animate-14B`](https://huggingface.co/Wan-AI/Wan2.2-Animate-14B) weights and code,
|
| 76 |
-
unmodified, at
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
|
| 78 |
## Not redistributed here
|
| 79 |
|
|
|
|
| 67 |
The driving clip itself is **not** bundled. `examples/demo.sh` rebuilds it, with the
|
| 68 |
documented crop, from your own copy of the base model.
|
| 69 |
|
| 70 |
+
**The comparison clips** β `compare-prop.mp4`, `compare-costume.mp4`, `compare-style.mp4` β are a
|
| 71 |
different matter. Their driving videos are
|
| 72 |
real filmed footage that we hold the rights to, and they are among the clips this model was
|
| 73 |
+
evaluated against. Each file is a four-panel stack: painted reference, driving video, this model,
|
| 74 |
+
Wan2.2-Animate-14B. The Wan2.2-Animate panels were rendered by us from the official
|
| 75 |
[`Wan-AI/Wan2.2-Animate-14B`](https://huggingface.co/Wan-AI/Wan2.2-Animate-14B) weights and code,
|
| 76 |
+
unmodified, at the replacement-mode settings its own README documents (20 steps, `sample_shift 5.0`,
|
| 77 |
+
`--refert_num 1 --replace_flag --use_relighting_lora`, preprocessing at `--w_len 1 --h_len 1`) β
|
| 78 |
+
that panel is Wan's output, not ours.
|
| 79 |
+
|
| 80 |
+
Wan's `generate.py` hardcodes a 30 fps output timebase regardless of the source, so its raw files
|
| 81 |
+
claim 4.10 s for motion that is 24 fps. The panels are retimed (`setpts`), not resampled, so no
|
| 82 |
+
frames are dropped and both models play at the same speed. Every panel is letterboxed into the
|
| 83 |
+
driving clip's own geometry; nothing is stretched.
|
| 84 |
|
| 85 |
## Not redistributed here
|
| 86 |
|
README.md
CHANGED
|
@@ -56,9 +56,9 @@ The repainted frame comes from an image editor, not from this model β the demo
|
|
| 56 |
|
| 57 |
## Compared to Wan2.2-Animate-14B
|
| 58 |
|
| 59 |
-
One B200, 480Γ832, 124 frames at 24 fps, bf16, no compile, no offload
|
| 60 |
-
|
| 61 |
-
--use_relighting_lora` β after its own preprocessing pass.
|
| 62 |
|
| 63 |
| | Viggle-Animate | Wan2.2-Animate-14B |
|
| 64 |
|---|---|---|
|
|
@@ -66,34 +66,40 @@ official replacement recipe β 20 steps, `sample_shift 5.0`, `--refert_num 1 --
|
|
| 66 |
| Render, after weights load | **26 s** | 160 s |
|
| 67 |
| β of which sampling | **13.6 s** | 140 s |
|
| 68 |
| Forward passes | **3** | 40 (20 steps Γ 2 chunks) |
|
| 69 |
-
| Parameters | 33 B |
|
| 70 |
|
| 71 |
-
**6Γ faster per render, 10Γ on sampling alone**
|
| 72 |
-
preprocessing pass is not counted in its 160 s
|
| 73 |
-
|
| 74 |
|
| 75 |
-
Four panels each: **painted reference Β· driving video Β· Wan2.2-Animate-14B
|
| 76 |
|
| 77 |
-
<video controls muted loop playsinline width="100%" src="https://huggingface.co/Viggle/Viggle-Animate/resolve/main/examples/media/compare-
|
| 78 |
|
| 79 |
-
|
|
|
|
| 80 |
|
| 81 |
-
<video controls muted loop playsinline width="100%" src="https://huggingface.co/Viggle/Viggle-Animate/resolve/main/examples/media/compare-
|
| 82 |
|
| 83 |
-
A
|
|
|
|
| 84 |
|
| 85 |
-
<video controls muted loop playsinline width="100%" src="https://huggingface.co/Viggle/Viggle-Animate/resolve/main/examples/media/compare-
|
| 86 |
|
| 87 |
-
|
| 88 |
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
|
| 94 |
These three are selected. Across the 24 clips we ran head to head, Wan came out ahead on one β a
|
| 95 |
-
tight talking-head shot, where its explicit
|
| 96 |
-
|
| 97 |
|
| 98 |
## What this is
|
| 99 |
|
|
|
|
| 56 |
|
| 57 |
## Compared to Wan2.2-Animate-14B
|
| 58 |
|
| 59 |
+
One B200, 480Γ832, 124 frames at 24 fps, bf16, no compile, no offload. Wan ran its documented
|
| 60 |
+
replacement recipe β 20 steps, `sample_shift 5.0`, `--refert_num 1 --replace_flag
|
| 61 |
+
--use_relighting_lora`, `--w_len 1 --h_len 1` β after its own preprocessing pass.
|
| 62 |
|
| 63 |
| | Viggle-Animate | Wan2.2-Animate-14B |
|
| 64 |
|---|---|---|
|
|
|
|
| 66 |
| Render, after weights load | **26 s** | 160 s |
|
| 67 |
| β of which sampling | **13.6 s** | 140 s |
|
| 68 |
| Forward passes | **3** | 40 (20 steps Γ 2 chunks) |
|
| 69 |
+
| Parameters | 33.1 B | 17.3 B |
|
| 70 |
|
| 71 |
+
**6.1Γ faster per render, 10.3Γ on sampling alone**, on a model with 1.9Γ the parameters. Wan's
|
| 72 |
+
preprocessing pass is not counted in its 160 s. The win is step distillation, not a faster
|
| 73 |
+
backbone: per forward pass we are 4.5 s to Wan's 3.5 s.
|
| 74 |
|
| 75 |
+
Four panels each: **painted reference Β· driving video Β· this model Β· Wan2.2-Animate-14B.**
|
| 76 |
|
| 77 |
+
<video controls muted loop playsinline width="100%" src="https://huggingface.co/Viggle/Viggle-Animate/resolve/main/examples/media/compare-prop.mp4"></video>
|
| 78 |
|
| 79 |
+
A light-up toy held in both hands. Wan renders it as a featureless red blob, then as a blown-out
|
| 80 |
+
white rectangle for the rest of the clip.
|
| 81 |
|
| 82 |
+
<video controls muted loop playsinline width="100%" src="https://huggingface.co/Viggle/Viggle-Animate/resolve/main/examples/media/compare-costume.mp4"></video>
|
| 83 |
|
| 84 |
+
A white bow headwrap, floral-print leggings and navy slippers, driven by a bearded man. Wan flattens
|
| 85 |
+
the leggings to plain white, drops the bow and the slippers, and lets the driver's beard through.
|
| 86 |
|
| 87 |
+
<video controls muted loop playsinline width="100%" src="https://huggingface.co/Viggle/Viggle-Animate/resolve/main/examples/media/compare-style.mp4"></video>
|
| 88 |
|
| 89 |
+
A flat 2D anime character. Wan drifts toward a semi-realistic face and recolours the outfit.
|
| 90 |
|
| 91 |
+
The two pipelines carry appearance very differently. In replacement mode Wan regenerates everything
|
| 92 |
+
inside a per-frame mask over the driving performer, and what it has to rebuild that region from is
|
| 93 |
+
one CLIP embedding plus one VAE latent of the character image, against a pose-skeleton video, 512Γ512
|
| 94 |
+
face crops through a motion encoder, and a background plate with the region painted out β four of the
|
| 95 |
+
five conditioning streams derived from the driving clip. At the documented `--w_len 1 --h_len 1` the
|
| 96 |
+
painted-out region is the performer's whole bounding box, so a held prop sits inside it and is not
|
| 97 |
+
represented in any of those streams. We condition on the painted frame and the driving video, with no
|
| 98 |
+
pose extraction, no segmentation, no background plate and no prompt.
|
| 99 |
|
| 100 |
These three are selected. Across the 24 clips we ran head to head, Wan came out ahead on one β a
|
| 101 |
+
tight talking-head shot, where its explicit face channel tracks expression that we render flat. That
|
| 102 |
+
is the same weakness listed under Limitations below. Roughly six were a wash.
|
| 103 |
|
| 104 |
## What this is
|
| 105 |
|
examples/media/compare-costume.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2a45ac3e161df80bff9e4b220e3282855821d450b1d14974b4e886609e001d8e
|
| 3 |
+
size 447259
|
examples/media/compare-prop.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4128c0e35bf144b5d0e72c5837cc1958421a749337af395977de04fa07b92fea
|
| 3 |
+
size 678070
|
examples/media/compare-style.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:692ff38363a0162b965d0c6944e9adb98455c8a4e92419b3f9bb764ce9bd6778
|
| 3 |
+
size 536776
|