akshan-main commited on
Commit
e12b699
·
verified ·
1 Parent(s): 038ea6d

Upload Wan22VaceModularPipeline

Browse files
README.md ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: diffusers
3
+ tags:
4
+ - modular-diffusers
5
+ - diffusers
6
+ - wan-vace
7
+ - text-to-image
8
+ ---
9
+ This is a modular diffusion pipeline built with 🧨 Diffusers' modular pipeline framework.
10
+
11
+ **Pipeline Type**: Wan22VaceBlocks
12
+
13
+ **Description**: Modular pipeline for controllable video generation using Wan2.2 VACE.
14
+
15
+ This pipeline uses a 5-block architecture that can be customized and extended.
16
+
17
+ ## Example Usage
18
+
19
+ [TODO]
20
+
21
+ ## Pipeline Architecture
22
+
23
+ This modular pipeline is composed of the following blocks:
24
+
25
+ 1. **text_encoder** (`WanTextEncoderStep`)
26
+ - Text Encoder step that generate text_embeddings to guide the video generation
27
+ 2. **vace_encoder** (`WanVaceEncoderStep`)
28
+ - Vace Encoder step that preprocesses the control video, mask and reference images and encodes them into the conditioning latents used by the VACE control branch of the transformer
29
+ 3. **denoise** (`Wan22VaceCoreDenoiseStep`)
30
+ - denoise block that takes encoded text and vace conditioning latents and runs the denoising process.
31
+ 4. **trim_latents** (`WanVaceTrimReferenceLatentsStep`)
32
+ - Step that removes the prepended reference image frames from the denoised latents before decoding
33
+ 5. **decode** (`WanVaeDecoderStep`)
34
+ - Step that decodes the denoised latents into images
35
+
36
+ ## Model Components
37
+
38
+ 1. text_encoder (`UMT5EncoderModel`)
39
+ 2. tokenizer (`AutoTokenizer`)
40
+ 3. guider (`ClassifierFreeGuidance`)
41
+ 4. transformer (`WanVACETransformer3DModel`)
42
+ 5. vae (`AutoencoderKLWan`)
43
+ 6. video_processor (`VideoProcessor`)
44
+ 7. scheduler (`UniPCMultistepScheduler`)
45
+ 8. guider_2 (`ClassifierFreeGuidance`)
46
+ 9. transformer_2 (`WanVACETransformer3DModel`)
47
+
48
+ ## Configuration Parameters
49
+
50
+ boundary_ratio (default: 0.875): The boundary ratio to divide the denoising loop into high noise and low noise stages.
51
+
52
+ ## Input/Output Specification
53
+
54
+ **Inputs:**
55
+
56
+ - `prompt` (`None`, *optional*): No description provided
57
+ - `negative_prompt` (`None`, *optional*): No description provided
58
+ - `max_sequence_length` (`None`, *optional*, defaults to `512`): No description provided
59
+ - `video` (`list`, *optional*): The control video to condition the generation on. If not provided, an empty video is used.
60
+ - `mask` (`list`, *optional*): The mask that defines which video regions to condition on (black) and which to generate (white). Can only be passed if `video` is passed as well.
61
+ - `reference_images` (`Image | list`, *optional*): One or more reference images as extra conditioning for the generation.
62
+ - `conditioning_scale` (`float | list | Tensor`, *optional*, defaults to `1.0`): The conditioning scale applied in each control layer of the model. If a float, it is applied uniformly to all layers; a list or tensor must have the same length as the number of control layers.
63
+ - `height` (`None`, *optional*): No description provided
64
+ - `width` (`None`, *optional*): No description provided
65
+ - `num_frames` (`int`, *optional*, defaults to `81`): No description provided
66
+ - `generator` (`None`, *optional*): No description provided
67
+ - `num_videos_per_prompt` (`None`, *optional*, defaults to `1`): No description provided
68
+ - `num_inference_steps` (`None`, *optional*, defaults to `50`): No description provided
69
+ - `timesteps` (`None`, *optional*): No description provided
70
+ - `sigmas` (`None`, *optional*): No description provided
71
+ - `latents` (`Tensor | NoneType`, *optional*): No description provided
72
+ - `attention_kwargs` (`None`, *optional*): No description provided
73
+ - `output_type` (`str`, *optional*, defaults to `np`): The output type of the decoded videos
74
+
75
+ **Outputs:**
76
+
77
+ - `videos` (`list`): The generated videos.
modular_model_index.json ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_blocks_class_name": "Wan22VaceBlocks",
3
+ "_class_name": "Wan22VaceModularPipeline",
4
+ "_diffusers_version": "0.40.0.dev0",
5
+ "boundary_ratio": 0.875,
6
+ "scheduler": [
7
+ "diffusers",
8
+ "UniPCMultistepScheduler",
9
+ {
10
+ "pretrained_model_name_or_path": "akshan-main/tiny-wan22-vace-modular-pipe",
11
+ "revision": null,
12
+ "subfolder": "scheduler",
13
+ "type_hint": [
14
+ "diffusers",
15
+ "UniPCMultistepScheduler"
16
+ ],
17
+ "variant": null
18
+ }
19
+ ],
20
+ "text_encoder": [
21
+ "transformers",
22
+ "T5EncoderModel",
23
+ {
24
+ "pretrained_model_name_or_path": "akshan-main/tiny-wan22-vace-modular-pipe",
25
+ "revision": null,
26
+ "subfolder": "text_encoder",
27
+ "type_hint": [
28
+ "transformers",
29
+ "T5EncoderModel"
30
+ ],
31
+ "variant": null
32
+ }
33
+ ],
34
+ "tokenizer": [
35
+ "transformers",
36
+ "T5Tokenizer",
37
+ {
38
+ "pretrained_model_name_or_path": "akshan-main/tiny-wan22-vace-modular-pipe",
39
+ "revision": null,
40
+ "subfolder": "tokenizer",
41
+ "type_hint": [
42
+ "transformers",
43
+ "T5Tokenizer"
44
+ ],
45
+ "variant": null
46
+ }
47
+ ],
48
+ "transformer": [
49
+ "diffusers",
50
+ "WanVACETransformer3DModel",
51
+ {
52
+ "pretrained_model_name_or_path": "akshan-main/tiny-wan22-vace-modular-pipe",
53
+ "revision": null,
54
+ "subfolder": "transformer",
55
+ "type_hint": [
56
+ "diffusers",
57
+ "WanVACETransformer3DModel"
58
+ ],
59
+ "variant": null
60
+ }
61
+ ],
62
+ "transformer_2": [
63
+ "diffusers",
64
+ "WanVACETransformer3DModel",
65
+ {
66
+ "pretrained_model_name_or_path": "akshan-main/tiny-wan22-vace-modular-pipe",
67
+ "revision": null,
68
+ "subfolder": "transformer_2",
69
+ "type_hint": [
70
+ "diffusers",
71
+ "WanVACETransformer3DModel"
72
+ ],
73
+ "variant": null
74
+ }
75
+ ],
76
+ "vae": [
77
+ "diffusers",
78
+ "AutoencoderKLWan",
79
+ {
80
+ "pretrained_model_name_or_path": "akshan-main/tiny-wan22-vace-modular-pipe",
81
+ "revision": null,
82
+ "subfolder": "vae",
83
+ "type_hint": [
84
+ "diffusers",
85
+ "AutoencoderKLWan"
86
+ ],
87
+ "variant": null
88
+ }
89
+ ]
90
+ }
scheduler/scheduler_config.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "UniPCMultistepScheduler",
3
+ "_diffusers_version": "0.40.0.dev0",
4
+ "beta_end": 0.02,
5
+ "beta_schedule": "linear",
6
+ "beta_start": 0.0001,
7
+ "disable_corrector": [],
8
+ "dynamic_thresholding_ratio": 0.995,
9
+ "final_sigmas_type": "zero",
10
+ "flow_shift": 3.0,
11
+ "lower_order_final": true,
12
+ "num_train_timesteps": 1000,
13
+ "predict_x0": true,
14
+ "prediction_type": "flow_prediction",
15
+ "rescale_betas_zero_snr": false,
16
+ "sample_max_value": 1.0,
17
+ "shift_terminal": null,
18
+ "sigma_max": null,
19
+ "sigma_min": null,
20
+ "solver_order": 2,
21
+ "solver_p": null,
22
+ "solver_type": "bh2",
23
+ "steps_offset": 0,
24
+ "thresholding": false,
25
+ "time_shift_type": "exponential",
26
+ "timestep_spacing": "linspace",
27
+ "trained_betas": null,
28
+ "use_beta_sigmas": false,
29
+ "use_dynamic_shifting": false,
30
+ "use_exponential_sigmas": false,
31
+ "use_flow_sigmas": true,
32
+ "use_karras_sigmas": false
33
+ }
text_encoder/config.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "T5EncoderModel"
4
+ ],
5
+ "bos_token_id": 0,
6
+ "classifier_dropout": 0.0,
7
+ "d_ff": 37,
8
+ "d_kv": 8,
9
+ "d_model": 32,
10
+ "decoder_start_token_id": 0,
11
+ "dense_act_fn": "relu",
12
+ "dropout_rate": 0.1,
13
+ "dtype": "float32",
14
+ "eos_token_id": 1,
15
+ "feed_forward_proj": "relu",
16
+ "gradient_checkpointing": false,
17
+ "initializer_factor": 0.002,
18
+ "is_decoder": false,
19
+ "is_encoder_decoder": false,
20
+ "is_gated_act": false,
21
+ "layer_norm_epsilon": 1e-06,
22
+ "model_type": "t5",
23
+ "num_decoder_layers": 5,
24
+ "num_heads": 4,
25
+ "num_layers": 5,
26
+ "pad_token_id": 0,
27
+ "relative_attention_max_distance": 128,
28
+ "relative_attention_num_buckets": 8,
29
+ "scale_decoder_outputs": true,
30
+ "tie_word_embeddings": true,
31
+ "transformers_version": "5.5.3",
32
+ "use_cache": false,
33
+ "vocab_size": 1103
34
+ }
text_encoder/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8fd206d9e0dca4134b9e51ba6041697b7838528f924726f17098f9743e2a9a39
3
+ size 276696
tokenizer/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer/tokenizer_config.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "eos_token": "</s>",
4
+ "extra_ids": 100,
5
+ "extra_special_tokens": [
6
+ "<extra_id_0>",
7
+ "<extra_id_1>",
8
+ "<extra_id_2>",
9
+ "<extra_id_3>",
10
+ "<extra_id_4>",
11
+ "<extra_id_5>",
12
+ "<extra_id_6>",
13
+ "<extra_id_7>",
14
+ "<extra_id_8>",
15
+ "<extra_id_9>",
16
+ "<extra_id_10>",
17
+ "<extra_id_11>",
18
+ "<extra_id_12>",
19
+ "<extra_id_13>",
20
+ "<extra_id_14>",
21
+ "<extra_id_15>",
22
+ "<extra_id_16>",
23
+ "<extra_id_17>",
24
+ "<extra_id_18>",
25
+ "<extra_id_19>",
26
+ "<extra_id_20>",
27
+ "<extra_id_21>",
28
+ "<extra_id_22>",
29
+ "<extra_id_23>",
30
+ "<extra_id_24>",
31
+ "<extra_id_25>",
32
+ "<extra_id_26>",
33
+ "<extra_id_27>",
34
+ "<extra_id_28>",
35
+ "<extra_id_29>",
36
+ "<extra_id_30>",
37
+ "<extra_id_31>",
38
+ "<extra_id_32>",
39
+ "<extra_id_33>",
40
+ "<extra_id_34>",
41
+ "<extra_id_35>",
42
+ "<extra_id_36>",
43
+ "<extra_id_37>",
44
+ "<extra_id_38>",
45
+ "<extra_id_39>",
46
+ "<extra_id_40>",
47
+ "<extra_id_41>",
48
+ "<extra_id_42>",
49
+ "<extra_id_43>",
50
+ "<extra_id_44>",
51
+ "<extra_id_45>",
52
+ "<extra_id_46>",
53
+ "<extra_id_47>",
54
+ "<extra_id_48>",
55
+ "<extra_id_49>",
56
+ "<extra_id_50>",
57
+ "<extra_id_51>",
58
+ "<extra_id_52>",
59
+ "<extra_id_53>",
60
+ "<extra_id_54>",
61
+ "<extra_id_55>",
62
+ "<extra_id_56>",
63
+ "<extra_id_57>",
64
+ "<extra_id_58>",
65
+ "<extra_id_59>",
66
+ "<extra_id_60>",
67
+ "<extra_id_61>",
68
+ "<extra_id_62>",
69
+ "<extra_id_63>",
70
+ "<extra_id_64>",
71
+ "<extra_id_65>",
72
+ "<extra_id_66>",
73
+ "<extra_id_67>",
74
+ "<extra_id_68>",
75
+ "<extra_id_69>",
76
+ "<extra_id_70>",
77
+ "<extra_id_71>",
78
+ "<extra_id_72>",
79
+ "<extra_id_73>",
80
+ "<extra_id_74>",
81
+ "<extra_id_75>",
82
+ "<extra_id_76>",
83
+ "<extra_id_77>",
84
+ "<extra_id_78>",
85
+ "<extra_id_79>",
86
+ "<extra_id_80>",
87
+ "<extra_id_81>",
88
+ "<extra_id_82>",
89
+ "<extra_id_83>",
90
+ "<extra_id_84>",
91
+ "<extra_id_85>",
92
+ "<extra_id_86>",
93
+ "<extra_id_87>",
94
+ "<extra_id_88>",
95
+ "<extra_id_89>",
96
+ "<extra_id_90>",
97
+ "<extra_id_91>",
98
+ "<extra_id_92>",
99
+ "<extra_id_93>",
100
+ "<extra_id_94>",
101
+ "<extra_id_95>",
102
+ "<extra_id_96>",
103
+ "<extra_id_97>",
104
+ "<extra_id_98>",
105
+ "<extra_id_99>"
106
+ ],
107
+ "is_local": false,
108
+ "model_max_length": 1024,
109
+ "pad_token": "<pad>",
110
+ "tokenizer_class": "T5Tokenizer",
111
+ "unk_token": "<unk>"
112
+ }
transformer/config.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "WanVACETransformer3DModel",
3
+ "_diffusers_version": "0.40.0.dev0",
4
+ "added_kv_proj_dim": null,
5
+ "attention_head_dim": 12,
6
+ "cross_attn_norm": true,
7
+ "eps": 1e-06,
8
+ "ffn_dim": 32,
9
+ "freq_dim": 256,
10
+ "image_dim": null,
11
+ "in_channels": 16,
12
+ "num_attention_heads": 2,
13
+ "num_layers": 3,
14
+ "out_channels": 16,
15
+ "patch_size": [
16
+ 1,
17
+ 2,
18
+ 2
19
+ ],
20
+ "pos_embed_seq_len": null,
21
+ "qk_norm": "rms_norm_across_heads",
22
+ "rope_max_seq_len": 32,
23
+ "text_dim": 32,
24
+ "vace_in_channels": 96,
25
+ "vace_layers": [
26
+ 0,
27
+ 2
28
+ ]
29
+ }
transformer/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:90409ac7a43a97dbaebcaad0ecb6e281a2f0edf28c0ce1c34801425b593cf61c
3
+ size 252160
transformer_2/config.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "WanVACETransformer3DModel",
3
+ "_diffusers_version": "0.40.0.dev0",
4
+ "added_kv_proj_dim": null,
5
+ "attention_head_dim": 12,
6
+ "cross_attn_norm": true,
7
+ "eps": 1e-06,
8
+ "ffn_dim": 32,
9
+ "freq_dim": 256,
10
+ "image_dim": null,
11
+ "in_channels": 16,
12
+ "num_attention_heads": 2,
13
+ "num_layers": 3,
14
+ "out_channels": 16,
15
+ "patch_size": [
16
+ 1,
17
+ 2,
18
+ 2
19
+ ],
20
+ "pos_embed_seq_len": null,
21
+ "qk_norm": "rms_norm_across_heads",
22
+ "rope_max_seq_len": 32,
23
+ "text_dim": 32,
24
+ "vace_in_channels": 96,
25
+ "vace_layers": [
26
+ 0,
27
+ 2
28
+ ]
29
+ }
transformer_2/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:24da7cda1eecb997734f1afda1e40625ee66aa99f94e32b92cdb7857870e8741
3
+ size 252160
vae/config.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKLWan",
3
+ "_diffusers_version": "0.40.0.dev0",
4
+ "attn_scales": [],
5
+ "base_dim": 3,
6
+ "decoder_base_dim": null,
7
+ "dim_mult": [
8
+ 1,
9
+ 1,
10
+ 1,
11
+ 1
12
+ ],
13
+ "dropout": 0.0,
14
+ "in_channels": 3,
15
+ "is_residual": false,
16
+ "latents_mean": [
17
+ -0.7571,
18
+ -0.7089,
19
+ -0.9113,
20
+ 0.1075,
21
+ -0.1745,
22
+ 0.9653,
23
+ -0.1517,
24
+ 1.5508,
25
+ 0.4134,
26
+ -0.0715,
27
+ 0.5517,
28
+ -0.3632,
29
+ -0.1922,
30
+ -0.9497,
31
+ 0.2503,
32
+ -0.2921
33
+ ],
34
+ "latents_std": [
35
+ 2.8184,
36
+ 1.4541,
37
+ 2.3275,
38
+ 2.6558,
39
+ 1.2196,
40
+ 1.7708,
41
+ 2.6052,
42
+ 2.0743,
43
+ 3.2687,
44
+ 2.1526,
45
+ 2.8652,
46
+ 1.5579,
47
+ 1.6382,
48
+ 1.1253,
49
+ 2.8251,
50
+ 1.916
51
+ ],
52
+ "num_res_blocks": 1,
53
+ "out_channels": 3,
54
+ "patch_size": null,
55
+ "scale_factor_spatial": 8,
56
+ "scale_factor_temporal": 4,
57
+ "temperal_downsample": [
58
+ false,
59
+ true,
60
+ true
61
+ ],
62
+ "z_dim": 16
63
+ }
vae/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5972574afb9fc4993b642cb305ba81712d84e25e8969c5268d847c7164322f2f
3
+ size 70404