randomwalkers commited on
Commit
0162886
·
verified ·
1 Parent(s): d9f4f40

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +520 -0
  2. Wan2.1-T2V-1.3B/.gitattributes +47 -0
  3. Wan2.1-T2V-1.3B/LICENSE.txt +201 -0
  4. Wan2.1-T2V-1.3B/README.md +298 -0
  5. Wan2.1-T2V-1.3B/Wan2.1_VAE.pth +3 -0
  6. Wan2.1-T2V-1.3B/assets/.DS_Store +0 -0
  7. Wan2.1-T2V-1.3B/assets/comp_effic.png +3 -0
  8. Wan2.1-T2V-1.3B/assets/data_for_diff_stage.jpg +3 -0
  9. Wan2.1-T2V-1.3B/assets/i2v_res.png +3 -0
  10. Wan2.1-T2V-1.3B/assets/logo.png +0 -0
  11. Wan2.1-T2V-1.3B/assets/t2v_res.jpg +3 -0
  12. Wan2.1-T2V-1.3B/assets/vben_1.3b_vs_sota.png +3 -0
  13. Wan2.1-T2V-1.3B/assets/vben_vs_sota.png +3 -0
  14. Wan2.1-T2V-1.3B/assets/video_dit_arch.jpg +3 -0
  15. Wan2.1-T2V-1.3B/assets/video_vae_res.jpg +3 -0
  16. Wan2.1-T2V-1.3B/config.json +14 -0
  17. Wan2.1-T2V-1.3B/diffusion_pytorch_model.safetensors +3 -0
  18. Wan2.1-T2V-1.3B/examples/i2v_input.JPG +3 -0
  19. Wan2.1-T2V-1.3B/google/umt5-xxl/special_tokens_map.json +308 -0
  20. Wan2.1-T2V-1.3B/google/umt5-xxl/spiece.model +3 -0
  21. Wan2.1-T2V-1.3B/google/umt5-xxl/tokenizer.json +3 -0
  22. Wan2.1-T2V-1.3B/google/umt5-xxl/tokenizer_config.json +2748 -0
  23. Wan2.1-T2V-1.3B/models_t5_umt5-xxl-enc-bf16.pth +3 -0
  24. diffsynth-studio/.github/workflows/logo.gif +3 -0
  25. diffsynth-studio/.github/workflows/publish.yaml +29 -0
  26. diffsynth-studio/.gitignore +11 -0
  27. diffsynth-studio/.vscode/settings.json +5 -0
  28. diffsynth-studio/LICENSE +201 -0
  29. diffsynth-studio/README_zh.md +478 -0
  30. diffsynth-studio/apps/gradio/DiffSynth_Studio.py +252 -0
  31. diffsynth-studio/apps/gradio/entity_level_control.py +390 -0
  32. diffsynth-studio/apps/streamlit/DiffSynth_Studio.py +15 -0
  33. diffsynth-studio/apps/streamlit/pages/1_Image_Creator.py +362 -0
  34. diffsynth-studio/apps/streamlit/pages/2_Video_Creator.py +197 -0
  35. diffsynth-studio/diffsynth.egg-info/PKG-INFO +32 -0
  36. diffsynth-studio/diffsynth.egg-info/SOURCES.txt +252 -0
  37. diffsynth-studio/diffsynth.egg-info/dependency_links.txt +1 -0
  38. diffsynth-studio/diffsynth.egg-info/requires.txt +16 -0
  39. diffsynth-studio/diffsynth.egg-info/top_level.txt +1 -0
  40. diffsynth-studio/diffsynth/__init__.py +6 -0
  41. diffsynth-studio/diffsynth/__pycache__/__init__.cpython-310.pyc +0 -0
  42. diffsynth-studio/diffsynth/__pycache__/__init__.cpython-311.pyc +0 -0
  43. diffsynth-studio/diffsynth/configs/__init__.py +0 -0
  44. diffsynth-studio/diffsynth/configs/__pycache__/__init__.cpython-310.pyc +0 -0
  45. diffsynth-studio/diffsynth/configs/__pycache__/__init__.cpython-311.pyc +0 -0
  46. diffsynth-studio/diffsynth/configs/__pycache__/model_config.cpython-310.pyc +0 -0
  47. diffsynth-studio/diffsynth/configs/__pycache__/model_config.cpython-311.pyc +0 -0
  48. diffsynth-studio/diffsynth/configs/model_config.py +843 -0
  49. diffsynth-studio/diffsynth/controlnets/__init__.py +2 -0
  50. diffsynth-studio/diffsynth/controlnets/__pycache__/__init__.cpython-310.pyc +0 -0
.gitattributes CHANGED
@@ -33,3 +33,523 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip 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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip 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
+ Wan2.1-T2V-1.3B/assets/comp_effic.png filter=lfs diff=lfs merge=lfs -text
37
+ Wan2.1-T2V-1.3B/assets/data_for_diff_stage.jpg filter=lfs diff=lfs merge=lfs -text
38
+ Wan2.1-T2V-1.3B/assets/i2v_res.png filter=lfs diff=lfs merge=lfs -text
39
+ Wan2.1-T2V-1.3B/assets/t2v_res.jpg filter=lfs diff=lfs merge=lfs -text
40
+ Wan2.1-T2V-1.3B/assets/vben_1.3b_vs_sota.png filter=lfs diff=lfs merge=lfs -text
41
+ Wan2.1-T2V-1.3B/assets/vben_vs_sota.png filter=lfs diff=lfs merge=lfs -text
42
+ Wan2.1-T2V-1.3B/assets/video_dit_arch.jpg filter=lfs diff=lfs merge=lfs -text
43
+ Wan2.1-T2V-1.3B/assets/video_vae_res.jpg filter=lfs diff=lfs merge=lfs -text
44
+ Wan2.1-T2V-1.3B/examples/i2v_input.JPG filter=lfs diff=lfs merge=lfs -text
45
+ Wan2.1-T2V-1.3B/google/umt5-xxl/tokenizer.json filter=lfs diff=lfs merge=lfs -text
46
+ diffsynth-studio/.github/workflows/logo.gif filter=lfs diff=lfs merge=lfs -text
47
+ diffsynth-studio/diffsynth/models/__pycache__/sd3_text_encoder.cpython-310.pyc filter=lfs diff=lfs merge=lfs -text
48
+ diffsynth-studio/diffsynth/models/__pycache__/sd3_text_encoder.cpython-311.pyc filter=lfs diff=lfs merge=lfs -text
49
+ diffsynth-studio/diffsynth/models/__pycache__/sd_unet.cpython-311.pyc filter=lfs diff=lfs merge=lfs -text
50
+ diffsynth-studio/diffsynth/models/__pycache__/sdxl_unet.cpython-310.pyc filter=lfs diff=lfs merge=lfs -text
51
+ diffsynth-studio/diffsynth/models/__pycache__/sdxl_unet.cpython-311.pyc filter=lfs diff=lfs merge=lfs -text
52
+ diffsynth-studio/diffsynth/models/__pycache__/svd_unet.cpython-310.pyc filter=lfs diff=lfs merge=lfs -text
53
+ diffsynth-studio/diffsynth/models/__pycache__/svd_unet.cpython-311.pyc filter=lfs diff=lfs merge=lfs -text
54
+ diffsynth-studio/diffsynth/tokenizer_configs/hunyuan_video/tokenizer_2/tokenizer.json filter=lfs diff=lfs merge=lfs -text
55
+ diffsynth-studio/diffsynth/tokenizer_configs/kolors/tokenizer/vocab.txt filter=lfs diff=lfs merge=lfs -text
56
+ result/0GER2Qd0vFw_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
57
+ result/0GER2Qd0vFw_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
58
+ result/0GER2Qd0vFw_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
59
+ result/0GER2Qd0vFw_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
60
+ result/0GER2Qd0vFw_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
61
+ result/0GER2Qd0vFw_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
62
+ result/0GER2Qd0vFw_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
63
+ result/0GER2Qd0vFw_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
64
+ result/0GER2Qd0vFw_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
65
+ result/0GER2Qd0vFw_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
66
+ result/0GER2Qd0vFw_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
67
+ result/0GER2Qd0vFw_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
68
+ result/0GER2Qd0vFw_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
69
+ result/0GER2Qd0vFw_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
70
+ result/0GER2Qd0vFw_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
71
+ result/0GER2Qd0vFw_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
72
+ result/0GER2Qd0vFw_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
73
+ result/0GER2Qd0vFw_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
74
+ result/0GER2Qd0vFw_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
75
+ result/0GER2Qd0vFw_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
76
+ result/0HBDWix1LAk_1/00000.jpg filter=lfs diff=lfs merge=lfs -text
77
+ result/0HBDWix1LAk_1/00001.jpg filter=lfs diff=lfs merge=lfs -text
78
+ result/0HBDWix1LAk_1/00002.jpg filter=lfs diff=lfs merge=lfs -text
79
+ result/0HBDWix1LAk_1/00003.jpg filter=lfs diff=lfs merge=lfs -text
80
+ result/0HBDWix1LAk_1/00004.jpg filter=lfs diff=lfs merge=lfs -text
81
+ result/0HBDWix1LAk_1/00005.jpg filter=lfs diff=lfs merge=lfs -text
82
+ result/0HBDWix1LAk_1/00006.jpg filter=lfs diff=lfs merge=lfs -text
83
+ result/0HBDWix1LAk_1/00007.jpg filter=lfs diff=lfs merge=lfs -text
84
+ result/0HBDWix1LAk_1/00008.jpg filter=lfs diff=lfs merge=lfs -text
85
+ result/0HBDWix1LAk_1/00009.jpg filter=lfs diff=lfs merge=lfs -text
86
+ result/0HBDWix1LAk_1/00010.jpg filter=lfs diff=lfs merge=lfs -text
87
+ result/0HBDWix1LAk_1/00011.jpg filter=lfs diff=lfs merge=lfs -text
88
+ result/0HBDWix1LAk_1/00012.jpg filter=lfs diff=lfs merge=lfs -text
89
+ result/0HBDWix1LAk_1/00013.jpg filter=lfs diff=lfs merge=lfs -text
90
+ result/0HBDWix1LAk_1/00014.jpg filter=lfs diff=lfs merge=lfs -text
91
+ result/0HBDWix1LAk_1/00015.jpg filter=lfs diff=lfs merge=lfs -text
92
+ result/0HBDWix1LAk_1/00016.jpg filter=lfs diff=lfs merge=lfs -text
93
+ result/0HBDWix1LAk_1/00017.jpg filter=lfs diff=lfs merge=lfs -text
94
+ result/0HBDWix1LAk_1/00018.jpg filter=lfs diff=lfs merge=lfs -text
95
+ result/0HBDWix1LAk_1/00019.jpg filter=lfs diff=lfs merge=lfs -text
96
+ result/3DE9R-UpL7w_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
97
+ result/3DE9R-UpL7w_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
98
+ result/3DE9R-UpL7w_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
99
+ result/3DE9R-UpL7w_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
100
+ result/3DE9R-UpL7w_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
101
+ result/3DE9R-UpL7w_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
102
+ result/3DE9R-UpL7w_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
103
+ result/3DE9R-UpL7w_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
104
+ result/3DE9R-UpL7w_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
105
+ result/3DE9R-UpL7w_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
106
+ result/3DE9R-UpL7w_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
107
+ result/3DE9R-UpL7w_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
108
+ result/3DE9R-UpL7w_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
109
+ result/3DE9R-UpL7w_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
110
+ result/3DE9R-UpL7w_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
111
+ result/3DE9R-UpL7w_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
112
+ result/3DE9R-UpL7w_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
113
+ result/3DE9R-UpL7w_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
114
+ result/3DE9R-UpL7w_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
115
+ result/3DE9R-UpL7w_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
116
+ result/3PVAsqby4jk_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
117
+ result/3PVAsqby4jk_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
118
+ result/3PVAsqby4jk_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
119
+ result/3PVAsqby4jk_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
120
+ result/3PVAsqby4jk_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
121
+ result/3PVAsqby4jk_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
122
+ result/3PVAsqby4jk_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
123
+ result/3PVAsqby4jk_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
124
+ result/3PVAsqby4jk_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
125
+ result/3PVAsqby4jk_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
126
+ result/3PVAsqby4jk_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
127
+ result/3PVAsqby4jk_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
128
+ result/3PVAsqby4jk_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
129
+ result/3PVAsqby4jk_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
130
+ result/3PVAsqby4jk_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
131
+ result/3PVAsqby4jk_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
132
+ result/3PVAsqby4jk_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
133
+ result/3PVAsqby4jk_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
134
+ result/3PVAsqby4jk_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
135
+ result/3PVAsqby4jk_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
136
+ result/3jdzVaWohVw_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
137
+ result/3jdzVaWohVw_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
138
+ result/3jdzVaWohVw_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
139
+ result/3jdzVaWohVw_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
140
+ result/3jdzVaWohVw_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
141
+ result/3jdzVaWohVw_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
142
+ result/3jdzVaWohVw_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
143
+ result/3jdzVaWohVw_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
144
+ result/3jdzVaWohVw_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
145
+ result/3jdzVaWohVw_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
146
+ result/3jdzVaWohVw_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
147
+ result/3jdzVaWohVw_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
148
+ result/3jdzVaWohVw_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
149
+ result/3jdzVaWohVw_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
150
+ result/3jdzVaWohVw_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
151
+ result/3jdzVaWohVw_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
152
+ result/3jdzVaWohVw_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
153
+ result/3jdzVaWohVw_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
154
+ result/3jdzVaWohVw_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
155
+ result/3jdzVaWohVw_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
156
+ result/4e0D1OyvPrI_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
157
+ result/4e0D1OyvPrI_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
158
+ result/4e0D1OyvPrI_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
159
+ result/4e0D1OyvPrI_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
160
+ result/4e0D1OyvPrI_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
161
+ result/4e0D1OyvPrI_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
162
+ result/4e0D1OyvPrI_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
163
+ result/4e0D1OyvPrI_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
164
+ result/4e0D1OyvPrI_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
165
+ result/4e0D1OyvPrI_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
166
+ result/4e0D1OyvPrI_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
167
+ result/4e0D1OyvPrI_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
168
+ result/4e0D1OyvPrI_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
169
+ result/4e0D1OyvPrI_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
170
+ result/4e0D1OyvPrI_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
171
+ result/4e0D1OyvPrI_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
172
+ result/4e0D1OyvPrI_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
173
+ result/4e0D1OyvPrI_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
174
+ result/4e0D1OyvPrI_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
175
+ result/4e0D1OyvPrI_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
176
+ result/5TqvkG4uWk0_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
177
+ result/5TqvkG4uWk0_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
178
+ result/5TqvkG4uWk0_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
179
+ result/5TqvkG4uWk0_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
180
+ result/5TqvkG4uWk0_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
181
+ result/5TqvkG4uWk0_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
182
+ result/5TqvkG4uWk0_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
183
+ result/5TqvkG4uWk0_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
184
+ result/5TqvkG4uWk0_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
185
+ result/5TqvkG4uWk0_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
186
+ result/5TqvkG4uWk0_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
187
+ result/5TqvkG4uWk0_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
188
+ result/5TqvkG4uWk0_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
189
+ result/5TqvkG4uWk0_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
190
+ result/5TqvkG4uWk0_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
191
+ result/5TqvkG4uWk0_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
192
+ result/5TqvkG4uWk0_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
193
+ result/5TqvkG4uWk0_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
194
+ result/5TqvkG4uWk0_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
195
+ result/5TqvkG4uWk0_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
196
+ result/6XEKPSnk1QQ_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
197
+ result/6XEKPSnk1QQ_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
198
+ result/6XEKPSnk1QQ_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
199
+ result/6XEKPSnk1QQ_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
200
+ result/6XEKPSnk1QQ_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
201
+ result/6XEKPSnk1QQ_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
202
+ result/6XEKPSnk1QQ_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
203
+ result/6XEKPSnk1QQ_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
204
+ result/6XEKPSnk1QQ_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
205
+ result/6XEKPSnk1QQ_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
206
+ result/6XEKPSnk1QQ_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
207
+ result/6XEKPSnk1QQ_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
208
+ result/6XEKPSnk1QQ_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
209
+ result/6XEKPSnk1QQ_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
210
+ result/6XEKPSnk1QQ_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
211
+ result/6XEKPSnk1QQ_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
212
+ result/6XEKPSnk1QQ_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
213
+ result/6XEKPSnk1QQ_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
214
+ result/6XEKPSnk1QQ_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
215
+ result/6XEKPSnk1QQ_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
216
+ result/9F6LlyZ1GRI_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
217
+ result/9F6LlyZ1GRI_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
218
+ result/9F6LlyZ1GRI_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
219
+ result/9F6LlyZ1GRI_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
220
+ result/9F6LlyZ1GRI_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
221
+ result/9F6LlyZ1GRI_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
222
+ result/9F6LlyZ1GRI_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
223
+ result/9F6LlyZ1GRI_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
224
+ result/9F6LlyZ1GRI_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
225
+ result/9F6LlyZ1GRI_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
226
+ result/9F6LlyZ1GRI_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
227
+ result/9F6LlyZ1GRI_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
228
+ result/9F6LlyZ1GRI_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
229
+ result/9F6LlyZ1GRI_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
230
+ result/9F6LlyZ1GRI_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
231
+ result/9F6LlyZ1GRI_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
232
+ result/9F6LlyZ1GRI_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
233
+ result/9F6LlyZ1GRI_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
234
+ result/9F6LlyZ1GRI_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
235
+ result/9F6LlyZ1GRI_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
236
+ result/9HizwmZHguc_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
237
+ result/9HizwmZHguc_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
238
+ result/9HizwmZHguc_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
239
+ result/9HizwmZHguc_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
240
+ result/9HizwmZHguc_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
241
+ result/9HizwmZHguc_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
242
+ result/9HizwmZHguc_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
243
+ result/9HizwmZHguc_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
244
+ result/9HizwmZHguc_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
245
+ result/9HizwmZHguc_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
246
+ result/9HizwmZHguc_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
247
+ result/9HizwmZHguc_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
248
+ result/9HizwmZHguc_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
249
+ result/9HizwmZHguc_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
250
+ result/9HizwmZHguc_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
251
+ result/9HizwmZHguc_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
252
+ result/9HizwmZHguc_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
253
+ result/9HizwmZHguc_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
254
+ result/9HizwmZHguc_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
255
+ result/9HizwmZHguc_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
256
+ result/B7BM97SFv-E_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
257
+ result/B7BM97SFv-E_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
258
+ result/B7BM97SFv-E_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
259
+ result/B7BM97SFv-E_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
260
+ result/B7BM97SFv-E_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
261
+ result/B7BM97SFv-E_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
262
+ result/B7BM97SFv-E_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
263
+ result/B7BM97SFv-E_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
264
+ result/B7BM97SFv-E_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
265
+ result/B7BM97SFv-E_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
266
+ result/B7BM97SFv-E_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
267
+ result/B7BM97SFv-E_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
268
+ result/B7BM97SFv-E_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
269
+ result/B7BM97SFv-E_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
270
+ result/B7BM97SFv-E_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
271
+ result/B7BM97SFv-E_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
272
+ result/B7BM97SFv-E_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
273
+ result/B7BM97SFv-E_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
274
+ result/B7BM97SFv-E_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
275
+ result/B7BM97SFv-E_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
276
+ result/C08QnMjDfIc_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
277
+ result/C08QnMjDfIc_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
278
+ result/C08QnMjDfIc_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
279
+ result/C08QnMjDfIc_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
280
+ result/C08QnMjDfIc_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
281
+ result/C08QnMjDfIc_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
282
+ result/C08QnMjDfIc_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
283
+ result/C08QnMjDfIc_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
284
+ result/C08QnMjDfIc_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
285
+ result/C08QnMjDfIc_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
286
+ result/C08QnMjDfIc_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
287
+ result/C08QnMjDfIc_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
288
+ result/C08QnMjDfIc_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
289
+ result/C08QnMjDfIc_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
290
+ result/C08QnMjDfIc_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
291
+ result/C08QnMjDfIc_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
292
+ result/C08QnMjDfIc_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
293
+ result/C08QnMjDfIc_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
294
+ result/C08QnMjDfIc_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
295
+ result/C08QnMjDfIc_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
296
+ result/CL55sbrvhrM_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
297
+ result/CL55sbrvhrM_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
298
+ result/CL55sbrvhrM_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
299
+ result/CL55sbrvhrM_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
300
+ result/CL55sbrvhrM_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
301
+ result/CL55sbrvhrM_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
302
+ result/CL55sbrvhrM_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
303
+ result/CL55sbrvhrM_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
304
+ result/CL55sbrvhrM_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
305
+ result/CL55sbrvhrM_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
306
+ result/CL55sbrvhrM_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
307
+ result/CL55sbrvhrM_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
308
+ result/CL55sbrvhrM_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
309
+ result/CL55sbrvhrM_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
310
+ result/CL55sbrvhrM_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
311
+ result/CL55sbrvhrM_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
312
+ result/CL55sbrvhrM_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
313
+ result/CL55sbrvhrM_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
314
+ result/CL55sbrvhrM_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
315
+ result/CL55sbrvhrM_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
316
+ result/HaYoSNXNZ0M_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
317
+ result/HaYoSNXNZ0M_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
318
+ result/HaYoSNXNZ0M_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
319
+ result/HaYoSNXNZ0M_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
320
+ result/HaYoSNXNZ0M_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
321
+ result/HaYoSNXNZ0M_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
322
+ result/HaYoSNXNZ0M_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
323
+ result/HaYoSNXNZ0M_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
324
+ result/HaYoSNXNZ0M_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
325
+ result/HaYoSNXNZ0M_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
326
+ result/HaYoSNXNZ0M_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
327
+ result/HaYoSNXNZ0M_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
328
+ result/HaYoSNXNZ0M_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
329
+ result/HaYoSNXNZ0M_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
330
+ result/HaYoSNXNZ0M_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
331
+ result/HaYoSNXNZ0M_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
332
+ result/HaYoSNXNZ0M_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
333
+ result/HaYoSNXNZ0M_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
334
+ result/HaYoSNXNZ0M_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
335
+ result/HaYoSNXNZ0M_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
336
+ result/IQrzZwkXQlI_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
337
+ result/IQrzZwkXQlI_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
338
+ result/IQrzZwkXQlI_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
339
+ result/IQrzZwkXQlI_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
340
+ result/IQrzZwkXQlI_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
341
+ result/IQrzZwkXQlI_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
342
+ result/IQrzZwkXQlI_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
343
+ result/IQrzZwkXQlI_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
344
+ result/IQrzZwkXQlI_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
345
+ result/IQrzZwkXQlI_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
346
+ result/IQrzZwkXQlI_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
347
+ result/IQrzZwkXQlI_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
348
+ result/IQrzZwkXQlI_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
349
+ result/IQrzZwkXQlI_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
350
+ result/IQrzZwkXQlI_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
351
+ result/IQrzZwkXQlI_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
352
+ result/IQrzZwkXQlI_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
353
+ result/IQrzZwkXQlI_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
354
+ result/IQrzZwkXQlI_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
355
+ result/IQrzZwkXQlI_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
356
+ result/OJHDGvFgFFw_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
357
+ result/OJHDGvFgFFw_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
358
+ result/OJHDGvFgFFw_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
359
+ result/OJHDGvFgFFw_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
360
+ result/OJHDGvFgFFw_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
361
+ result/OJHDGvFgFFw_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
362
+ result/OJHDGvFgFFw_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
363
+ result/OJHDGvFgFFw_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
364
+ result/OJHDGvFgFFw_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
365
+ result/OJHDGvFgFFw_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
366
+ result/OJHDGvFgFFw_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
367
+ result/OJHDGvFgFFw_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
368
+ result/OJHDGvFgFFw_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
369
+ result/OJHDGvFgFFw_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
370
+ result/OJHDGvFgFFw_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
371
+ result/OJHDGvFgFFw_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
372
+ result/OJHDGvFgFFw_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
373
+ result/OJHDGvFgFFw_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
374
+ result/OJHDGvFgFFw_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
375
+ result/OJHDGvFgFFw_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
376
+ result/PYY3bfUgooc_2/00000.jpg filter=lfs diff=lfs merge=lfs -text
377
+ result/PYY3bfUgooc_2/00001.jpg filter=lfs diff=lfs merge=lfs -text
378
+ result/PYY3bfUgooc_2/00002.jpg filter=lfs diff=lfs merge=lfs -text
379
+ result/PYY3bfUgooc_2/00003.jpg filter=lfs diff=lfs merge=lfs -text
380
+ result/PYY3bfUgooc_2/00004.jpg filter=lfs diff=lfs merge=lfs -text
381
+ result/PYY3bfUgooc_2/00005.jpg filter=lfs diff=lfs merge=lfs -text
382
+ result/PYY3bfUgooc_2/00006.jpg filter=lfs diff=lfs merge=lfs -text
383
+ result/PYY3bfUgooc_2/00007.jpg filter=lfs diff=lfs merge=lfs -text
384
+ result/PYY3bfUgooc_2/00008.jpg filter=lfs diff=lfs merge=lfs -text
385
+ result/PYY3bfUgooc_2/00009.jpg filter=lfs diff=lfs merge=lfs -text
386
+ result/PYY3bfUgooc_2/00010.jpg filter=lfs diff=lfs merge=lfs -text
387
+ result/PYY3bfUgooc_2/00011.jpg filter=lfs diff=lfs merge=lfs -text
388
+ result/PYY3bfUgooc_2/00012.jpg filter=lfs diff=lfs merge=lfs -text
389
+ result/PYY3bfUgooc_2/00013.jpg filter=lfs diff=lfs merge=lfs -text
390
+ result/PYY3bfUgooc_2/00014.jpg filter=lfs diff=lfs merge=lfs -text
391
+ result/PYY3bfUgooc_2/00015.jpg filter=lfs diff=lfs merge=lfs -text
392
+ result/PYY3bfUgooc_2/00016.jpg filter=lfs diff=lfs merge=lfs -text
393
+ result/PYY3bfUgooc_2/00017.jpg filter=lfs diff=lfs merge=lfs -text
394
+ result/PYY3bfUgooc_2/00018.jpg filter=lfs diff=lfs merge=lfs -text
395
+ result/PYY3bfUgooc_2/00019.jpg filter=lfs diff=lfs merge=lfs -text
396
+ result/VT_Bw6ANlY0_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
397
+ result/VT_Bw6ANlY0_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
398
+ result/VT_Bw6ANlY0_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
399
+ result/VT_Bw6ANlY0_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
400
+ result/VT_Bw6ANlY0_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
401
+ result/VT_Bw6ANlY0_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
402
+ result/VT_Bw6ANlY0_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
403
+ result/VT_Bw6ANlY0_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
404
+ result/VT_Bw6ANlY0_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
405
+ result/VT_Bw6ANlY0_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
406
+ result/VT_Bw6ANlY0_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
407
+ result/VT_Bw6ANlY0_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
408
+ result/VT_Bw6ANlY0_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
409
+ result/VT_Bw6ANlY0_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
410
+ result/VT_Bw6ANlY0_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
411
+ result/VT_Bw6ANlY0_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
412
+ result/VT_Bw6ANlY0_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
413
+ result/VT_Bw6ANlY0_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
414
+ result/VT_Bw6ANlY0_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
415
+ result/VT_Bw6ANlY0_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
416
+ result/_O85LwqCB7k_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
417
+ result/_O85LwqCB7k_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
418
+ result/_O85LwqCB7k_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
419
+ result/_O85LwqCB7k_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
420
+ result/_O85LwqCB7k_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
421
+ result/_O85LwqCB7k_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
422
+ result/_O85LwqCB7k_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
423
+ result/_O85LwqCB7k_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
424
+ result/_O85LwqCB7k_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
425
+ result/_O85LwqCB7k_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
426
+ result/_O85LwqCB7k_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
427
+ result/_O85LwqCB7k_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
428
+ result/_O85LwqCB7k_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
429
+ result/_O85LwqCB7k_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
430
+ result/_O85LwqCB7k_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
431
+ result/_O85LwqCB7k_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
432
+ result/_O85LwqCB7k_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
433
+ result/_O85LwqCB7k_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
434
+ result/_O85LwqCB7k_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
435
+ result/_O85LwqCB7k_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
436
+ result/jFkgSp701zg_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
437
+ result/jFkgSp701zg_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
438
+ result/jFkgSp701zg_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
439
+ result/jFkgSp701zg_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
440
+ result/jFkgSp701zg_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
441
+ result/jFkgSp701zg_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
442
+ result/jFkgSp701zg_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
443
+ result/jFkgSp701zg_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
444
+ result/jFkgSp701zg_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
445
+ result/jFkgSp701zg_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
446
+ result/jFkgSp701zg_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
447
+ result/jFkgSp701zg_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
448
+ result/jFkgSp701zg_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
449
+ result/jFkgSp701zg_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
450
+ result/jFkgSp701zg_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
451
+ result/jFkgSp701zg_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
452
+ result/jFkgSp701zg_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
453
+ result/jFkgSp701zg_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
454
+ result/jFkgSp701zg_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
455
+ result/jFkgSp701zg_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
456
+ result/k8NKq047jDk_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
457
+ result/k8NKq047jDk_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
458
+ result/k8NKq047jDk_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
459
+ result/k8NKq047jDk_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
460
+ result/k8NKq047jDk_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
461
+ result/k8NKq047jDk_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
462
+ result/k8NKq047jDk_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
463
+ result/k8NKq047jDk_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
464
+ result/k8NKq047jDk_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
465
+ result/k8NKq047jDk_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
466
+ result/k8NKq047jDk_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
467
+ result/k8NKq047jDk_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
468
+ result/k8NKq047jDk_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
469
+ result/k8NKq047jDk_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
470
+ result/k8NKq047jDk_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
471
+ result/k8NKq047jDk_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
472
+ result/k8NKq047jDk_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
473
+ result/k8NKq047jDk_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
474
+ result/k8NKq047jDk_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
475
+ result/k8NKq047jDk_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
476
+ result/lnefnJLRsv8_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
477
+ result/lnefnJLRsv8_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
478
+ result/lnefnJLRsv8_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
479
+ result/lnefnJLRsv8_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
480
+ result/lnefnJLRsv8_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
481
+ result/lnefnJLRsv8_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
482
+ result/lnefnJLRsv8_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
483
+ result/lnefnJLRsv8_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
484
+ result/lnefnJLRsv8_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
485
+ result/lnefnJLRsv8_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
486
+ result/lnefnJLRsv8_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
487
+ result/lnefnJLRsv8_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
488
+ result/lnefnJLRsv8_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
489
+ result/lnefnJLRsv8_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
490
+ result/lnefnJLRsv8_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
491
+ result/lnefnJLRsv8_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
492
+ result/lnefnJLRsv8_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
493
+ result/lnefnJLRsv8_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
494
+ result/lnefnJLRsv8_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
495
+ result/lnefnJLRsv8_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
496
+ result/rIKZtfg3d4k_1/00000.jpg filter=lfs diff=lfs merge=lfs -text
497
+ result/rIKZtfg3d4k_1/00001.jpg filter=lfs diff=lfs merge=lfs -text
498
+ result/rIKZtfg3d4k_1/00002.jpg filter=lfs diff=lfs merge=lfs -text
499
+ result/rIKZtfg3d4k_1/00003.jpg filter=lfs diff=lfs merge=lfs -text
500
+ result/rIKZtfg3d4k_1/00004.jpg filter=lfs diff=lfs merge=lfs -text
501
+ result/rIKZtfg3d4k_1/00005.jpg filter=lfs diff=lfs merge=lfs -text
502
+ result/rIKZtfg3d4k_1/00006.jpg filter=lfs diff=lfs merge=lfs -text
503
+ result/rIKZtfg3d4k_1/00007.jpg filter=lfs diff=lfs merge=lfs -text
504
+ result/rIKZtfg3d4k_1/00008.jpg filter=lfs diff=lfs merge=lfs -text
505
+ result/rIKZtfg3d4k_1/00009.jpg filter=lfs diff=lfs merge=lfs -text
506
+ result/rIKZtfg3d4k_1/00010.jpg filter=lfs diff=lfs merge=lfs -text
507
+ result/rIKZtfg3d4k_1/00011.jpg filter=lfs diff=lfs merge=lfs -text
508
+ result/rIKZtfg3d4k_1/00012.jpg filter=lfs diff=lfs merge=lfs -text
509
+ result/rIKZtfg3d4k_1/00013.jpg filter=lfs diff=lfs merge=lfs -text
510
+ result/rIKZtfg3d4k_1/00014.jpg filter=lfs diff=lfs merge=lfs -text
511
+ result/rIKZtfg3d4k_1/00015.jpg filter=lfs diff=lfs merge=lfs -text
512
+ result/rIKZtfg3d4k_1/00016.jpg filter=lfs diff=lfs merge=lfs -text
513
+ result/rIKZtfg3d4k_1/00017.jpg filter=lfs diff=lfs merge=lfs -text
514
+ result/rIKZtfg3d4k_1/00018.jpg filter=lfs diff=lfs merge=lfs -text
515
+ result/rIKZtfg3d4k_1/00019.jpg filter=lfs diff=lfs merge=lfs -text
516
+ result/wIXF1OmxzrA_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
517
+ result/wIXF1OmxzrA_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
518
+ result/wIXF1OmxzrA_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
519
+ result/wIXF1OmxzrA_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
520
+ result/wIXF1OmxzrA_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
521
+ result/wIXF1OmxzrA_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
522
+ result/wIXF1OmxzrA_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
523
+ result/wIXF1OmxzrA_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
524
+ result/wIXF1OmxzrA_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
525
+ result/wIXF1OmxzrA_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
526
+ result/wIXF1OmxzrA_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
527
+ result/wIXF1OmxzrA_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
528
+ result/wIXF1OmxzrA_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
529
+ result/wIXF1OmxzrA_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
530
+ result/wIXF1OmxzrA_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
531
+ result/wIXF1OmxzrA_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
532
+ result/wIXF1OmxzrA_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
533
+ result/wIXF1OmxzrA_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
534
+ result/wIXF1OmxzrA_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
535
+ result/wIXF1OmxzrA_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
536
+ result/y0soO7I-tjk_0/00000.jpg filter=lfs diff=lfs merge=lfs -text
537
+ result/y0soO7I-tjk_0/00001.jpg filter=lfs diff=lfs merge=lfs -text
538
+ result/y0soO7I-tjk_0/00002.jpg filter=lfs diff=lfs merge=lfs -text
539
+ result/y0soO7I-tjk_0/00003.jpg filter=lfs diff=lfs merge=lfs -text
540
+ result/y0soO7I-tjk_0/00004.jpg filter=lfs diff=lfs merge=lfs -text
541
+ result/y0soO7I-tjk_0/00005.jpg filter=lfs diff=lfs merge=lfs -text
542
+ result/y0soO7I-tjk_0/00006.jpg filter=lfs diff=lfs merge=lfs -text
543
+ result/y0soO7I-tjk_0/00007.jpg filter=lfs diff=lfs merge=lfs -text
544
+ result/y0soO7I-tjk_0/00008.jpg filter=lfs diff=lfs merge=lfs -text
545
+ result/y0soO7I-tjk_0/00009.jpg filter=lfs diff=lfs merge=lfs -text
546
+ result/y0soO7I-tjk_0/00010.jpg filter=lfs diff=lfs merge=lfs -text
547
+ result/y0soO7I-tjk_0/00011.jpg filter=lfs diff=lfs merge=lfs -text
548
+ result/y0soO7I-tjk_0/00012.jpg filter=lfs diff=lfs merge=lfs -text
549
+ result/y0soO7I-tjk_0/00013.jpg filter=lfs diff=lfs merge=lfs -text
550
+ result/y0soO7I-tjk_0/00014.jpg filter=lfs diff=lfs merge=lfs -text
551
+ result/y0soO7I-tjk_0/00015.jpg filter=lfs diff=lfs merge=lfs -text
552
+ result/y0soO7I-tjk_0/00016.jpg filter=lfs diff=lfs merge=lfs -text
553
+ result/y0soO7I-tjk_0/00017.jpg filter=lfs diff=lfs merge=lfs -text
554
+ result/y0soO7I-tjk_0/00018.jpg filter=lfs diff=lfs merge=lfs -text
555
+ result/y0soO7I-tjk_0/00019.jpg filter=lfs diff=lfs merge=lfs -text
Wan2.1-T2V-1.3B/.gitattributes ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip 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
+ google/umt5-xxl/tokenizer.json filter=lfs diff=lfs merge=lfs -text
37
+ assets/comp_effic.png filter=lfs diff=lfs merge=lfs -text
38
+ assets/data_for_diff_stage.jpg filter=lfs diff=lfs merge=lfs -text
39
+ assets/i2v_res.png filter=lfs diff=lfs merge=lfs -text
40
+ assets/logo.png filter=lfs diff=lfs merge=lfs -text
41
+ assets/t2v_res.jpg filter=lfs diff=lfs merge=lfs -text
42
+ assets/vben_vs_sota.png filter=lfs diff=lfs merge=lfs -text
43
+ assets/vben_vs_sota_t2i.jpg filter=lfs diff=lfs merge=lfs -text
44
+ assets/video_dit_arch.jpg filter=lfs diff=lfs merge=lfs -text
45
+ assets/video_vae_res.jpg filter=lfs diff=lfs merge=lfs -text
46
+ examples/i2v_input.JPG filter=lfs diff=lfs merge=lfs -text
47
+ assets/.DS_Store filter=lfs diff=lfs merge=lfs -text
Wan2.1-T2V-1.3B/LICENSE.txt ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
Wan2.1-T2V-1.3B/README.md ADDED
@@ -0,0 +1,298 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - en
5
+ - zh
6
+ pipeline_tag: text-to-video
7
+ library_name: diffusers
8
+ tags:
9
+ - video
10
+ - video-generation
11
+ ---
12
+ # Wan2.1
13
+
14
+ <p align="center">
15
+ <img src="assets/logo.png" width="400"/>
16
+ <p>
17
+
18
+ <p align="center">
19
+ 💜 <a href=""><b>Wan</b></a> &nbsp&nbsp | &nbsp&nbsp 🖥️ <a href="https://github.com/Wan-Video/Wan2.1">GitHub</a> &nbsp&nbsp | &nbsp&nbsp🤗 <a href="https://huggingface.co/Wan-AI/">Hugging Face</a>&nbsp&nbsp | &nbsp&nbsp🤖 <a href="https://modelscope.cn/organization/Wan-AI">ModelScope</a>&nbsp&nbsp | &nbsp&nbsp 📑 <a href="">Paper (Coming soon)</a> &nbsp&nbsp | &nbsp&nbsp 📑 <a href="https://wanxai.com">Blog</a> &nbsp&nbsp | &nbsp&nbsp💬 <a href="https://gw.alicdn.com/imgextra/i2/O1CN01tqjWFi1ByuyehkTSB_!!6000000000015-0-tps-611-1279.jpg">WeChat Group</a>&nbsp&nbsp | &nbsp&nbsp 📖 <a href="https://discord.gg/p5XbdQV7">Discord</a>&nbsp&nbsp
20
+ <br>
21
+
22
+ -----
23
+
24
+ [**Wan: Open and Advanced Large-Scale Video Generative Models**]("#") <be>
25
+
26
+ In this repository, we present **Wan2.1**, a comprehensive and open suite of video foundation models that pushes the boundaries of video generation. **Wan2.1** offers these key features:
27
+ - 👍 **SOTA Performance**: **Wan2.1** consistently outperforms existing open-source models and state-of-the-art commercial solutions across multiple benchmarks.
28
+ - 👍 **Supports Consumer-grade GPUs**: The T2V-1.3B model requires only 8.19 GB VRAM, making it compatible with almost all consumer-grade GPUs. It can generate a 5-second 480P video on an RTX 4090 in about 4 minutes (without optimization techniques like quantization). Its performance is even comparable to some closed-source models.
29
+ - 👍 **Multiple Tasks**: **Wan2.1** excels in Text-to-Video, Image-to-Video, Video Editing, Text-to-Image, and Video-to-Audio, advancing the field of video generation.
30
+ - 👍 **Visual Text Generation**: **Wan2.1** is the first video model capable of generating both Chinese and English text, featuring robust text generation that enhances its practical applications.
31
+ - 👍 **Powerful Video VAE**: **Wan-VAE** delivers exceptional efficiency and performance, encoding and decoding 1080P videos of any length while preserving temporal information, making it an ideal foundation for video and image generation.
32
+
33
+
34
+ This repository hosts our T2V-1.3B model, a versatile solution for video generation that is compatible with nearly all consumer-grade GPUs. In this way, we hope that **Wan2.1** can serve as an easy-to-use tool for more creative teams in video creation, providing a high-quality foundational model for academic teams with limited computing resources. This will facilitate both the rapid development of the video creation community and the swift advancement of video technology.
35
+
36
+
37
+ ## Video Demos
38
+
39
+ <div align="center">
40
+ <video width="80%" controls>
41
+ <source src="https://cloud.video.taobao.com/vod/Jth64Y7wNoPcJki_Bo1ZJTDBvNjsgjlVKsNs05Fqfps.mp4" type="video/mp4">
42
+ Your browser does not support the video tag.
43
+ </video>
44
+ </div>
45
+
46
+
47
+ ## 🔥 Latest News!!
48
+
49
+ * Feb 25, 2025: 👋 We've released the inference code and weights of Wan2.1.
50
+
51
+
52
+ ## 📑 Todo List
53
+ - Wan2.1 Text-to-Video
54
+ - [x] Multi-GPU Inference code of the 14B and 1.3B models
55
+ - [x] Checkpoints of the 14B and 1.3B models
56
+ - [x] Gradio demo
57
+ - [ ] Diffusers integration
58
+ - [ ] ComfyUI integration
59
+ - Wan2.1 Image-to-Video
60
+ - [x] Multi-GPU Inference code of the 14B model
61
+ - [x] Checkpoints of the 14B model
62
+ - [x] Gradio demo
63
+ - [ ] Diffusers integration
64
+ - [ ] ComfyUI integration
65
+
66
+
67
+ ## Quickstart
68
+
69
+ #### Installation
70
+ Clone the repo:
71
+ ```
72
+ git clone https://github.com/Wan-Video/Wan2.1.git
73
+ cd Wan2.1
74
+ ```
75
+
76
+ Install dependencies:
77
+ ```
78
+ # Ensure torch >= 2.4.0
79
+ pip install -r requirements.txt
80
+ ```
81
+
82
+
83
+ #### Model Download
84
+
85
+ | Models | Download Link | Notes |
86
+ | --------------|-------------------------------------------------------------------------------|-------------------------------|
87
+ | T2V-14B | 🤗 [Huggingface](https://huggingface.co/Wan-AI/Wan2.1-T2V-14B) 🤖 [ModelScope](https://www.modelscope.cn/models/Wan-AI/Wan2.1-T2V-14B) | Supports both 480P and 720P
88
+ | I2V-14B-720P | 🤗 [Huggingface](https://huggingface.co/Wan-AI/Wan2.1-I2V-14B-720P) 🤖 [ModelScope](https://www.modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-720P) | Supports 720P
89
+ | I2V-14B-480P | 🤗 [Huggingface](https://huggingface.co/Wan-AI/Wan2.1-I2V-14B-480P) 🤖 [ModelScope](https://www.modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-480P) | Supports 480P
90
+ | T2V-1.3B | 🤗 [Huggingface](https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B) 🤖 [ModelScope](https://www.modelscope.cn/models/Wan-AI/Wan2.1-T2V-1.3B) | Supports 480P
91
+
92
+
93
+ > 💡Note: The 1.3B model is capable of generating videos at 720P resolution. However, due to limited training at this resolution, the results are generally less stable compared to 480P. For optimal performance, we recommend using 480P resolution.
94
+
95
+
96
+ Download models using 🤗 huggingface-cli:
97
+ ```
98
+ pip install "huggingface_hub[cli]"
99
+ huggingface-cli download Wan-AI/Wan2.1-T2V-1.3B --local-dir ./Wan2.1-T2V-1.3B
100
+ ```
101
+
102
+ Download models using 🤖 modelscope-cli:
103
+ ```
104
+ pip install modelscope
105
+ modelscope download Wan-AI/Wan2.1-T2V-1.3B --local_dir ./Wan2.1-T2V-1.3B
106
+ ```
107
+
108
+ #### Run Text-to-Video Generation
109
+
110
+ This repository supports two Text-to-Video models (1.3B and 14B) and two resolutions (480P and 720P). The parameters and configurations for these models are as follows:
111
+
112
+ <table>
113
+ <thead>
114
+ <tr>
115
+ <th rowspan="2">Task</th>
116
+ <th colspan="2">Resolution</th>
117
+ <th rowspan="2">Model</th>
118
+ </tr>
119
+ <tr>
120
+ <th>480P</th>
121
+ <th>720P</th>
122
+ </tr>
123
+ </thead>
124
+ <tbody>
125
+ <tr>
126
+ <td>t2v-14B</td>
127
+ <td style="color: green;">✔️</td>
128
+ <td style="color: green;">✔️</td>
129
+ <td>Wan2.1-T2V-14B</td>
130
+ </tr>
131
+ <tr>
132
+ <td>t2v-1.3B</td>
133
+ <td style="color: green;">✔️</td>
134
+ <td style="color: red;">❌</td>
135
+ <td>Wan2.1-T2V-1.3B</td>
136
+ </tr>
137
+ </tbody>
138
+ </table>
139
+
140
+
141
+ ##### (1) Without Prompt Extention
142
+
143
+ To facilitate implementation, we will start with a basic version of the inference process that skips the [prompt extension](#2-using-prompt-extention) step.
144
+
145
+ - Single-GPU inference
146
+
147
+ ```
148
+ python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --sample_shift 8 --sample_guide_scale 6 --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage."
149
+ ```
150
+
151
+ If you encounter OOM (Out-of-Memory) issues, you can use the `--offload_model True` and `--t5_cpu` options to reduce GPU memory usage. For example, on an RTX 4090 GPU:
152
+
153
+ ```
154
+ python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --offload_model True --t5_cpu --sample_shift 8 --sample_guide_scale 6 --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage."
155
+ ```
156
+
157
+ > 💡Note: If you are using the `T2V-1.3B` model, we recommend setting the parameter `--sample_guide_scale 6`. The `--sample_shift parameter` can be adjusted within the range of 8 to 12 based on the performance.
158
+
159
+ - Multi-GPU inference using FSDP + xDiT USP
160
+
161
+ ```
162
+ pip install "xfuser>=0.4.1"
163
+ torchrun --nproc_per_node=8 generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --dit_fsdp --t5_fsdp --ulysses_size 8 --sample_shift 8 --sample_guide_scale 6 --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage."
164
+ ```
165
+
166
+
167
+ ##### (2) Using Prompt Extention
168
+
169
+ Extending the prompts can effectively enrich the details in the generated videos, further enhancing the video quality. Therefore, we recommend enabling prompt extension. We provide the following two methods for prompt extension:
170
+
171
+ - Use the Dashscope API for extension.
172
+ - Apply for a `dashscope.api_key` in advance ([EN](https://www.alibabacloud.com/help/en/model-studio/getting-started/first-api-call-to-qwen) | [CN](https://help.aliyun.com/zh/model-studio/getting-started/first-api-call-to-qwen)).
173
+ - Configure the environment variable `DASH_API_KEY` to specify the Dashscope API key. For users of Alibaba Cloud's international site, you also need to set the environment variable `DASH_API_URL` to 'https://dashscope-intl.aliyuncs.com/api/v1'. For more detailed instructions, please refer to the [dashscope document](https://www.alibabacloud.com/help/en/model-studio/developer-reference/use-qwen-by-calling-api?spm=a2c63.p38356.0.i1).
174
+ - Use the `qwen-plus` model for text-to-video tasks and `qwen-vl-max` for image-to-video tasks.
175
+ - You can modify the model used for extension with the parameter `--prompt_extend_model`. For example:
176
+ ```
177
+ DASH_API_KEY=your_key python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage" --use_prompt_extend --prompt_extend_method 'dashscope' --prompt_extend_target_lang 'ch'
178
+ ```
179
+
180
+ - Using a local model for extension.
181
+
182
+ - By default, the Qwen model on HuggingFace is used for this extension. Users can choose based on the available GPU memory size.
183
+ - For text-to-video tasks, you can use models like `Qwen/Qwen2.5-14B-Instruct`, `Qwen/Qwen2.5-7B-Instruct` and `Qwen/Qwen2.5-3B-Instruct`
184
+ - For image-to-video tasks, you can use models like `Qwen/Qwen2.5-VL-7B-Instruct` and `Qwen/Qwen2.5-VL-3B-Instruct`.
185
+ - Larger models generally provide better extension results but require more GPU memory.
186
+ - You can modify the model used for extension with the parameter `--prompt_extend_model` , allowing you to specify either a local model path or a Hugging Face model. For example:
187
+
188
+ ```
189
+ python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage" --use_prompt_extend --prompt_extend_method 'local_qwen' --prompt_extend_target_lang 'ch'
190
+ ```
191
+
192
+ ##### (3) Runing local gradio
193
+
194
+ ```
195
+ cd gradio
196
+ # if one uses dashscope’s API for prompt extension
197
+ DASH_API_KEY=your_key python t2v_1.3B_singleGPU.py --prompt_extend_method 'dashscope' --ckpt_dir ./Wan2.1-T2V-1.3B
198
+
199
+ # if one uses a local model for prompt extension
200
+ python t2v_1.3B_singleGPU.py --prompt_extend_method 'local_qwen' --ckpt_dir ./Wan2.1-T2V-1.3B
201
+ ```
202
+
203
+
204
+
205
+ ## Evaluation
206
+
207
+ We employ our **Wan-Bench** framework to evaluate the performance of the T2V-1.3B model, with the results displayed in the table below. The results indicate that our smaller 1.3B model surpasses the overall metrics of larger open-source models, demonstrating the effectiveness of **WanX2.1**'s architecture and the data construction pipeline.
208
+
209
+ <div align="center">
210
+ <img src="assets/vben_1.3b_vs_sota.png" alt="" style="width: 80%;" />
211
+ </div>
212
+
213
+
214
+
215
+ ## Computational Efficiency on Different GPUs
216
+
217
+ We test the computational efficiency of different **Wan2.1** models on different GPUs in the following table. The results are presented in the format: **Total time (s) / peak GPU memory (GB)**.
218
+
219
+
220
+ <div align="center">
221
+ <img src="assets/comp_effic.png" alt="" style="width: 80%;" />
222
+ </div>
223
+
224
+ > The parameter settings for the tests presented in this table are as follows:
225
+ > (1) For the 1.3B model on 8 GPUs, set `--ring_size 8` and `--ulysses_size 1`;
226
+ > (2) For the 14B model on 1 GPU, use `--offload_model True`;
227
+ > (3) For the 1.3B model on a single 4090 GPU, set `--offload_model True --t5_cpu`;
228
+ > (4) For all testings, no prompt extension was applied, meaning `--use_prompt_extend` was not enabled.
229
+
230
+ -------
231
+
232
+ ## Introduction of Wan2.1
233
+
234
+ **Wan2.1** is designed on the mainstream diffusion transformer paradigm, achieving significant advancements in generative capabilities through a series of innovations. These include our novel spatio-temporal variational autoencoder (VAE), scalable training strategies, large-scale data construction, and automated evaluation metrics. Collectively, these contributions enhance the model’s performance and versatility.
235
+
236
+
237
+ ##### (1) 3D Variational Autoencoders
238
+ We propose a novel 3D causal VAE architecture, termed **Wan-VAE** specifically designed for video generation. By combining multiple strategies, we improve spatio-temporal compression, reduce memory usage, and ensure temporal causality. **Wan-VAE** demonstrates significant advantages in performance efficiency compared to other open-source VAEs. Furthermore, our **Wan-VAE** can encode and decode unlimited-length 1080P videos without losing historical temporal information, making it particularly well-suited for video generation tasks.
239
+
240
+
241
+ <div align="center">
242
+ <img src="assets/video_vae_res.jpg" alt="" style="width: 80%;" />
243
+ </div>
244
+
245
+
246
+ ##### (2) Video Diffusion DiT
247
+
248
+ **Wan2.1** is designed using the Flow Matching framework within the paradigm of mainstream Diffusion Transformers. Our model's architecture uses the T5 Encoder to encode multilingual text input, with cross-attention in each transformer block embedding the text into the model structure. Additionally, we employ an MLP with a Linear layer and a SiLU layer to process the input time embeddings and predict six modulation parameters individually. This MLP is shared across all transformer blocks, with each block learning a distinct set of biases. Our experimental findings reveal a significant performance improvement with this approach at the same parameter scale.
249
+
250
+ <div align="center">
251
+ <img src="assets/video_dit_arch.jpg" alt="" style="width: 80%;" />
252
+ </div>
253
+
254
+
255
+ | Model | Dimension | Input Dimension | Output Dimension | Feedforward Dimension | Frequency Dimension | Number of Heads | Number of Layers |
256
+ |--------|-----------|-----------------|------------------|-----------------------|---------------------|-----------------|------------------|
257
+ | 1.3B | 1536 | 16 | 16 | 8960 | 256 | 12 | 30 |
258
+ | 14B | 5120 | 16 | 16 | 13824 | 256 | 40 | 40 |
259
+
260
+
261
+
262
+ ##### Data
263
+
264
+ We curated and deduplicated a candidate dataset comprising a vast amount of image and video data. During the data curation process, we designed a four-step data cleaning process, focusing on fundamental dimensions, visual quality and motion quality. Through the robust data processing pipeline, we can easily obtain high-quality, diverse, and large-scale training sets of images and videos.
265
+
266
+ ![figure1](assets/data_for_diff_stage.jpg "figure1")
267
+
268
+
269
+ ##### Comparisons to SOTA
270
+ We compared **Wan2.1** with leading open-source and closed-source models to evaluate the performace. Using our carefully designed set of 1,035 internal prompts, we tested across 14 major dimensions and 26 sub-dimensions. Then we calculated the total score through a weighted average based on the importance of each dimension. The detailed results are shown in the table below. These results demonstrate our model's superior performance compared to both open-source and closed-source models.
271
+
272
+ ![figure1](assets/vben_vs_sota.png "figure1")
273
+
274
+
275
+ ## Citation
276
+ If you find our work helpful, please cite us.
277
+
278
+ ```
279
+ @article{wan2.1,
280
+ title = {Wan: Open and Advanced Large-Scale Video Generative Models},
281
+ author = {Wan Team},
282
+ journal = {},
283
+ year = {2025}
284
+ }
285
+ ```
286
+
287
+ ## License Agreement
288
+ The models in this repository are licensed under the Apache 2.0 License. We claim no rights over the your generate contents, granting you the freedom to use them while ensuring that your usage complies with the provisions of this license. You are fully accountable for your use of the models, which must not involve sharing any content that violates applicable laws, causes harm to individuals or groups, disseminates personal information intended for harm, spreads misinformation, or targets vulnerable populations. For a complete list of restrictions and details regarding your rights, please refer to the full text of the [license](LICENSE.txt).
289
+
290
+
291
+ ## Acknowledgements
292
+
293
+ We would like to thank the contributors to the [SD3](https://huggingface.co/stabilityai/stable-diffusion-3-medium), [Qwen](https://huggingface.co/Qwen), [umt5-xxl](https://huggingface.co/google/umt5-xxl), [diffusers](https://github.com/huggingface/diffusers) and [HuggingFace](https://huggingface.co) repositories, for their open research.
294
+
295
+
296
+
297
+ ## Contact Us
298
+ If you would like to leave a message to our research or product teams, feel free to join our [Discord](https://discord.gg/p5XbdQV7) or [WeChat groups](https://gw.alicdn.com/imgextra/i2/O1CN01tqjWFi1ByuyehkTSB_!!6000000000015-0-tps-611-1279.jpg)!
Wan2.1-T2V-1.3B/Wan2.1_VAE.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:38071ab59bd94681c686fa51d75a1968f64e470262043be31f7a094e442fd981
3
+ size 507609880
Wan2.1-T2V-1.3B/assets/.DS_Store ADDED
Binary file (6.15 kB). View file
 
Wan2.1-T2V-1.3B/assets/comp_effic.png ADDED

Git LFS Details

  • SHA256: b0e225caffb4b31295ad150f95ee852e4c3dde4a00ac8f79a2ff500f2ce26b8d
  • Pointer size: 132 Bytes
  • Size of remote file: 1.79 MB
Wan2.1-T2V-1.3B/assets/data_for_diff_stage.jpg ADDED

Git LFS Details

  • SHA256: 59aec08409f2d46b0e640e4e120dc7cca52c08c3de56d026602dbcff1ebf241a
  • Pointer size: 131 Bytes
  • Size of remote file: 528 kB
Wan2.1-T2V-1.3B/assets/i2v_res.png ADDED

Git LFS Details

  • SHA256: 6823b3206d8d0cb18d3b5b949dec1217f1178109ba11f14e977b67e1f7b8a248
  • Pointer size: 131 Bytes
  • Size of remote file: 892 kB
Wan2.1-T2V-1.3B/assets/logo.png ADDED
Wan2.1-T2V-1.3B/assets/t2v_res.jpg ADDED

Git LFS Details

  • SHA256: 91db579092446be2a834bc67721a8e4346936f38c4edb912f459ca3e10f8f439
  • Pointer size: 131 Bytes
  • Size of remote file: 301 kB
Wan2.1-T2V-1.3B/assets/vben_1.3b_vs_sota.png ADDED

Git LFS Details

  • SHA256: b7705db79f2e1428ec7a1e6fff8c4fbde062fb95bb233516ddbd04b20007c845
  • Pointer size: 131 Bytes
  • Size of remote file: 516 kB
Wan2.1-T2V-1.3B/assets/vben_vs_sota.png ADDED

Git LFS Details

  • SHA256: 9a0e86ca85046d2675f97984b88b6e74df07bba8a62a31ab8a1aef50d4eda44e
  • Pointer size: 132 Bytes
  • Size of remote file: 1.55 MB
Wan2.1-T2V-1.3B/assets/video_dit_arch.jpg ADDED

Git LFS Details

  • SHA256: 195dceec6570289d8b01cc51d2e28a7786216f19de55b23978a52610d1646a66
  • Pointer size: 131 Bytes
  • Size of remote file: 643 kB
Wan2.1-T2V-1.3B/assets/video_vae_res.jpg ADDED

Git LFS Details

  • SHA256: d8f9e7f7353848056a615c8ef35ab86ec22976bb46cb27405008b4089701945c
  • Pointer size: 131 Bytes
  • Size of remote file: 213 kB
Wan2.1-T2V-1.3B/config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "WanModel",
3
+ "_diffusers_version": "0.30.0",
4
+ "dim": 1536,
5
+ "eps": 1e-06,
6
+ "ffn_dim": 8960,
7
+ "freq_dim": 256,
8
+ "in_dim": 16,
9
+ "model_type": "t2v",
10
+ "num_heads": 12,
11
+ "num_layers": 30,
12
+ "out_dim": 16,
13
+ "text_len": 512
14
+ }
Wan2.1-T2V-1.3B/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:96b6b242ca1c2f24e9d02cd6596066fab6d310e2d7538f33ae267cb18d957e8f
3
+ size 5676070424
Wan2.1-T2V-1.3B/examples/i2v_input.JPG ADDED

Git LFS Details

  • SHA256: 077e3d965090c9028c69c00931675f42e1acc815c6eb450ab291b3b72d211a8e
  • Pointer size: 131 Bytes
  • Size of remote file: 251 kB
Wan2.1-T2V-1.3B/google/umt5-xxl/special_tokens_map.json ADDED
@@ -0,0 +1,308 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<extra_id_0>",
4
+ "<extra_id_1>",
5
+ "<extra_id_2>",
6
+ "<extra_id_3>",
7
+ "<extra_id_4>",
8
+ "<extra_id_5>",
9
+ "<extra_id_6>",
10
+ "<extra_id_7>",
11
+ "<extra_id_8>",
12
+ "<extra_id_9>",
13
+ "<extra_id_10>",
14
+ "<extra_id_11>",
15
+ "<extra_id_12>",
16
+ "<extra_id_13>",
17
+ "<extra_id_14>",
18
+ "<extra_id_15>",
19
+ "<extra_id_16>",
20
+ "<extra_id_17>",
21
+ "<extra_id_18>",
22
+ "<extra_id_19>",
23
+ "<extra_id_20>",
24
+ "<extra_id_21>",
25
+ "<extra_id_22>",
26
+ "<extra_id_23>",
27
+ "<extra_id_24>",
28
+ "<extra_id_25>",
29
+ "<extra_id_26>",
30
+ "<extra_id_27>",
31
+ "<extra_id_28>",
32
+ "<extra_id_29>",
33
+ "<extra_id_30>",
34
+ "<extra_id_31>",
35
+ "<extra_id_32>",
36
+ "<extra_id_33>",
37
+ "<extra_id_34>",
38
+ "<extra_id_35>",
39
+ "<extra_id_36>",
40
+ "<extra_id_37>",
41
+ "<extra_id_38>",
42
+ "<extra_id_39>",
43
+ "<extra_id_40>",
44
+ "<extra_id_41>",
45
+ "<extra_id_42>",
46
+ "<extra_id_43>",
47
+ "<extra_id_44>",
48
+ "<extra_id_45>",
49
+ "<extra_id_46>",
50
+ "<extra_id_47>",
51
+ "<extra_id_48>",
52
+ "<extra_id_49>",
53
+ "<extra_id_50>",
54
+ "<extra_id_51>",
55
+ "<extra_id_52>",
56
+ "<extra_id_53>",
57
+ "<extra_id_54>",
58
+ "<extra_id_55>",
59
+ "<extra_id_56>",
60
+ "<extra_id_57>",
61
+ "<extra_id_58>",
62
+ "<extra_id_59>",
63
+ "<extra_id_60>",
64
+ "<extra_id_61>",
65
+ "<extra_id_62>",
66
+ "<extra_id_63>",
67
+ "<extra_id_64>",
68
+ "<extra_id_65>",
69
+ "<extra_id_66>",
70
+ "<extra_id_67>",
71
+ "<extra_id_68>",
72
+ "<extra_id_69>",
73
+ "<extra_id_70>",
74
+ "<extra_id_71>",
75
+ "<extra_id_72>",
76
+ "<extra_id_73>",
77
+ "<extra_id_74>",
78
+ "<extra_id_75>",
79
+ "<extra_id_76>",
80
+ "<extra_id_77>",
81
+ "<extra_id_78>",
82
+ "<extra_id_79>",
83
+ "<extra_id_80>",
84
+ "<extra_id_81>",
85
+ "<extra_id_82>",
86
+ "<extra_id_83>",
87
+ "<extra_id_84>",
88
+ "<extra_id_85>",
89
+ "<extra_id_86>",
90
+ "<extra_id_87>",
91
+ "<extra_id_88>",
92
+ "<extra_id_89>",
93
+ "<extra_id_90>",
94
+ "<extra_id_91>",
95
+ "<extra_id_92>",
96
+ "<extra_id_93>",
97
+ "<extra_id_94>",
98
+ "<extra_id_95>",
99
+ "<extra_id_96>",
100
+ "<extra_id_97>",
101
+ "<extra_id_98>",
102
+ "<extra_id_99>",
103
+ "<extra_id_100>",
104
+ "<extra_id_101>",
105
+ "<extra_id_102>",
106
+ "<extra_id_103>",
107
+ "<extra_id_104>",
108
+ "<extra_id_105>",
109
+ "<extra_id_106>",
110
+ "<extra_id_107>",
111
+ "<extra_id_108>",
112
+ "<extra_id_109>",
113
+ "<extra_id_110>",
114
+ "<extra_id_111>",
115
+ "<extra_id_112>",
116
+ "<extra_id_113>",
117
+ "<extra_id_114>",
118
+ "<extra_id_115>",
119
+ "<extra_id_116>",
120
+ "<extra_id_117>",
121
+ "<extra_id_118>",
122
+ "<extra_id_119>",
123
+ "<extra_id_120>",
124
+ "<extra_id_121>",
125
+ "<extra_id_122>",
126
+ "<extra_id_123>",
127
+ "<extra_id_124>",
128
+ "<extra_id_125>",
129
+ "<extra_id_126>",
130
+ "<extra_id_127>",
131
+ "<extra_id_128>",
132
+ "<extra_id_129>",
133
+ "<extra_id_130>",
134
+ "<extra_id_131>",
135
+ "<extra_id_132>",
136
+ "<extra_id_133>",
137
+ "<extra_id_134>",
138
+ "<extra_id_135>",
139
+ "<extra_id_136>",
140
+ "<extra_id_137>",
141
+ "<extra_id_138>",
142
+ "<extra_id_139>",
143
+ "<extra_id_140>",
144
+ "<extra_id_141>",
145
+ "<extra_id_142>",
146
+ "<extra_id_143>",
147
+ "<extra_id_144>",
148
+ "<extra_id_145>",
149
+ "<extra_id_146>",
150
+ "<extra_id_147>",
151
+ "<extra_id_148>",
152
+ "<extra_id_149>",
153
+ "<extra_id_150>",
154
+ "<extra_id_151>",
155
+ "<extra_id_152>",
156
+ "<extra_id_153>",
157
+ "<extra_id_154>",
158
+ "<extra_id_155>",
159
+ "<extra_id_156>",
160
+ "<extra_id_157>",
161
+ "<extra_id_158>",
162
+ "<extra_id_159>",
163
+ "<extra_id_160>",
164
+ "<extra_id_161>",
165
+ "<extra_id_162>",
166
+ "<extra_id_163>",
167
+ "<extra_id_164>",
168
+ "<extra_id_165>",
169
+ "<extra_id_166>",
170
+ "<extra_id_167>",
171
+ "<extra_id_168>",
172
+ "<extra_id_169>",
173
+ "<extra_id_170>",
174
+ "<extra_id_171>",
175
+ "<extra_id_172>",
176
+ "<extra_id_173>",
177
+ "<extra_id_174>",
178
+ "<extra_id_175>",
179
+ "<extra_id_176>",
180
+ "<extra_id_177>",
181
+ "<extra_id_178>",
182
+ "<extra_id_179>",
183
+ "<extra_id_180>",
184
+ "<extra_id_181>",
185
+ "<extra_id_182>",
186
+ "<extra_id_183>",
187
+ "<extra_id_184>",
188
+ "<extra_id_185>",
189
+ "<extra_id_186>",
190
+ "<extra_id_187>",
191
+ "<extra_id_188>",
192
+ "<extra_id_189>",
193
+ "<extra_id_190>",
194
+ "<extra_id_191>",
195
+ "<extra_id_192>",
196
+ "<extra_id_193>",
197
+ "<extra_id_194>",
198
+ "<extra_id_195>",
199
+ "<extra_id_196>",
200
+ "<extra_id_197>",
201
+ "<extra_id_198>",
202
+ "<extra_id_199>",
203
+ "<extra_id_200>",
204
+ "<extra_id_201>",
205
+ "<extra_id_202>",
206
+ "<extra_id_203>",
207
+ "<extra_id_204>",
208
+ "<extra_id_205>",
209
+ "<extra_id_206>",
210
+ "<extra_id_207>",
211
+ "<extra_id_208>",
212
+ "<extra_id_209>",
213
+ "<extra_id_210>",
214
+ "<extra_id_211>",
215
+ "<extra_id_212>",
216
+ "<extra_id_213>",
217
+ "<extra_id_214>",
218
+ "<extra_id_215>",
219
+ "<extra_id_216>",
220
+ "<extra_id_217>",
221
+ "<extra_id_218>",
222
+ "<extra_id_219>",
223
+ "<extra_id_220>",
224
+ "<extra_id_221>",
225
+ "<extra_id_222>",
226
+ "<extra_id_223>",
227
+ "<extra_id_224>",
228
+ "<extra_id_225>",
229
+ "<extra_id_226>",
230
+ "<extra_id_227>",
231
+ "<extra_id_228>",
232
+ "<extra_id_229>",
233
+ "<extra_id_230>",
234
+ "<extra_id_231>",
235
+ "<extra_id_232>",
236
+ "<extra_id_233>",
237
+ "<extra_id_234>",
238
+ "<extra_id_235>",
239
+ "<extra_id_236>",
240
+ "<extra_id_237>",
241
+ "<extra_id_238>",
242
+ "<extra_id_239>",
243
+ "<extra_id_240>",
244
+ "<extra_id_241>",
245
+ "<extra_id_242>",
246
+ "<extra_id_243>",
247
+ "<extra_id_244>",
248
+ "<extra_id_245>",
249
+ "<extra_id_246>",
250
+ "<extra_id_247>",
251
+ "<extra_id_248>",
252
+ "<extra_id_249>",
253
+ "<extra_id_250>",
254
+ "<extra_id_251>",
255
+ "<extra_id_252>",
256
+ "<extra_id_253>",
257
+ "<extra_id_254>",
258
+ "<extra_id_255>",
259
+ "<extra_id_256>",
260
+ "<extra_id_257>",
261
+ "<extra_id_258>",
262
+ "<extra_id_259>",
263
+ "<extra_id_260>",
264
+ "<extra_id_261>",
265
+ "<extra_id_262>",
266
+ "<extra_id_263>",
267
+ "<extra_id_264>",
268
+ "<extra_id_265>",
269
+ "<extra_id_266>",
270
+ "<extra_id_267>",
271
+ "<extra_id_268>",
272
+ "<extra_id_269>",
273
+ "<extra_id_270>",
274
+ "<extra_id_271>",
275
+ "<extra_id_272>",
276
+ "<extra_id_273>",
277
+ "<extra_id_274>",
278
+ "<extra_id_275>",
279
+ "<extra_id_276>",
280
+ "<extra_id_277>",
281
+ "<extra_id_278>",
282
+ "<extra_id_279>",
283
+ "<extra_id_280>",
284
+ "<extra_id_281>",
285
+ "<extra_id_282>",
286
+ "<extra_id_283>",
287
+ "<extra_id_284>",
288
+ "<extra_id_285>",
289
+ "<extra_id_286>",
290
+ "<extra_id_287>",
291
+ "<extra_id_288>",
292
+ "<extra_id_289>",
293
+ "<extra_id_290>",
294
+ "<extra_id_291>",
295
+ "<extra_id_292>",
296
+ "<extra_id_293>",
297
+ "<extra_id_294>",
298
+ "<extra_id_295>",
299
+ "<extra_id_296>",
300
+ "<extra_id_297>",
301
+ "<extra_id_298>",
302
+ "<extra_id_299>"
303
+ ],
304
+ "bos_token": "<s>",
305
+ "eos_token": "</s>",
306
+ "pad_token": "<pad>",
307
+ "unk_token": "<unk>"
308
+ }
Wan2.1-T2V-1.3B/google/umt5-xxl/spiece.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e3909a67b780650b35cf529ac782ad2b6b26e6d1f849d3fbb6a872905f452458
3
+ size 4548313
Wan2.1-T2V-1.3B/google/umt5-xxl/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6e197b4d3dbd71da14b4eb255f4fa91c9c1f2068b20a2de2472967ca3d22602b
3
+ size 16837417
Wan2.1-T2V-1.3B/google/umt5-xxl/tokenizer_config.json ADDED
@@ -0,0 +1,2748 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<pad>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "1": {
12
+ "content": "</s>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "2": {
20
+ "content": "<s>",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "3": {
28
+ "content": "<unk>",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "256000": {
36
+ "content": "<extra_id_299>",
37
+ "lstrip": false,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ },
43
+ "256001": {
44
+ "content": "<extra_id_298>",
45
+ "lstrip": false,
46
+ "normalized": false,
47
+ "rstrip": false,
48
+ "single_word": false,
49
+ "special": true
50
+ },
51
+ "256002": {
52
+ "content": "<extra_id_297>",
53
+ "lstrip": false,
54
+ "normalized": false,
55
+ "rstrip": false,
56
+ "single_word": false,
57
+ "special": true
58
+ },
59
+ "256003": {
60
+ "content": "<extra_id_296>",
61
+ "lstrip": false,
62
+ "normalized": false,
63
+ "rstrip": false,
64
+ "single_word": false,
65
+ "special": true
66
+ },
67
+ "256004": {
68
+ "content": "<extra_id_295>",
69
+ "lstrip": false,
70
+ "normalized": false,
71
+ "rstrip": false,
72
+ "single_word": false,
73
+ "special": true
74
+ },
75
+ "256005": {
76
+ "content": "<extra_id_294>",
77
+ "lstrip": false,
78
+ "normalized": false,
79
+ "rstrip": false,
80
+ "single_word": false,
81
+ "special": true
82
+ },
83
+ "256006": {
84
+ "content": "<extra_id_293>",
85
+ "lstrip": false,
86
+ "normalized": false,
87
+ "rstrip": false,
88
+ "single_word": false,
89
+ "special": true
90
+ },
91
+ "256007": {
92
+ "content": "<extra_id_292>",
93
+ "lstrip": false,
94
+ "normalized": false,
95
+ "rstrip": false,
96
+ "single_word": false,
97
+ "special": true
98
+ },
99
+ "256008": {
100
+ "content": "<extra_id_291>",
101
+ "lstrip": false,
102
+ "normalized": false,
103
+ "rstrip": false,
104
+ "single_word": false,
105
+ "special": true
106
+ },
107
+ "256009": {
108
+ "content": "<extra_id_290>",
109
+ "lstrip": false,
110
+ "normalized": false,
111
+ "rstrip": false,
112
+ "single_word": false,
113
+ "special": true
114
+ },
115
+ "256010": {
116
+ "content": "<extra_id_289>",
117
+ "lstrip": false,
118
+ "normalized": false,
119
+ "rstrip": false,
120
+ "single_word": false,
121
+ "special": true
122
+ },
123
+ "256011": {
124
+ "content": "<extra_id_288>",
125
+ "lstrip": false,
126
+ "normalized": false,
127
+ "rstrip": false,
128
+ "single_word": false,
129
+ "special": true
130
+ },
131
+ "256012": {
132
+ "content": "<extra_id_287>",
133
+ "lstrip": false,
134
+ "normalized": false,
135
+ "rstrip": false,
136
+ "single_word": false,
137
+ "special": true
138
+ },
139
+ "256013": {
140
+ "content": "<extra_id_286>",
141
+ "lstrip": false,
142
+ "normalized": false,
143
+ "rstrip": false,
144
+ "single_word": false,
145
+ "special": true
146
+ },
147
+ "256014": {
148
+ "content": "<extra_id_285>",
149
+ "lstrip": false,
150
+ "normalized": false,
151
+ "rstrip": false,
152
+ "single_word": false,
153
+ "special": true
154
+ },
155
+ "256015": {
156
+ "content": "<extra_id_284>",
157
+ "lstrip": false,
158
+ "normalized": false,
159
+ "rstrip": false,
160
+ "single_word": false,
161
+ "special": true
162
+ },
163
+ "256016": {
164
+ "content": "<extra_id_283>",
165
+ "lstrip": false,
166
+ "normalized": false,
167
+ "rstrip": false,
168
+ "single_word": false,
169
+ "special": true
170
+ },
171
+ "256017": {
172
+ "content": "<extra_id_282>",
173
+ "lstrip": false,
174
+ "normalized": false,
175
+ "rstrip": false,
176
+ "single_word": false,
177
+ "special": true
178
+ },
179
+ "256018": {
180
+ "content": "<extra_id_281>",
181
+ "lstrip": false,
182
+ "normalized": false,
183
+ "rstrip": false,
184
+ "single_word": false,
185
+ "special": true
186
+ },
187
+ "256019": {
188
+ "content": "<extra_id_280>",
189
+ "lstrip": false,
190
+ "normalized": false,
191
+ "rstrip": false,
192
+ "single_word": false,
193
+ "special": true
194
+ },
195
+ "256020": {
196
+ "content": "<extra_id_279>",
197
+ "lstrip": false,
198
+ "normalized": false,
199
+ "rstrip": false,
200
+ "single_word": false,
201
+ "special": true
202
+ },
203
+ "256021": {
204
+ "content": "<extra_id_278>",
205
+ "lstrip": false,
206
+ "normalized": false,
207
+ "rstrip": false,
208
+ "single_word": false,
209
+ "special": true
210
+ },
211
+ "256022": {
212
+ "content": "<extra_id_277>",
213
+ "lstrip": false,
214
+ "normalized": false,
215
+ "rstrip": false,
216
+ "single_word": false,
217
+ "special": true
218
+ },
219
+ "256023": {
220
+ "content": "<extra_id_276>",
221
+ "lstrip": false,
222
+ "normalized": false,
223
+ "rstrip": false,
224
+ "single_word": false,
225
+ "special": true
226
+ },
227
+ "256024": {
228
+ "content": "<extra_id_275>",
229
+ "lstrip": false,
230
+ "normalized": false,
231
+ "rstrip": false,
232
+ "single_word": false,
233
+ "special": true
234
+ },
235
+ "256025": {
236
+ "content": "<extra_id_274>",
237
+ "lstrip": false,
238
+ "normalized": false,
239
+ "rstrip": false,
240
+ "single_word": false,
241
+ "special": true
242
+ },
243
+ "256026": {
244
+ "content": "<extra_id_273>",
245
+ "lstrip": false,
246
+ "normalized": false,
247
+ "rstrip": false,
248
+ "single_word": false,
249
+ "special": true
250
+ },
251
+ "256027": {
252
+ "content": "<extra_id_272>",
253
+ "lstrip": false,
254
+ "normalized": false,
255
+ "rstrip": false,
256
+ "single_word": false,
257
+ "special": true
258
+ },
259
+ "256028": {
260
+ "content": "<extra_id_271>",
261
+ "lstrip": false,
262
+ "normalized": false,
263
+ "rstrip": false,
264
+ "single_word": false,
265
+ "special": true
266
+ },
267
+ "256029": {
268
+ "content": "<extra_id_270>",
269
+ "lstrip": false,
270
+ "normalized": false,
271
+ "rstrip": false,
272
+ "single_word": false,
273
+ "special": true
274
+ },
275
+ "256030": {
276
+ "content": "<extra_id_269>",
277
+ "lstrip": false,
278
+ "normalized": false,
279
+ "rstrip": false,
280
+ "single_word": false,
281
+ "special": true
282
+ },
283
+ "256031": {
284
+ "content": "<extra_id_268>",
285
+ "lstrip": false,
286
+ "normalized": false,
287
+ "rstrip": false,
288
+ "single_word": false,
289
+ "special": true
290
+ },
291
+ "256032": {
292
+ "content": "<extra_id_267>",
293
+ "lstrip": false,
294
+ "normalized": false,
295
+ "rstrip": false,
296
+ "single_word": false,
297
+ "special": true
298
+ },
299
+ "256033": {
300
+ "content": "<extra_id_266>",
301
+ "lstrip": false,
302
+ "normalized": false,
303
+ "rstrip": false,
304
+ "single_word": false,
305
+ "special": true
306
+ },
307
+ "256034": {
308
+ "content": "<extra_id_265>",
309
+ "lstrip": false,
310
+ "normalized": false,
311
+ "rstrip": false,
312
+ "single_word": false,
313
+ "special": true
314
+ },
315
+ "256035": {
316
+ "content": "<extra_id_264>",
317
+ "lstrip": false,
318
+ "normalized": false,
319
+ "rstrip": false,
320
+ "single_word": false,
321
+ "special": true
322
+ },
323
+ "256036": {
324
+ "content": "<extra_id_263>",
325
+ "lstrip": false,
326
+ "normalized": false,
327
+ "rstrip": false,
328
+ "single_word": false,
329
+ "special": true
330
+ },
331
+ "256037": {
332
+ "content": "<extra_id_262>",
333
+ "lstrip": false,
334
+ "normalized": false,
335
+ "rstrip": false,
336
+ "single_word": false,
337
+ "special": true
338
+ },
339
+ "256038": {
340
+ "content": "<extra_id_261>",
341
+ "lstrip": false,
342
+ "normalized": false,
343
+ "rstrip": false,
344
+ "single_word": false,
345
+ "special": true
346
+ },
347
+ "256039": {
348
+ "content": "<extra_id_260>",
349
+ "lstrip": false,
350
+ "normalized": false,
351
+ "rstrip": false,
352
+ "single_word": false,
353
+ "special": true
354
+ },
355
+ "256040": {
356
+ "content": "<extra_id_259>",
357
+ "lstrip": false,
358
+ "normalized": false,
359
+ "rstrip": false,
360
+ "single_word": false,
361
+ "special": true
362
+ },
363
+ "256041": {
364
+ "content": "<extra_id_258>",
365
+ "lstrip": false,
366
+ "normalized": false,
367
+ "rstrip": false,
368
+ "single_word": false,
369
+ "special": true
370
+ },
371
+ "256042": {
372
+ "content": "<extra_id_257>",
373
+ "lstrip": false,
374
+ "normalized": false,
375
+ "rstrip": false,
376
+ "single_word": false,
377
+ "special": true
378
+ },
379
+ "256043": {
380
+ "content": "<extra_id_256>",
381
+ "lstrip": false,
382
+ "normalized": false,
383
+ "rstrip": false,
384
+ "single_word": false,
385
+ "special": true
386
+ },
387
+ "256044": {
388
+ "content": "<extra_id_255>",
389
+ "lstrip": false,
390
+ "normalized": false,
391
+ "rstrip": false,
392
+ "single_word": false,
393
+ "special": true
394
+ },
395
+ "256045": {
396
+ "content": "<extra_id_254>",
397
+ "lstrip": false,
398
+ "normalized": false,
399
+ "rstrip": false,
400
+ "single_word": false,
401
+ "special": true
402
+ },
403
+ "256046": {
404
+ "content": "<extra_id_253>",
405
+ "lstrip": false,
406
+ "normalized": false,
407
+ "rstrip": false,
408
+ "single_word": false,
409
+ "special": true
410
+ },
411
+ "256047": {
412
+ "content": "<extra_id_252>",
413
+ "lstrip": false,
414
+ "normalized": false,
415
+ "rstrip": false,
416
+ "single_word": false,
417
+ "special": true
418
+ },
419
+ "256048": {
420
+ "content": "<extra_id_251>",
421
+ "lstrip": false,
422
+ "normalized": false,
423
+ "rstrip": false,
424
+ "single_word": false,
425
+ "special": true
426
+ },
427
+ "256049": {
428
+ "content": "<extra_id_250>",
429
+ "lstrip": false,
430
+ "normalized": false,
431
+ "rstrip": false,
432
+ "single_word": false,
433
+ "special": true
434
+ },
435
+ "256050": {
436
+ "content": "<extra_id_249>",
437
+ "lstrip": false,
438
+ "normalized": false,
439
+ "rstrip": false,
440
+ "single_word": false,
441
+ "special": true
442
+ },
443
+ "256051": {
444
+ "content": "<extra_id_248>",
445
+ "lstrip": false,
446
+ "normalized": false,
447
+ "rstrip": false,
448
+ "single_word": false,
449
+ "special": true
450
+ },
451
+ "256052": {
452
+ "content": "<extra_id_247>",
453
+ "lstrip": false,
454
+ "normalized": false,
455
+ "rstrip": false,
456
+ "single_word": false,
457
+ "special": true
458
+ },
459
+ "256053": {
460
+ "content": "<extra_id_246>",
461
+ "lstrip": false,
462
+ "normalized": false,
463
+ "rstrip": false,
464
+ "single_word": false,
465
+ "special": true
466
+ },
467
+ "256054": {
468
+ "content": "<extra_id_245>",
469
+ "lstrip": false,
470
+ "normalized": false,
471
+ "rstrip": false,
472
+ "single_word": false,
473
+ "special": true
474
+ },
475
+ "256055": {
476
+ "content": "<extra_id_244>",
477
+ "lstrip": false,
478
+ "normalized": false,
479
+ "rstrip": false,
480
+ "single_word": false,
481
+ "special": true
482
+ },
483
+ "256056": {
484
+ "content": "<extra_id_243>",
485
+ "lstrip": false,
486
+ "normalized": false,
487
+ "rstrip": false,
488
+ "single_word": false,
489
+ "special": true
490
+ },
491
+ "256057": {
492
+ "content": "<extra_id_242>",
493
+ "lstrip": false,
494
+ "normalized": false,
495
+ "rstrip": false,
496
+ "single_word": false,
497
+ "special": true
498
+ },
499
+ "256058": {
500
+ "content": "<extra_id_241>",
501
+ "lstrip": false,
502
+ "normalized": false,
503
+ "rstrip": false,
504
+ "single_word": false,
505
+ "special": true
506
+ },
507
+ "256059": {
508
+ "content": "<extra_id_240>",
509
+ "lstrip": false,
510
+ "normalized": false,
511
+ "rstrip": false,
512
+ "single_word": false,
513
+ "special": true
514
+ },
515
+ "256060": {
516
+ "content": "<extra_id_239>",
517
+ "lstrip": false,
518
+ "normalized": false,
519
+ "rstrip": false,
520
+ "single_word": false,
521
+ "special": true
522
+ },
523
+ "256061": {
524
+ "content": "<extra_id_238>",
525
+ "lstrip": false,
526
+ "normalized": false,
527
+ "rstrip": false,
528
+ "single_word": false,
529
+ "special": true
530
+ },
531
+ "256062": {
532
+ "content": "<extra_id_237>",
533
+ "lstrip": false,
534
+ "normalized": false,
535
+ "rstrip": false,
536
+ "single_word": false,
537
+ "special": true
538
+ },
539
+ "256063": {
540
+ "content": "<extra_id_236>",
541
+ "lstrip": false,
542
+ "normalized": false,
543
+ "rstrip": false,
544
+ "single_word": false,
545
+ "special": true
546
+ },
547
+ "256064": {
548
+ "content": "<extra_id_235>",
549
+ "lstrip": false,
550
+ "normalized": false,
551
+ "rstrip": false,
552
+ "single_word": false,
553
+ "special": true
554
+ },
555
+ "256065": {
556
+ "content": "<extra_id_234>",
557
+ "lstrip": false,
558
+ "normalized": false,
559
+ "rstrip": false,
560
+ "single_word": false,
561
+ "special": true
562
+ },
563
+ "256066": {
564
+ "content": "<extra_id_233>",
565
+ "lstrip": false,
566
+ "normalized": false,
567
+ "rstrip": false,
568
+ "single_word": false,
569
+ "special": true
570
+ },
571
+ "256067": {
572
+ "content": "<extra_id_232>",
573
+ "lstrip": false,
574
+ "normalized": false,
575
+ "rstrip": false,
576
+ "single_word": false,
577
+ "special": true
578
+ },
579
+ "256068": {
580
+ "content": "<extra_id_231>",
581
+ "lstrip": false,
582
+ "normalized": false,
583
+ "rstrip": false,
584
+ "single_word": false,
585
+ "special": true
586
+ },
587
+ "256069": {
588
+ "content": "<extra_id_230>",
589
+ "lstrip": false,
590
+ "normalized": false,
591
+ "rstrip": false,
592
+ "single_word": false,
593
+ "special": true
594
+ },
595
+ "256070": {
596
+ "content": "<extra_id_229>",
597
+ "lstrip": false,
598
+ "normalized": false,
599
+ "rstrip": false,
600
+ "single_word": false,
601
+ "special": true
602
+ },
603
+ "256071": {
604
+ "content": "<extra_id_228>",
605
+ "lstrip": false,
606
+ "normalized": false,
607
+ "rstrip": false,
608
+ "single_word": false,
609
+ "special": true
610
+ },
611
+ "256072": {
612
+ "content": "<extra_id_227>",
613
+ "lstrip": false,
614
+ "normalized": false,
615
+ "rstrip": false,
616
+ "single_word": false,
617
+ "special": true
618
+ },
619
+ "256073": {
620
+ "content": "<extra_id_226>",
621
+ "lstrip": false,
622
+ "normalized": false,
623
+ "rstrip": false,
624
+ "single_word": false,
625
+ "special": true
626
+ },
627
+ "256074": {
628
+ "content": "<extra_id_225>",
629
+ "lstrip": false,
630
+ "normalized": false,
631
+ "rstrip": false,
632
+ "single_word": false,
633
+ "special": true
634
+ },
635
+ "256075": {
636
+ "content": "<extra_id_224>",
637
+ "lstrip": false,
638
+ "normalized": false,
639
+ "rstrip": false,
640
+ "single_word": false,
641
+ "special": true
642
+ },
643
+ "256076": {
644
+ "content": "<extra_id_223>",
645
+ "lstrip": false,
646
+ "normalized": false,
647
+ "rstrip": false,
648
+ "single_word": false,
649
+ "special": true
650
+ },
651
+ "256077": {
652
+ "content": "<extra_id_222>",
653
+ "lstrip": false,
654
+ "normalized": false,
655
+ "rstrip": false,
656
+ "single_word": false,
657
+ "special": true
658
+ },
659
+ "256078": {
660
+ "content": "<extra_id_221>",
661
+ "lstrip": false,
662
+ "normalized": false,
663
+ "rstrip": false,
664
+ "single_word": false,
665
+ "special": true
666
+ },
667
+ "256079": {
668
+ "content": "<extra_id_220>",
669
+ "lstrip": false,
670
+ "normalized": false,
671
+ "rstrip": false,
672
+ "single_word": false,
673
+ "special": true
674
+ },
675
+ "256080": {
676
+ "content": "<extra_id_219>",
677
+ "lstrip": false,
678
+ "normalized": false,
679
+ "rstrip": false,
680
+ "single_word": false,
681
+ "special": true
682
+ },
683
+ "256081": {
684
+ "content": "<extra_id_218>",
685
+ "lstrip": false,
686
+ "normalized": false,
687
+ "rstrip": false,
688
+ "single_word": false,
689
+ "special": true
690
+ },
691
+ "256082": {
692
+ "content": "<extra_id_217>",
693
+ "lstrip": false,
694
+ "normalized": false,
695
+ "rstrip": false,
696
+ "single_word": false,
697
+ "special": true
698
+ },
699
+ "256083": {
700
+ "content": "<extra_id_216>",
701
+ "lstrip": false,
702
+ "normalized": false,
703
+ "rstrip": false,
704
+ "single_word": false,
705
+ "special": true
706
+ },
707
+ "256084": {
708
+ "content": "<extra_id_215>",
709
+ "lstrip": false,
710
+ "normalized": false,
711
+ "rstrip": false,
712
+ "single_word": false,
713
+ "special": true
714
+ },
715
+ "256085": {
716
+ "content": "<extra_id_214>",
717
+ "lstrip": false,
718
+ "normalized": false,
719
+ "rstrip": false,
720
+ "single_word": false,
721
+ "special": true
722
+ },
723
+ "256086": {
724
+ "content": "<extra_id_213>",
725
+ "lstrip": false,
726
+ "normalized": false,
727
+ "rstrip": false,
728
+ "single_word": false,
729
+ "special": true
730
+ },
731
+ "256087": {
732
+ "content": "<extra_id_212>",
733
+ "lstrip": false,
734
+ "normalized": false,
735
+ "rstrip": false,
736
+ "single_word": false,
737
+ "special": true
738
+ },
739
+ "256088": {
740
+ "content": "<extra_id_211>",
741
+ "lstrip": false,
742
+ "normalized": false,
743
+ "rstrip": false,
744
+ "single_word": false,
745
+ "special": true
746
+ },
747
+ "256089": {
748
+ "content": "<extra_id_210>",
749
+ "lstrip": false,
750
+ "normalized": false,
751
+ "rstrip": false,
752
+ "single_word": false,
753
+ "special": true
754
+ },
755
+ "256090": {
756
+ "content": "<extra_id_209>",
757
+ "lstrip": false,
758
+ "normalized": false,
759
+ "rstrip": false,
760
+ "single_word": false,
761
+ "special": true
762
+ },
763
+ "256091": {
764
+ "content": "<extra_id_208>",
765
+ "lstrip": false,
766
+ "normalized": false,
767
+ "rstrip": false,
768
+ "single_word": false,
769
+ "special": true
770
+ },
771
+ "256092": {
772
+ "content": "<extra_id_207>",
773
+ "lstrip": false,
774
+ "normalized": false,
775
+ "rstrip": false,
776
+ "single_word": false,
777
+ "special": true
778
+ },
779
+ "256093": {
780
+ "content": "<extra_id_206>",
781
+ "lstrip": false,
782
+ "normalized": false,
783
+ "rstrip": false,
784
+ "single_word": false,
785
+ "special": true
786
+ },
787
+ "256094": {
788
+ "content": "<extra_id_205>",
789
+ "lstrip": false,
790
+ "normalized": false,
791
+ "rstrip": false,
792
+ "single_word": false,
793
+ "special": true
794
+ },
795
+ "256095": {
796
+ "content": "<extra_id_204>",
797
+ "lstrip": false,
798
+ "normalized": false,
799
+ "rstrip": false,
800
+ "single_word": false,
801
+ "special": true
802
+ },
803
+ "256096": {
804
+ "content": "<extra_id_203>",
805
+ "lstrip": false,
806
+ "normalized": false,
807
+ "rstrip": false,
808
+ "single_word": false,
809
+ "special": true
810
+ },
811
+ "256097": {
812
+ "content": "<extra_id_202>",
813
+ "lstrip": false,
814
+ "normalized": false,
815
+ "rstrip": false,
816
+ "single_word": false,
817
+ "special": true
818
+ },
819
+ "256098": {
820
+ "content": "<extra_id_201>",
821
+ "lstrip": false,
822
+ "normalized": false,
823
+ "rstrip": false,
824
+ "single_word": false,
825
+ "special": true
826
+ },
827
+ "256099": {
828
+ "content": "<extra_id_200>",
829
+ "lstrip": false,
830
+ "normalized": false,
831
+ "rstrip": false,
832
+ "single_word": false,
833
+ "special": true
834
+ },
835
+ "256100": {
836
+ "content": "<extra_id_199>",
837
+ "lstrip": false,
838
+ "normalized": false,
839
+ "rstrip": false,
840
+ "single_word": false,
841
+ "special": true
842
+ },
843
+ "256101": {
844
+ "content": "<extra_id_198>",
845
+ "lstrip": false,
846
+ "normalized": false,
847
+ "rstrip": false,
848
+ "single_word": false,
849
+ "special": true
850
+ },
851
+ "256102": {
852
+ "content": "<extra_id_197>",
853
+ "lstrip": false,
854
+ "normalized": false,
855
+ "rstrip": false,
856
+ "single_word": false,
857
+ "special": true
858
+ },
859
+ "256103": {
860
+ "content": "<extra_id_196>",
861
+ "lstrip": false,
862
+ "normalized": false,
863
+ "rstrip": false,
864
+ "single_word": false,
865
+ "special": true
866
+ },
867
+ "256104": {
868
+ "content": "<extra_id_195>",
869
+ "lstrip": false,
870
+ "normalized": false,
871
+ "rstrip": false,
872
+ "single_word": false,
873
+ "special": true
874
+ },
875
+ "256105": {
876
+ "content": "<extra_id_194>",
877
+ "lstrip": false,
878
+ "normalized": false,
879
+ "rstrip": false,
880
+ "single_word": false,
881
+ "special": true
882
+ },
883
+ "256106": {
884
+ "content": "<extra_id_193>",
885
+ "lstrip": false,
886
+ "normalized": false,
887
+ "rstrip": false,
888
+ "single_word": false,
889
+ "special": true
890
+ },
891
+ "256107": {
892
+ "content": "<extra_id_192>",
893
+ "lstrip": false,
894
+ "normalized": false,
895
+ "rstrip": false,
896
+ "single_word": false,
897
+ "special": true
898
+ },
899
+ "256108": {
900
+ "content": "<extra_id_191>",
901
+ "lstrip": false,
902
+ "normalized": false,
903
+ "rstrip": false,
904
+ "single_word": false,
905
+ "special": true
906
+ },
907
+ "256109": {
908
+ "content": "<extra_id_190>",
909
+ "lstrip": false,
910
+ "normalized": false,
911
+ "rstrip": false,
912
+ "single_word": false,
913
+ "special": true
914
+ },
915
+ "256110": {
916
+ "content": "<extra_id_189>",
917
+ "lstrip": false,
918
+ "normalized": false,
919
+ "rstrip": false,
920
+ "single_word": false,
921
+ "special": true
922
+ },
923
+ "256111": {
924
+ "content": "<extra_id_188>",
925
+ "lstrip": false,
926
+ "normalized": false,
927
+ "rstrip": false,
928
+ "single_word": false,
929
+ "special": true
930
+ },
931
+ "256112": {
932
+ "content": "<extra_id_187>",
933
+ "lstrip": false,
934
+ "normalized": false,
935
+ "rstrip": false,
936
+ "single_word": false,
937
+ "special": true
938
+ },
939
+ "256113": {
940
+ "content": "<extra_id_186>",
941
+ "lstrip": false,
942
+ "normalized": false,
943
+ "rstrip": false,
944
+ "single_word": false,
945
+ "special": true
946
+ },
947
+ "256114": {
948
+ "content": "<extra_id_185>",
949
+ "lstrip": false,
950
+ "normalized": false,
951
+ "rstrip": false,
952
+ "single_word": false,
953
+ "special": true
954
+ },
955
+ "256115": {
956
+ "content": "<extra_id_184>",
957
+ "lstrip": false,
958
+ "normalized": false,
959
+ "rstrip": false,
960
+ "single_word": false,
961
+ "special": true
962
+ },
963
+ "256116": {
964
+ "content": "<extra_id_183>",
965
+ "lstrip": false,
966
+ "normalized": false,
967
+ "rstrip": false,
968
+ "single_word": false,
969
+ "special": true
970
+ },
971
+ "256117": {
972
+ "content": "<extra_id_182>",
973
+ "lstrip": false,
974
+ "normalized": false,
975
+ "rstrip": false,
976
+ "single_word": false,
977
+ "special": true
978
+ },
979
+ "256118": {
980
+ "content": "<extra_id_181>",
981
+ "lstrip": false,
982
+ "normalized": false,
983
+ "rstrip": false,
984
+ "single_word": false,
985
+ "special": true
986
+ },
987
+ "256119": {
988
+ "content": "<extra_id_180>",
989
+ "lstrip": false,
990
+ "normalized": false,
991
+ "rstrip": false,
992
+ "single_word": false,
993
+ "special": true
994
+ },
995
+ "256120": {
996
+ "content": "<extra_id_179>",
997
+ "lstrip": false,
998
+ "normalized": false,
999
+ "rstrip": false,
1000
+ "single_word": false,
1001
+ "special": true
1002
+ },
1003
+ "256121": {
1004
+ "content": "<extra_id_178>",
1005
+ "lstrip": false,
1006
+ "normalized": false,
1007
+ "rstrip": false,
1008
+ "single_word": false,
1009
+ "special": true
1010
+ },
1011
+ "256122": {
1012
+ "content": "<extra_id_177>",
1013
+ "lstrip": false,
1014
+ "normalized": false,
1015
+ "rstrip": false,
1016
+ "single_word": false,
1017
+ "special": true
1018
+ },
1019
+ "256123": {
1020
+ "content": "<extra_id_176>",
1021
+ "lstrip": false,
1022
+ "normalized": false,
1023
+ "rstrip": false,
1024
+ "single_word": false,
1025
+ "special": true
1026
+ },
1027
+ "256124": {
1028
+ "content": "<extra_id_175>",
1029
+ "lstrip": false,
1030
+ "normalized": false,
1031
+ "rstrip": false,
1032
+ "single_word": false,
1033
+ "special": true
1034
+ },
1035
+ "256125": {
1036
+ "content": "<extra_id_174>",
1037
+ "lstrip": false,
1038
+ "normalized": false,
1039
+ "rstrip": false,
1040
+ "single_word": false,
1041
+ "special": true
1042
+ },
1043
+ "256126": {
1044
+ "content": "<extra_id_173>",
1045
+ "lstrip": false,
1046
+ "normalized": false,
1047
+ "rstrip": false,
1048
+ "single_word": false,
1049
+ "special": true
1050
+ },
1051
+ "256127": {
1052
+ "content": "<extra_id_172>",
1053
+ "lstrip": false,
1054
+ "normalized": false,
1055
+ "rstrip": false,
1056
+ "single_word": false,
1057
+ "special": true
1058
+ },
1059
+ "256128": {
1060
+ "content": "<extra_id_171>",
1061
+ "lstrip": false,
1062
+ "normalized": false,
1063
+ "rstrip": false,
1064
+ "single_word": false,
1065
+ "special": true
1066
+ },
1067
+ "256129": {
1068
+ "content": "<extra_id_170>",
1069
+ "lstrip": false,
1070
+ "normalized": false,
1071
+ "rstrip": false,
1072
+ "single_word": false,
1073
+ "special": true
1074
+ },
1075
+ "256130": {
1076
+ "content": "<extra_id_169>",
1077
+ "lstrip": false,
1078
+ "normalized": false,
1079
+ "rstrip": false,
1080
+ "single_word": false,
1081
+ "special": true
1082
+ },
1083
+ "256131": {
1084
+ "content": "<extra_id_168>",
1085
+ "lstrip": false,
1086
+ "normalized": false,
1087
+ "rstrip": false,
1088
+ "single_word": false,
1089
+ "special": true
1090
+ },
1091
+ "256132": {
1092
+ "content": "<extra_id_167>",
1093
+ "lstrip": false,
1094
+ "normalized": false,
1095
+ "rstrip": false,
1096
+ "single_word": false,
1097
+ "special": true
1098
+ },
1099
+ "256133": {
1100
+ "content": "<extra_id_166>",
1101
+ "lstrip": false,
1102
+ "normalized": false,
1103
+ "rstrip": false,
1104
+ "single_word": false,
1105
+ "special": true
1106
+ },
1107
+ "256134": {
1108
+ "content": "<extra_id_165>",
1109
+ "lstrip": false,
1110
+ "normalized": false,
1111
+ "rstrip": false,
1112
+ "single_word": false,
1113
+ "special": true
1114
+ },
1115
+ "256135": {
1116
+ "content": "<extra_id_164>",
1117
+ "lstrip": false,
1118
+ "normalized": false,
1119
+ "rstrip": false,
1120
+ "single_word": false,
1121
+ "special": true
1122
+ },
1123
+ "256136": {
1124
+ "content": "<extra_id_163>",
1125
+ "lstrip": false,
1126
+ "normalized": false,
1127
+ "rstrip": false,
1128
+ "single_word": false,
1129
+ "special": true
1130
+ },
1131
+ "256137": {
1132
+ "content": "<extra_id_162>",
1133
+ "lstrip": false,
1134
+ "normalized": false,
1135
+ "rstrip": false,
1136
+ "single_word": false,
1137
+ "special": true
1138
+ },
1139
+ "256138": {
1140
+ "content": "<extra_id_161>",
1141
+ "lstrip": false,
1142
+ "normalized": false,
1143
+ "rstrip": false,
1144
+ "single_word": false,
1145
+ "special": true
1146
+ },
1147
+ "256139": {
1148
+ "content": "<extra_id_160>",
1149
+ "lstrip": false,
1150
+ "normalized": false,
1151
+ "rstrip": false,
1152
+ "single_word": false,
1153
+ "special": true
1154
+ },
1155
+ "256140": {
1156
+ "content": "<extra_id_159>",
1157
+ "lstrip": false,
1158
+ "normalized": false,
1159
+ "rstrip": false,
1160
+ "single_word": false,
1161
+ "special": true
1162
+ },
1163
+ "256141": {
1164
+ "content": "<extra_id_158>",
1165
+ "lstrip": false,
1166
+ "normalized": false,
1167
+ "rstrip": false,
1168
+ "single_word": false,
1169
+ "special": true
1170
+ },
1171
+ "256142": {
1172
+ "content": "<extra_id_157>",
1173
+ "lstrip": false,
1174
+ "normalized": false,
1175
+ "rstrip": false,
1176
+ "single_word": false,
1177
+ "special": true
1178
+ },
1179
+ "256143": {
1180
+ "content": "<extra_id_156>",
1181
+ "lstrip": false,
1182
+ "normalized": false,
1183
+ "rstrip": false,
1184
+ "single_word": false,
1185
+ "special": true
1186
+ },
1187
+ "256144": {
1188
+ "content": "<extra_id_155>",
1189
+ "lstrip": false,
1190
+ "normalized": false,
1191
+ "rstrip": false,
1192
+ "single_word": false,
1193
+ "special": true
1194
+ },
1195
+ "256145": {
1196
+ "content": "<extra_id_154>",
1197
+ "lstrip": false,
1198
+ "normalized": false,
1199
+ "rstrip": false,
1200
+ "single_word": false,
1201
+ "special": true
1202
+ },
1203
+ "256146": {
1204
+ "content": "<extra_id_153>",
1205
+ "lstrip": false,
1206
+ "normalized": false,
1207
+ "rstrip": false,
1208
+ "single_word": false,
1209
+ "special": true
1210
+ },
1211
+ "256147": {
1212
+ "content": "<extra_id_152>",
1213
+ "lstrip": false,
1214
+ "normalized": false,
1215
+ "rstrip": false,
1216
+ "single_word": false,
1217
+ "special": true
1218
+ },
1219
+ "256148": {
1220
+ "content": "<extra_id_151>",
1221
+ "lstrip": false,
1222
+ "normalized": false,
1223
+ "rstrip": false,
1224
+ "single_word": false,
1225
+ "special": true
1226
+ },
1227
+ "256149": {
1228
+ "content": "<extra_id_150>",
1229
+ "lstrip": false,
1230
+ "normalized": false,
1231
+ "rstrip": false,
1232
+ "single_word": false,
1233
+ "special": true
1234
+ },
1235
+ "256150": {
1236
+ "content": "<extra_id_149>",
1237
+ "lstrip": false,
1238
+ "normalized": false,
1239
+ "rstrip": false,
1240
+ "single_word": false,
1241
+ "special": true
1242
+ },
1243
+ "256151": {
1244
+ "content": "<extra_id_148>",
1245
+ "lstrip": false,
1246
+ "normalized": false,
1247
+ "rstrip": false,
1248
+ "single_word": false,
1249
+ "special": true
1250
+ },
1251
+ "256152": {
1252
+ "content": "<extra_id_147>",
1253
+ "lstrip": false,
1254
+ "normalized": false,
1255
+ "rstrip": false,
1256
+ "single_word": false,
1257
+ "special": true
1258
+ },
1259
+ "256153": {
1260
+ "content": "<extra_id_146>",
1261
+ "lstrip": false,
1262
+ "normalized": false,
1263
+ "rstrip": false,
1264
+ "single_word": false,
1265
+ "special": true
1266
+ },
1267
+ "256154": {
1268
+ "content": "<extra_id_145>",
1269
+ "lstrip": false,
1270
+ "normalized": false,
1271
+ "rstrip": false,
1272
+ "single_word": false,
1273
+ "special": true
1274
+ },
1275
+ "256155": {
1276
+ "content": "<extra_id_144>",
1277
+ "lstrip": false,
1278
+ "normalized": false,
1279
+ "rstrip": false,
1280
+ "single_word": false,
1281
+ "special": true
1282
+ },
1283
+ "256156": {
1284
+ "content": "<extra_id_143>",
1285
+ "lstrip": false,
1286
+ "normalized": false,
1287
+ "rstrip": false,
1288
+ "single_word": false,
1289
+ "special": true
1290
+ },
1291
+ "256157": {
1292
+ "content": "<extra_id_142>",
1293
+ "lstrip": false,
1294
+ "normalized": false,
1295
+ "rstrip": false,
1296
+ "single_word": false,
1297
+ "special": true
1298
+ },
1299
+ "256158": {
1300
+ "content": "<extra_id_141>",
1301
+ "lstrip": false,
1302
+ "normalized": false,
1303
+ "rstrip": false,
1304
+ "single_word": false,
1305
+ "special": true
1306
+ },
1307
+ "256159": {
1308
+ "content": "<extra_id_140>",
1309
+ "lstrip": false,
1310
+ "normalized": false,
1311
+ "rstrip": false,
1312
+ "single_word": false,
1313
+ "special": true
1314
+ },
1315
+ "256160": {
1316
+ "content": "<extra_id_139>",
1317
+ "lstrip": false,
1318
+ "normalized": false,
1319
+ "rstrip": false,
1320
+ "single_word": false,
1321
+ "special": true
1322
+ },
1323
+ "256161": {
1324
+ "content": "<extra_id_138>",
1325
+ "lstrip": false,
1326
+ "normalized": false,
1327
+ "rstrip": false,
1328
+ "single_word": false,
1329
+ "special": true
1330
+ },
1331
+ "256162": {
1332
+ "content": "<extra_id_137>",
1333
+ "lstrip": false,
1334
+ "normalized": false,
1335
+ "rstrip": false,
1336
+ "single_word": false,
1337
+ "special": true
1338
+ },
1339
+ "256163": {
1340
+ "content": "<extra_id_136>",
1341
+ "lstrip": false,
1342
+ "normalized": false,
1343
+ "rstrip": false,
1344
+ "single_word": false,
1345
+ "special": true
1346
+ },
1347
+ "256164": {
1348
+ "content": "<extra_id_135>",
1349
+ "lstrip": false,
1350
+ "normalized": false,
1351
+ "rstrip": false,
1352
+ "single_word": false,
1353
+ "special": true
1354
+ },
1355
+ "256165": {
1356
+ "content": "<extra_id_134>",
1357
+ "lstrip": false,
1358
+ "normalized": false,
1359
+ "rstrip": false,
1360
+ "single_word": false,
1361
+ "special": true
1362
+ },
1363
+ "256166": {
1364
+ "content": "<extra_id_133>",
1365
+ "lstrip": false,
1366
+ "normalized": false,
1367
+ "rstrip": false,
1368
+ "single_word": false,
1369
+ "special": true
1370
+ },
1371
+ "256167": {
1372
+ "content": "<extra_id_132>",
1373
+ "lstrip": false,
1374
+ "normalized": false,
1375
+ "rstrip": false,
1376
+ "single_word": false,
1377
+ "special": true
1378
+ },
1379
+ "256168": {
1380
+ "content": "<extra_id_131>",
1381
+ "lstrip": false,
1382
+ "normalized": false,
1383
+ "rstrip": false,
1384
+ "single_word": false,
1385
+ "special": true
1386
+ },
1387
+ "256169": {
1388
+ "content": "<extra_id_130>",
1389
+ "lstrip": false,
1390
+ "normalized": false,
1391
+ "rstrip": false,
1392
+ "single_word": false,
1393
+ "special": true
1394
+ },
1395
+ "256170": {
1396
+ "content": "<extra_id_129>",
1397
+ "lstrip": false,
1398
+ "normalized": false,
1399
+ "rstrip": false,
1400
+ "single_word": false,
1401
+ "special": true
1402
+ },
1403
+ "256171": {
1404
+ "content": "<extra_id_128>",
1405
+ "lstrip": false,
1406
+ "normalized": false,
1407
+ "rstrip": false,
1408
+ "single_word": false,
1409
+ "special": true
1410
+ },
1411
+ "256172": {
1412
+ "content": "<extra_id_127>",
1413
+ "lstrip": false,
1414
+ "normalized": false,
1415
+ "rstrip": false,
1416
+ "single_word": false,
1417
+ "special": true
1418
+ },
1419
+ "256173": {
1420
+ "content": "<extra_id_126>",
1421
+ "lstrip": false,
1422
+ "normalized": false,
1423
+ "rstrip": false,
1424
+ "single_word": false,
1425
+ "special": true
1426
+ },
1427
+ "256174": {
1428
+ "content": "<extra_id_125>",
1429
+ "lstrip": false,
1430
+ "normalized": false,
1431
+ "rstrip": false,
1432
+ "single_word": false,
1433
+ "special": true
1434
+ },
1435
+ "256175": {
1436
+ "content": "<extra_id_124>",
1437
+ "lstrip": false,
1438
+ "normalized": false,
1439
+ "rstrip": false,
1440
+ "single_word": false,
1441
+ "special": true
1442
+ },
1443
+ "256176": {
1444
+ "content": "<extra_id_123>",
1445
+ "lstrip": false,
1446
+ "normalized": false,
1447
+ "rstrip": false,
1448
+ "single_word": false,
1449
+ "special": true
1450
+ },
1451
+ "256177": {
1452
+ "content": "<extra_id_122>",
1453
+ "lstrip": false,
1454
+ "normalized": false,
1455
+ "rstrip": false,
1456
+ "single_word": false,
1457
+ "special": true
1458
+ },
1459
+ "256178": {
1460
+ "content": "<extra_id_121>",
1461
+ "lstrip": false,
1462
+ "normalized": false,
1463
+ "rstrip": false,
1464
+ "single_word": false,
1465
+ "special": true
1466
+ },
1467
+ "256179": {
1468
+ "content": "<extra_id_120>",
1469
+ "lstrip": false,
1470
+ "normalized": false,
1471
+ "rstrip": false,
1472
+ "single_word": false,
1473
+ "special": true
1474
+ },
1475
+ "256180": {
1476
+ "content": "<extra_id_119>",
1477
+ "lstrip": false,
1478
+ "normalized": false,
1479
+ "rstrip": false,
1480
+ "single_word": false,
1481
+ "special": true
1482
+ },
1483
+ "256181": {
1484
+ "content": "<extra_id_118>",
1485
+ "lstrip": false,
1486
+ "normalized": false,
1487
+ "rstrip": false,
1488
+ "single_word": false,
1489
+ "special": true
1490
+ },
1491
+ "256182": {
1492
+ "content": "<extra_id_117>",
1493
+ "lstrip": false,
1494
+ "normalized": false,
1495
+ "rstrip": false,
1496
+ "single_word": false,
1497
+ "special": true
1498
+ },
1499
+ "256183": {
1500
+ "content": "<extra_id_116>",
1501
+ "lstrip": false,
1502
+ "normalized": false,
1503
+ "rstrip": false,
1504
+ "single_word": false,
1505
+ "special": true
1506
+ },
1507
+ "256184": {
1508
+ "content": "<extra_id_115>",
1509
+ "lstrip": false,
1510
+ "normalized": false,
1511
+ "rstrip": false,
1512
+ "single_word": false,
1513
+ "special": true
1514
+ },
1515
+ "256185": {
1516
+ "content": "<extra_id_114>",
1517
+ "lstrip": false,
1518
+ "normalized": false,
1519
+ "rstrip": false,
1520
+ "single_word": false,
1521
+ "special": true
1522
+ },
1523
+ "256186": {
1524
+ "content": "<extra_id_113>",
1525
+ "lstrip": false,
1526
+ "normalized": false,
1527
+ "rstrip": false,
1528
+ "single_word": false,
1529
+ "special": true
1530
+ },
1531
+ "256187": {
1532
+ "content": "<extra_id_112>",
1533
+ "lstrip": false,
1534
+ "normalized": false,
1535
+ "rstrip": false,
1536
+ "single_word": false,
1537
+ "special": true
1538
+ },
1539
+ "256188": {
1540
+ "content": "<extra_id_111>",
1541
+ "lstrip": false,
1542
+ "normalized": false,
1543
+ "rstrip": false,
1544
+ "single_word": false,
1545
+ "special": true
1546
+ },
1547
+ "256189": {
1548
+ "content": "<extra_id_110>",
1549
+ "lstrip": false,
1550
+ "normalized": false,
1551
+ "rstrip": false,
1552
+ "single_word": false,
1553
+ "special": true
1554
+ },
1555
+ "256190": {
1556
+ "content": "<extra_id_109>",
1557
+ "lstrip": false,
1558
+ "normalized": false,
1559
+ "rstrip": false,
1560
+ "single_word": false,
1561
+ "special": true
1562
+ },
1563
+ "256191": {
1564
+ "content": "<extra_id_108>",
1565
+ "lstrip": false,
1566
+ "normalized": false,
1567
+ "rstrip": false,
1568
+ "single_word": false,
1569
+ "special": true
1570
+ },
1571
+ "256192": {
1572
+ "content": "<extra_id_107>",
1573
+ "lstrip": false,
1574
+ "normalized": false,
1575
+ "rstrip": false,
1576
+ "single_word": false,
1577
+ "special": true
1578
+ },
1579
+ "256193": {
1580
+ "content": "<extra_id_106>",
1581
+ "lstrip": false,
1582
+ "normalized": false,
1583
+ "rstrip": false,
1584
+ "single_word": false,
1585
+ "special": true
1586
+ },
1587
+ "256194": {
1588
+ "content": "<extra_id_105>",
1589
+ "lstrip": false,
1590
+ "normalized": false,
1591
+ "rstrip": false,
1592
+ "single_word": false,
1593
+ "special": true
1594
+ },
1595
+ "256195": {
1596
+ "content": "<extra_id_104>",
1597
+ "lstrip": false,
1598
+ "normalized": false,
1599
+ "rstrip": false,
1600
+ "single_word": false,
1601
+ "special": true
1602
+ },
1603
+ "256196": {
1604
+ "content": "<extra_id_103>",
1605
+ "lstrip": false,
1606
+ "normalized": false,
1607
+ "rstrip": false,
1608
+ "single_word": false,
1609
+ "special": true
1610
+ },
1611
+ "256197": {
1612
+ "content": "<extra_id_102>",
1613
+ "lstrip": false,
1614
+ "normalized": false,
1615
+ "rstrip": false,
1616
+ "single_word": false,
1617
+ "special": true
1618
+ },
1619
+ "256198": {
1620
+ "content": "<extra_id_101>",
1621
+ "lstrip": false,
1622
+ "normalized": false,
1623
+ "rstrip": false,
1624
+ "single_word": false,
1625
+ "special": true
1626
+ },
1627
+ "256199": {
1628
+ "content": "<extra_id_100>",
1629
+ "lstrip": false,
1630
+ "normalized": false,
1631
+ "rstrip": false,
1632
+ "single_word": false,
1633
+ "special": true
1634
+ },
1635
+ "256200": {
1636
+ "content": "<extra_id_99>",
1637
+ "lstrip": false,
1638
+ "normalized": false,
1639
+ "rstrip": false,
1640
+ "single_word": false,
1641
+ "special": true
1642
+ },
1643
+ "256201": {
1644
+ "content": "<extra_id_98>",
1645
+ "lstrip": false,
1646
+ "normalized": false,
1647
+ "rstrip": false,
1648
+ "single_word": false,
1649
+ "special": true
1650
+ },
1651
+ "256202": {
1652
+ "content": "<extra_id_97>",
1653
+ "lstrip": false,
1654
+ "normalized": false,
1655
+ "rstrip": false,
1656
+ "single_word": false,
1657
+ "special": true
1658
+ },
1659
+ "256203": {
1660
+ "content": "<extra_id_96>",
1661
+ "lstrip": false,
1662
+ "normalized": false,
1663
+ "rstrip": false,
1664
+ "single_word": false,
1665
+ "special": true
1666
+ },
1667
+ "256204": {
1668
+ "content": "<extra_id_95>",
1669
+ "lstrip": false,
1670
+ "normalized": false,
1671
+ "rstrip": false,
1672
+ "single_word": false,
1673
+ "special": true
1674
+ },
1675
+ "256205": {
1676
+ "content": "<extra_id_94>",
1677
+ "lstrip": false,
1678
+ "normalized": false,
1679
+ "rstrip": false,
1680
+ "single_word": false,
1681
+ "special": true
1682
+ },
1683
+ "256206": {
1684
+ "content": "<extra_id_93>",
1685
+ "lstrip": false,
1686
+ "normalized": false,
1687
+ "rstrip": false,
1688
+ "single_word": false,
1689
+ "special": true
1690
+ },
1691
+ "256207": {
1692
+ "content": "<extra_id_92>",
1693
+ "lstrip": false,
1694
+ "normalized": false,
1695
+ "rstrip": false,
1696
+ "single_word": false,
1697
+ "special": true
1698
+ },
1699
+ "256208": {
1700
+ "content": "<extra_id_91>",
1701
+ "lstrip": false,
1702
+ "normalized": false,
1703
+ "rstrip": false,
1704
+ "single_word": false,
1705
+ "special": true
1706
+ },
1707
+ "256209": {
1708
+ "content": "<extra_id_90>",
1709
+ "lstrip": false,
1710
+ "normalized": false,
1711
+ "rstrip": false,
1712
+ "single_word": false,
1713
+ "special": true
1714
+ },
1715
+ "256210": {
1716
+ "content": "<extra_id_89>",
1717
+ "lstrip": false,
1718
+ "normalized": false,
1719
+ "rstrip": false,
1720
+ "single_word": false,
1721
+ "special": true
1722
+ },
1723
+ "256211": {
1724
+ "content": "<extra_id_88>",
1725
+ "lstrip": false,
1726
+ "normalized": false,
1727
+ "rstrip": false,
1728
+ "single_word": false,
1729
+ "special": true
1730
+ },
1731
+ "256212": {
1732
+ "content": "<extra_id_87>",
1733
+ "lstrip": false,
1734
+ "normalized": false,
1735
+ "rstrip": false,
1736
+ "single_word": false,
1737
+ "special": true
1738
+ },
1739
+ "256213": {
1740
+ "content": "<extra_id_86>",
1741
+ "lstrip": false,
1742
+ "normalized": false,
1743
+ "rstrip": false,
1744
+ "single_word": false,
1745
+ "special": true
1746
+ },
1747
+ "256214": {
1748
+ "content": "<extra_id_85>",
1749
+ "lstrip": false,
1750
+ "normalized": false,
1751
+ "rstrip": false,
1752
+ "single_word": false,
1753
+ "special": true
1754
+ },
1755
+ "256215": {
1756
+ "content": "<extra_id_84>",
1757
+ "lstrip": false,
1758
+ "normalized": false,
1759
+ "rstrip": false,
1760
+ "single_word": false,
1761
+ "special": true
1762
+ },
1763
+ "256216": {
1764
+ "content": "<extra_id_83>",
1765
+ "lstrip": false,
1766
+ "normalized": false,
1767
+ "rstrip": false,
1768
+ "single_word": false,
1769
+ "special": true
1770
+ },
1771
+ "256217": {
1772
+ "content": "<extra_id_82>",
1773
+ "lstrip": false,
1774
+ "normalized": false,
1775
+ "rstrip": false,
1776
+ "single_word": false,
1777
+ "special": true
1778
+ },
1779
+ "256218": {
1780
+ "content": "<extra_id_81>",
1781
+ "lstrip": false,
1782
+ "normalized": false,
1783
+ "rstrip": false,
1784
+ "single_word": false,
1785
+ "special": true
1786
+ },
1787
+ "256219": {
1788
+ "content": "<extra_id_80>",
1789
+ "lstrip": false,
1790
+ "normalized": false,
1791
+ "rstrip": false,
1792
+ "single_word": false,
1793
+ "special": true
1794
+ },
1795
+ "256220": {
1796
+ "content": "<extra_id_79>",
1797
+ "lstrip": false,
1798
+ "normalized": false,
1799
+ "rstrip": false,
1800
+ "single_word": false,
1801
+ "special": true
1802
+ },
1803
+ "256221": {
1804
+ "content": "<extra_id_78>",
1805
+ "lstrip": false,
1806
+ "normalized": false,
1807
+ "rstrip": false,
1808
+ "single_word": false,
1809
+ "special": true
1810
+ },
1811
+ "256222": {
1812
+ "content": "<extra_id_77>",
1813
+ "lstrip": false,
1814
+ "normalized": false,
1815
+ "rstrip": false,
1816
+ "single_word": false,
1817
+ "special": true
1818
+ },
1819
+ "256223": {
1820
+ "content": "<extra_id_76>",
1821
+ "lstrip": false,
1822
+ "normalized": false,
1823
+ "rstrip": false,
1824
+ "single_word": false,
1825
+ "special": true
1826
+ },
1827
+ "256224": {
1828
+ "content": "<extra_id_75>",
1829
+ "lstrip": false,
1830
+ "normalized": false,
1831
+ "rstrip": false,
1832
+ "single_word": false,
1833
+ "special": true
1834
+ },
1835
+ "256225": {
1836
+ "content": "<extra_id_74>",
1837
+ "lstrip": false,
1838
+ "normalized": false,
1839
+ "rstrip": false,
1840
+ "single_word": false,
1841
+ "special": true
1842
+ },
1843
+ "256226": {
1844
+ "content": "<extra_id_73>",
1845
+ "lstrip": false,
1846
+ "normalized": false,
1847
+ "rstrip": false,
1848
+ "single_word": false,
1849
+ "special": true
1850
+ },
1851
+ "256227": {
1852
+ "content": "<extra_id_72>",
1853
+ "lstrip": false,
1854
+ "normalized": false,
1855
+ "rstrip": false,
1856
+ "single_word": false,
1857
+ "special": true
1858
+ },
1859
+ "256228": {
1860
+ "content": "<extra_id_71>",
1861
+ "lstrip": false,
1862
+ "normalized": false,
1863
+ "rstrip": false,
1864
+ "single_word": false,
1865
+ "special": true
1866
+ },
1867
+ "256229": {
1868
+ "content": "<extra_id_70>",
1869
+ "lstrip": false,
1870
+ "normalized": false,
1871
+ "rstrip": false,
1872
+ "single_word": false,
1873
+ "special": true
1874
+ },
1875
+ "256230": {
1876
+ "content": "<extra_id_69>",
1877
+ "lstrip": false,
1878
+ "normalized": false,
1879
+ "rstrip": false,
1880
+ "single_word": false,
1881
+ "special": true
1882
+ },
1883
+ "256231": {
1884
+ "content": "<extra_id_68>",
1885
+ "lstrip": false,
1886
+ "normalized": false,
1887
+ "rstrip": false,
1888
+ "single_word": false,
1889
+ "special": true
1890
+ },
1891
+ "256232": {
1892
+ "content": "<extra_id_67>",
1893
+ "lstrip": false,
1894
+ "normalized": false,
1895
+ "rstrip": false,
1896
+ "single_word": false,
1897
+ "special": true
1898
+ },
1899
+ "256233": {
1900
+ "content": "<extra_id_66>",
1901
+ "lstrip": false,
1902
+ "normalized": false,
1903
+ "rstrip": false,
1904
+ "single_word": false,
1905
+ "special": true
1906
+ },
1907
+ "256234": {
1908
+ "content": "<extra_id_65>",
1909
+ "lstrip": false,
1910
+ "normalized": false,
1911
+ "rstrip": false,
1912
+ "single_word": false,
1913
+ "special": true
1914
+ },
1915
+ "256235": {
1916
+ "content": "<extra_id_64>",
1917
+ "lstrip": false,
1918
+ "normalized": false,
1919
+ "rstrip": false,
1920
+ "single_word": false,
1921
+ "special": true
1922
+ },
1923
+ "256236": {
1924
+ "content": "<extra_id_63>",
1925
+ "lstrip": false,
1926
+ "normalized": false,
1927
+ "rstrip": false,
1928
+ "single_word": false,
1929
+ "special": true
1930
+ },
1931
+ "256237": {
1932
+ "content": "<extra_id_62>",
1933
+ "lstrip": false,
1934
+ "normalized": false,
1935
+ "rstrip": false,
1936
+ "single_word": false,
1937
+ "special": true
1938
+ },
1939
+ "256238": {
1940
+ "content": "<extra_id_61>",
1941
+ "lstrip": false,
1942
+ "normalized": false,
1943
+ "rstrip": false,
1944
+ "single_word": false,
1945
+ "special": true
1946
+ },
1947
+ "256239": {
1948
+ "content": "<extra_id_60>",
1949
+ "lstrip": false,
1950
+ "normalized": false,
1951
+ "rstrip": false,
1952
+ "single_word": false,
1953
+ "special": true
1954
+ },
1955
+ "256240": {
1956
+ "content": "<extra_id_59>",
1957
+ "lstrip": false,
1958
+ "normalized": false,
1959
+ "rstrip": false,
1960
+ "single_word": false,
1961
+ "special": true
1962
+ },
1963
+ "256241": {
1964
+ "content": "<extra_id_58>",
1965
+ "lstrip": false,
1966
+ "normalized": false,
1967
+ "rstrip": false,
1968
+ "single_word": false,
1969
+ "special": true
1970
+ },
1971
+ "256242": {
1972
+ "content": "<extra_id_57>",
1973
+ "lstrip": false,
1974
+ "normalized": false,
1975
+ "rstrip": false,
1976
+ "single_word": false,
1977
+ "special": true
1978
+ },
1979
+ "256243": {
1980
+ "content": "<extra_id_56>",
1981
+ "lstrip": false,
1982
+ "normalized": false,
1983
+ "rstrip": false,
1984
+ "single_word": false,
1985
+ "special": true
1986
+ },
1987
+ "256244": {
1988
+ "content": "<extra_id_55>",
1989
+ "lstrip": false,
1990
+ "normalized": false,
1991
+ "rstrip": false,
1992
+ "single_word": false,
1993
+ "special": true
1994
+ },
1995
+ "256245": {
1996
+ "content": "<extra_id_54>",
1997
+ "lstrip": false,
1998
+ "normalized": false,
1999
+ "rstrip": false,
2000
+ "single_word": false,
2001
+ "special": true
2002
+ },
2003
+ "256246": {
2004
+ "content": "<extra_id_53>",
2005
+ "lstrip": false,
2006
+ "normalized": false,
2007
+ "rstrip": false,
2008
+ "single_word": false,
2009
+ "special": true
2010
+ },
2011
+ "256247": {
2012
+ "content": "<extra_id_52>",
2013
+ "lstrip": false,
2014
+ "normalized": false,
2015
+ "rstrip": false,
2016
+ "single_word": false,
2017
+ "special": true
2018
+ },
2019
+ "256248": {
2020
+ "content": "<extra_id_51>",
2021
+ "lstrip": false,
2022
+ "normalized": false,
2023
+ "rstrip": false,
2024
+ "single_word": false,
2025
+ "special": true
2026
+ },
2027
+ "256249": {
2028
+ "content": "<extra_id_50>",
2029
+ "lstrip": false,
2030
+ "normalized": false,
2031
+ "rstrip": false,
2032
+ "single_word": false,
2033
+ "special": true
2034
+ },
2035
+ "256250": {
2036
+ "content": "<extra_id_49>",
2037
+ "lstrip": false,
2038
+ "normalized": false,
2039
+ "rstrip": false,
2040
+ "single_word": false,
2041
+ "special": true
2042
+ },
2043
+ "256251": {
2044
+ "content": "<extra_id_48>",
2045
+ "lstrip": false,
2046
+ "normalized": false,
2047
+ "rstrip": false,
2048
+ "single_word": false,
2049
+ "special": true
2050
+ },
2051
+ "256252": {
2052
+ "content": "<extra_id_47>",
2053
+ "lstrip": false,
2054
+ "normalized": false,
2055
+ "rstrip": false,
2056
+ "single_word": false,
2057
+ "special": true
2058
+ },
2059
+ "256253": {
2060
+ "content": "<extra_id_46>",
2061
+ "lstrip": false,
2062
+ "normalized": false,
2063
+ "rstrip": false,
2064
+ "single_word": false,
2065
+ "special": true
2066
+ },
2067
+ "256254": {
2068
+ "content": "<extra_id_45>",
2069
+ "lstrip": false,
2070
+ "normalized": false,
2071
+ "rstrip": false,
2072
+ "single_word": false,
2073
+ "special": true
2074
+ },
2075
+ "256255": {
2076
+ "content": "<extra_id_44>",
2077
+ "lstrip": false,
2078
+ "normalized": false,
2079
+ "rstrip": false,
2080
+ "single_word": false,
2081
+ "special": true
2082
+ },
2083
+ "256256": {
2084
+ "content": "<extra_id_43>",
2085
+ "lstrip": false,
2086
+ "normalized": false,
2087
+ "rstrip": false,
2088
+ "single_word": false,
2089
+ "special": true
2090
+ },
2091
+ "256257": {
2092
+ "content": "<extra_id_42>",
2093
+ "lstrip": false,
2094
+ "normalized": false,
2095
+ "rstrip": false,
2096
+ "single_word": false,
2097
+ "special": true
2098
+ },
2099
+ "256258": {
2100
+ "content": "<extra_id_41>",
2101
+ "lstrip": false,
2102
+ "normalized": false,
2103
+ "rstrip": false,
2104
+ "single_word": false,
2105
+ "special": true
2106
+ },
2107
+ "256259": {
2108
+ "content": "<extra_id_40>",
2109
+ "lstrip": false,
2110
+ "normalized": false,
2111
+ "rstrip": false,
2112
+ "single_word": false,
2113
+ "special": true
2114
+ },
2115
+ "256260": {
2116
+ "content": "<extra_id_39>",
2117
+ "lstrip": false,
2118
+ "normalized": false,
2119
+ "rstrip": false,
2120
+ "single_word": false,
2121
+ "special": true
2122
+ },
2123
+ "256261": {
2124
+ "content": "<extra_id_38>",
2125
+ "lstrip": false,
2126
+ "normalized": false,
2127
+ "rstrip": false,
2128
+ "single_word": false,
2129
+ "special": true
2130
+ },
2131
+ "256262": {
2132
+ "content": "<extra_id_37>",
2133
+ "lstrip": false,
2134
+ "normalized": false,
2135
+ "rstrip": false,
2136
+ "single_word": false,
2137
+ "special": true
2138
+ },
2139
+ "256263": {
2140
+ "content": "<extra_id_36>",
2141
+ "lstrip": false,
2142
+ "normalized": false,
2143
+ "rstrip": false,
2144
+ "single_word": false,
2145
+ "special": true
2146
+ },
2147
+ "256264": {
2148
+ "content": "<extra_id_35>",
2149
+ "lstrip": false,
2150
+ "normalized": false,
2151
+ "rstrip": false,
2152
+ "single_word": false,
2153
+ "special": true
2154
+ },
2155
+ "256265": {
2156
+ "content": "<extra_id_34>",
2157
+ "lstrip": false,
2158
+ "normalized": false,
2159
+ "rstrip": false,
2160
+ "single_word": false,
2161
+ "special": true
2162
+ },
2163
+ "256266": {
2164
+ "content": "<extra_id_33>",
2165
+ "lstrip": false,
2166
+ "normalized": false,
2167
+ "rstrip": false,
2168
+ "single_word": false,
2169
+ "special": true
2170
+ },
2171
+ "256267": {
2172
+ "content": "<extra_id_32>",
2173
+ "lstrip": false,
2174
+ "normalized": false,
2175
+ "rstrip": false,
2176
+ "single_word": false,
2177
+ "special": true
2178
+ },
2179
+ "256268": {
2180
+ "content": "<extra_id_31>",
2181
+ "lstrip": false,
2182
+ "normalized": false,
2183
+ "rstrip": false,
2184
+ "single_word": false,
2185
+ "special": true
2186
+ },
2187
+ "256269": {
2188
+ "content": "<extra_id_30>",
2189
+ "lstrip": false,
2190
+ "normalized": false,
2191
+ "rstrip": false,
2192
+ "single_word": false,
2193
+ "special": true
2194
+ },
2195
+ "256270": {
2196
+ "content": "<extra_id_29>",
2197
+ "lstrip": false,
2198
+ "normalized": false,
2199
+ "rstrip": false,
2200
+ "single_word": false,
2201
+ "special": true
2202
+ },
2203
+ "256271": {
2204
+ "content": "<extra_id_28>",
2205
+ "lstrip": false,
2206
+ "normalized": false,
2207
+ "rstrip": false,
2208
+ "single_word": false,
2209
+ "special": true
2210
+ },
2211
+ "256272": {
2212
+ "content": "<extra_id_27>",
2213
+ "lstrip": false,
2214
+ "normalized": false,
2215
+ "rstrip": false,
2216
+ "single_word": false,
2217
+ "special": true
2218
+ },
2219
+ "256273": {
2220
+ "content": "<extra_id_26>",
2221
+ "lstrip": false,
2222
+ "normalized": false,
2223
+ "rstrip": false,
2224
+ "single_word": false,
2225
+ "special": true
2226
+ },
2227
+ "256274": {
2228
+ "content": "<extra_id_25>",
2229
+ "lstrip": false,
2230
+ "normalized": false,
2231
+ "rstrip": false,
2232
+ "single_word": false,
2233
+ "special": true
2234
+ },
2235
+ "256275": {
2236
+ "content": "<extra_id_24>",
2237
+ "lstrip": false,
2238
+ "normalized": false,
2239
+ "rstrip": false,
2240
+ "single_word": false,
2241
+ "special": true
2242
+ },
2243
+ "256276": {
2244
+ "content": "<extra_id_23>",
2245
+ "lstrip": false,
2246
+ "normalized": false,
2247
+ "rstrip": false,
2248
+ "single_word": false,
2249
+ "special": true
2250
+ },
2251
+ "256277": {
2252
+ "content": "<extra_id_22>",
2253
+ "lstrip": false,
2254
+ "normalized": false,
2255
+ "rstrip": false,
2256
+ "single_word": false,
2257
+ "special": true
2258
+ },
2259
+ "256278": {
2260
+ "content": "<extra_id_21>",
2261
+ "lstrip": false,
2262
+ "normalized": false,
2263
+ "rstrip": false,
2264
+ "single_word": false,
2265
+ "special": true
2266
+ },
2267
+ "256279": {
2268
+ "content": "<extra_id_20>",
2269
+ "lstrip": false,
2270
+ "normalized": false,
2271
+ "rstrip": false,
2272
+ "single_word": false,
2273
+ "special": true
2274
+ },
2275
+ "256280": {
2276
+ "content": "<extra_id_19>",
2277
+ "lstrip": false,
2278
+ "normalized": false,
2279
+ "rstrip": false,
2280
+ "single_word": false,
2281
+ "special": true
2282
+ },
2283
+ "256281": {
2284
+ "content": "<extra_id_18>",
2285
+ "lstrip": false,
2286
+ "normalized": false,
2287
+ "rstrip": false,
2288
+ "single_word": false,
2289
+ "special": true
2290
+ },
2291
+ "256282": {
2292
+ "content": "<extra_id_17>",
2293
+ "lstrip": false,
2294
+ "normalized": false,
2295
+ "rstrip": false,
2296
+ "single_word": false,
2297
+ "special": true
2298
+ },
2299
+ "256283": {
2300
+ "content": "<extra_id_16>",
2301
+ "lstrip": false,
2302
+ "normalized": false,
2303
+ "rstrip": false,
2304
+ "single_word": false,
2305
+ "special": true
2306
+ },
2307
+ "256284": {
2308
+ "content": "<extra_id_15>",
2309
+ "lstrip": false,
2310
+ "normalized": false,
2311
+ "rstrip": false,
2312
+ "single_word": false,
2313
+ "special": true
2314
+ },
2315
+ "256285": {
2316
+ "content": "<extra_id_14>",
2317
+ "lstrip": false,
2318
+ "normalized": false,
2319
+ "rstrip": false,
2320
+ "single_word": false,
2321
+ "special": true
2322
+ },
2323
+ "256286": {
2324
+ "content": "<extra_id_13>",
2325
+ "lstrip": false,
2326
+ "normalized": false,
2327
+ "rstrip": false,
2328
+ "single_word": false,
2329
+ "special": true
2330
+ },
2331
+ "256287": {
2332
+ "content": "<extra_id_12>",
2333
+ "lstrip": false,
2334
+ "normalized": false,
2335
+ "rstrip": false,
2336
+ "single_word": false,
2337
+ "special": true
2338
+ },
2339
+ "256288": {
2340
+ "content": "<extra_id_11>",
2341
+ "lstrip": false,
2342
+ "normalized": false,
2343
+ "rstrip": false,
2344
+ "single_word": false,
2345
+ "special": true
2346
+ },
2347
+ "256289": {
2348
+ "content": "<extra_id_10>",
2349
+ "lstrip": false,
2350
+ "normalized": false,
2351
+ "rstrip": false,
2352
+ "single_word": false,
2353
+ "special": true
2354
+ },
2355
+ "256290": {
2356
+ "content": "<extra_id_9>",
2357
+ "lstrip": false,
2358
+ "normalized": false,
2359
+ "rstrip": false,
2360
+ "single_word": false,
2361
+ "special": true
2362
+ },
2363
+ "256291": {
2364
+ "content": "<extra_id_8>",
2365
+ "lstrip": false,
2366
+ "normalized": false,
2367
+ "rstrip": false,
2368
+ "single_word": false,
2369
+ "special": true
2370
+ },
2371
+ "256292": {
2372
+ "content": "<extra_id_7>",
2373
+ "lstrip": false,
2374
+ "normalized": false,
2375
+ "rstrip": false,
2376
+ "single_word": false,
2377
+ "special": true
2378
+ },
2379
+ "256293": {
2380
+ "content": "<extra_id_6>",
2381
+ "lstrip": false,
2382
+ "normalized": false,
2383
+ "rstrip": false,
2384
+ "single_word": false,
2385
+ "special": true
2386
+ },
2387
+ "256294": {
2388
+ "content": "<extra_id_5>",
2389
+ "lstrip": false,
2390
+ "normalized": false,
2391
+ "rstrip": false,
2392
+ "single_word": false,
2393
+ "special": true
2394
+ },
2395
+ "256295": {
2396
+ "content": "<extra_id_4>",
2397
+ "lstrip": false,
2398
+ "normalized": false,
2399
+ "rstrip": false,
2400
+ "single_word": false,
2401
+ "special": true
2402
+ },
2403
+ "256296": {
2404
+ "content": "<extra_id_3>",
2405
+ "lstrip": false,
2406
+ "normalized": false,
2407
+ "rstrip": false,
2408
+ "single_word": false,
2409
+ "special": true
2410
+ },
2411
+ "256297": {
2412
+ "content": "<extra_id_2>",
2413
+ "lstrip": false,
2414
+ "normalized": false,
2415
+ "rstrip": false,
2416
+ "single_word": false,
2417
+ "special": true
2418
+ },
2419
+ "256298": {
2420
+ "content": "<extra_id_1>",
2421
+ "lstrip": false,
2422
+ "normalized": false,
2423
+ "rstrip": false,
2424
+ "single_word": false,
2425
+ "special": true
2426
+ },
2427
+ "256299": {
2428
+ "content": "<extra_id_0>",
2429
+ "lstrip": false,
2430
+ "normalized": false,
2431
+ "rstrip": false,
2432
+ "single_word": false,
2433
+ "special": true
2434
+ }
2435
+ },
2436
+ "additional_special_tokens": [
2437
+ "<extra_id_0>",
2438
+ "<extra_id_1>",
2439
+ "<extra_id_2>",
2440
+ "<extra_id_3>",
2441
+ "<extra_id_4>",
2442
+ "<extra_id_5>",
2443
+ "<extra_id_6>",
2444
+ "<extra_id_7>",
2445
+ "<extra_id_8>",
2446
+ "<extra_id_9>",
2447
+ "<extra_id_10>",
2448
+ "<extra_id_11>",
2449
+ "<extra_id_12>",
2450
+ "<extra_id_13>",
2451
+ "<extra_id_14>",
2452
+ "<extra_id_15>",
2453
+ "<extra_id_16>",
2454
+ "<extra_id_17>",
2455
+ "<extra_id_18>",
2456
+ "<extra_id_19>",
2457
+ "<extra_id_20>",
2458
+ "<extra_id_21>",
2459
+ "<extra_id_22>",
2460
+ "<extra_id_23>",
2461
+ "<extra_id_24>",
2462
+ "<extra_id_25>",
2463
+ "<extra_id_26>",
2464
+ "<extra_id_27>",
2465
+ "<extra_id_28>",
2466
+ "<extra_id_29>",
2467
+ "<extra_id_30>",
2468
+ "<extra_id_31>",
2469
+ "<extra_id_32>",
2470
+ "<extra_id_33>",
2471
+ "<extra_id_34>",
2472
+ "<extra_id_35>",
2473
+ "<extra_id_36>",
2474
+ "<extra_id_37>",
2475
+ "<extra_id_38>",
2476
+ "<extra_id_39>",
2477
+ "<extra_id_40>",
2478
+ "<extra_id_41>",
2479
+ "<extra_id_42>",
2480
+ "<extra_id_43>",
2481
+ "<extra_id_44>",
2482
+ "<extra_id_45>",
2483
+ "<extra_id_46>",
2484
+ "<extra_id_47>",
2485
+ "<extra_id_48>",
2486
+ "<extra_id_49>",
2487
+ "<extra_id_50>",
2488
+ "<extra_id_51>",
2489
+ "<extra_id_52>",
2490
+ "<extra_id_53>",
2491
+ "<extra_id_54>",
2492
+ "<extra_id_55>",
2493
+ "<extra_id_56>",
2494
+ "<extra_id_57>",
2495
+ "<extra_id_58>",
2496
+ "<extra_id_59>",
2497
+ "<extra_id_60>",
2498
+ "<extra_id_61>",
2499
+ "<extra_id_62>",
2500
+ "<extra_id_63>",
2501
+ "<extra_id_64>",
2502
+ "<extra_id_65>",
2503
+ "<extra_id_66>",
2504
+ "<extra_id_67>",
2505
+ "<extra_id_68>",
2506
+ "<extra_id_69>",
2507
+ "<extra_id_70>",
2508
+ "<extra_id_71>",
2509
+ "<extra_id_72>",
2510
+ "<extra_id_73>",
2511
+ "<extra_id_74>",
2512
+ "<extra_id_75>",
2513
+ "<extra_id_76>",
2514
+ "<extra_id_77>",
2515
+ "<extra_id_78>",
2516
+ "<extra_id_79>",
2517
+ "<extra_id_80>",
2518
+ "<extra_id_81>",
2519
+ "<extra_id_82>",
2520
+ "<extra_id_83>",
2521
+ "<extra_id_84>",
2522
+ "<extra_id_85>",
2523
+ "<extra_id_86>",
2524
+ "<extra_id_87>",
2525
+ "<extra_id_88>",
2526
+ "<extra_id_89>",
2527
+ "<extra_id_90>",
2528
+ "<extra_id_91>",
2529
+ "<extra_id_92>",
2530
+ "<extra_id_93>",
2531
+ "<extra_id_94>",
2532
+ "<extra_id_95>",
2533
+ "<extra_id_96>",
2534
+ "<extra_id_97>",
2535
+ "<extra_id_98>",
2536
+ "<extra_id_99>",
2537
+ "<extra_id_100>",
2538
+ "<extra_id_101>",
2539
+ "<extra_id_102>",
2540
+ "<extra_id_103>",
2541
+ "<extra_id_104>",
2542
+ "<extra_id_105>",
2543
+ "<extra_id_106>",
2544
+ "<extra_id_107>",
2545
+ "<extra_id_108>",
2546
+ "<extra_id_109>",
2547
+ "<extra_id_110>",
2548
+ "<extra_id_111>",
2549
+ "<extra_id_112>",
2550
+ "<extra_id_113>",
2551
+ "<extra_id_114>",
2552
+ "<extra_id_115>",
2553
+ "<extra_id_116>",
2554
+ "<extra_id_117>",
2555
+ "<extra_id_118>",
2556
+ "<extra_id_119>",
2557
+ "<extra_id_120>",
2558
+ "<extra_id_121>",
2559
+ "<extra_id_122>",
2560
+ "<extra_id_123>",
2561
+ "<extra_id_124>",
2562
+ "<extra_id_125>",
2563
+ "<extra_id_126>",
2564
+ "<extra_id_127>",
2565
+ "<extra_id_128>",
2566
+ "<extra_id_129>",
2567
+ "<extra_id_130>",
2568
+ "<extra_id_131>",
2569
+ "<extra_id_132>",
2570
+ "<extra_id_133>",
2571
+ "<extra_id_134>",
2572
+ "<extra_id_135>",
2573
+ "<extra_id_136>",
2574
+ "<extra_id_137>",
2575
+ "<extra_id_138>",
2576
+ "<extra_id_139>",
2577
+ "<extra_id_140>",
2578
+ "<extra_id_141>",
2579
+ "<extra_id_142>",
2580
+ "<extra_id_143>",
2581
+ "<extra_id_144>",
2582
+ "<extra_id_145>",
2583
+ "<extra_id_146>",
2584
+ "<extra_id_147>",
2585
+ "<extra_id_148>",
2586
+ "<extra_id_149>",
2587
+ "<extra_id_150>",
2588
+ "<extra_id_151>",
2589
+ "<extra_id_152>",
2590
+ "<extra_id_153>",
2591
+ "<extra_id_154>",
2592
+ "<extra_id_155>",
2593
+ "<extra_id_156>",
2594
+ "<extra_id_157>",
2595
+ "<extra_id_158>",
2596
+ "<extra_id_159>",
2597
+ "<extra_id_160>",
2598
+ "<extra_id_161>",
2599
+ "<extra_id_162>",
2600
+ "<extra_id_163>",
2601
+ "<extra_id_164>",
2602
+ "<extra_id_165>",
2603
+ "<extra_id_166>",
2604
+ "<extra_id_167>",
2605
+ "<extra_id_168>",
2606
+ "<extra_id_169>",
2607
+ "<extra_id_170>",
2608
+ "<extra_id_171>",
2609
+ "<extra_id_172>",
2610
+ "<extra_id_173>",
2611
+ "<extra_id_174>",
2612
+ "<extra_id_175>",
2613
+ "<extra_id_176>",
2614
+ "<extra_id_177>",
2615
+ "<extra_id_178>",
2616
+ "<extra_id_179>",
2617
+ "<extra_id_180>",
2618
+ "<extra_id_181>",
2619
+ "<extra_id_182>",
2620
+ "<extra_id_183>",
2621
+ "<extra_id_184>",
2622
+ "<extra_id_185>",
2623
+ "<extra_id_186>",
2624
+ "<extra_id_187>",
2625
+ "<extra_id_188>",
2626
+ "<extra_id_189>",
2627
+ "<extra_id_190>",
2628
+ "<extra_id_191>",
2629
+ "<extra_id_192>",
2630
+ "<extra_id_193>",
2631
+ "<extra_id_194>",
2632
+ "<extra_id_195>",
2633
+ "<extra_id_196>",
2634
+ "<extra_id_197>",
2635
+ "<extra_id_198>",
2636
+ "<extra_id_199>",
2637
+ "<extra_id_200>",
2638
+ "<extra_id_201>",
2639
+ "<extra_id_202>",
2640
+ "<extra_id_203>",
2641
+ "<extra_id_204>",
2642
+ "<extra_id_205>",
2643
+ "<extra_id_206>",
2644
+ "<extra_id_207>",
2645
+ "<extra_id_208>",
2646
+ "<extra_id_209>",
2647
+ "<extra_id_210>",
2648
+ "<extra_id_211>",
2649
+ "<extra_id_212>",
2650
+ "<extra_id_213>",
2651
+ "<extra_id_214>",
2652
+ "<extra_id_215>",
2653
+ "<extra_id_216>",
2654
+ "<extra_id_217>",
2655
+ "<extra_id_218>",
2656
+ "<extra_id_219>",
2657
+ "<extra_id_220>",
2658
+ "<extra_id_221>",
2659
+ "<extra_id_222>",
2660
+ "<extra_id_223>",
2661
+ "<extra_id_224>",
2662
+ "<extra_id_225>",
2663
+ "<extra_id_226>",
2664
+ "<extra_id_227>",
2665
+ "<extra_id_228>",
2666
+ "<extra_id_229>",
2667
+ "<extra_id_230>",
2668
+ "<extra_id_231>",
2669
+ "<extra_id_232>",
2670
+ "<extra_id_233>",
2671
+ "<extra_id_234>",
2672
+ "<extra_id_235>",
2673
+ "<extra_id_236>",
2674
+ "<extra_id_237>",
2675
+ "<extra_id_238>",
2676
+ "<extra_id_239>",
2677
+ "<extra_id_240>",
2678
+ "<extra_id_241>",
2679
+ "<extra_id_242>",
2680
+ "<extra_id_243>",
2681
+ "<extra_id_244>",
2682
+ "<extra_id_245>",
2683
+ "<extra_id_246>",
2684
+ "<extra_id_247>",
2685
+ "<extra_id_248>",
2686
+ "<extra_id_249>",
2687
+ "<extra_id_250>",
2688
+ "<extra_id_251>",
2689
+ "<extra_id_252>",
2690
+ "<extra_id_253>",
2691
+ "<extra_id_254>",
2692
+ "<extra_id_255>",
2693
+ "<extra_id_256>",
2694
+ "<extra_id_257>",
2695
+ "<extra_id_258>",
2696
+ "<extra_id_259>",
2697
+ "<extra_id_260>",
2698
+ "<extra_id_261>",
2699
+ "<extra_id_262>",
2700
+ "<extra_id_263>",
2701
+ "<extra_id_264>",
2702
+ "<extra_id_265>",
2703
+ "<extra_id_266>",
2704
+ "<extra_id_267>",
2705
+ "<extra_id_268>",
2706
+ "<extra_id_269>",
2707
+ "<extra_id_270>",
2708
+ "<extra_id_271>",
2709
+ "<extra_id_272>",
2710
+ "<extra_id_273>",
2711
+ "<extra_id_274>",
2712
+ "<extra_id_275>",
2713
+ "<extra_id_276>",
2714
+ "<extra_id_277>",
2715
+ "<extra_id_278>",
2716
+ "<extra_id_279>",
2717
+ "<extra_id_280>",
2718
+ "<extra_id_281>",
2719
+ "<extra_id_282>",
2720
+ "<extra_id_283>",
2721
+ "<extra_id_284>",
2722
+ "<extra_id_285>",
2723
+ "<extra_id_286>",
2724
+ "<extra_id_287>",
2725
+ "<extra_id_288>",
2726
+ "<extra_id_289>",
2727
+ "<extra_id_290>",
2728
+ "<extra_id_291>",
2729
+ "<extra_id_292>",
2730
+ "<extra_id_293>",
2731
+ "<extra_id_294>",
2732
+ "<extra_id_295>",
2733
+ "<extra_id_296>",
2734
+ "<extra_id_297>",
2735
+ "<extra_id_298>",
2736
+ "<extra_id_299>"
2737
+ ],
2738
+ "bos_token": "<s>",
2739
+ "clean_up_tokenization_spaces": true,
2740
+ "eos_token": "</s>",
2741
+ "extra_ids": 300,
2742
+ "model_max_length": 1000000000000000019884624838656,
2743
+ "pad_token": "<pad>",
2744
+ "sp_model_kwargs": {},
2745
+ "spaces_between_special_tokens": false,
2746
+ "tokenizer_class": "T5Tokenizer",
2747
+ "unk_token": "<unk>"
2748
+ }
Wan2.1-T2V-1.3B/models_t5_umt5-xxl-enc-bf16.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7cace0da2b446bbbbc57d031ab6cf163a3d59b366da94e5afe36745b746fd81d
3
+ size 11361920418
diffsynth-studio/.github/workflows/logo.gif ADDED

Git LFS Details

  • SHA256: 36a7627b7f0f0a508ec64aba72e5d95d38dfe7958bd8cf42d2a63f6ac2641529
  • Pointer size: 131 Bytes
  • Size of remote file: 149 kB
diffsynth-studio/.github/workflows/publish.yaml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v**'
7
+
8
+ concurrency:
9
+ group: ${{ github.workflow }}-${{ github.ref }}-publish
10
+ cancel-in-progress: true
11
+
12
+ jobs:
13
+ build-n-publish:
14
+ runs-on: ubuntu-20.04
15
+ #if: startsWith(github.event.ref, 'refs/tags')
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - name: Set up Python 3.10
19
+ uses: actions/setup-python@v2
20
+ with:
21
+ python-version: '3.10'
22
+ - name: Install wheel
23
+ run: pip install wheel==0.44.0 && pip install -r requirements.txt
24
+ - name: Build DiffSynth
25
+ run: python setup.py sdist bdist_wheel
26
+ - name: Publish package to PyPI
27
+ run: |
28
+ pip install twine
29
+ twine upload dist/* --skip-existing -u __token__ -p ${{ secrets.PYPI_API_TOKEN }}
diffsynth-studio/.gitignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.pyc
2
+ *.log
3
+ diffsynth.egg-info/
4
+ checkpoint/
5
+ experiments/
6
+ test_outputs/
7
+ ckpt/
8
+ onnx/
9
+ models/Qwen/Qwen-Image
10
+ models/HunyuanVideo
11
+ models/Wan-AI
diffsynth-studio/.vscode/settings.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "python-envs.defaultEnvManager": "ms-python.python:conda",
3
+ "python-envs.defaultPackageManager": "ms-python.python:conda",
4
+ "python-envs.pythonProjects": []
5
+ }
diffsynth-studio/LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [2023] [Zhongjie Duan]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
diffsynth-studio/README_zh.md ADDED
@@ -0,0 +1,478 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # DiffSynth-Studio
2
+
3
+ <a href="https://github.com/modelscope/DiffSynth-Studio"><img src=".github/workflows/logo.gif" title="Logo" style="max-width:100%;" width="55" /></a> <a href="https://trendshift.io/repositories/10946" target="_blank"><img src="https://trendshift.io/api/badge/repositories/10946" alt="modelscope%2FDiffSynth-Studio | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a></p>
4
+
5
+ [![PyPI](https://img.shields.io/pypi/v/DiffSynth)](https://pypi.org/project/DiffSynth/)
6
+ [![license](https://img.shields.io/github/license/modelscope/DiffSynth-Studio.svg)](https://github.com/modelscope/DiffSynth-Studio/blob/master/LICENSE)
7
+ [![open issues](https://isitmaintained.com/badge/open/modelscope/DiffSynth-Studio.svg)](https://github.com/modelscope/DiffSynth-Studio/issues)
8
+ [![GitHub pull-requests](https://img.shields.io/github/issues-pr/modelscope/DiffSynth-Studio.svg)](https://GitHub.com/modelscope/DiffSynth-Studio/pull/)
9
+ [![GitHub latest commit](https://badgen.net/github/last-commit/modelscope/DiffSynth-Studio)](https://GitHub.com/modelscope/DiffSynth-Studio/commit/)
10
+
11
+ [Switch to English](./README.md)
12
+
13
+ ## 简介
14
+
15
+ 欢迎来到 Diffusion 模型的魔法世界!DiffSynth-Studio 是由[魔搭社区](https://www.modelscope.cn/)团队开发和维护的开源 Diffusion 模型引擎。我们期望以框架建设孵化技术创新,凝聚开源社区的力量,探索生成式模型技术的边界!
16
+
17
+ DiffSynth 目前包括两个开源项目:
18
+ * [DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio): 聚焦于激进的技术探索,面向学术界,提供更前沿的模型能力支持。
19
+ * [DiffSynth-Engine](https://github.com/modelscope/DiffSynth-Engine): 聚焦于稳定的模型部署,面向工业界,提供更高的计算性能与更稳定的功能。
20
+
21
+ [DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio) 与 [DiffSynth-Engine](https://github.com/modelscope/DiffSynth-Engine) 作为魔搭社区 [AIGC 专区](https://modelscope.cn/aigc/home) 的核心技术支撑,提供了强大的AI生成内容能力。欢迎体验我们精心打造的产品化功能,开启您的AI创作之旅!
22
+
23
+ ## 安装
24
+
25
+ 从源码安装(推荐):
26
+
27
+ ```
28
+ git clone https://github.com/modelscope/DiffSynth-Studio.git
29
+ cd DiffSynth-Studio
30
+ pip install -e .
31
+ ```
32
+
33
+ <details>
34
+ <summary>其他安装方式</summary>
35
+
36
+ 从 pypi 安装(存在版本更新延迟,如需使用最新功能,请从源码安装)
37
+
38
+ ```
39
+ pip install diffsynth
40
+ ```
41
+
42
+ 如果在安装过程中遇到问题,可能是由上游依赖包导致的,请参考这些包的文档:
43
+
44
+ * [torch](https://pytorch.org/get-started/locally/)
45
+ * [sentencepiece](https://github.com/google/sentencepiece)
46
+ * [cmake](https://cmake.org)
47
+ * [cupy](https://docs.cupy.dev/en/stable/install.html)
48
+
49
+ </details>
50
+
51
+
52
+
53
+ ## 基础框架
54
+
55
+ DiffSynth-Studio 为主流 Diffusion 模型(包括 FLUX、Wan 等)重新设计了推理和训练流水线,能够实现高效的显存管理、灵活的模型训练。
56
+
57
+ ### Qwen-Image 系列 (🔥新模型)
58
+
59
+ 详细页面:[./examples/qwen_image/](./examples/qwen_image/)
60
+
61
+ ![Image](https://github.com/user-attachments/assets/738078d8-8749-4a53-a046-571861541924)
62
+
63
+ <details>
64
+
65
+ <summary>快速开始</summary>
66
+
67
+ ```python
68
+ from diffsynth.pipelines.qwen_image import QwenImagePipeline, ModelConfig
69
+ import torch
70
+
71
+ pipe = QwenImagePipeline.from_pretrained(
72
+ torch_dtype=torch.bfloat16,
73
+ device="cuda",
74
+ model_configs=[
75
+ ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="transformer/diffusion_pytorch_model*.safetensors"),
76
+ ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="text_encoder/model*.safetensors"),
77
+ ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="vae/diffusion_pytorch_model.safetensors"),
78
+ ],
79
+ tokenizer_config=ModelConfig(model_id="Qwen/Qwen-Image", origin_file_pattern="tokenizer/"),
80
+ )
81
+ prompt = "精致肖像,水下少女,蓝裙飘逸,发丝轻扬,光影透澈,气泡环绕,面容恬静,细节精致,梦幻唯美。"
82
+ image = pipe(prompt, seed=0, num_inference_steps=40)
83
+ image.save("image.jpg")
84
+ ```
85
+
86
+ </details>
87
+
88
+ <details>
89
+
90
+ <summary>模型总览</summary>
91
+
92
+ |模型 ID|推理|全量训练|全量训练后验证|LoRA 训练|LoRA 训练后验证|
93
+ |-|-|-|-|-|-|
94
+ |[Qwen/Qwen-Image](https://www.modelscope.cn/models/Qwen/Qwen-Image)|[code](./examples/qwen_image/model_inference/Qwen-Image.py)|[code](./examples/qwen_image/model_training/full/Qwen-Image.sh)|[code](./examples/qwen_image/model_training/validate_full/Qwen-Image.py)|[code](./examples/qwen_image/model_training/lora/Qwen-Image.sh)|[code](./examples/qwen_image/model_training/validate_lora/Qwen-Image.py)|
95
+
96
+ </details>
97
+
98
+ ### FLUX 系列
99
+
100
+ 详细页面:[./examples/flux/](./examples/flux/)
101
+
102
+ ![Image](https://github.com/user-attachments/assets/c01258e2-f251-441a-aa1e-ebb22f02594d)
103
+
104
+ <details>
105
+
106
+ <summary>快速开始</summary>
107
+
108
+ ```python
109
+ import torch
110
+ from diffsynth.pipelines.flux_image_new import FluxImagePipeline, ModelConfig
111
+
112
+ pipe = FluxImagePipeline.from_pretrained(
113
+ torch_dtype=torch.bfloat16,
114
+ device="cuda",
115
+ model_configs=[
116
+ ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="flux1-dev.safetensors"),
117
+ ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="text_encoder/model.safetensors"),
118
+ ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="text_encoder_2/"),
119
+ ModelConfig(model_id="black-forest-labs/FLUX.1-dev", origin_file_pattern="ae.safetensors"),
120
+ ],
121
+ )
122
+
123
+ image = pipe(prompt="a cat", seed=0)
124
+ image.save("image.jpg")
125
+ ```
126
+
127
+ </details>
128
+
129
+ <details>
130
+
131
+ <summary>模型总览</summary>
132
+
133
+ |模型 ID|额外参数|推理|低显存推理|全量训练|全量训练后验证|LoRA 训练|LoRA 训练后验证|
134
+ |-|-|-|-|-|-|-|-|
135
+ |[FLUX.1-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-dev)||[code](./examples/flux/model_inference/FLUX.1-dev.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev.py)|[code](./examples/flux/model_training/full/FLUX.1-dev.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-dev.py)|[code](./examples/flux/model_training/lora/FLUX.1-dev.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-dev.py)|
136
+ |[FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev)||[code](./examples/flux/model_inference/FLUX.1-Krea-dev.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-Krea-dev.py)|[code](./examples/flux/model_training/full/FLUX.1-Krea-dev.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-Krea-dev.py)|[code](./examples/flux/model_training/lora/FLUX.1-Krea-dev.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-Krea-dev.py)|
137
+ |[FLUX.1-Kontext-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Kontext-dev)|`kontext_images`|[code](./examples/flux/model_inference/FLUX.1-Kontext-dev.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-Kontext-dev.py)|[code](./examples/flux/model_training/full/FLUX.1-Kontext-dev.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-Kontext-dev.py)|[code](./examples/flux/model_training/lora/FLUX.1-Kontext-dev.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-Kontext-dev.py)|
138
+ |[FLUX.1-dev-Controlnet-Inpainting-Beta](https://www.modelscope.cn/models/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta)|`controlnet_inputs`|[code](./examples/flux/model_inference/FLUX.1-dev-Controlnet-Inpainting-Beta.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Inpainting-Beta.py)|[code](./examples/flux/model_training/full/FLUX.1-dev-Controlnet-Inpainting-Beta.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Inpainting-Beta.py)|[code](./examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Inpainting-Beta.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Inpainting-Beta.py)|
139
+ |[FLUX.1-dev-Controlnet-Union-alpha](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-Controlnet-Union-alpha)|`controlnet_inputs`|[code](./examples/flux/model_inference/FLUX.1-dev-Controlnet-Union-alpha.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Union-alpha.py)|[code](./examples/flux/model_training/full/FLUX.1-dev-Controlnet-Union-alpha.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Union-alpha.py)|[code](./examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Union-alpha.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Union-alpha.py)|
140
+ |[FLUX.1-dev-Controlnet-Upscaler](https://www.modelscope.cn/models/jasperai/Flux.1-dev-Controlnet-Upscaler)|`controlnet_inputs`|[code](./examples/flux/model_inference/FLUX.1-dev-Controlnet-Upscaler.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev-Controlnet-Upscaler.py)|[code](./examples/flux/model_training/full/FLUX.1-dev-Controlnet-Upscaler.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-dev-Controlnet-Upscaler.py)|[code](./examples/flux/model_training/lora/FLUX.1-dev-Controlnet-Upscaler.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-dev-Controlnet-Upscaler.py)|
141
+ |[FLUX.1-dev-IP-Adapter](https://www.modelscope.cn/models/InstantX/FLUX.1-dev-IP-Adapter)|`ipadapter_images`, `ipadapter_scale`|[code](./examples/flux/model_inference/FLUX.1-dev-IP-Adapter.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev-IP-Adapter.py)|[code](./examples/flux/model_training/full/FLUX.1-dev-IP-Adapter.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-dev-IP-Adapter.py)|[code](./examples/flux/model_training/lora/FLUX.1-dev-IP-Adapter.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-dev-IP-Adapter.py)|
142
+ |[FLUX.1-dev-InfiniteYou](https://www.modelscope.cn/models/ByteDance/InfiniteYou)|`infinityou_id_image`, `infinityou_guidance`, `controlnet_inputs`|[code](./examples/flux/model_inference/FLUX.1-dev-InfiniteYou.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev-InfiniteYou.py)|[code](./examples/flux/model_training/full/FLUX.1-dev-InfiniteYou.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-dev-InfiniteYou.py)|[code](./examples/flux/model_training/lora/FLUX.1-dev-InfiniteYou.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-dev-InfiniteYou.py)|
143
+ |[FLUX.1-dev-EliGen](https://www.modelscope.cn/models/DiffSynth-Studio/Eligen)|`eligen_entity_prompts`, `eligen_entity_masks`, `eligen_enable_on_negative`, `eligen_enable_inpaint`|[code](./examples/flux/model_inference/FLUX.1-dev-EliGen.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev-EliGen.py)|-|-|[code](./examples/flux/model_training/lora/FLUX.1-dev-EliGen.sh)|[code](./examples/flux/model_training/validate_lora/FLUX.1-dev-EliGen.py)|
144
+ |[FLUX.1-dev-LoRA-Encoder](https://www.modelscope.cn/models/DiffSynth-Studio/LoRA-Encoder-FLUX.1-Dev)|`lora_encoder_inputs`, `lora_encoder_scale`|[code](./examples/flux/model_inference/FLUX.1-dev-LoRA-Encoder.py)|[code](./examples/flux/model_inference_low_vram/FLUX.1-dev-LoRA-Encoder.py)|[code](./examples/flux/model_training/full/FLUX.1-dev-LoRA-Encoder.sh)|[code](./examples/flux/model_training/validate_full/FLUX.1-dev-LoRA-Encoder.py)|-|-|
145
+ |[FLUX.1-dev-LoRA-Fusion-Preview](https://modelscope.cn/models/DiffSynth-Studio/LoRAFusion-preview-FLUX.1-dev)||[code](./examples/flux/model_inference/FLUX.1-dev-LoRA-Fusion.py)|-|-|-|-|-|
146
+ |[Step1X-Edit](https://www.modelscope.cn/models/stepfun-ai/Step1X-Edit)|`step1x_reference_image`|[code](./examples/flux/model_inference/Step1X-Edit.py)|[code](./examples/flux/model_inference_low_vram/Step1X-Edit.py)|[code](./examples/flux/model_training/full/Step1X-Edit.sh)|[code](./examples/flux/model_training/validate_full/Step1X-Edit.py)|[code](./examples/flux/model_training/lora/Step1X-Edit.sh)|[code](./examples/flux/model_training/validate_lora/Step1X-Edit.py)|
147
+ |[FLEX.2-preview](https://www.modelscope.cn/models/ostris/Flex.2-preview)|`flex_inpaint_image`, `flex_inpaint_mask`, `flex_control_image`, `flex_control_strength`, `flex_control_stop`|[code](./examples/flux/model_inference/FLEX.2-preview.py)|[code](./examples/flux/model_inference_low_vram/FLEX.2-preview.py)|[code](./examples/flux/model_training/full/FLEX.2-preview.sh)|[code](./examples/flux/model_training/validate_full/FLEX.2-preview.py)|[code](./examples/flux/model_training/lora/FLEX.2-preview.sh)|[code](./examples/flux/model_training/validate_lora/FLEX.2-preview.py)|
148
+ |[Nexus-Gen](https://www.modelscope.cn/models/DiffSynth-Studio/Nexus-GenV2)|`nexus_gen_reference_image`|[code](./examples/flux/model_inference/Nexus-Gen-Editing.py)|[code](./examples/flux/model_inference_low_vram/Nexus-Gen-Editing.py)|[code](./examples/flux/model_training/full/Nexus-Gen.sh)|[code](./examples/flux/model_training/validate_full/Nexus-Gen.py)|[code](./examples/flux/model_training/lora/Nexus-Gen.sh)|[code](./examples/flux/model_training/validate_lora/Nexus-Gen.py)|
149
+
150
+ </details>
151
+
152
+ ### Wan 系列
153
+
154
+ 详细页面:[./examples/wanvideo/](./examples/wanvideo/)
155
+
156
+ https://github.com/user-attachments/assets/1d66ae74-3b02-40a9-acc3-ea95fc039314
157
+
158
+ <details>
159
+
160
+ <summary>快速开始</summary>
161
+
162
+ ```python
163
+ import torch
164
+ from diffsynth import save_video
165
+ from diffsynth.pipelines.wan_video_new import WanVideoPipeline, ModelConfig
166
+
167
+ pipe = WanVideoPipeline.from_pretrained(
168
+ torch_dtype=torch.bfloat16,
169
+ device="cuda",
170
+ model_configs=[
171
+ ModelConfig(model_id="Wan-AI/Wan2.1-T2V-1.3B", origin_file_pattern="diffusion_pytorch_model*.safetensors", offload_device="cpu"),
172
+ ModelConfig(model_id="Wan-AI/Wan2.1-T2V-1.3B", origin_file_pattern="models_t5_umt5-xxl-enc-bf16.pth", offload_device="cpu"),
173
+ ModelConfig(model_id="Wan-AI/Wan2.1-T2V-1.3B", origin_file_pattern="Wan2.1_VAE.pth", offload_device="cpu"),
174
+ ],
175
+ )
176
+ pipe.enable_vram_management()
177
+
178
+ video = pipe(
179
+ prompt="纪实摄影风格画面,一只活泼的小狗在绿茵茵的草地上迅速奔跑。小狗毛色棕黄,两只耳朵立起,神情专注而欢快。阳光洒在它身上,使得毛发看上去格外柔软而闪亮。背景是一片开阔的草地,偶尔点缀着几朵野花,远处隐约可见蓝天和几片白云。透视感鲜明,捕捉小狗奔跑时的动感和四周草地的生机。中景侧面移动视角。",
180
+ negative_prompt="色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走",
181
+ seed=0, tiled=True,
182
+ )
183
+ save_video(video, "video1.mp4", fps=15, quality=5)
184
+ ```
185
+
186
+ </details>
187
+
188
+ <details>
189
+
190
+ <summary>模型总览</summary>
191
+
192
+ |模型 ID|额外参数|推理|全量训练|全量训练后验证|LoRA 训练|LoRA 训练后验证|
193
+ |-|-|-|-|-|-|-|
194
+ |[Wan-AI/Wan2.2-I2V-A14B](https://modelscope.cn/models/Wan-AI/Wan2.2-I2V-A14B)|`input_image`|[code](./examples/wanvideo/model_inference/Wan2.2-I2V-A14B.py)|[code](./examples/wanvideo/model_training/full/Wan2.2-I2V-A14B.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.2-I2V-A14B.py)|[code](./examples/wanvideo/model_training/lora/Wan2.2-I2V-A14B.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.2-I2V-A14B.py)|
195
+ |[Wan-AI/Wan2.2-T2V-A14B](https://modelscope.cn/models/Wan-AI/Wan2.2-T2V-A14B)||[code](./examples/wanvideo/model_inference/Wan2.2-T2V-A14B.py)|[code](./examples/wanvideo/model_training/full/Wan2.2-T2V-A14B.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.2-T2V-A14B.py)|[code](./examples/wanvideo/model_training/lora/Wan2.2-T2V-A14B.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.2-T2V-A14B.py)|
196
+ |[Wan-AI/Wan2.2-TI2V-5B](https://modelscope.cn/models/Wan-AI/Wan2.2-TI2V-5B)|`input_image`|[code](./examples/wanvideo/model_inference/Wan2.2-TI2V-5B.py)|[code](./examples/wanvideo/model_training/full/Wan2.2-TI2V-5B.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.2-TI2V-5B.py)|[code](./examples/wanvideo/model_training/lora/Wan2.2-TI2V-5B.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.2-TI2V-5B.py)|
197
+ |[Wan-AI/Wan2.1-T2V-1.3B](https://modelscope.cn/models/Wan-AI/Wan2.1-T2V-1.3B)||[code](./examples/wanvideo/model_inference/Wan2.1-T2V-1.3B.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-T2V-1.3B.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-T2V-1.3B.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-T2V-1.3B.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-T2V-1.3B.py)|
198
+ |[Wan-AI/Wan2.1-T2V-14B](https://modelscope.cn/models/Wan-AI/Wan2.1-T2V-14B)||[code](./examples/wanvideo/model_inference/Wan2.1-T2V-14B.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-T2V-14B.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-T2V-14B.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-T2V-14B.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-T2V-14B.py)|
199
+ |[Wan-AI/Wan2.1-I2V-14B-480P](https://modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-480P)|`input_image`|[code](./examples/wanvideo/model_inference/Wan2.1-I2V-14B-480P.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-I2V-14B-480P.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-I2V-14B-480P.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-I2V-14B-480P.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-I2V-14B-480P.py)|
200
+ |[Wan-AI/Wan2.1-I2V-14B-720P](https://modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-720P)|`input_image`|[code](./examples/wanvideo/model_inference/Wan2.1-I2V-14B-720P.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-I2V-14B-720P.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-I2V-14B-720P.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-I2V-14B-720P.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-I2V-14B-720P.py)|
201
+ |[Wan-AI/Wan2.1-FLF2V-14B-720P](https://modelscope.cn/models/Wan-AI/Wan2.1-FLF2V-14B-720P)|`input_image`, `end_image`|[code](./examples/wanvideo/model_inference/Wan2.1-FLF2V-14B-720P.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-FLF2V-14B-720P.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-FLF2V-14B-720P.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-FLF2V-14B-720P.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-FLF2V-14B-720P.py)|
202
+ |[PAI/Wan2.1-Fun-1.3B-InP](https://modelscope.cn/models/PAI/Wan2.1-Fun-1.3B-InP)|`input_image`, `end_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-1.3B-InP.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-1.3B-InP.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-1.3B-InP.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-1.3B-InP.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-1.3B-InP.py)|
203
+ |[PAI/Wan2.1-Fun-1.3B-Control](https://modelscope.cn/models/PAI/Wan2.1-Fun-1.3B-Control)|`control_video`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-1.3B-Control.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-1.3B-Control.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-1.3B-Control.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-1.3B-Control.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-1.3B-Control.py)|
204
+ |[PAI/Wan2.1-Fun-14B-InP](https://modelscope.cn/models/PAI/Wan2.1-Fun-14B-InP)|`input_image`, `end_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-14B-InP.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-14B-InP.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-14B-InP.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-14B-InP.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-14B-InP.py)|
205
+ |[PAI/Wan2.1-Fun-14B-Control](https://modelscope.cn/models/PAI/Wan2.1-Fun-14B-Control)|`control_video`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-14B-Control.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-14B-Control.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-14B-Control.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-14B-Control.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-14B-Control.py)|
206
+ |[PAI/Wan2.1-Fun-V1.1-1.3B-Control](https://modelscope.cn/models/PAI/Wan2.1-Fun-V1.1-1.3B-Control)|`control_video`, `reference_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-V1.1-1.3B-Control.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-V1.1-1.3B-Control.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-V1.1-1.3B-Control.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-V1.1-1.3B-Control.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-V1.1-1.3B-Control.py)|
207
+ |[PAI/Wan2.1-Fun-V1.1-14B-Control](https://modelscope.cn/models/PAI/Wan2.1-Fun-V1.1-14B-Control)|`control_video`, `reference_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-V1.1-14B-Control.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-V1.1-14B-Control.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-V1.1-14B-Control.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-V1.1-14B-Control.sh)|[code](./examples/wanvideo/examples/wanmodel_training/validate_lora/Wan2.1-Fun-V1.1-14B-Control.py)|
208
+ |[PAI/Wan2.1-Fun-V1.1-1.3B-InP](https://modelscope.cn/models/PAI/Wan2.1-Fun-V1.1-1.3B-InP)|`input_image`, `end_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-V1.1-1.3B-InP.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-V1.1-1.3B-InP.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-V1.1-1.3B-InP.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-V1.1-1.3B-InP.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-V1.1-1.3B-InP.py)|
209
+ |[PAI/Wan2.1-Fun-V1.1-14B-InP](https://modelscope.cn/models/PAI/Wan2.1-Fun-V1.1-14B-InP)|`input_image`, `end_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-V1.1-14B-InP.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-V1.1-14B-InP.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-V1.1-14B-InP.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-V1.1-14B-InP.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-V1.1-14B-InP.py)|
210
+ |[PAI/Wan2.1-Fun-V1.1-1.3B-Control-Camera](https://modelscope.cn/models/PAI/Wan2.1-Fun-V1.1-1.3B-Control-Camera)|`control_camera_video`, `input_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-V1.1-1.3B-Control-Camera.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-V1.1-1.3B-Control-Camera.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-V1.1-1.3B-Control-Camera.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-V1.1-1.3B-Control-Camera.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-V1.1-1.3B-Control-Camera.py)|
211
+ |[PAI/Wan2.1-Fun-V1.1-14B-Control-Camera](https://modelscope.cn/models/PAI/Wan2.1-Fun-V1.1-14B-Control-Camera)|`control_camera_video`, `input_image`|[code](./examples/wanvideo/model_inference/Wan2.1-Fun-V1.1-14B-Control-Camera.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-Fun-V1.1-14B-Control-Camera.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-Fun-V1.1-14B-Control-Camera.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-Fun-V1.1-14B-Control-Camera.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-Fun-V1.1-14B-Control-Camera.py)|
212
+ |[iic/VACE-Wan2.1-1.3B-Preview](https://modelscope.cn/models/iic/VACE-Wan2.1-1.3B-Preview)|`vace_control_video`, `vace_reference_image`|[code](./examples/wanvideo/model_inference/Wan2.1-VACE-1.3B-Preview.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-VACE-1.3B-Preview.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-VACE-1.3B-Preview.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-VACE-1.3B-Preview.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-VACE-1.3B-Preview.py)|
213
+ |[Wan-AI/Wan2.1-VACE-1.3B](https://modelscope.cn/models/Wan-AI/Wan2.1-VACE-1.3B)|`vace_control_video`, `vace_reference_image`|[code](./examples/wanvideo/model_inference/Wan2.1-VACE-1.3B.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-VACE-1.3B.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-VACE-1.3B.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-VACE-1.3B.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-VACE-1.3B.py)|
214
+ |[Wan-AI/Wan2.1-VACE-14B](https://modelscope.cn/models/Wan-AI/Wan2.1-VACE-14B)|`vace_control_video`, `vace_reference_image`|[code](./examples/wanvideo/model_inference/Wan2.1-VACE-14B.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-VACE-14B.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-VACE-14B.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-VACE-14B.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-VACE-14B.py)|
215
+ |[DiffSynth-Studio/Wan2.1-1.3b-speedcontrol-v1](https://modelscope.cn/models/DiffSynth-Studio/Wan2.1-1.3b-speedcontrol-v1)|`motion_bucket_id`|[code](./examples/wanvideo/model_inference/Wan2.1-1.3b-speedcontrol-v1.py)|[code](./examples/wanvideo/model_training/full/Wan2.1-1.3b-speedcontrol-v1.sh)|[code](./examples/wanvideo/model_training/validate_full/Wan2.1-1.3b-speedcontrol-v1.py)|[code](./examples/wanvideo/model_training/lora/Wan2.1-1.3b-speedcontrol-v1.sh)|[code](./examples/wanvideo/model_training/validate_lora/Wan2.1-1.3b-speedcontrol-v1.py)|
216
+
217
+ </details>
218
+
219
+
220
+
221
+ ### 更多模型
222
+
223
+
224
+
225
+ <details>
226
+ <summary>图像生成模型</summary>
227
+
228
+ 详细页面:[./examples/image_synthesis/](./examples/image_synthesis/)
229
+
230
+ |FLUX|Stable Diffusion 3|
231
+ |-|-|
232
+ |![image_1024_cfg](https://github.com/user-attachments/assets/984561e9-553d-4952-9443-79ce144f379f)|![image_1024](https://github.com/modelscope/DiffSynth-Studio/assets/35051019/4df346db-6f91-420a-b4c1-26e205376098)|
233
+
234
+ |Kolors|Hunyuan-DiT|
235
+ |-|-|
236
+ |![image_1024](https://github.com/modelscope/DiffSynth-Studio/assets/35051019/53ef6f41-da11-4701-8665-9f64392607bf)|![image_1024](https://github.com/modelscope/DiffSynth-Studio/assets/35051019/60b022c8-df3f-4541-95ab-bf39f2fa8bb5)|
237
+
238
+ |Stable Diffusion|Stable Diffusion XL|
239
+ |-|-|
240
+ |![1024](https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/6fc84611-8da6-4a1f-8fee-9a34eba3b4a5)|![1024](https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/67687748-e738-438c-aee5-96096f09ac90)|
241
+
242
+ </details>
243
+
244
+
245
+
246
+ <details>
247
+ <summary>视频生成模型</summary>
248
+
249
+ - HunyuanVideo:[./examples/HunyuanVideo/](./examples/HunyuanVideo/)
250
+
251
+ https://github.com/user-attachments/assets/48dd24bb-0cc6-40d2-88c3-10feed3267e9
252
+
253
+ - StepVideo:[./examples/stepvideo/](./examples/stepvideo/)
254
+
255
+ https://github.com/user-attachments/assets/5954fdaa-a3cf-45a3-bd35-886e3cc4581b
256
+
257
+ - CogVideoX:[./examples/CogVideoX/](./examples/CogVideoX/)
258
+
259
+ https://github.com/user-attachments/assets/26b044c1-4a60-44a4-842f-627ff289d006
260
+
261
+ </details>
262
+
263
+
264
+
265
+ <details>
266
+ <summary>图像质量评估模型</summary>
267
+
268
+ 我们集成了一系列图像质量评估模型,这些模型可以用于图像生成模型的评测、对齐训练等场景中。
269
+
270
+ 详细页面:[./examples/image_quality_metric/](./examples/image_quality_metric/)
271
+
272
+ * [ImageReward](https://github.com/THUDM/ImageReward)
273
+ * [Aesthetic](https://github.com/christophschuhmann/improved-aesthetic-predictor)
274
+ * [PickScore](https://github.com/yuvalkirstain/pickscore)
275
+ * [CLIP](https://github.com/openai/CLIP)
276
+ * [HPSv2](https://github.com/tgxs002/HPSv2)
277
+ * [HPSv2.1](https://github.com/tgxs002/HPSv2)
278
+ * [MPS](https://github.com/Kwai-Kolors/MPS)
279
+
280
+ </details>
281
+
282
+
283
+
284
+ ## 创新成果
285
+
286
+ DiffSynth-Studio 不仅仅是一个工程化的模型框架,更是创新成果的孵化器。
287
+
288
+ <details>
289
+ <summary>Nexus-Gen: 统一架构的图像理解、生成、编辑</summary>
290
+
291
+ - 详细页面:https://github.com/modelscope/Nexus-Gen
292
+ - 论文:[Nexus-Gen: Unified Image Understanding, Generation, and Editing via Prefilled Autoregression in Shared Embedding Space](https://arxiv.org/pdf/2504.21356)
293
+ - 模型:[ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/Nexus-GenV2), [HuggingFace](https://huggingface.co/modelscope/Nexus-GenV2)
294
+ - 数据集:[ModelScope Dataset](https://www.modelscope.cn/datasets/DiffSynth-Studio/Nexus-Gen-Training-Dataset)
295
+ - 在线体验:[ModelScope Nexus-Gen Studio](https://www.modelscope.cn/studios/DiffSynth-Studio/Nexus-Gen)
296
+
297
+ ![](https://github.com/modelscope/Nexus-Gen/raw/main/assets/illustrations/gen_edit.jpg)
298
+
299
+ </details>
300
+
301
+
302
+
303
+ <details>
304
+ <summary>ArtAug: 图像生成模型的美学提升</summary>
305
+
306
+ - 详细页面:[./examples/ArtAug/](./examples/ArtAug/)
307
+ - 论文:[ArtAug: Enhancing Text-to-Image Generation through Synthesis-Understanding Interaction](https://arxiv.org/abs/2412.12888)
308
+ - 模型:[ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/ArtAug-lora-FLUX.1dev-v1), [HuggingFace](https://huggingface.co/ECNU-CILab/ArtAug-lora-FLUX.1dev-v1)
309
+ - 在线体验:[ModelScope AIGC Tab](https://www.modelscope.cn/aigc/imageGeneration?tab=advanced&versionId=7228&modelType=LoRA&sdVersion=FLUX_1&modelUrl=modelscope%3A%2F%2FDiffSynth-Studio%2FArtAug-lora-FLUX.1dev-v1%3Frevision%3Dv1.0)
310
+
311
+ |FLUX.1-dev|FLUX.1-dev + ArtAug LoRA|
312
+ |-|-|
313
+ |![image_1_base](https://github.com/user-attachments/assets/e1d5c505-b423-45fe-be01-25c2758f5417)|![image_1_enhance](https://github.com/user-attachments/assets/335908e3-d0bd-41c2-9d99-d10528a2d719)|
314
+
315
+ </details>
316
+
317
+
318
+
319
+ <details>
320
+
321
+ <summary>EliGen: 精准的图像分区控制</summary>
322
+
323
+ - 详细页面:[./examples/EntityControl/](./examples/EntityControl/)
324
+ - 论文:[EliGen: Entity-Level Controlled Image Generation with Regional Attention](https://arxiv.org/abs/2501.01097)
325
+ - 模型:[ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/Eligen), [HuggingFace](https://huggingface.co/modelscope/EliGen)
326
+ - 在线体验:[ModelScope EliGen Studio](https://www.modelscope.cn/studios/DiffSynth-Studio/EliGen)
327
+ - 数据集:[EliGen Train Set](https://www.modelscope.cn/datasets/DiffSynth-Studio/EliGenTrainSet)
328
+
329
+ |实体控制区域|生成图像|
330
+ |-|-|
331
+ |![eligen_example_2_mask_0](https://github.com/user-attachments/assets/1c6d9445-5022-4d91-ad2e-dc05321883d1)|![eligen_example_2_0](https://github.com/user-attachments/assets/86739945-cb07-4a49-b3b3-3bb65c90d14f)|
332
+
333
+ </details>
334
+
335
+
336
+
337
+ <details>
338
+
339
+ <summary>ExVideo: 视频生成模型的扩展训练</summary>
340
+
341
+ - 项目页面:[Project Page](https://ecnu-cilab.github.io/ExVideoProjectPage/)
342
+ - 论文:[ExVideo: Extending Video Diffusion Models via Parameter-Efficient Post-Tuning](https://arxiv.org/abs/2406.14130)
343
+ - 代码样例:[./examples/ExVideo/](./examples/ExVideo/)
344
+ - 模型:[ModelScope](https://modelscope.cn/models/ECNU-CILab/ExVideo-SVD-128f-v1), [HuggingFace](https://huggingface.co/ECNU-CILab/ExVideo-SVD-128f-v1)
345
+
346
+ https://github.com/modelscope/DiffSynth-Studio/assets/35051019/d97f6aa9-8064-4b5b-9d49-ed6001bb9acc
347
+
348
+ </details>
349
+
350
+
351
+
352
+ <details>
353
+
354
+ <summary>Diffutoon: 高分辨率动漫风格视频渲染</summary>
355
+
356
+ - 项目页面:[Project Page](https://ecnu-cilab.github.io/DiffutoonProjectPage/)
357
+ - 论文:[Diffutoon: High-Resolution Editable Toon Shading via Diffusion Models](https://arxiv.org/abs/2401.16224)
358
+ - 代码样例:[./examples/Diffutoon/](./examples/Diffutoon/)
359
+
360
+ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/b54c05c5-d747-4709-be5e-b39af82404dd
361
+
362
+ </details>
363
+
364
+
365
+
366
+ <details>
367
+
368
+ <summary>DiffSynth: 本项目的初代版本</summary>
369
+
370
+ - 项目页面:[Project Page](https://ecnu-cilab.github.io/DiffSynth.github.io/)
371
+ - 论文:[DiffSynth: Latent In-Iteration Deflickering for Realistic Video Synthesis](https://arxiv.org/abs/2308.03463)
372
+ - 代码样例:[./examples/diffsynth/](./examples/diffsynth/)
373
+
374
+ https://github.com/Artiprocher/DiffSynth-Studio/assets/35051019/59fb2f7b-8de0-4481-b79f-0c3a7361a1ea
375
+
376
+ </details>
377
+
378
+
379
+
380
+ ## 更新历史
381
+ - **2025年8月1日** [FLUX.1-Krea-dev](https://www.modelscope.cn/models/black-forest-labs/FLUX.1-Krea-dev) 开源,这是一个专注于美学摄影的文生图模型。我们第一时间提供了全方位支持,包括低显存逐层 offload、LoRA 训练、全量训练。详细信息请参考 [./examples/flux/](./examples/flux/)。
382
+
383
+ - **2025年8月4日** 🔥 Qwen-Image 开源,欢迎图像生成模型家族新成员!
384
+
385
+ - **2025年7月28日** Wan 2.2 开源,我们第一时间提供了全方位支持,包括低显存逐层 offload、FP8 量化、序列并行、LoRA 训练、全量训练。详细信息请参考 [./examples/wanvideo/](./examples/wanvideo/)。
386
+
387
+ - **2025年7月11日** 我们提出 Nexus-Gen,一个将大语言模型(LLM)的语言推理能力与扩散模型的图像生成能力相结合的统一框架。该框架支持无缝的图像理解、生成和编辑任务。
388
+ - 论文: [Nexus-Gen: Unified Image Understanding, Generation, and Editing via Prefilled Autoregression in Shared Embedding Space](https://arxiv.org/pdf/2504.21356)
389
+ - Github 仓库: https://github.com/modelscope/Nexus-Gen
390
+ - 模型: [ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/Nexus-GenV2), [HuggingFace](https://huggingface.co/modelscope/Nexus-GenV2)
391
+ - 训练数据集: [ModelScope Dataset](https://www.modelscope.cn/datasets/DiffSynth-Studio/Nexus-Gen-Training-Dataset)
392
+ - 在线体验: [ModelScope Nexus-Gen Studio](https://www.modelscope.cn/studios/DiffSynth-Studio/Nexus-Gen)
393
+
394
+ - **2025年6月15日** ModelScope 官方评测框架 [EvalScope](https://github.com/modelscope/evalscope) 现已支持文生图生成评测。请参考[最佳实践](https://evalscope.readthedocs.io/zh-cn/latest/best_practice/t2i_eval.html)指南进行尝试。
395
+
396
+ - **2025年3月25日** 我们的新开源项目 [DiffSynth-Engine](https://github.com/modelscope/DiffSynth-Engine) 现已开源!专注于稳定的模型部署,面向工业界,提供更好的工程支持、更高的计算性能和更稳定的功能。
397
+
398
+ <details>
399
+ <summary>更多</summary>
400
+
401
+ - **2025年3月31日** 我们支持 InfiniteYou,一种用于 FLUX 的人脸特征保留方法。更多细节请参考 [./examples/InfiniteYou/](./examples/InfiniteYou/)。
402
+
403
+ - **2025年3月13日** 我们支持 HunyuanVideo-I2V,即腾讯开源的 HunyuanVideo 的图像到视频生成版本。更多细节请参考 [./examples/HunyuanVideo/](./examples/HunyuanVideo/)。
404
+
405
+ - **2025年2月25日** 我们支持 Wan-Video,这是阿里巴巴开源的一系列最先进的视频合成模型。详见 [./examples/wanvideo/](./examples/wanvideo/)。
406
+
407
+ - **2025年2月17日** 我们支持 [StepVideo](https://modelscope.cn/models/stepfun-ai/stepvideo-t2v/summary)!先进的视频合成模型!详见 [./examples/stepvideo](./examples/stepvideo/)。
408
+
409
+ - **2024年12月31日** 我们提出 EliGen,一种用于精确实体级别控制的文本到图像生成的新框架,并辅以修复融合管道,将其能力扩展到图像修复任务。EliGen 可以无缝集成现有的社区模型,如 IP-Adapter 和 In-Context LoRA,提升其通用性。更多详情,请见 [./examples/EntityControl](./examples/EntityControl/)。
410
+ - 论文: [EliGen: Entity-Level Controlled Image Generation with Regional Attention](https://arxiv.org/abs/2501.01097)
411
+ - 模型: [ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/Eligen), [HuggingFace](https://huggingface.co/modelscope/EliGen)
412
+ - 在线体验: [ModelScope EliGen Studio](https://www.modelscope.cn/studios/DiffSynth-Studio/EliGen)
413
+ - 训练数据集: [EliGen Train Set](https://www.modelscope.cn/datasets/DiffSynth-Studio/EliGenTrainSet)
414
+
415
+ - **2024年12月19日** 我们为 HunyuanVideo 实现了高级显存管理,使得在 24GB 显存下可以生成分辨率为 129x720x1280 的视频,或在仅 6GB 显存下生成分辨率为 129x512x384 的视频。更多细节请参考 [./examples/HunyuanVideo/](./examples/HunyuanVideo/)。
416
+
417
+ - **2024年12月18日** 我们提出 ArtAug,一种通过合成-理解交互来改进文生图模型的方法。我们以 LoRA 格式为 FLUX.1-dev 训练了一个 ArtAug 增强模块。该模型将 Qwen2-VL-72B 的美学理解融入 FLUX.1-dev,从而提升了生成图像的质量。
418
+ - 论文: https://arxiv.org/abs/2412.12888
419
+ - 示例: https://github.com/modelscope/DiffSynth-Studio/tree/main/examples/ArtAug
420
+ - 模型: [ModelScope](https://www.modelscope.cn/models/DiffSynth-Studio/ArtAug-lora-FLUX.1dev-v1), [HuggingFace](https://huggingface.co/ECNU-CILab/ArtAug-lora-FLUX.1dev-v1)
421
+ - 演示: [ModelScope](https://modelscope.cn/aigc/imageGeneration?tab=advanced&versionId=7228&modelType=LoRA&sdVersion=FLUX_1&modelUrl=modelscope%3A%2F%2FDiffSynth-Studio%2FArtAug-lora-FLUX.1dev-v1%3Frevision%3Dv1.0), HuggingFace (即将上线)
422
+
423
+ - **2024年10月25日** 我们提供了广泛的 FLUX ControlNet 支持。该项目支持许多不同的 ControlNet 模型,并且可以自由组合,即使它们的结构不同。此外,ControlNet 模型兼容高分辨率优化和分区控制技术,能够实现非常强大的可控图像生成。详见 [`./examples/ControlNet/`](./examples/ControlNet/)。
424
+
425
+ - **2024年10月8日** 我们发布了基于 CogVideoX-5B 和 ExVideo 的扩展 LoRA。您可以从 [ModelScope](https://modelscope.cn/models/ECNU-CILab/ExVideo-CogVideoX-LoRA-129f-v1) 或 [HuggingFace](https://huggingface.co/ECNU-CILab/ExVideo-CogVideoX-LoRA-129f-v1) 下载此模型。
426
+
427
+ - **2024年8月22日** 本项目现已支持 CogVideoX-5B。详见 [此处](/examples/video_synthesis/)。我们为这个文生视频模型提供了几个有趣的功能,包括:
428
+ - 文本到视频
429
+ - 视频编辑
430
+ - 自我超分
431
+ - 视频插帧
432
+
433
+ - **2024年8月22日** 我们实现了一个有趣的画笔功能,支持所有文生图模型。现在,您可以在 AI 的辅助下使用画笔创作惊艳的图像了!
434
+ - 在我们的 [WebUI](#usage-in-webui) 中使用它。
435
+
436
+ - **2024年8月21日** DiffSynth-Studio 现已支持 FLUX。
437
+ - 启用 CFG 和高分辨率修复以提升视觉质量。详见 [此处](/examples/image_synthesis/README.md)
438
+ - LoRA、ControlNet 和其他附加模型将很快推出。
439
+
440
+ - **2024年6月21日** 我们提出 ExVideo,一种旨在增强视频生成模型能力的后训练微调技术。我们将 Stable Video Diffusion 进行了扩展,实现了长达 128 帧的长视频生成。
441
+ - [项目页面](https://ecnu-cilab.github.io/ExVideoProjectPage/)
442
+ - 源代码已在此仓库中发布。详见 [`examples/ExVideo`](./examples/ExVideo/)。
443
+ - 模型已发布于 [HuggingFace](https://huggingface.co/ECNU-CILab/ExVideo-SVD-128f-v1) 和 [ModelScope](https://modelscope.cn/models/ECNU-CILab/ExVideo-SVD-128f-v1)。
444
+ - 技术报告已发布于 [arXiv](https://arxiv.org/abs/2406.14130)。
445
+ - 您可以在此 [演示](https://huggingface.co/spaces/modelscope/ExVideo-SVD-128f-v1) 中试用 ExVideo!
446
+
447
+ - **2024年6月13日** DiffSynth Studio 已迁移至 ModelScope。开发团队也从“我”转变为“我们”。当然,我仍会参与后续的开发和维护工作。
448
+
449
+ - **2024年1月29日** 我们提出 Diffutoon,这是一个出色的卡通着色解决方案。
450
+ - [项目页面](https://ecnu-cilab.github.io/DiffutoonProjectPage/)
451
+ - 源代码已在此项目中发布。
452
+ - 技术报告(IJCAI 2024)已发布于 [arXiv](https://arxiv.org/abs/2401.16224)。
453
+
454
+ - **2023年12月8日** 我们决定启动一个新项目,旨在释放扩散模型的潜力,尤其是在视频合成方面。该项目的开发工作正式开始。
455
+
456
+ - **2023年11月15日** 我们提出 FastBlend,一种强大的视频去闪烁算法。
457
+ - sd-webui 扩展已发布于 [GitHub](https://github.com/Artiprocher/sd-webui-fastblend)。
458
+ - 演示视频已在 Bilibili 上展示,包含三个任务:
459
+ - [视频去闪烁](https://www.bilibili.com/video/BV1d94y1W7PE)
460
+ - [视频插帧](https://www.bilibili.com/video/BV1Lw411m71p)
461
+ - [图像驱动的视频渲染](https://www.bilibili.com/video/BV1RB4y1Z7LF)
462
+ - 技术报告已发布于 [arXiv](https://arxiv.org/abs/2311.09265)。
463
+ - 其他用户开发的非官方 ComfyUI 扩展已发布于 [GitHub](https://github.com/AInseven/ComfyUI-fastblend)。
464
+
465
+ - **2023年10月1日** 我们发布了该项目的早期版本,名为 FastSDXL。这是构建一个扩散引擎的初步尝试。
466
+ - 源代码已发布于 [GitHub](https://github.com/Artiprocher/FastSDXL)。
467
+ - FastSDXL 包含一个可训练的 OLSS 调度器,以提高效率。
468
+ - OLSS 的原始仓库位于 [此处](https://github.com/alibaba/EasyNLP/tree/master/diffusion/olss_scheduler)。
469
+ - 技术报告(CIKM 2023)已发布于 [arXiv](https://arxiv.org/abs/2305.14677)。
470
+ - 演示视频已发布于 [Bilibili](https://www.bilibili.com/video/BV1w8411y7uj)。
471
+ - 由于 OLSS 需要额外训练,我们未在本项目中实现它。
472
+
473
+ - **2023年8月29日** 我们提出 DiffSynth,一个视频合成框架。
474
+ - [项目页面](https://ecnu-cilab.github.io/DiffSynth.github.io/)。
475
+ - 源代码已发布在 [EasyNLP](https://github.com/alibaba/EasyNLP/tree/master/diffusion/DiffSynth)。
476
+ - 技术报告(ECML PKDD 2024)已发布于 [arXiv](https://arxiv.org/abs/2308.03463)。
477
+
478
+ </details>
diffsynth-studio/apps/gradio/DiffSynth_Studio.py ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from diffsynth import ModelManager, SDImagePipeline, SDXLImagePipeline, SD3ImagePipeline, HunyuanDiTImagePipeline, FluxImagePipeline
3
+ import os, torch
4
+ from PIL import Image
5
+ import numpy as np
6
+
7
+
8
+ config = {
9
+ "model_config": {
10
+ "Stable Diffusion": {
11
+ "model_folder": "models/stable_diffusion",
12
+ "pipeline_class": SDImagePipeline,
13
+ "default_parameters": {
14
+ "cfg_scale": 7.0,
15
+ "height": 512,
16
+ "width": 512,
17
+ }
18
+ },
19
+ "Stable Diffusion XL": {
20
+ "model_folder": "models/stable_diffusion_xl",
21
+ "pipeline_class": SDXLImagePipeline,
22
+ "default_parameters": {
23
+ "cfg_scale": 7.0,
24
+ }
25
+ },
26
+ "Stable Diffusion 3": {
27
+ "model_folder": "models/stable_diffusion_3",
28
+ "pipeline_class": SD3ImagePipeline,
29
+ "default_parameters": {
30
+ "cfg_scale": 7.0,
31
+ }
32
+ },
33
+ "Stable Diffusion XL Turbo": {
34
+ "model_folder": "models/stable_diffusion_xl_turbo",
35
+ "pipeline_class": SDXLImagePipeline,
36
+ "default_parameters": {
37
+ "negative_prompt": "",
38
+ "cfg_scale": 1.0,
39
+ "num_inference_steps": 1,
40
+ "height": 512,
41
+ "width": 512,
42
+ }
43
+ },
44
+ "Kolors": {
45
+ "model_folder": "models/kolors",
46
+ "pipeline_class": SDXLImagePipeline,
47
+ "default_parameters": {
48
+ "cfg_scale": 7.0,
49
+ }
50
+ },
51
+ "HunyuanDiT": {
52
+ "model_folder": "models/HunyuanDiT",
53
+ "pipeline_class": HunyuanDiTImagePipeline,
54
+ "default_parameters": {
55
+ "cfg_scale": 7.0,
56
+ }
57
+ },
58
+ "FLUX": {
59
+ "model_folder": "models/FLUX",
60
+ "pipeline_class": FluxImagePipeline,
61
+ "default_parameters": {
62
+ "cfg_scale": 1.0,
63
+ }
64
+ }
65
+ },
66
+ "max_num_painter_layers": 8,
67
+ "max_num_model_cache": 1,
68
+ }
69
+
70
+
71
+ def load_model_list(model_type):
72
+ if model_type is None:
73
+ return []
74
+ folder = config["model_config"][model_type]["model_folder"]
75
+ file_list = [i for i in os.listdir(folder) if i.endswith(".safetensors")]
76
+ if model_type in ["HunyuanDiT", "Kolors", "FLUX"]:
77
+ file_list += [i for i in os.listdir(folder) if os.path.isdir(os.path.join(folder, i))]
78
+ file_list = sorted(file_list)
79
+ return file_list
80
+
81
+
82
+ def load_model(model_type, model_path):
83
+ global model_dict
84
+ model_key = f"{model_type}:{model_path}"
85
+ if model_key in model_dict:
86
+ return model_dict[model_key]
87
+ model_path = os.path.join(config["model_config"][model_type]["model_folder"], model_path)
88
+ model_manager = ModelManager()
89
+ if model_type == "HunyuanDiT":
90
+ model_manager.load_models([
91
+ os.path.join(model_path, "clip_text_encoder/pytorch_model.bin"),
92
+ os.path.join(model_path, "mt5/pytorch_model.bin"),
93
+ os.path.join(model_path, "model/pytorch_model_ema.pt"),
94
+ os.path.join(model_path, "sdxl-vae-fp16-fix/diffusion_pytorch_model.bin"),
95
+ ])
96
+ elif model_type == "Kolors":
97
+ model_manager.load_models([
98
+ os.path.join(model_path, "text_encoder"),
99
+ os.path.join(model_path, "unet/diffusion_pytorch_model.safetensors"),
100
+ os.path.join(model_path, "vae/diffusion_pytorch_model.safetensors"),
101
+ ])
102
+ elif model_type == "FLUX":
103
+ model_manager.torch_dtype = torch.bfloat16
104
+ file_list = [
105
+ os.path.join(model_path, "text_encoder/model.safetensors"),
106
+ os.path.join(model_path, "text_encoder_2"),
107
+ ]
108
+ for file_name in os.listdir(model_path):
109
+ if file_name.endswith(".safetensors"):
110
+ file_list.append(os.path.join(model_path, file_name))
111
+ model_manager.load_models(file_list)
112
+ else:
113
+ model_manager.load_model(model_path)
114
+ pipe = config["model_config"][model_type]["pipeline_class"].from_model_manager(model_manager)
115
+ while len(model_dict) + 1 > config["max_num_model_cache"]:
116
+ key = next(iter(model_dict.keys()))
117
+ model_manager_to_release, _ = model_dict[key]
118
+ model_manager_to_release.to("cpu")
119
+ del model_dict[key]
120
+ torch.cuda.empty_cache()
121
+ model_dict[model_key] = model_manager, pipe
122
+ return model_manager, pipe
123
+
124
+
125
+ model_dict = {}
126
+
127
+ with gr.Blocks() as app:
128
+ gr.Markdown("# DiffSynth-Studio Painter")
129
+ with gr.Row():
130
+ with gr.Column(scale=382, min_width=100):
131
+
132
+ with gr.Accordion(label="Model"):
133
+ model_type = gr.Dropdown(choices=[i for i in config["model_config"]], label="Model type")
134
+ model_path = gr.Dropdown(choices=[], interactive=True, label="Model path")
135
+
136
+ @gr.on(inputs=model_type, outputs=model_path, triggers=model_type.change)
137
+ def model_type_to_model_path(model_type):
138
+ return gr.Dropdown(choices=load_model_list(model_type))
139
+
140
+ with gr.Accordion(label="Prompt"):
141
+ prompt = gr.Textbox(label="Prompt", lines=3)
142
+ negative_prompt = gr.Textbox(label="Negative prompt", lines=1)
143
+ cfg_scale = gr.Slider(minimum=1.0, maximum=10.0, value=7.0, step=0.1, interactive=True, label="Classifier-free guidance scale")
144
+ embedded_guidance = gr.Slider(minimum=0.0, maximum=10.0, value=0.0, step=0.1, interactive=True, label="Embedded guidance scale (only for FLUX)")
145
+
146
+ with gr.Accordion(label="Image"):
147
+ num_inference_steps = gr.Slider(minimum=1, maximum=100, value=20, step=1, interactive=True, label="Inference steps")
148
+ height = gr.Slider(minimum=64, maximum=2048, value=1024, step=64, interactive=True, label="Height")
149
+ width = gr.Slider(minimum=64, maximum=2048, value=1024, step=64, interactive=True, label="Width")
150
+ with gr.Column():
151
+ use_fixed_seed = gr.Checkbox(value=True, interactive=False, label="Use fixed seed")
152
+ seed = gr.Number(minimum=0, maximum=10**9, value=0, interactive=True, label="Random seed", show_label=False)
153
+
154
+ @gr.on(
155
+ inputs=[model_type, model_path, prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width],
156
+ outputs=[prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width],
157
+ triggers=model_path.change
158
+ )
159
+ def model_path_to_default_params(model_type, model_path, prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width):
160
+ load_model(model_type, model_path)
161
+ cfg_scale = config["model_config"][model_type]["default_parameters"].get("cfg_scale", cfg_scale)
162
+ embedded_guidance = config["model_config"][model_type]["default_parameters"].get("embedded_guidance", embedded_guidance)
163
+ num_inference_steps = config["model_config"][model_type]["default_parameters"].get("num_inference_steps", num_inference_steps)
164
+ height = config["model_config"][model_type]["default_parameters"].get("height", height)
165
+ width = config["model_config"][model_type]["default_parameters"].get("width", width)
166
+ return prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width
167
+
168
+
169
+ with gr.Column(scale=618, min_width=100):
170
+ with gr.Accordion(label="Painter"):
171
+ enable_local_prompt_list = []
172
+ local_prompt_list = []
173
+ mask_scale_list = []
174
+ canvas_list = []
175
+ for painter_layer_id in range(config["max_num_painter_layers"]):
176
+ with gr.Tab(label=f"Layer {painter_layer_id}"):
177
+ enable_local_prompt = gr.Checkbox(label="Enable", value=False, key=f"enable_local_prompt_{painter_layer_id}")
178
+ local_prompt = gr.Textbox(label="Local prompt", key=f"local_prompt_{painter_layer_id}")
179
+ mask_scale = gr.Slider(minimum=0.0, maximum=5.0, value=1.0, step=0.1, interactive=True, label="Mask scale", key=f"mask_scale_{painter_layer_id}")
180
+ canvas = gr.ImageEditor(canvas_size=(512, 1), sources=None, layers=False, interactive=True, image_mode="RGBA",
181
+ brush=gr.Brush(default_size=100, default_color="#000000", colors=["#000000"]),
182
+ label="Painter", key=f"canvas_{painter_layer_id}")
183
+ @gr.on(inputs=[height, width, canvas], outputs=canvas, triggers=[height.change, width.change, canvas.clear, enable_local_prompt.change], show_progress="hidden")
184
+ def resize_canvas(height, width, canvas):
185
+ h, w = canvas["background"].shape[:2]
186
+ if h != height or width != w:
187
+ return np.ones((height, width, 3), dtype=np.uint8) * 255
188
+ else:
189
+ return canvas
190
+
191
+ enable_local_prompt_list.append(enable_local_prompt)
192
+ local_prompt_list.append(local_prompt)
193
+ mask_scale_list.append(mask_scale)
194
+ canvas_list.append(canvas)
195
+ with gr.Accordion(label="Results"):
196
+ run_button = gr.Button(value="Generate", variant="primary")
197
+ output_image = gr.Image(sources=None, show_label=False, interactive=False, type="pil")
198
+ with gr.Row():
199
+ with gr.Column():
200
+ output_to_painter_button = gr.Button(value="Set as painter's background")
201
+ with gr.Column():
202
+ output_to_input_button = gr.Button(value="Set as input image")
203
+ painter_background = gr.State(None)
204
+ input_background = gr.State(None)
205
+ @gr.on(
206
+ inputs=[model_type, model_path, prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width, seed] + enable_local_prompt_list + local_prompt_list + mask_scale_list + canvas_list,
207
+ outputs=[output_image],
208
+ triggers=run_button.click
209
+ )
210
+ def generate_image(model_type, model_path, prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width, seed, *args, progress=gr.Progress()):
211
+ _, pipe = load_model(model_type, model_path)
212
+ input_params = {
213
+ "prompt": prompt,
214
+ "negative_prompt": negative_prompt,
215
+ "cfg_scale": cfg_scale,
216
+ "num_inference_steps": num_inference_steps,
217
+ "height": height,
218
+ "width": width,
219
+ "progress_bar_cmd": progress.tqdm,
220
+ }
221
+ if isinstance(pipe, FluxImagePipeline):
222
+ input_params["embedded_guidance"] = embedded_guidance
223
+ enable_local_prompt_list, local_prompt_list, mask_scale_list, canvas_list = (
224
+ args[0 * config["max_num_painter_layers"]: 1 * config["max_num_painter_layers"]],
225
+ args[1 * config["max_num_painter_layers"]: 2 * config["max_num_painter_layers"]],
226
+ args[2 * config["max_num_painter_layers"]: 3 * config["max_num_painter_layers"]],
227
+ args[3 * config["max_num_painter_layers"]: 4 * config["max_num_painter_layers"]]
228
+ )
229
+ local_prompts, masks, mask_scales = [], [], []
230
+ for enable_local_prompt, local_prompt, mask_scale, canvas in zip(
231
+ enable_local_prompt_list, local_prompt_list, mask_scale_list, canvas_list
232
+ ):
233
+ if enable_local_prompt:
234
+ local_prompts.append(local_prompt)
235
+ masks.append(Image.fromarray(canvas["layers"][0][:, :, -1]).convert("RGB"))
236
+ mask_scales.append(mask_scale)
237
+ input_params.update({
238
+ "local_prompts": local_prompts,
239
+ "masks": masks,
240
+ "mask_scales": mask_scales,
241
+ })
242
+ torch.manual_seed(seed)
243
+ image = pipe(**input_params)
244
+ return image
245
+
246
+ @gr.on(inputs=[output_image] + canvas_list, outputs=canvas_list, triggers=output_to_painter_button.click)
247
+ def send_output_to_painter_background(output_image, *canvas_list):
248
+ for canvas in canvas_list:
249
+ h, w = canvas["background"].shape[:2]
250
+ canvas["background"] = output_image.resize((w, h))
251
+ return tuple(canvas_list)
252
+ app.launch()
diffsynth-studio/apps/gradio/entity_level_control.py ADDED
@@ -0,0 +1,390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import torch
3
+ import numpy as np
4
+ from PIL import Image, ImageDraw, ImageFont
5
+ import random
6
+ import json
7
+ import gradio as gr
8
+ from diffsynth import ModelManager, FluxImagePipeline, download_customized_models
9
+ from modelscope import dataset_snapshot_download
10
+
11
+
12
+ dataset_snapshot_download(dataset_id="DiffSynth-Studio/examples_in_diffsynth", local_dir="./", allow_file_pattern=f"data/examples/eligen/entity_control/*")
13
+ example_json = 'data/examples/eligen/entity_control/ui_examples.json'
14
+ with open(example_json, 'r') as f:
15
+ examples = json.load(f)['examples']
16
+
17
+ for idx in range(len(examples)):
18
+ example_id = examples[idx]['example_id']
19
+ entity_prompts = examples[idx]['local_prompt_list']
20
+ examples[idx]['mask_lists'] = [Image.open(f"data/examples/eligen/entity_control/example_{example_id}/{i}.png").convert('RGB') for i in range(len(entity_prompts))]
21
+
22
+ def create_canvas_data(background, masks):
23
+ if background.shape[-1] == 3:
24
+ background = np.dstack([background, np.full(background.shape[:2], 255, dtype=np.uint8)])
25
+ layers = []
26
+ for mask in masks:
27
+ if mask is not None:
28
+ mask_single_channel = mask if mask.ndim == 2 else mask[..., 0]
29
+ layer = np.zeros((mask_single_channel.shape[0], mask_single_channel.shape[1], 4), dtype=np.uint8)
30
+ layer[..., -1] = mask_single_channel
31
+ layers.append(layer)
32
+ else:
33
+ layers.append(np.zeros_like(background))
34
+
35
+ composite = background.copy()
36
+ for layer in layers:
37
+ if layer.size > 0:
38
+ composite = np.where(layer[..., -1:] > 0, layer, composite)
39
+ return {
40
+ "background": background,
41
+ "layers": layers,
42
+ "composite": composite,
43
+ }
44
+
45
+ def load_example(load_example_button):
46
+ example_idx = int(load_example_button.split()[-1]) - 1
47
+ example = examples[example_idx]
48
+ result = [
49
+ 50,
50
+ example["global_prompt"],
51
+ example["negative_prompt"],
52
+ example["seed"],
53
+ *example["local_prompt_list"],
54
+ ]
55
+ num_entities = len(example["local_prompt_list"])
56
+ result += [""] * (config["max_num_painter_layers"] - num_entities)
57
+ masks = []
58
+ for mask in example["mask_lists"]:
59
+ mask_single_channel = np.array(mask.convert("L"))
60
+ masks.append(mask_single_channel)
61
+ for _ in range(config["max_num_painter_layers"] - len(masks)):
62
+ blank_mask = np.zeros_like(masks[0]) if masks else np.zeros((512, 512), dtype=np.uint8)
63
+ masks.append(blank_mask)
64
+ background = np.ones((masks[0].shape[0], masks[0].shape[1], 4), dtype=np.uint8) * 255
65
+ canvas_data_list = []
66
+ for mask in masks:
67
+ canvas_data = create_canvas_data(background, [mask])
68
+ canvas_data_list.append(canvas_data)
69
+ result.extend(canvas_data_list)
70
+ return result
71
+
72
+ def save_mask_prompts(masks, mask_prompts, global_prompt, seed=0, random_dir='0000000'):
73
+ save_dir = os.path.join('workdirs/tmp_mask', random_dir)
74
+ print(f'save to {save_dir}')
75
+ os.makedirs(save_dir, exist_ok=True)
76
+ for i, mask in enumerate(masks):
77
+ save_path = os.path.join(save_dir, f'{i}.png')
78
+ mask.save(save_path)
79
+ sample = {
80
+ "global_prompt": global_prompt,
81
+ "mask_prompts": mask_prompts,
82
+ "seed": seed,
83
+ }
84
+ with open(os.path.join(save_dir, f"prompts.json"), 'w') as f:
85
+ json.dump(sample, f, indent=4)
86
+
87
+ def visualize_masks(image, masks, mask_prompts, font_size=35, use_random_colors=False):
88
+ # Create a blank image for overlays
89
+ overlay = Image.new('RGBA', image.size, (0, 0, 0, 0))
90
+ colors = [
91
+ (165, 238, 173, 80),
92
+ (76, 102, 221, 80),
93
+ (221, 160, 77, 80),
94
+ (204, 93, 71, 80),
95
+ (145, 187, 149, 80),
96
+ (134, 141, 172, 80),
97
+ (157, 137, 109, 80),
98
+ (153, 104, 95, 80),
99
+ (165, 238, 173, 80),
100
+ (76, 102, 221, 80),
101
+ (221, 160, 77, 80),
102
+ (204, 93, 71, 80),
103
+ (145, 187, 149, 80),
104
+ (134, 141, 172, 80),
105
+ (157, 137, 109, 80),
106
+ (153, 104, 95, 80),
107
+ ]
108
+ # Generate random colors for each mask
109
+ if use_random_colors:
110
+ colors = [(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255), 80) for _ in range(len(masks))]
111
+ # Font settings
112
+ try:
113
+ font = ImageFont.truetype("arial", font_size) # Adjust as needed
114
+ except IOError:
115
+ font = ImageFont.load_default(font_size)
116
+ # Overlay each mask onto the overlay image
117
+ for mask, mask_prompt, color in zip(masks, mask_prompts, colors):
118
+ if mask is None:
119
+ continue
120
+ # Convert mask to RGBA mode
121
+ mask_rgba = mask.convert('RGBA')
122
+ mask_data = mask_rgba.getdata()
123
+ new_data = [(color if item[:3] == (255, 255, 255) else (0, 0, 0, 0)) for item in mask_data]
124
+ mask_rgba.putdata(new_data)
125
+ # Draw the mask prompt text on the mask
126
+ draw = ImageDraw.Draw(mask_rgba)
127
+ mask_bbox = mask.getbbox() # Get the bounding box of the mask
128
+ if mask_bbox is None:
129
+ continue
130
+ text_position = (mask_bbox[0] + 10, mask_bbox[1] + 10) # Adjust text position based on mask position
131
+ draw.text(text_position, mask_prompt, fill=(255, 255, 255, 255), font=font)
132
+ # Alpha composite the overlay with this mask
133
+ overlay = Image.alpha_composite(overlay, mask_rgba)
134
+ # Composite the overlay onto the original image
135
+ result = Image.alpha_composite(image.convert('RGBA'), overlay)
136
+ return result
137
+
138
+ config = {
139
+ "model_config": {
140
+ "FLUX": {
141
+ "model_folder": "models/FLUX",
142
+ "pipeline_class": FluxImagePipeline,
143
+ "default_parameters": {
144
+ "cfg_scale": 3.0,
145
+ "embedded_guidance": 3.5,
146
+ "num_inference_steps": 30,
147
+ }
148
+ },
149
+ },
150
+ "max_num_painter_layers": 8,
151
+ "max_num_model_cache": 1,
152
+ }
153
+
154
+ model_dict = {}
155
+
156
+ def load_model(model_type='FLUX', model_path='FLUX.1-dev'):
157
+ global model_dict
158
+ model_key = f"{model_type}:{model_path}"
159
+ if model_key in model_dict:
160
+ return model_dict[model_key]
161
+ model_path = os.path.join(config["model_config"][model_type]["model_folder"], model_path)
162
+ model_manager = ModelManager(torch_dtype=torch.bfloat16, device="cuda", model_id_list=["FLUX.1-dev"])
163
+ model_manager.load_lora(
164
+ download_customized_models(
165
+ model_id="DiffSynth-Studio/Eligen",
166
+ origin_file_path="model_bf16.safetensors",
167
+ local_dir="models/lora/entity_control",
168
+ ),
169
+ lora_alpha=1,
170
+ )
171
+ pipe = config["model_config"][model_type]["pipeline_class"].from_model_manager(model_manager)
172
+ model_dict[model_key] = model_manager, pipe
173
+ return model_manager, pipe
174
+
175
+
176
+ with gr.Blocks() as app:
177
+ gr.Markdown(
178
+ """## EliGen: Entity-Level Controllable Text-to-Image Model
179
+ 1. On the left, input the **global prompt** for the overall image, such as "a person stands by the river."
180
+ 2. On the right, input the **local prompt** for each entity, such as "person," and draw the corresponding mask in the **Entity Mask Painter**. Generally, solid rectangular masks yield better results.
181
+ 3. Click the **Generate** button to create the image. By selecting different **random seeds**, you can generate diverse images.
182
+ 4. **You can directly click the "Load Example" button on any sample at the bottom to load example inputs.**
183
+ """
184
+ )
185
+
186
+ loading_status = gr.Textbox(label="Loading Model...", value="Loading model... Please wait...", visible=True)
187
+ main_interface = gr.Column(visible=False)
188
+
189
+ def initialize_model():
190
+ try:
191
+ load_model()
192
+ return {
193
+ loading_status: gr.update(value="Model loaded successfully!", visible=False),
194
+ main_interface: gr.update(visible=True),
195
+ }
196
+ except Exception as e:
197
+ print(f'Failed to load model with error: {e}')
198
+ return {
199
+ loading_status: gr.update(value=f"Failed to load model: {str(e)}", visible=True),
200
+ main_interface: gr.update(visible=True),
201
+ }
202
+
203
+ app.load(initialize_model, inputs=None, outputs=[loading_status, main_interface])
204
+
205
+ with main_interface:
206
+ with gr.Row():
207
+ local_prompt_list = []
208
+ canvas_list = []
209
+ random_mask_dir = gr.State(f'{random.randint(0, 1000000):08d}')
210
+ with gr.Column(scale=382, min_width=100):
211
+ model_type = gr.State('FLUX')
212
+ model_path = gr.State('FLUX.1-dev')
213
+ with gr.Accordion(label="Global prompt"):
214
+ prompt = gr.Textbox(label="Global Prompt", lines=3)
215
+ negative_prompt = gr.Textbox(label="Negative prompt", value="worst quality, low quality, monochrome, zombie, interlocked fingers, Aissist, cleavage, nsfw, blur,", lines=3)
216
+ with gr.Accordion(label="Inference Options", open=True):
217
+ seed = gr.Number(minimum=0, maximum=10**9, value=42, interactive=True, label="Random seed", show_label=True)
218
+ num_inference_steps = gr.Slider(minimum=1, maximum=100, value=30, step=1, interactive=True, label="Inference steps")
219
+ cfg_scale = gr.Slider(minimum=2.0, maximum=10.0, value=3.0, step=0.1, interactive=True, label="Classifier-free guidance scale")
220
+ embedded_guidance = gr.Slider(minimum=0.0, maximum=10.0, value=3.5, step=0.1, interactive=True, label="Embedded guidance scale")
221
+ height = gr.Slider(minimum=64, maximum=2048, value=1024, step=64, interactive=True, label="Height")
222
+ width = gr.Slider(minimum=64, maximum=2048, value=1024, step=64, interactive=True, label="Width")
223
+ with gr.Accordion(label="Inpaint Input Image", open=False):
224
+ input_image = gr.Image(sources=None, show_label=False, interactive=True, type="pil")
225
+ background_weight = gr.Slider(minimum=0.0, maximum=1000., value=0., step=1, interactive=False, label="background_weight", visible=False)
226
+
227
+ with gr.Column():
228
+ reset_input_button = gr.Button(value="Reset Inpaint Input")
229
+ send_input_to_painter = gr.Button(value="Set as painter's background")
230
+ @gr.on(inputs=[input_image], outputs=[input_image], triggers=reset_input_button.click)
231
+ def reset_input_image(input_image):
232
+ return None
233
+
234
+ with gr.Column(scale=618, min_width=100):
235
+ with gr.Accordion(label="Entity Painter"):
236
+ for painter_layer_id in range(config["max_num_painter_layers"]):
237
+ with gr.Tab(label=f"Entity {painter_layer_id}"):
238
+ local_prompt = gr.Textbox(label="Local prompt", key=f"local_prompt_{painter_layer_id}")
239
+ canvas = gr.ImageEditor(
240
+ canvas_size=(512, 512),
241
+ sources=None,
242
+ layers=False,
243
+ interactive=True,
244
+ image_mode="RGBA",
245
+ brush=gr.Brush(
246
+ default_size=50,
247
+ default_color="#000000",
248
+ colors=["#000000"],
249
+ ),
250
+ label="Entity Mask Painter",
251
+ key=f"canvas_{painter_layer_id}",
252
+ width=width,
253
+ height=height,
254
+ )
255
+ @gr.on(inputs=[height, width, canvas], outputs=canvas, triggers=[height.change, width.change, canvas.clear], show_progress="hidden")
256
+ def resize_canvas(height, width, canvas):
257
+ h, w = canvas["background"].shape[:2]
258
+ if h != height or width != w:
259
+ return np.ones((height, width, 3), dtype=np.uint8) * 255
260
+ else:
261
+ return canvas
262
+ local_prompt_list.append(local_prompt)
263
+ canvas_list.append(canvas)
264
+ with gr.Accordion(label="Results"):
265
+ run_button = gr.Button(value="Generate", variant="primary")
266
+ output_image = gr.Image(sources=None, show_label=False, interactive=False, type="pil")
267
+ with gr.Row():
268
+ with gr.Column():
269
+ output_to_painter_button = gr.Button(value="Set as painter's background")
270
+ with gr.Column():
271
+ return_with_mask = gr.Checkbox(value=False, interactive=True, label="show result with mask painting")
272
+ output_to_input_button = gr.Button(value="Set as input image", visible=False, interactive=False)
273
+ real_output = gr.State(None)
274
+ mask_out = gr.State(None)
275
+
276
+ @gr.on(
277
+ inputs=[model_type, model_path, prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width, return_with_mask, seed, input_image, background_weight, random_mask_dir] + local_prompt_list + canvas_list,
278
+ outputs=[output_image, real_output, mask_out],
279
+ triggers=run_button.click
280
+ )
281
+ def generate_image(model_type, model_path, prompt, negative_prompt, cfg_scale, embedded_guidance, num_inference_steps, height, width, return_with_mask, seed, input_image, background_weight, random_mask_dir, *args, progress=gr.Progress()):
282
+ _, pipe = load_model(model_type, model_path)
283
+ input_params = {
284
+ "prompt": prompt,
285
+ "negative_prompt": negative_prompt,
286
+ "cfg_scale": cfg_scale,
287
+ "num_inference_steps": num_inference_steps,
288
+ "height": height,
289
+ "width": width,
290
+ "progress_bar_cmd": progress.tqdm,
291
+ }
292
+ if isinstance(pipe, FluxImagePipeline):
293
+ input_params["embedded_guidance"] = embedded_guidance
294
+ if input_image is not None:
295
+ input_params["input_image"] = input_image.resize((width, height)).convert("RGB")
296
+ input_params["enable_eligen_inpaint"] = True
297
+
298
+ local_prompt_list, canvas_list = (
299
+ args[0 * config["max_num_painter_layers"]: 1 * config["max_num_painter_layers"]],
300
+ args[1 * config["max_num_painter_layers"]: 2 * config["max_num_painter_layers"]],
301
+ )
302
+ local_prompts, masks = [], []
303
+ for local_prompt, canvas in zip(local_prompt_list, canvas_list):
304
+ if isinstance(local_prompt, str) and len(local_prompt) > 0:
305
+ local_prompts.append(local_prompt)
306
+ masks.append(Image.fromarray(canvas["layers"][0][:, :, -1]).convert("RGB"))
307
+ entity_masks = None if len(masks) == 0 else masks
308
+ entity_prompts = None if len(local_prompts) == 0 else local_prompts
309
+ input_params.update({
310
+ "eligen_entity_prompts": entity_prompts,
311
+ "eligen_entity_masks": entity_masks,
312
+ })
313
+ torch.manual_seed(seed)
314
+ # save_mask_prompts(masks, local_prompts, prompt, seed, random_mask_dir)
315
+ image = pipe(**input_params)
316
+ masks = [mask.resize(image.size) for mask in masks]
317
+ image_with_mask = visualize_masks(image, masks, local_prompts)
318
+
319
+ real_output = gr.State(image)
320
+ mask_out = gr.State(image_with_mask)
321
+
322
+ if return_with_mask:
323
+ return image_with_mask, real_output, mask_out
324
+ return image, real_output, mask_out
325
+
326
+ @gr.on(inputs=[input_image] + canvas_list, outputs=canvas_list, triggers=send_input_to_painter.click)
327
+ def send_input_to_painter_background(input_image, *canvas_list):
328
+ if input_image is None:
329
+ return tuple(canvas_list)
330
+ for canvas in canvas_list:
331
+ h, w = canvas["background"].shape[:2]
332
+ canvas["background"] = input_image.resize((w, h))
333
+ return tuple(canvas_list)
334
+ @gr.on(inputs=[real_output] + canvas_list, outputs=canvas_list, triggers=output_to_painter_button.click)
335
+ def send_output_to_painter_background(real_output, *canvas_list):
336
+ if real_output is None:
337
+ return tuple(canvas_list)
338
+ for canvas in canvas_list:
339
+ h, w = canvas["background"].shape[:2]
340
+ canvas["background"] = real_output.value.resize((w, h))
341
+ return tuple(canvas_list)
342
+ @gr.on(inputs=[return_with_mask, real_output, mask_out], outputs=[output_image], triggers=[return_with_mask.change], show_progress="hidden")
343
+ def show_output(return_with_mask, real_output, mask_out):
344
+ if return_with_mask:
345
+ return mask_out.value
346
+ else:
347
+ return real_output.value
348
+ @gr.on(inputs=[real_output], outputs=[input_image], triggers=output_to_input_button.click)
349
+ def send_output_to_pipe_input(real_output):
350
+ return real_output.value
351
+
352
+ with gr.Column():
353
+ gr.Markdown("## Examples")
354
+ for i in range(0, len(examples), 2):
355
+ with gr.Row():
356
+ if i < len(examples):
357
+ example = examples[i]
358
+ with gr.Column():
359
+ example_image = gr.Image(
360
+ value=f"data/examples/eligen/entity_control/example_{example['example_id']}/example_image.png",
361
+ label=example["description"],
362
+ interactive=False,
363
+ width=1024,
364
+ height=512
365
+ )
366
+ load_example_button = gr.Button(value=f"Load Example {example['example_id']}")
367
+ load_example_button.click(
368
+ load_example,
369
+ inputs=[load_example_button],
370
+ outputs=[num_inference_steps, prompt, negative_prompt, seed] + local_prompt_list + canvas_list
371
+ )
372
+
373
+ if i + 1 < len(examples):
374
+ example = examples[i + 1]
375
+ with gr.Column():
376
+ example_image = gr.Image(
377
+ value=f"data/examples/eligen/entity_control/example_{example['example_id']}/example_image.png",
378
+ label=example["description"],
379
+ interactive=False,
380
+ width=1024,
381
+ height=512
382
+ )
383
+ load_example_button = gr.Button(value=f"Load Example {example['example_id']}")
384
+ load_example_button.click(
385
+ load_example,
386
+ inputs=[load_example_button],
387
+ outputs=[num_inference_steps, prompt, negative_prompt, seed] + local_prompt_list + canvas_list
388
+ )
389
+ app.config["show_progress"] = "hidden"
390
+ app.launch()
diffsynth-studio/apps/streamlit/DiffSynth_Studio.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Set web page format
2
+ import streamlit as st
3
+ st.set_page_config(layout="wide")
4
+ # Disable virtual VRAM on windows system
5
+ import torch
6
+ torch.cuda.set_per_process_memory_fraction(0.999, 0)
7
+
8
+
9
+ st.markdown("""
10
+ # DiffSynth Studio
11
+
12
+ [Source Code](https://github.com/Artiprocher/DiffSynth-Studio)
13
+
14
+ Welcome to DiffSynth Studio.
15
+ """)
diffsynth-studio/apps/streamlit/pages/1_Image_Creator.py ADDED
@@ -0,0 +1,362 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch, os, io, json, time
2
+ import numpy as np
3
+ from PIL import Image
4
+ import streamlit as st
5
+ st.set_page_config(layout="wide")
6
+ from streamlit_drawable_canvas import st_canvas
7
+ from diffsynth.models import ModelManager
8
+ from diffsynth.pipelines import SDImagePipeline, SDXLImagePipeline, SD3ImagePipeline, HunyuanDiTImagePipeline, FluxImagePipeline
9
+ from diffsynth.data.video import crop_and_resize
10
+
11
+
12
+ config = {
13
+ "Stable Diffusion": {
14
+ "model_folder": "models/stable_diffusion",
15
+ "pipeline_class": SDImagePipeline,
16
+ "fixed_parameters": {}
17
+ },
18
+ "Stable Diffusion XL": {
19
+ "model_folder": "models/stable_diffusion_xl",
20
+ "pipeline_class": SDXLImagePipeline,
21
+ "fixed_parameters": {}
22
+ },
23
+ "Stable Diffusion 3": {
24
+ "model_folder": "models/stable_diffusion_3",
25
+ "pipeline_class": SD3ImagePipeline,
26
+ "fixed_parameters": {}
27
+ },
28
+ "Stable Diffusion XL Turbo": {
29
+ "model_folder": "models/stable_diffusion_xl_turbo",
30
+ "pipeline_class": SDXLImagePipeline,
31
+ "fixed_parameters": {
32
+ "negative_prompt": "",
33
+ "cfg_scale": 1.0,
34
+ "num_inference_steps": 1,
35
+ "height": 512,
36
+ "width": 512,
37
+ }
38
+ },
39
+ "Kolors": {
40
+ "model_folder": "models/kolors",
41
+ "pipeline_class": SDXLImagePipeline,
42
+ "fixed_parameters": {}
43
+ },
44
+ "HunyuanDiT": {
45
+ "model_folder": "models/HunyuanDiT",
46
+ "pipeline_class": HunyuanDiTImagePipeline,
47
+ "fixed_parameters": {
48
+ "height": 1024,
49
+ "width": 1024,
50
+ }
51
+ },
52
+ "FLUX": {
53
+ "model_folder": "models/FLUX",
54
+ "pipeline_class": FluxImagePipeline,
55
+ "fixed_parameters": {
56
+ "cfg_scale": 1.0,
57
+ }
58
+ }
59
+ }
60
+
61
+
62
+ def load_model_list(model_type):
63
+ folder = config[model_type]["model_folder"]
64
+ file_list = [i for i in os.listdir(folder) if i.endswith(".safetensors")]
65
+ if model_type in ["HunyuanDiT", "Kolors", "FLUX"]:
66
+ file_list += [i for i in os.listdir(folder) if os.path.isdir(os.path.join(folder, i))]
67
+ file_list = sorted(file_list)
68
+ return file_list
69
+
70
+
71
+ def release_model():
72
+ if "model_manager" in st.session_state:
73
+ st.session_state["model_manager"].to("cpu")
74
+ del st.session_state["loaded_model_path"]
75
+ del st.session_state["model_manager"]
76
+ del st.session_state["pipeline"]
77
+ torch.cuda.empty_cache()
78
+
79
+
80
+ def load_model(model_type, model_path):
81
+ model_manager = ModelManager()
82
+ if model_type == "HunyuanDiT":
83
+ model_manager.load_models([
84
+ os.path.join(model_path, "clip_text_encoder/pytorch_model.bin"),
85
+ os.path.join(model_path, "mt5/pytorch_model.bin"),
86
+ os.path.join(model_path, "model/pytorch_model_ema.pt"),
87
+ os.path.join(model_path, "sdxl-vae-fp16-fix/diffusion_pytorch_model.bin"),
88
+ ])
89
+ elif model_type == "Kolors":
90
+ model_manager.load_models([
91
+ os.path.join(model_path, "text_encoder"),
92
+ os.path.join(model_path, "unet/diffusion_pytorch_model.safetensors"),
93
+ os.path.join(model_path, "vae/diffusion_pytorch_model.safetensors"),
94
+ ])
95
+ elif model_type == "FLUX":
96
+ model_manager.torch_dtype = torch.bfloat16
97
+ file_list = [
98
+ os.path.join(model_path, "text_encoder/model.safetensors"),
99
+ os.path.join(model_path, "text_encoder_2"),
100
+ ]
101
+ for file_name in os.listdir(model_path):
102
+ if file_name.endswith(".safetensors"):
103
+ file_list.append(os.path.join(model_path, file_name))
104
+ model_manager.load_models(file_list)
105
+ else:
106
+ model_manager.load_model(model_path)
107
+ pipeline = config[model_type]["pipeline_class"].from_model_manager(model_manager)
108
+ st.session_state.loaded_model_path = model_path
109
+ st.session_state.model_manager = model_manager
110
+ st.session_state.pipeline = pipeline
111
+ return model_manager, pipeline
112
+
113
+
114
+ def use_output_image_as_input(update=True):
115
+ # Search for input image
116
+ output_image_id = 0
117
+ selected_output_image = None
118
+ while True:
119
+ if f"use_output_as_input_{output_image_id}" not in st.session_state:
120
+ break
121
+ if st.session_state[f"use_output_as_input_{output_image_id}"]:
122
+ selected_output_image = st.session_state["output_images"][output_image_id]
123
+ break
124
+ output_image_id += 1
125
+ if update and selected_output_image is not None:
126
+ st.session_state["input_image"] = selected_output_image
127
+ return selected_output_image is not None
128
+
129
+
130
+ def apply_stroke_to_image(stroke_image, image):
131
+ image = np.array(image.convert("RGB")).astype(np.float32)
132
+ height, width, _ = image.shape
133
+
134
+ stroke_image = np.array(Image.fromarray(stroke_image).resize((width, height))).astype(np.float32)
135
+ weight = stroke_image[:, :, -1:] / 255
136
+ stroke_image = stroke_image[:, :, :-1]
137
+
138
+ image = stroke_image * weight + image * (1 - weight)
139
+ image = np.clip(image, 0, 255).astype(np.uint8)
140
+ image = Image.fromarray(image)
141
+ return image
142
+
143
+
144
+ @st.cache_data
145
+ def image2bits(image):
146
+ image_byte = io.BytesIO()
147
+ image.save(image_byte, format="PNG")
148
+ image_byte = image_byte.getvalue()
149
+ return image_byte
150
+
151
+
152
+ def show_output_image(image):
153
+ st.image(image, use_column_width="always")
154
+ st.button("Use it as input image", key=f"use_output_as_input_{image_id}")
155
+ st.download_button("Download", data=image2bits(image), file_name="image.png", mime="image/png", key=f"download_output_{image_id}")
156
+
157
+
158
+ column_input, column_output = st.columns(2)
159
+ with st.sidebar:
160
+ # Select a model
161
+ with st.expander("Model", expanded=True):
162
+ model_type = st.selectbox("Model type", [model_type_ for model_type_ in config])
163
+ fixed_parameters = config[model_type]["fixed_parameters"]
164
+ model_path_list = ["None"] + load_model_list(model_type)
165
+ model_path = st.selectbox("Model path", model_path_list)
166
+
167
+ # Load the model
168
+ if model_path == "None":
169
+ # No models are selected. Release VRAM.
170
+ st.markdown("No models are selected.")
171
+ release_model()
172
+ else:
173
+ # A model is selected.
174
+ model_path = os.path.join(config[model_type]["model_folder"], model_path)
175
+ if st.session_state.get("loaded_model_path", "") != model_path:
176
+ # The loaded model is not the selected model. Reload it.
177
+ st.markdown(f"Loading model at {model_path}.")
178
+ st.markdown("Please wait a moment...")
179
+ release_model()
180
+ model_manager, pipeline = load_model(model_type, model_path)
181
+ st.markdown("Done.")
182
+ else:
183
+ # The loaded model is not the selected model. Fetch it from `st.session_state`.
184
+ st.markdown(f"Loading model at {model_path}.")
185
+ st.markdown("Please wait a moment...")
186
+ model_manager, pipeline = st.session_state.model_manager, st.session_state.pipeline
187
+ st.markdown("Done.")
188
+
189
+ # Show parameters
190
+ with st.expander("Prompt", expanded=True):
191
+ prompt = st.text_area("Positive prompt")
192
+ if "negative_prompt" in fixed_parameters:
193
+ negative_prompt = fixed_parameters["negative_prompt"]
194
+ else:
195
+ negative_prompt = st.text_area("Negative prompt")
196
+ if "cfg_scale" in fixed_parameters:
197
+ cfg_scale = fixed_parameters["cfg_scale"]
198
+ else:
199
+ cfg_scale = st.slider("Classifier-free guidance scale", min_value=1.0, max_value=10.0, value=7.5)
200
+ with st.expander("Image", expanded=True):
201
+ if "num_inference_steps" in fixed_parameters:
202
+ num_inference_steps = fixed_parameters["num_inference_steps"]
203
+ else:
204
+ num_inference_steps = st.slider("Inference steps", min_value=1, max_value=100, value=20)
205
+ if "height" in fixed_parameters:
206
+ height = fixed_parameters["height"]
207
+ else:
208
+ height = st.select_slider("Height", options=[256, 512, 768, 1024, 2048], value=512)
209
+ if "width" in fixed_parameters:
210
+ width = fixed_parameters["width"]
211
+ else:
212
+ width = st.select_slider("Width", options=[256, 512, 768, 1024, 2048], value=512)
213
+ num_images = st.number_input("Number of images", value=2)
214
+ use_fixed_seed = st.checkbox("Use fixed seed", value=False)
215
+ if use_fixed_seed:
216
+ seed = st.number_input("Random seed", min_value=0, max_value=10**9, step=1, value=0)
217
+
218
+ # Other fixed parameters
219
+ denoising_strength = 1.0
220
+ repetition = 1
221
+
222
+
223
+ # Show input image
224
+ with column_input:
225
+ with st.expander("Input image (Optional)", expanded=True):
226
+ with st.container(border=True):
227
+ column_white_board, column_upload_image = st.columns([1, 2])
228
+ with column_white_board:
229
+ create_white_board = st.button("Create white board")
230
+ delete_input_image = st.button("Delete input image")
231
+ with column_upload_image:
232
+ upload_image = st.file_uploader("Upload image", type=["png", "jpg"], key="upload_image")
233
+
234
+ if upload_image is not None:
235
+ st.session_state["input_image"] = crop_and_resize(Image.open(upload_image), height, width)
236
+ elif create_white_board:
237
+ st.session_state["input_image"] = Image.fromarray(np.ones((height, width, 3), dtype=np.uint8) * 255)
238
+ else:
239
+ use_output_image_as_input()
240
+
241
+ if delete_input_image and "input_image" in st.session_state:
242
+ del st.session_state.input_image
243
+ if delete_input_image and "upload_image" in st.session_state:
244
+ del st.session_state.upload_image
245
+
246
+ input_image = st.session_state.get("input_image", None)
247
+ if input_image is not None:
248
+ with st.container(border=True):
249
+ column_drawing_mode, column_color_1, column_color_2 = st.columns([4, 1, 1])
250
+ with column_drawing_mode:
251
+ drawing_mode = st.radio("Drawing tool", ["transform", "freedraw", "line", "rect"], horizontal=True, index=1)
252
+ with column_color_1:
253
+ stroke_color = st.color_picker("Stroke color")
254
+ with column_color_2:
255
+ fill_color = st.color_picker("Fill color")
256
+ stroke_width = st.slider("Stroke width", min_value=1, max_value=50, value=10)
257
+ with st.container(border=True):
258
+ denoising_strength = st.slider("Denoising strength", min_value=0.0, max_value=1.0, value=0.7)
259
+ repetition = st.slider("Repetition", min_value=1, max_value=8, value=1)
260
+ with st.container(border=True):
261
+ input_width, input_height = input_image.size
262
+ canvas_result = st_canvas(
263
+ fill_color=fill_color,
264
+ stroke_width=stroke_width,
265
+ stroke_color=stroke_color,
266
+ background_color="rgba(255, 255, 255, 0)",
267
+ background_image=input_image,
268
+ update_streamlit=True,
269
+ height=int(512 / input_width * input_height),
270
+ width=512,
271
+ drawing_mode=drawing_mode,
272
+ key="canvas"
273
+ )
274
+
275
+ num_painter_layer = st.number_input("Number of painter layers", min_value=0, max_value=10, step=1, value=0)
276
+ local_prompts, masks, mask_scales = [], [], []
277
+ white_board = Image.fromarray(np.ones((512, 512, 3), dtype=np.uint8) * 255)
278
+ painter_layers_json_data = []
279
+ for painter_tab_id in range(num_painter_layer):
280
+ with st.expander(f"Painter layer {painter_tab_id}", expanded=True):
281
+ enable_local_prompt = st.checkbox(f"Enable prompt {painter_tab_id}", value=True)
282
+ local_prompt = st.text_area(f"Prompt {painter_tab_id}")
283
+ mask_scale = st.slider(f"Mask scale {painter_tab_id}", min_value=0.0, max_value=3.0, value=1.0)
284
+ stroke_width = st.slider(f"Stroke width {painter_tab_id}", min_value=1, max_value=300, value=100)
285
+ canvas_result_local = st_canvas(
286
+ fill_color="#000000",
287
+ stroke_width=stroke_width,
288
+ stroke_color="#000000",
289
+ background_color="rgba(255, 255, 255, 0)",
290
+ background_image=white_board,
291
+ update_streamlit=True,
292
+ height=512,
293
+ width=512,
294
+ drawing_mode="freedraw",
295
+ key=f"canvas_{painter_tab_id}"
296
+ )
297
+ if canvas_result_local.json_data is not None:
298
+ painter_layers_json_data.append(canvas_result_local.json_data.copy())
299
+ painter_layers_json_data[-1]["prompt"] = local_prompt
300
+ if enable_local_prompt:
301
+ local_prompts.append(local_prompt)
302
+ if canvas_result_local.image_data is not None:
303
+ mask = apply_stroke_to_image(canvas_result_local.image_data, white_board)
304
+ else:
305
+ mask = white_board
306
+ mask = Image.fromarray(255 - np.array(mask))
307
+ masks.append(mask)
308
+ mask_scales.append(mask_scale)
309
+ save_painter_layers = st.button("Save painter layers")
310
+ if save_painter_layers:
311
+ os.makedirs("data/painter_layers", exist_ok=True)
312
+ json_file_path = f"data/painter_layers/{time.time_ns()}.json"
313
+ with open(json_file_path, "w") as f:
314
+ json.dump(painter_layers_json_data, f, indent=4)
315
+ st.markdown(f"Painter layers are saved in {json_file_path}.")
316
+
317
+
318
+ with column_output:
319
+ run_button = st.button("Generate image", type="primary")
320
+ auto_update = st.checkbox("Auto update", value=False)
321
+ num_image_columns = st.slider("Columns", min_value=1, max_value=8, value=2)
322
+ image_columns = st.columns(num_image_columns)
323
+
324
+ # Run
325
+ if (run_button or auto_update) and model_path != "None":
326
+
327
+ if input_image is not None:
328
+ input_image = input_image.resize((width, height))
329
+ if canvas_result.image_data is not None:
330
+ input_image = apply_stroke_to_image(canvas_result.image_data, input_image)
331
+
332
+ output_images = []
333
+ for image_id in range(num_images * repetition):
334
+ if use_fixed_seed:
335
+ torch.manual_seed(seed + image_id)
336
+ else:
337
+ torch.manual_seed(np.random.randint(0, 10**9))
338
+ if image_id >= num_images:
339
+ input_image = output_images[image_id - num_images]
340
+ with image_columns[image_id % num_image_columns]:
341
+ progress_bar_st = st.progress(0.0)
342
+ image = pipeline(
343
+ prompt, negative_prompt=negative_prompt,
344
+ local_prompts=local_prompts, masks=masks, mask_scales=mask_scales,
345
+ cfg_scale=cfg_scale, num_inference_steps=num_inference_steps,
346
+ height=height, width=width,
347
+ input_image=input_image, denoising_strength=denoising_strength,
348
+ progress_bar_st=progress_bar_st
349
+ )
350
+ output_images.append(image)
351
+ progress_bar_st.progress(1.0)
352
+ show_output_image(image)
353
+ st.session_state["output_images"] = output_images
354
+
355
+ elif "output_images" in st.session_state:
356
+ for image_id in range(len(st.session_state.output_images)):
357
+ with image_columns[image_id % num_image_columns]:
358
+ image = st.session_state.output_images[image_id]
359
+ progress_bar = st.progress(1.0)
360
+ show_output_image(image)
361
+ if "upload_image" in st.session_state and use_output_image_as_input(update=False):
362
+ st.markdown("If you want to use an output image as input image, please delete the uploaded image manually.")
diffsynth-studio/apps/streamlit/pages/2_Video_Creator.py ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ st.set_page_config(layout="wide")
3
+ from diffsynth import SDVideoPipelineRunner
4
+ import os
5
+ import numpy as np
6
+
7
+
8
+ def load_model_list(folder):
9
+ file_list = os.listdir(folder)
10
+ file_list = [i for i in file_list if i.endswith(".safetensors") or i.endswith(".pth") or i.endswith(".ckpt")]
11
+ file_list = sorted(file_list)
12
+ return file_list
13
+
14
+
15
+ def match_processor_id(model_name, supported_processor_id_list):
16
+ sorted_processor_id = [i[1] for i in sorted([(-len(i), i) for i in supported_processor_id_list])]
17
+ for processor_id in sorted_processor_id:
18
+ if processor_id in model_name:
19
+ return supported_processor_id_list.index(processor_id) + 1
20
+ return 0
21
+
22
+
23
+ config = {
24
+ "models": {
25
+ "model_list": [],
26
+ "textual_inversion_folder": "models/textual_inversion",
27
+ "device": "cuda",
28
+ "lora_alphas": [],
29
+ "controlnet_units": []
30
+ },
31
+ "data": {
32
+ "input_frames": None,
33
+ "controlnet_frames": [],
34
+ "output_folder": "output",
35
+ "fps": 60
36
+ },
37
+ "pipeline": {
38
+ "seed": 0,
39
+ "pipeline_inputs": {}
40
+ }
41
+ }
42
+
43
+
44
+ with st.expander("Model", expanded=True):
45
+ stable_diffusion_ckpt = st.selectbox("Stable Diffusion", ["None"] + load_model_list("models/stable_diffusion"))
46
+ if stable_diffusion_ckpt != "None":
47
+ config["models"]["model_list"].append(os.path.join("models/stable_diffusion", stable_diffusion_ckpt))
48
+ animatediff_ckpt = st.selectbox("AnimateDiff", ["None"] + load_model_list("models/AnimateDiff"))
49
+ if animatediff_ckpt != "None":
50
+ config["models"]["model_list"].append(os.path.join("models/AnimateDiff", animatediff_ckpt))
51
+ column_lora, column_lora_alpha = st.columns([2, 1])
52
+ with column_lora:
53
+ sd_lora_ckpt = st.selectbox("LoRA", ["None"] + load_model_list("models/lora"))
54
+ with column_lora_alpha:
55
+ lora_alpha = st.slider("LoRA Alpha", min_value=-4.0, max_value=4.0, value=1.0, step=0.1)
56
+ if sd_lora_ckpt != "None":
57
+ config["models"]["model_list"].append(os.path.join("models/lora", sd_lora_ckpt))
58
+ config["models"]["lora_alphas"].append(lora_alpha)
59
+
60
+
61
+ with st.expander("Data", expanded=True):
62
+ with st.container(border=True):
63
+ input_video = st.text_input("Input Video File Path (e.g., data/your_video.mp4)", value="")
64
+ column_height, column_width, column_start_frame_index, column_end_frame_index = st.columns([2, 2, 1, 1])
65
+ with column_height:
66
+ height = st.select_slider("Height", options=[256, 512, 768, 1024, 1536, 2048], value=1024)
67
+ with column_width:
68
+ width = st.select_slider("Width", options=[256, 512, 768, 1024, 1536, 2048], value=1024)
69
+ with column_start_frame_index:
70
+ start_frame_id = st.number_input("Start Frame id", value=0)
71
+ with column_end_frame_index:
72
+ end_frame_id = st.number_input("End Frame id", value=16)
73
+ if input_video != "":
74
+ config["data"]["input_frames"] = {
75
+ "video_file": input_video,
76
+ "image_folder": None,
77
+ "height": height,
78
+ "width": width,
79
+ "start_frame_id": start_frame_id,
80
+ "end_frame_id": end_frame_id
81
+ }
82
+ with st.container(border=True):
83
+ output_video = st.text_input("Output Video File Path (e.g., data/a_folder_to_save_something)", value="output")
84
+ fps = st.number_input("FPS", value=60)
85
+ config["data"]["output_folder"] = output_video
86
+ config["data"]["fps"] = fps
87
+
88
+
89
+ with st.expander("ControlNet Units", expanded=True):
90
+ supported_processor_id_list = ["canny", "depth", "softedge", "lineart", "lineart_anime", "openpose", "tile"]
91
+ controlnet_units = st.tabs(["ControlNet Unit 0", "ControlNet Unit 1", "ControlNet Unit 2"])
92
+ for controlnet_id in range(len(controlnet_units)):
93
+ with controlnet_units[controlnet_id]:
94
+ controlnet_ckpt = st.selectbox("ControlNet", ["None"] + load_model_list("models/ControlNet"),
95
+ key=f"controlnet_ckpt_{controlnet_id}")
96
+ processor_id = st.selectbox("Processor", ["None"] + supported_processor_id_list,
97
+ index=match_processor_id(controlnet_ckpt, supported_processor_id_list),
98
+ disabled=controlnet_ckpt == "None", key=f"processor_id_{controlnet_id}")
99
+ controlnet_scale = st.slider("Scale", min_value=0.0, max_value=1.0, step=0.01, value=0.5,
100
+ disabled=controlnet_ckpt == "None", key=f"controlnet_scale_{controlnet_id}")
101
+ use_input_video_as_controlnet_input = st.checkbox("Use input video as ControlNet input", value=True,
102
+ disabled=controlnet_ckpt == "None",
103
+ key=f"use_input_video_as_controlnet_input_{controlnet_id}")
104
+ if not use_input_video_as_controlnet_input:
105
+ controlnet_input_video = st.text_input("ControlNet Input Video File Path", value="",
106
+ disabled=controlnet_ckpt == "None", key=f"controlnet_input_video_{controlnet_id}")
107
+ column_height, column_width, column_start_frame_index, column_end_frame_index = st.columns([2, 2, 1, 1])
108
+ with column_height:
109
+ height = st.select_slider("Height", options=[256, 512, 768, 1024, 1536, 2048], value=1024,
110
+ disabled=controlnet_ckpt == "None", key=f"controlnet_height_{controlnet_id}")
111
+ with column_width:
112
+ width = st.select_slider("Width", options=[256, 512, 768, 1024, 1536, 2048], value=1024,
113
+ disabled=controlnet_ckpt == "None", key=f"controlnet_width_{controlnet_id}")
114
+ with column_start_frame_index:
115
+ start_frame_id = st.number_input("Start Frame id", value=0,
116
+ disabled=controlnet_ckpt == "None", key=f"controlnet_start_frame_id_{controlnet_id}")
117
+ with column_end_frame_index:
118
+ end_frame_id = st.number_input("End Frame id", value=16,
119
+ disabled=controlnet_ckpt == "None", key=f"controlnet_end_frame_id_{controlnet_id}")
120
+ if input_video != "":
121
+ config["data"]["input_video"] = {
122
+ "video_file": input_video,
123
+ "image_folder": None,
124
+ "height": height,
125
+ "width": width,
126
+ "start_frame_id": start_frame_id,
127
+ "end_frame_id": end_frame_id
128
+ }
129
+ if controlnet_ckpt != "None":
130
+ config["models"]["model_list"].append(os.path.join("models/ControlNet", controlnet_ckpt))
131
+ config["models"]["controlnet_units"].append({
132
+ "processor_id": processor_id,
133
+ "model_path": os.path.join("models/ControlNet", controlnet_ckpt),
134
+ "scale": controlnet_scale,
135
+ })
136
+ if use_input_video_as_controlnet_input:
137
+ config["data"]["controlnet_frames"].append(config["data"]["input_frames"])
138
+ else:
139
+ config["data"]["controlnet_frames"].append({
140
+ "video_file": input_video,
141
+ "image_folder": None,
142
+ "height": height,
143
+ "width": width,
144
+ "start_frame_id": start_frame_id,
145
+ "end_frame_id": end_frame_id
146
+ })
147
+
148
+
149
+ with st.container(border=True):
150
+ with st.expander("Seed", expanded=True):
151
+ use_fixed_seed = st.checkbox("Use fixed seed", value=False)
152
+ if use_fixed_seed:
153
+ seed = st.number_input("Random seed", min_value=0, max_value=10**9, step=1, value=0)
154
+ else:
155
+ seed = np.random.randint(0, 10**9)
156
+ with st.expander("Textual Guidance", expanded=True):
157
+ prompt = st.text_area("Positive prompt")
158
+ negative_prompt = st.text_area("Negative prompt")
159
+ column_cfg_scale, column_clip_skip = st.columns(2)
160
+ with column_cfg_scale:
161
+ cfg_scale = st.slider("Classifier-free guidance scale", min_value=1.0, max_value=10.0, value=7.0)
162
+ with column_clip_skip:
163
+ clip_skip = st.slider("Clip Skip", min_value=1, max_value=4, value=1)
164
+ with st.expander("Denoising", expanded=True):
165
+ column_num_inference_steps, column_denoising_strength = st.columns(2)
166
+ with column_num_inference_steps:
167
+ num_inference_steps = st.slider("Inference steps", min_value=1, max_value=100, value=10)
168
+ with column_denoising_strength:
169
+ denoising_strength = st.slider("Denoising strength", min_value=0.0, max_value=1.0, value=1.0)
170
+ with st.expander("Efficiency", expanded=False):
171
+ animatediff_batch_size = st.slider("Animatediff batch size (sliding window size)", min_value=1, max_value=32, value=16, step=1)
172
+ animatediff_stride = st.slider("Animatediff stride",
173
+ min_value=1,
174
+ max_value=max(2, animatediff_batch_size),
175
+ value=max(1, animatediff_batch_size // 2),
176
+ step=1)
177
+ unet_batch_size = st.slider("UNet batch size", min_value=1, max_value=32, value=1, step=1)
178
+ controlnet_batch_size = st.slider("ControlNet batch size", min_value=1, max_value=32, value=1, step=1)
179
+ cross_frame_attention = st.checkbox("Enable Cross-Frame Attention", value=False)
180
+ config["pipeline"]["seed"] = seed
181
+ config["pipeline"]["pipeline_inputs"] = {
182
+ "prompt": prompt,
183
+ "negative_prompt": negative_prompt,
184
+ "cfg_scale": cfg_scale,
185
+ "clip_skip": clip_skip,
186
+ "denoising_strength": denoising_strength,
187
+ "num_inference_steps": num_inference_steps,
188
+ "animatediff_batch_size": animatediff_batch_size,
189
+ "animatediff_stride": animatediff_stride,
190
+ "unet_batch_size": unet_batch_size,
191
+ "controlnet_batch_size": controlnet_batch_size,
192
+ "cross_frame_attention": cross_frame_attention,
193
+ }
194
+
195
+ run_button = st.button("☢️Run☢️", type="primary")
196
+ if run_button:
197
+ SDVideoPipelineRunner(in_streamlit=True).run(config)
diffsynth-studio/diffsynth.egg-info/PKG-INFO ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.4
2
+ Name: diffsynth
3
+ Version: 1.1.7
4
+ Summary: Enjoy the magic of Diffusion models!
5
+ Author: Artiprocher
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: License :: OSI Approved :: Apache Software License
8
+ Classifier: Operating System :: OS Independent
9
+ Requires-Python: >=3.6
10
+ License-File: LICENSE
11
+ Requires-Dist: torch>=2.0.0
12
+ Requires-Dist: torchvision
13
+ Requires-Dist: cupy-cuda12x
14
+ Requires-Dist: transformers==4.56.0
15
+ Requires-Dist: controlnet-aux==0.0.7
16
+ Requires-Dist: imageio
17
+ Requires-Dist: imageio[ffmpeg]
18
+ Requires-Dist: safetensors
19
+ Requires-Dist: einops
20
+ Requires-Dist: sentencepiece
21
+ Requires-Dist: protobuf
22
+ Requires-Dist: modelscope
23
+ Requires-Dist: ftfy
24
+ Requires-Dist: pynvml
25
+ Requires-Dist: pandas
26
+ Requires-Dist: accelerate
27
+ Dynamic: author
28
+ Dynamic: classifier
29
+ Dynamic: license-file
30
+ Dynamic: requires-dist
31
+ Dynamic: requires-python
32
+ Dynamic: summary
diffsynth-studio/diffsynth.egg-info/SOURCES.txt ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LICENSE
2
+ setup.py
3
+ diffsynth/__init__.py
4
+ diffsynth.egg-info/PKG-INFO
5
+ diffsynth.egg-info/SOURCES.txt
6
+ diffsynth.egg-info/dependency_links.txt
7
+ diffsynth.egg-info/requires.txt
8
+ diffsynth.egg-info/top_level.txt
9
+ diffsynth/configs/__init__.py
10
+ diffsynth/configs/model_config.py
11
+ diffsynth/controlnets/__init__.py
12
+ diffsynth/controlnets/controlnet_unit.py
13
+ diffsynth/controlnets/processors.py
14
+ diffsynth/data/__init__.py
15
+ diffsynth/data/simple_text_image.py
16
+ diffsynth/data/video.py
17
+ diffsynth/distributed/__init__.py
18
+ diffsynth/distributed/xdit_context_parallel.py
19
+ diffsynth/extensions/__init__.py
20
+ diffsynth/extensions/ESRGAN/__init__.py
21
+ diffsynth/extensions/FastBlend/__init__.py
22
+ diffsynth/extensions/FastBlend/api.py
23
+ diffsynth/extensions/FastBlend/cupy_kernels.py
24
+ diffsynth/extensions/FastBlend/data.py
25
+ diffsynth/extensions/FastBlend/patch_match.py
26
+ diffsynth/extensions/FastBlend/runners/__init__.py
27
+ diffsynth/extensions/FastBlend/runners/accurate.py
28
+ diffsynth/extensions/FastBlend/runners/balanced.py
29
+ diffsynth/extensions/FastBlend/runners/fast.py
30
+ diffsynth/extensions/FastBlend/runners/interpolation.py
31
+ diffsynth/extensions/ImageQualityMetric/__init__.py
32
+ diffsynth/extensions/ImageQualityMetric/aesthetic.py
33
+ diffsynth/extensions/ImageQualityMetric/clip.py
34
+ diffsynth/extensions/ImageQualityMetric/config.py
35
+ diffsynth/extensions/ImageQualityMetric/hps.py
36
+ diffsynth/extensions/ImageQualityMetric/imagereward.py
37
+ diffsynth/extensions/ImageQualityMetric/mps.py
38
+ diffsynth/extensions/ImageQualityMetric/pickscore.py
39
+ diffsynth/extensions/ImageQualityMetric/BLIP/__init__.py
40
+ diffsynth/extensions/ImageQualityMetric/BLIP/blip.py
41
+ diffsynth/extensions/ImageQualityMetric/BLIP/blip_pretrain.py
42
+ diffsynth/extensions/ImageQualityMetric/BLIP/med.py
43
+ diffsynth/extensions/ImageQualityMetric/BLIP/vit.py
44
+ diffsynth/extensions/ImageQualityMetric/open_clip/__init__.py
45
+ diffsynth/extensions/ImageQualityMetric/open_clip/coca_model.py
46
+ diffsynth/extensions/ImageQualityMetric/open_clip/constants.py
47
+ diffsynth/extensions/ImageQualityMetric/open_clip/factory.py
48
+ diffsynth/extensions/ImageQualityMetric/open_clip/generation_utils.py
49
+ diffsynth/extensions/ImageQualityMetric/open_clip/hf_configs.py
50
+ diffsynth/extensions/ImageQualityMetric/open_clip/hf_model.py
51
+ diffsynth/extensions/ImageQualityMetric/open_clip/loss.py
52
+ diffsynth/extensions/ImageQualityMetric/open_clip/model.py
53
+ diffsynth/extensions/ImageQualityMetric/open_clip/modified_resnet.py
54
+ diffsynth/extensions/ImageQualityMetric/open_clip/openai.py
55
+ diffsynth/extensions/ImageQualityMetric/open_clip/pretrained.py
56
+ diffsynth/extensions/ImageQualityMetric/open_clip/push_to_hf_hub.py
57
+ diffsynth/extensions/ImageQualityMetric/open_clip/timm_model.py
58
+ diffsynth/extensions/ImageQualityMetric/open_clip/tokenizer.py
59
+ diffsynth/extensions/ImageQualityMetric/open_clip/transform.py
60
+ diffsynth/extensions/ImageQualityMetric/open_clip/transformer.py
61
+ diffsynth/extensions/ImageQualityMetric/open_clip/utils.py
62
+ diffsynth/extensions/ImageQualityMetric/open_clip/version.py
63
+ diffsynth/extensions/ImageQualityMetric/trainer/__init__.py
64
+ diffsynth/extensions/ImageQualityMetric/trainer/models/__init__.py
65
+ diffsynth/extensions/ImageQualityMetric/trainer/models/base_model.py
66
+ diffsynth/extensions/ImageQualityMetric/trainer/models/clip_model.py
67
+ diffsynth/extensions/ImageQualityMetric/trainer/models/cross_modeling.py
68
+ diffsynth/extensions/RIFE/__init__.py
69
+ diffsynth/extensions/pixartsigma/__init__.py
70
+ diffsynth/extensions/pixartsigma/diffusion_utils.py
71
+ diffsynth/extensions/pixartsigma/dpm_solver.py
72
+ diffsynth/extensions/pixartsigma/gaussian_diffusion.py
73
+ diffsynth/extensions/pixartsigma/utils.py
74
+ diffsynth/extensions/pixartsigma/dpm/__init__.py
75
+ diffsynth/extensions/pixartsigma/dpm/dpm_solver.py
76
+ diffsynth/extensions/pixartsigma/nets/PixArt.py
77
+ diffsynth/extensions/pixartsigma/nets/PixArtMS.py
78
+ diffsynth/extensions/pixartsigma/nets/PixArt_blocks.py
79
+ diffsynth/extensions/pixartsigma/nets/__init__.py
80
+ diffsynth/lora/__init__.py
81
+ diffsynth/lora/flux_lora.py
82
+ diffsynth/models/__init__.py
83
+ diffsynth/models/attention.py
84
+ diffsynth/models/cog_dit.py
85
+ diffsynth/models/cog_vae.py
86
+ diffsynth/models/downloader.py
87
+ diffsynth/models/flux_controlnet.py
88
+ diffsynth/models/flux_dit.py
89
+ diffsynth/models/flux_infiniteyou.py
90
+ diffsynth/models/flux_ipadapter.py
91
+ diffsynth/models/flux_lora_encoder.py
92
+ diffsynth/models/flux_text_encoder.py
93
+ diffsynth/models/flux_vae.py
94
+ diffsynth/models/flux_value_control.py
95
+ diffsynth/models/hunyuan_dit.py
96
+ diffsynth/models/hunyuan_dit_text_encoder.py
97
+ diffsynth/models/hunyuan_video_dit.py
98
+ diffsynth/models/hunyuan_video_text_encoder.py
99
+ diffsynth/models/hunyuan_video_vae_decoder.py
100
+ diffsynth/models/hunyuan_video_vae_encoder.py
101
+ diffsynth/models/kolors_text_encoder.py
102
+ diffsynth/models/lora.py
103
+ diffsynth/models/model_manager.py
104
+ diffsynth/models/nexus_gen.py
105
+ diffsynth/models/nexus_gen_ar_model.py
106
+ diffsynth/models/nexus_gen_projector.py
107
+ diffsynth/models/omnigen.py
108
+ diffsynth/models/qwen_image_dit.py
109
+ diffsynth/models/qwen_image_text_encoder.py
110
+ diffsynth/models/qwen_image_vae.py
111
+ diffsynth/models/qwenvl.py
112
+ diffsynth/models/sd3_dit.py
113
+ diffsynth/models/sd3_temp_dit.py
114
+ diffsynth/models/sd3_text_encoder.py
115
+ diffsynth/models/sd3_vae_decoder.py
116
+ diffsynth/models/sd3_vae_encoder.py
117
+ diffsynth/models/sd_controlnet.py
118
+ diffsynth/models/sd_ipadapter.py
119
+ diffsynth/models/sd_motion.py
120
+ diffsynth/models/sd_text_encoder.py
121
+ diffsynth/models/sd_unet.py
122
+ diffsynth/models/sd_vae_decoder.py
123
+ diffsynth/models/sd_vae_encoder.py
124
+ diffsynth/models/sdxl_controlnet.py
125
+ diffsynth/models/sdxl_ipadapter.py
126
+ diffsynth/models/sdxl_motion.py
127
+ diffsynth/models/sdxl_text_encoder.py
128
+ diffsynth/models/sdxl_unet.py
129
+ diffsynth/models/sdxl_vae_decoder.py
130
+ diffsynth/models/sdxl_vae_encoder.py
131
+ diffsynth/models/step1x_connector.py
132
+ diffsynth/models/stepvideo_dit.py
133
+ diffsynth/models/stepvideo_text_encoder.py
134
+ diffsynth/models/stepvideo_vae.py
135
+ diffsynth/models/svd_image_encoder.py
136
+ diffsynth/models/svd_unet.py
137
+ diffsynth/models/svd_vae_decoder.py
138
+ diffsynth/models/svd_vae_encoder.py
139
+ diffsynth/models/tiler.py
140
+ diffsynth/models/utils.py
141
+ diffsynth/models/wan_video_camera_controller.py
142
+ diffsynth/models/wan_video_dit.py
143
+ diffsynth/models/wan_video_dit_dino.py
144
+ diffsynth/models/wan_video_image_encoder.py
145
+ diffsynth/models/wan_video_motion_controller.py
146
+ diffsynth/models/wan_video_text_encoder.py
147
+ diffsynth/models/wan_video_vace.py
148
+ diffsynth/models/wan_video_vae.py
149
+ diffsynth/pipelines/__init__.py
150
+ diffsynth/pipelines/base.py
151
+ diffsynth/pipelines/cog_video.py
152
+ diffsynth/pipelines/dancer.py
153
+ diffsynth/pipelines/flux_image.py
154
+ diffsynth/pipelines/flux_image_new.py
155
+ diffsynth/pipelines/hunyuan_image.py
156
+ diffsynth/pipelines/hunyuan_video.py
157
+ diffsynth/pipelines/omnigen_image.py
158
+ diffsynth/pipelines/pipeline_runner.py
159
+ diffsynth/pipelines/qwen_image.py
160
+ diffsynth/pipelines/sd3_image.py
161
+ diffsynth/pipelines/sd_image.py
162
+ diffsynth/pipelines/sd_video.py
163
+ diffsynth/pipelines/sdxl_image.py
164
+ diffsynth/pipelines/sdxl_video.py
165
+ diffsynth/pipelines/step_video.py
166
+ diffsynth/pipelines/svd_video.py
167
+ diffsynth/pipelines/wan_video.py
168
+ diffsynth/pipelines/wan_video_new.py
169
+ diffsynth/processors/FastBlend.py
170
+ diffsynth/processors/PILEditor.py
171
+ diffsynth/processors/RIFE.py
172
+ diffsynth/processors/__init__.py
173
+ diffsynth/processors/base.py
174
+ diffsynth/processors/sequencial_processor.py
175
+ diffsynth/prompters/__init__.py
176
+ diffsynth/prompters/base_prompter.py
177
+ diffsynth/prompters/cog_prompter.py
178
+ diffsynth/prompters/flux_prompter.py
179
+ diffsynth/prompters/hunyuan_dit_prompter.py
180
+ diffsynth/prompters/hunyuan_video_prompter.py
181
+ diffsynth/prompters/kolors_prompter.py
182
+ diffsynth/prompters/omnigen_prompter.py
183
+ diffsynth/prompters/omost.py
184
+ diffsynth/prompters/prompt_refiners.py
185
+ diffsynth/prompters/sd3_prompter.py
186
+ diffsynth/prompters/sd_prompter.py
187
+ diffsynth/prompters/sdxl_prompter.py
188
+ diffsynth/prompters/stepvideo_prompter.py
189
+ diffsynth/prompters/wan_prompter.py
190
+ diffsynth/schedulers/__init__.py
191
+ diffsynth/schedulers/continuous_ode.py
192
+ diffsynth/schedulers/ddim.py
193
+ diffsynth/schedulers/flow_match.py
194
+ diffsynth/tokenizer_configs/__init__.py
195
+ diffsynth/tokenizer_configs/cog/tokenizer/added_tokens.json
196
+ diffsynth/tokenizer_configs/cog/tokenizer/special_tokens_map.json
197
+ diffsynth/tokenizer_configs/cog/tokenizer/spiece.model
198
+ diffsynth/tokenizer_configs/cog/tokenizer/tokenizer_config.json
199
+ diffsynth/tokenizer_configs/flux/tokenizer_1/merges.txt
200
+ diffsynth/tokenizer_configs/flux/tokenizer_1/special_tokens_map.json
201
+ diffsynth/tokenizer_configs/flux/tokenizer_1/tokenizer_config.json
202
+ diffsynth/tokenizer_configs/flux/tokenizer_1/vocab.json
203
+ diffsynth/tokenizer_configs/flux/tokenizer_2/special_tokens_map.json
204
+ diffsynth/tokenizer_configs/flux/tokenizer_2/spiece.model
205
+ diffsynth/tokenizer_configs/flux/tokenizer_2/tokenizer.json
206
+ diffsynth/tokenizer_configs/flux/tokenizer_2/tokenizer_config.json
207
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer/special_tokens_map.json
208
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer/tokenizer_config.json
209
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer/vocab.txt
210
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer/vocab_org.txt
211
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer_t5/config.json
212
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer_t5/special_tokens_map.json
213
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer_t5/spiece.model
214
+ diffsynth/tokenizer_configs/hunyuan_dit/tokenizer_t5/tokenizer_config.json
215
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_1/merges.txt
216
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_1/special_tokens_map.json
217
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_1/tokenizer_config.json
218
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_1/vocab.json
219
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_2/preprocessor_config.json
220
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_2/special_tokens_map.json
221
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_2/tokenizer.json
222
+ diffsynth/tokenizer_configs/hunyuan_video/tokenizer_2/tokenizer_config.json
223
+ diffsynth/tokenizer_configs/kolors/tokenizer/tokenizer.model
224
+ diffsynth/tokenizer_configs/kolors/tokenizer/tokenizer_config.json
225
+ diffsynth/tokenizer_configs/kolors/tokenizer/vocab.txt
226
+ diffsynth/tokenizer_configs/stable_diffusion/tokenizer/merges.txt
227
+ diffsynth/tokenizer_configs/stable_diffusion/tokenizer/special_tokens_map.json
228
+ diffsynth/tokenizer_configs/stable_diffusion/tokenizer/tokenizer_config.json
229
+ diffsynth/tokenizer_configs/stable_diffusion/tokenizer/vocab.json
230
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_1/merges.txt
231
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_1/special_tokens_map.json
232
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_1/tokenizer_config.json
233
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_1/vocab.json
234
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_2/merges.txt
235
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_2/special_tokens_map.json
236
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_2/tokenizer_config.json
237
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_2/vocab.json
238
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_3/special_tokens_map.json
239
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_3/spiece.model
240
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_3/tokenizer.json
241
+ diffsynth/tokenizer_configs/stable_diffusion_3/tokenizer_3/tokenizer_config.json
242
+ diffsynth/tokenizer_configs/stable_diffusion_xl/tokenizer_2/merges.txt
243
+ diffsynth/tokenizer_configs/stable_diffusion_xl/tokenizer_2/special_tokens_map.json
244
+ diffsynth/tokenizer_configs/stable_diffusion_xl/tokenizer_2/tokenizer_config.json
245
+ diffsynth/tokenizer_configs/stable_diffusion_xl/tokenizer_2/vocab.json
246
+ diffsynth/trainers/__init__.py
247
+ diffsynth/trainers/text_to_image.py
248
+ diffsynth/trainers/utils.py
249
+ diffsynth/utils/__init__.py
250
+ diffsynth/vram_management/__init__.py
251
+ diffsynth/vram_management/gradient_checkpointing.py
252
+ diffsynth/vram_management/layers.py
diffsynth-studio/diffsynth.egg-info/dependency_links.txt ADDED
@@ -0,0 +1 @@
 
 
1
+
diffsynth-studio/diffsynth.egg-info/requires.txt ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ torch>=2.0.0
2
+ torchvision
3
+ cupy-cuda12x
4
+ transformers==4.56.0
5
+ controlnet-aux==0.0.7
6
+ imageio
7
+ imageio[ffmpeg]
8
+ safetensors
9
+ einops
10
+ sentencepiece
11
+ protobuf
12
+ modelscope
13
+ ftfy
14
+ pynvml
15
+ pandas
16
+ accelerate
diffsynth-studio/diffsynth.egg-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ diffsynth
diffsynth-studio/diffsynth/__init__.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ from .data import *
2
+ from .models import *
3
+ from .prompters import *
4
+ from .schedulers import *
5
+ from .pipelines import *
6
+ from .controlnets import *
diffsynth-studio/diffsynth/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (332 Bytes). View file
 
diffsynth-studio/diffsynth/__pycache__/__init__.cpython-311.pyc ADDED
Binary file (385 Bytes). View file
 
diffsynth-studio/diffsynth/configs/__init__.py ADDED
File without changes
diffsynth-studio/diffsynth/configs/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (214 Bytes). View file
 
diffsynth-studio/diffsynth/configs/__pycache__/__init__.cpython-311.pyc ADDED
Binary file (209 Bytes). View file
 
diffsynth-studio/diffsynth/configs/__pycache__/model_config.cpython-310.pyc ADDED
Binary file (27.5 kB). View file
 
diffsynth-studio/diffsynth/configs/__pycache__/model_config.cpython-311.pyc ADDED
Binary file (33 kB). View file
 
diffsynth-studio/diffsynth/configs/model_config.py ADDED
@@ -0,0 +1,843 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing_extensions import Literal, TypeAlias
2
+
3
+ from ..models.sd_text_encoder import SDTextEncoder
4
+ from ..models.sd_unet import SDUNet
5
+ from ..models.sd_vae_encoder import SDVAEEncoder
6
+ from ..models.sd_vae_decoder import SDVAEDecoder
7
+
8
+ from ..models.sdxl_text_encoder import SDXLTextEncoder, SDXLTextEncoder2
9
+ from ..models.sdxl_unet import SDXLUNet
10
+ from ..models.sdxl_vae_decoder import SDXLVAEDecoder
11
+ from ..models.sdxl_vae_encoder import SDXLVAEEncoder
12
+
13
+ from ..models.sd3_text_encoder import SD3TextEncoder1, SD3TextEncoder2, SD3TextEncoder3
14
+ from ..models.sd3_dit import SD3DiT
15
+ from ..models.sd3_vae_decoder import SD3VAEDecoder
16
+ from ..models.sd3_vae_encoder import SD3VAEEncoder
17
+
18
+ from ..models.sd_controlnet import SDControlNet
19
+ from ..models.sdxl_controlnet import SDXLControlNetUnion
20
+
21
+ from ..models.sd_motion import SDMotionModel
22
+ from ..models.sdxl_motion import SDXLMotionModel
23
+
24
+ from ..models.svd_image_encoder import SVDImageEncoder
25
+ from ..models.svd_unet import SVDUNet
26
+ from ..models.svd_vae_decoder import SVDVAEDecoder
27
+ from ..models.svd_vae_encoder import SVDVAEEncoder
28
+
29
+ from ..models.sd_ipadapter import SDIpAdapter, IpAdapterCLIPImageEmbedder
30
+ from ..models.sdxl_ipadapter import SDXLIpAdapter, IpAdapterXLCLIPImageEmbedder
31
+
32
+ from ..models.hunyuan_dit_text_encoder import HunyuanDiTCLIPTextEncoder, HunyuanDiTT5TextEncoder
33
+ from ..models.hunyuan_dit import HunyuanDiT
34
+
35
+ from ..models.flux_dit import FluxDiT
36
+ from ..models.flux_text_encoder import FluxTextEncoder2
37
+ from ..models.flux_vae import FluxVAEEncoder, FluxVAEDecoder
38
+ from ..models.flux_controlnet import FluxControlNet
39
+ from ..models.flux_ipadapter import FluxIpAdapter
40
+ from ..models.flux_infiniteyou import InfiniteYouImageProjector
41
+
42
+ from ..models.cog_vae import CogVAEEncoder, CogVAEDecoder
43
+ from ..models.cog_dit import CogDiT
44
+
45
+ from ..models.omnigen import OmniGenTransformer
46
+
47
+ from ..models.hunyuan_video_vae_decoder import HunyuanVideoVAEDecoder
48
+ from ..models.hunyuan_video_vae_encoder import HunyuanVideoVAEEncoder
49
+
50
+ from ..extensions.RIFE import IFNet
51
+ from ..extensions.ESRGAN import RRDBNet
52
+
53
+ from ..models.hunyuan_video_dit import HunyuanVideoDiT
54
+
55
+ from ..models.stepvideo_vae import StepVideoVAE
56
+ from ..models.stepvideo_dit import StepVideoModel
57
+
58
+ from ..models.wan_video_dit import WanModel
59
+ from ..models.wan_video_text_encoder import WanTextEncoder
60
+ from ..models.wan_video_image_encoder import WanImageEncoder
61
+ from ..models.wan_video_vae import WanVideoVAE, WanVideoVAE38
62
+ from ..models.wan_video_motion_controller import WanMotionControllerModel
63
+ from ..models.wan_video_vace import VaceWanModel
64
+
65
+ from ..models.step1x_connector import Qwen2Connector
66
+
67
+ from ..models.flux_value_control import SingleValueEncoder
68
+
69
+ from ..lora.flux_lora import FluxLoraPatcher
70
+ from ..models.flux_lora_encoder import FluxLoRAEncoder
71
+
72
+ from ..models.nexus_gen_projector import NexusGenAdapter, NexusGenImageEmbeddingMerger
73
+ from ..models.nexus_gen import NexusGenAutoregressiveModel
74
+
75
+ from ..models.qwen_image_dit import QwenImageDiT
76
+ from ..models.qwen_image_text_encoder import QwenImageTextEncoder
77
+ from ..models.qwen_image_vae import QwenImageVAE
78
+
79
+ model_loader_configs = [
80
+ # These configs are provided for detecting model type automatically.
81
+ # The format is (state_dict_keys_hash, state_dict_keys_hash_with_shape, model_names, model_classes, model_resource)
82
+ (None, "091b0e30e77c76626b3ba62acdf95343", ["sd_controlnet"], [SDControlNet], "civitai"),
83
+ (None, "4a6c8306a27d916dea81263c8c88f450", ["hunyuan_dit_clip_text_encoder"], [HunyuanDiTCLIPTextEncoder], "civitai"),
84
+ (None, "f4aec400fe394297961218c768004521", ["hunyuan_dit"], [HunyuanDiT], "civitai"),
85
+ (None, "9e6e58043a5a2e332803ed42f6ee7181", ["hunyuan_dit_t5_text_encoder"], [HunyuanDiTT5TextEncoder], "civitai"),
86
+ (None, "13115dd45a6e1c39860f91ab073b8a78", ["sdxl_vae_encoder", "sdxl_vae_decoder"], [SDXLVAEEncoder, SDXLVAEDecoder], "diffusers"),
87
+ (None, "d78aa6797382a6d455362358a3295ea9", ["sd_ipadapter_clip_image_encoder"], [IpAdapterCLIPImageEmbedder], "diffusers"),
88
+ (None, "e291636cc15e803186b47404262ef812", ["sd_ipadapter"], [SDIpAdapter], "civitai"),
89
+ (None, "399c81f2f8de8d1843d0127a00f3c224", ["sdxl_ipadapter_clip_image_encoder"], [IpAdapterXLCLIPImageEmbedder], "diffusers"),
90
+ (None, "a64eac9aa0db4b9602213bc0131281c7", ["sdxl_ipadapter"], [SDXLIpAdapter], "civitai"),
91
+ (None, "52817e4fdd89df154f02749ca6f692ac", ["sdxl_unet"], [SDXLUNet], "diffusers"),
92
+ (None, "03343c606f16d834d6411d0902b53636", ["sd_text_encoder", "sd_unet", "sd_vae_decoder", "sd_vae_encoder"], [SDTextEncoder, SDUNet, SDVAEDecoder, SDVAEEncoder], "civitai"),
93
+ (None, "d4ba77a7ece070679b4a987f58f201e9", ["sd_text_encoder"], [SDTextEncoder], "civitai"),
94
+ (None, "d0c89e55c5a57cf3981def0cb1c9e65a", ["sd_vae_decoder", "sd_vae_encoder"], [SDVAEDecoder, SDVAEEncoder], "civitai"),
95
+ (None, "3926bf373b39a67eeafd7901478a47a7", ["sd_unet"], [SDUNet], "civitai"),
96
+ (None, "1e0c39ec176b9007c05f76d52b554a4d", ["sd3_text_encoder_1", "sd3_text_encoder_2", "sd3_dit", "sd3_vae_encoder", "sd3_vae_decoder"], [SD3TextEncoder1, SD3TextEncoder2, SD3DiT, SD3VAEEncoder, SD3VAEDecoder], "civitai"),
97
+ (None, "d9e0290829ba8d98e28e1a2b1407db4a", ["sd3_text_encoder_1", "sd3_text_encoder_2", "sd3_text_encoder_3", "sd3_dit", "sd3_vae_encoder", "sd3_vae_decoder"], [SD3TextEncoder1, SD3TextEncoder2, SD3TextEncoder3, SD3DiT, SD3VAEEncoder, SD3VAEDecoder], "civitai"),
98
+ (None, "5072d0b24e406b49507abe861cf97691", ["sd3_text_encoder_3"], [SD3TextEncoder3], "civitai"),
99
+ (None, "4cf64a799d04260df438c6f33c9a047e", ["sdxl_text_encoder", "sdxl_text_encoder_2", "sdxl_unet", "sdxl_vae_decoder", "sdxl_vae_encoder"], [SDXLTextEncoder, SDXLTextEncoder2, SDXLUNet, SDXLVAEDecoder, SDXLVAEEncoder], "civitai"),
100
+ (None, "d9b008a867c498ab12ad24042eff8e3f", ["sdxl_text_encoder", "sdxl_text_encoder_2", "sdxl_unet", "sdxl_vae_decoder", "sdxl_vae_encoder"], [SDXLTextEncoder, SDXLTextEncoder2, SDXLUNet, SDXLVAEDecoder, SDXLVAEEncoder], "civitai"), # SDXL-Turbo
101
+ (None, "025bb7452e531a3853d951d77c63f032", ["sdxl_text_encoder", "sdxl_text_encoder_2"], [SDXLTextEncoder, SDXLTextEncoder2], "civitai"),
102
+ (None, "298997b403a4245c04102c9f36aac348", ["sdxl_unet"], [SDXLUNet], "civitai"),
103
+ (None, "2a07abce74b4bdc696b76254ab474da6", ["svd_image_encoder", "svd_unet", "svd_vae_decoder", "svd_vae_encoder"], [SVDImageEncoder, SVDUNet, SVDVAEDecoder, SVDVAEEncoder], "civitai"),
104
+ (None, "c96a285a6888465f87de22a984d049fb", ["sd_motion_modules"], [SDMotionModel], "civitai"),
105
+ (None, "72907b92caed19bdb2adb89aa4063fe2", ["sdxl_motion_modules"], [SDXLMotionModel], "civitai"),
106
+ (None, "31d2d9614fba60511fc9bf2604aa01f7", ["sdxl_controlnet"], [SDXLControlNetUnion], "diffusers"),
107
+ (None, "94eefa3dac9cec93cb1ebaf1747d7b78", ["sd3_text_encoder_1"], [SD3TextEncoder1], "diffusers"),
108
+ (None, "1aafa3cc91716fb6b300cc1cd51b85a3", ["flux_vae_encoder", "flux_vae_decoder"], [FluxVAEEncoder, FluxVAEDecoder], "diffusers"),
109
+ (None, "21ea55f476dfc4fd135587abb59dfe5d", ["flux_vae_encoder", "flux_vae_decoder"], [FluxVAEEncoder, FluxVAEDecoder], "civitai"),
110
+ (None, "a29710fea6dddb0314663ee823598e50", ["flux_dit"], [FluxDiT], "civitai"),
111
+ (None, "57b02550baab820169365b3ee3afa2c9", ["flux_dit"], [FluxDiT], "civitai"),
112
+ (None, "3394f306c4cbf04334b712bf5aaed95f", ["flux_dit"], [FluxDiT], "civitai"),
113
+ (None, "023f054d918a84ccf503481fd1e3379e", ["flux_dit"], [FluxDiT], "civitai"),
114
+ (None, "d02f41c13549fa5093d3521f62a5570a", ["flux_dit"], [FluxDiT], "civitai"),
115
+ (None, "605c56eab23e9e2af863ad8f0813a25d", ["flux_dit"], [FluxDiT], "diffusers"),
116
+ (None, "0629116fce1472503a66992f96f3eb1a", ["flux_value_controller"], [SingleValueEncoder], "civitai"),
117
+ (None, "280189ee084bca10f70907bf6ce1649d", ["cog_vae_encoder", "cog_vae_decoder"], [CogVAEEncoder, CogVAEDecoder], "diffusers"),
118
+ (None, "9b9313d104ac4df27991352fec013fd4", ["rife"], [IFNet], "civitai"),
119
+ (None, "6b7116078c4170bfbeaedc8fe71f6649", ["esrgan"], [RRDBNet], "civitai"),
120
+ (None, "61cbcbc7ac11f169c5949223efa960d1", ["omnigen_transformer"], [OmniGenTransformer], "diffusers"),
121
+ (None, "78d18b9101345ff695f312e7e62538c0", ["flux_controlnet"], [FluxControlNet], "diffusers"),
122
+ (None, "b001c89139b5f053c715fe772362dd2a", ["flux_controlnet"], [FluxControlNet], "diffusers"),
123
+ (None, "52357cb26250681367488a8954c271e8", ["flux_controlnet"], [FluxControlNet], "diffusers"),
124
+ (None, "0cfd1740758423a2a854d67c136d1e8c", ["flux_controlnet"], [FluxControlNet], "diffusers"),
125
+ (None, "7f9583eb8ba86642abb9a21a4b2c9e16", ["flux_controlnet"], [FluxControlNet], "diffusers"),
126
+ (None, "43ad5aaa27dd4ee01b832ed16773fa52", ["flux_controlnet"], [FluxControlNet], "diffusers"),
127
+ (None, "c07c0f04f5ff55e86b4e937c7a40d481", ["infiniteyou_image_projector"], [InfiniteYouImageProjector], "diffusers"),
128
+ (None, "4daaa66cc656a8fe369908693dad0a35", ["flux_ipadapter"], [FluxIpAdapter], "diffusers"),
129
+ (None, "51aed3d27d482fceb5e0739b03060e8f", ["sd3_dit", "sd3_vae_encoder", "sd3_vae_decoder"], [SD3DiT, SD3VAEEncoder, SD3VAEDecoder], "civitai"),
130
+ (None, "98cc34ccc5b54ae0e56bdea8688dcd5a", ["sd3_text_encoder_2"], [SD3TextEncoder2], "civitai"),
131
+ (None, "77ff18050dbc23f50382e45d51a779fe", ["sd3_dit", "sd3_vae_encoder", "sd3_vae_decoder"], [SD3DiT, SD3VAEEncoder, SD3VAEDecoder], "civitai"),
132
+ (None, "5da81baee73198a7c19e6d2fe8b5148e", ["sd3_text_encoder_1"], [SD3TextEncoder1], "diffusers"),
133
+ (None, "aeb82dce778a03dcb4d726cb03f3c43f", ["hunyuan_video_vae_decoder", "hunyuan_video_vae_encoder"], [HunyuanVideoVAEDecoder, HunyuanVideoVAEEncoder], "diffusers"),
134
+ (None, "b9588f02e78f5ccafc9d7c0294e46308", ["hunyuan_video_dit"], [HunyuanVideoDiT], "civitai"),
135
+ (None, "84ef4bd4757f60e906b54aa6a7815dc6", ["hunyuan_video_dit"], [HunyuanVideoDiT], "civitai"),
136
+ (None, "68beaf8429b7c11aa8ca05b1bd0058bd", ["stepvideo_vae"], [StepVideoVAE], "civitai"),
137
+ (None, "5c0216a2132b082c10cb7a0e0377e681", ["stepvideo_dit"], [StepVideoModel], "civitai"),
138
+ (None, "9269f8db9040a9d860eaca435be61814", ["wan_video_dit"], [WanModel], "civitai"),
139
+ (None, "aafcfd9672c3a2456dc46e1cb6e52c70", ["wan_video_dit"], [WanModel], "civitai"),
140
+ (None, "6bfcfb3b342cb286ce886889d519a77e", ["wan_video_dit"], [WanModel], "civitai"),
141
+ (None, "6d6ccde6845b95ad9114ab993d917893", ["wan_video_dit"], [WanModel], "civitai"),
142
+ (None, "6bfcfb3b342cb286ce886889d519a77e", ["wan_video_dit"], [WanModel], "civitai"),
143
+ (None, "349723183fc063b2bfc10bb2835cf677", ["wan_video_dit"], [WanModel], "civitai"),
144
+ (None, "efa44cddf936c70abd0ea28b6cbe946c", ["wan_video_dit"], [WanModel], "civitai"),
145
+ (None, "3ef3b1f8e1dab83d5b71fd7b617f859f", ["wan_video_dit"], [WanModel], "civitai"),
146
+ (None, "70ddad9d3a133785da5ea371aae09504", ["wan_video_dit"], [WanModel], "civitai"),
147
+ (None, "26bde73488a92e64cc20b0a7485b9e5b", ["wan_video_dit"], [WanModel], "civitai"),
148
+ (None, "ac6a5aa74f4a0aab6f64eb9a72f19901", ["wan_video_dit"], [WanModel], "civitai"),
149
+ (None, "b61c605c2adbd23124d152ed28e049ae", ["wan_video_dit"], [WanModel], "civitai"),
150
+ (None, "1f5ab7703c6fc803fdded85ff040c316", ["wan_video_dit"], [WanModel], "civitai"),
151
+ (None, "5b013604280dd715f8457c6ed6d6a626", ["wan_video_dit"], [WanModel], "civitai"),
152
+ (None, "a61453409b67cd3246cf0c3bebad47ba", ["wan_video_dit", "wan_video_vace"], [WanModel, VaceWanModel], "civitai"),
153
+ (None, "7a513e1f257a861512b1afd387a8ecd9", ["wan_video_dit", "wan_video_vace"], [WanModel, VaceWanModel], "civitai"),
154
+ (None, "cb104773c6c2cb6df4f9529ad5c60d0b", ["wan_video_dit"], [WanModel], "diffusers"),
155
+ (None, "9c8818c2cbea55eca56c7b447df170da", ["wan_video_text_encoder"], [WanTextEncoder], "civitai"),
156
+ (None, "5941c53e207d62f20f9025686193c40b", ["wan_video_image_encoder"], [WanImageEncoder], "civitai"),
157
+ (None, "1378ea763357eea97acdef78e65d6d96", ["wan_video_vae"], [WanVideoVAE], "civitai"),
158
+ (None, "ccc42284ea13e1ad04693284c7a09be6", ["wan_video_vae"], [WanVideoVAE], "civitai"),
159
+ (None, "e1de6c02cdac79f8b739f4d3698cd216", ["wan_video_vae"], [WanVideoVAE38], "civitai"),
160
+ (None, "dbd5ec76bbf977983f972c151d545389", ["wan_video_motion_controller"], [WanMotionControllerModel], "civitai"),
161
+ (None, "d30fb9e02b1dbf4e509142f05cf7dd50", ["flux_dit", "step1x_connector"], [FluxDiT, Qwen2Connector], "civitai"),
162
+ (None, "30143afb2dea73d1ac580e0787628f8c", ["flux_lora_patcher"], [FluxLoraPatcher], "civitai"),
163
+ (None, "77c2e4dd2440269eb33bfaa0d004f6ab", ["flux_lora_encoder"], [FluxLoRAEncoder], "civitai"),
164
+ (None, "3e6c61b0f9471135fc9c6d6a98e98b6d", ["flux_dit", "nexus_gen_generation_adapter"], [FluxDiT, NexusGenAdapter], "civitai"),
165
+ (None, "63c969fd37cce769a90aa781fbff5f81", ["flux_dit", "nexus_gen_editing_adapter"], [FluxDiT, NexusGenImageEmbeddingMerger], "civitai"),
166
+ (None, "2bd19e845116e4f875a0a048e27fc219", ["nexus_gen_llm"], [NexusGenAutoregressiveModel], "civitai"),
167
+ (None, "0319a1cb19835fb510907dd3367c95ff", ["qwen_image_dit"], [QwenImageDiT], "civitai"),
168
+ (None, "8004730443f55db63092006dd9f7110e", ["qwen_image_text_encoder"], [QwenImageTextEncoder], "diffusers"),
169
+ (None, "ed4ea5824d55ec3107b09815e318123a", ["qwen_image_vae"], [QwenImageVAE], "diffusers"),
170
+ ]
171
+ huggingface_model_loader_configs = [
172
+ # These configs are provided for detecting model type automatically.
173
+ # The format is (architecture_in_huggingface_config, huggingface_lib, model_name, redirected_architecture)
174
+ ("ChatGLMModel", "diffsynth.models.kolors_text_encoder", "kolors_text_encoder", None),
175
+ ("MarianMTModel", "transformers.models.marian.modeling_marian", "translator", None),
176
+ ("BloomForCausalLM", "transformers.models.bloom.modeling_bloom", "beautiful_prompt", None),
177
+ ("Qwen2ForCausalLM", "transformers.models.qwen2.modeling_qwen2", "qwen_prompt", None),
178
+ # ("LlamaForCausalLM", "transformers.models.llama.modeling_llama", "omost_prompt", None),
179
+ ("T5EncoderModel", "diffsynth.models.flux_text_encoder", "flux_text_encoder_2", "FluxTextEncoder2"),
180
+ ("CogVideoXTransformer3DModel", "diffsynth.models.cog_dit", "cog_dit", "CogDiT"),
181
+ ("SiglipModel", "transformers.models.siglip.modeling_siglip", "siglip_vision_model", "SiglipVisionModel"),
182
+ ("LlamaForCausalLM", "diffsynth.models.hunyuan_video_text_encoder", "hunyuan_video_text_encoder_2", "HunyuanVideoLLMEncoder"),
183
+ ("LlavaForConditionalGeneration", "diffsynth.models.hunyuan_video_text_encoder", "hunyuan_video_text_encoder_2", "HunyuanVideoMLLMEncoder"),
184
+ ("Step1Model", "diffsynth.models.stepvideo_text_encoder", "stepvideo_text_encoder_2", "STEP1TextEncoder"),
185
+ ("Qwen2_5_VLForConditionalGeneration", "diffsynth.models.qwenvl", "qwenvl", "Qwen25VL_7b_Embedder"),
186
+ ]
187
+ patch_model_loader_configs = [
188
+ # These configs are provided for detecting model type automatically.
189
+ # The format is (state_dict_keys_hash_with_shape, model_name, model_class, extra_kwargs)
190
+ ("9a4ab6869ac9b7d6e31f9854e397c867", ["svd_unet"], [SVDUNet], {"add_positional_conv": 128}),
191
+ ]
192
+
193
+ preset_models_on_huggingface = {
194
+ "HunyuanDiT": [
195
+ ("Tencent-Hunyuan/HunyuanDiT", "t2i/clip_text_encoder/pytorch_model.bin", "models/HunyuanDiT/t2i/clip_text_encoder"),
196
+ ("Tencent-Hunyuan/HunyuanDiT", "t2i/mt5/pytorch_model.bin", "models/HunyuanDiT/t2i/mt5"),
197
+ ("Tencent-Hunyuan/HunyuanDiT", "t2i/model/pytorch_model_ema.pt", "models/HunyuanDiT/t2i/model"),
198
+ ("Tencent-Hunyuan/HunyuanDiT", "t2i/sdxl-vae-fp16-fix/diffusion_pytorch_model.bin", "models/HunyuanDiT/t2i/sdxl-vae-fp16-fix"),
199
+ ],
200
+ "stable-video-diffusion-img2vid-xt": [
201
+ ("stabilityai/stable-video-diffusion-img2vid-xt", "svd_xt.safetensors", "models/stable_video_diffusion"),
202
+ ],
203
+ "ExVideo-SVD-128f-v1": [
204
+ ("ECNU-CILab/ExVideo-SVD-128f-v1", "model.fp16.safetensors", "models/stable_video_diffusion"),
205
+ ],
206
+ # Stable Diffusion
207
+ "StableDiffusion_v15": [
208
+ ("benjamin-paine/stable-diffusion-v1-5", "v1-5-pruned-emaonly.safetensors", "models/stable_diffusion"),
209
+ ],
210
+ "DreamShaper_8": [
211
+ ("Yntec/Dreamshaper8", "dreamshaper_8.safetensors", "models/stable_diffusion"),
212
+ ],
213
+ # Textual Inversion
214
+ "TextualInversion_VeryBadImageNegative_v1.3": [
215
+ ("gemasai/verybadimagenegative_v1.3", "verybadimagenegative_v1.3.pt", "models/textual_inversion"),
216
+ ],
217
+ # Stable Diffusion XL
218
+ "StableDiffusionXL_v1": [
219
+ ("stabilityai/stable-diffusion-xl-base-1.0", "sd_xl_base_1.0.safetensors", "models/stable_diffusion_xl"),
220
+ ],
221
+ "BluePencilXL_v200": [
222
+ ("frankjoshua/bluePencilXL_v200", "bluePencilXL_v200.safetensors", "models/stable_diffusion_xl"),
223
+ ],
224
+ "StableDiffusionXL_Turbo": [
225
+ ("stabilityai/sdxl-turbo", "sd_xl_turbo_1.0_fp16.safetensors", "models/stable_diffusion_xl_turbo"),
226
+ ],
227
+ # Stable Diffusion 3
228
+ "StableDiffusion3": [
229
+ ("stabilityai/stable-diffusion-3-medium", "sd3_medium_incl_clips_t5xxlfp16.safetensors", "models/stable_diffusion_3"),
230
+ ],
231
+ "StableDiffusion3_without_T5": [
232
+ ("stabilityai/stable-diffusion-3-medium", "sd3_medium_incl_clips.safetensors", "models/stable_diffusion_3"),
233
+ ],
234
+ # ControlNet
235
+ "ControlNet_v11f1p_sd15_depth": [
236
+ ("lllyasviel/ControlNet-v1-1", "control_v11f1p_sd15_depth.pth", "models/ControlNet"),
237
+ ("lllyasviel/Annotators", "dpt_hybrid-midas-501f0c75.pt", "models/Annotators")
238
+ ],
239
+ "ControlNet_v11p_sd15_softedge": [
240
+ ("lllyasviel/ControlNet-v1-1", "control_v11p_sd15_softedge.pth", "models/ControlNet"),
241
+ ("lllyasviel/Annotators", "ControlNetHED.pth", "models/Annotators")
242
+ ],
243
+ "ControlNet_v11f1e_sd15_tile": [
244
+ ("lllyasviel/ControlNet-v1-1", "control_v11f1e_sd15_tile.pth", "models/ControlNet")
245
+ ],
246
+ "ControlNet_v11p_sd15_lineart": [
247
+ ("lllyasviel/ControlNet-v1-1", "control_v11p_sd15_lineart.pth", "models/ControlNet"),
248
+ ("lllyasviel/Annotators", "sk_model.pth", "models/Annotators"),
249
+ ("lllyasviel/Annotators", "sk_model2.pth", "models/Annotators")
250
+ ],
251
+ "ControlNet_union_sdxl_promax": [
252
+ ("xinsir/controlnet-union-sdxl-1.0", "diffusion_pytorch_model_promax.safetensors", "models/ControlNet/controlnet_union"),
253
+ ("lllyasviel/Annotators", "dpt_hybrid-midas-501f0c75.pt", "models/Annotators")
254
+ ],
255
+ # AnimateDiff
256
+ "AnimateDiff_v2": [
257
+ ("guoyww/animatediff", "mm_sd_v15_v2.ckpt", "models/AnimateDiff"),
258
+ ],
259
+ "AnimateDiff_xl_beta": [
260
+ ("guoyww/animatediff", "mm_sdxl_v10_beta.ckpt", "models/AnimateDiff"),
261
+ ],
262
+
263
+ # Qwen Prompt
264
+ "QwenPrompt": [
265
+ ("Qwen/Qwen2-1.5B-Instruct", "config.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
266
+ ("Qwen/Qwen2-1.5B-Instruct", "generation_config.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
267
+ ("Qwen/Qwen2-1.5B-Instruct", "model.safetensors", "models/QwenPrompt/qwen2-1.5b-instruct"),
268
+ ("Qwen/Qwen2-1.5B-Instruct", "special_tokens_map.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
269
+ ("Qwen/Qwen2-1.5B-Instruct", "tokenizer.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
270
+ ("Qwen/Qwen2-1.5B-Instruct", "tokenizer_config.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
271
+ ("Qwen/Qwen2-1.5B-Instruct", "merges.txt", "models/QwenPrompt/qwen2-1.5b-instruct"),
272
+ ("Qwen/Qwen2-1.5B-Instruct", "vocab.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
273
+ ],
274
+ # Beautiful Prompt
275
+ "BeautifulPrompt": [
276
+ ("alibaba-pai/pai-bloom-1b1-text2prompt-sd", "config.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
277
+ ("alibaba-pai/pai-bloom-1b1-text2prompt-sd", "generation_config.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
278
+ ("alibaba-pai/pai-bloom-1b1-text2prompt-sd", "model.safetensors", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
279
+ ("alibaba-pai/pai-bloom-1b1-text2prompt-sd", "special_tokens_map.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
280
+ ("alibaba-pai/pai-bloom-1b1-text2prompt-sd", "tokenizer.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
281
+ ("alibaba-pai/pai-bloom-1b1-text2prompt-sd", "tokenizer_config.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
282
+ ],
283
+ # Omost prompt
284
+ "OmostPrompt":[
285
+ ("lllyasviel/omost-llama-3-8b-4bits", "model-00001-of-00002.safetensors", "models/OmostPrompt/omost-llama-3-8b-4bits"),
286
+ ("lllyasviel/omost-llama-3-8b-4bits", "model-00002-of-00002.safetensors", "models/OmostPrompt/omost-llama-3-8b-4bits"),
287
+ ("lllyasviel/omost-llama-3-8b-4bits", "tokenizer.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
288
+ ("lllyasviel/omost-llama-3-8b-4bits", "tokenizer_config.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
289
+ ("lllyasviel/omost-llama-3-8b-4bits", "config.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
290
+ ("lllyasviel/omost-llama-3-8b-4bits", "generation_config.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
291
+ ("lllyasviel/omost-llama-3-8b-4bits", "model.safetensors.index.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
292
+ ("lllyasviel/omost-llama-3-8b-4bits", "special_tokens_map.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
293
+ ],
294
+ # Translator
295
+ "opus-mt-zh-en": [
296
+ ("Helsinki-NLP/opus-mt-zh-en", "config.json", "models/translator/opus-mt-zh-en"),
297
+ ("Helsinki-NLP/opus-mt-zh-en", "generation_config.json", "models/translator/opus-mt-zh-en"),
298
+ ("Helsinki-NLP/opus-mt-zh-en", "metadata.json", "models/translator/opus-mt-zh-en"),
299
+ ("Helsinki-NLP/opus-mt-zh-en", "pytorch_model.bin", "models/translator/opus-mt-zh-en"),
300
+ ("Helsinki-NLP/opus-mt-zh-en", "source.spm", "models/translator/opus-mt-zh-en"),
301
+ ("Helsinki-NLP/opus-mt-zh-en", "target.spm", "models/translator/opus-mt-zh-en"),
302
+ ("Helsinki-NLP/opus-mt-zh-en", "tokenizer_config.json", "models/translator/opus-mt-zh-en"),
303
+ ("Helsinki-NLP/opus-mt-zh-en", "vocab.json", "models/translator/opus-mt-zh-en"),
304
+ ],
305
+ # IP-Adapter
306
+ "IP-Adapter-SD": [
307
+ ("h94/IP-Adapter", "models/image_encoder/model.safetensors", "models/IpAdapter/stable_diffusion/image_encoder"),
308
+ ("h94/IP-Adapter", "models/ip-adapter_sd15.bin", "models/IpAdapter/stable_diffusion"),
309
+ ],
310
+ "IP-Adapter-SDXL": [
311
+ ("h94/IP-Adapter", "sdxl_models/image_encoder/model.safetensors", "models/IpAdapter/stable_diffusion_xl/image_encoder"),
312
+ ("h94/IP-Adapter", "sdxl_models/ip-adapter_sdxl.bin", "models/IpAdapter/stable_diffusion_xl"),
313
+ ],
314
+ "SDXL-vae-fp16-fix": [
315
+ ("madebyollin/sdxl-vae-fp16-fix", "diffusion_pytorch_model.safetensors", "models/sdxl-vae-fp16-fix")
316
+ ],
317
+ # Kolors
318
+ "Kolors": [
319
+ ("Kwai-Kolors/Kolors", "text_encoder/config.json", "models/kolors/Kolors/text_encoder"),
320
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model.bin.index.json", "models/kolors/Kolors/text_encoder"),
321
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00001-of-00007.bin", "models/kolors/Kolors/text_encoder"),
322
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00002-of-00007.bin", "models/kolors/Kolors/text_encoder"),
323
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00003-of-00007.bin", "models/kolors/Kolors/text_encoder"),
324
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00004-of-00007.bin", "models/kolors/Kolors/text_encoder"),
325
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00005-of-00007.bin", "models/kolors/Kolors/text_encoder"),
326
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00006-of-00007.bin", "models/kolors/Kolors/text_encoder"),
327
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00007-of-00007.bin", "models/kolors/Kolors/text_encoder"),
328
+ ("Kwai-Kolors/Kolors", "unet/diffusion_pytorch_model.safetensors", "models/kolors/Kolors/unet"),
329
+ ("Kwai-Kolors/Kolors", "vae/diffusion_pytorch_model.safetensors", "models/kolors/Kolors/vae"),
330
+ ],
331
+ # FLUX
332
+ "FLUX.1-dev": [
333
+ ("black-forest-labs/FLUX.1-dev", "text_encoder/model.safetensors", "models/FLUX/FLUX.1-dev/text_encoder"),
334
+ ("black-forest-labs/FLUX.1-dev", "text_encoder_2/config.json", "models/FLUX/FLUX.1-dev/text_encoder_2"),
335
+ ("black-forest-labs/FLUX.1-dev", "text_encoder_2/model-00001-of-00002.safetensors", "models/FLUX/FLUX.1-dev/text_encoder_2"),
336
+ ("black-forest-labs/FLUX.1-dev", "text_encoder_2/model-00002-of-00002.safetensors", "models/FLUX/FLUX.1-dev/text_encoder_2"),
337
+ ("black-forest-labs/FLUX.1-dev", "text_encoder_2/model.safetensors.index.json", "models/FLUX/FLUX.1-dev/text_encoder_2"),
338
+ ("black-forest-labs/FLUX.1-dev", "ae.safetensors", "models/FLUX/FLUX.1-dev"),
339
+ ("black-forest-labs/FLUX.1-dev", "flux1-dev.safetensors", "models/FLUX/FLUX.1-dev"),
340
+ ],
341
+ "InstantX/FLUX.1-dev-IP-Adapter": {
342
+ "file_list": [
343
+ ("InstantX/FLUX.1-dev-IP-Adapter", "ip-adapter.bin", "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter"),
344
+ ("google/siglip-so400m-patch14-384", "model.safetensors", "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/image_encoder"),
345
+ ("google/siglip-so400m-patch14-384", "config.json", "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/image_encoder"),
346
+ ],
347
+ "load_path": [
348
+ "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/ip-adapter.bin",
349
+ "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/image_encoder",
350
+ ],
351
+ },
352
+ # RIFE
353
+ "RIFE": [
354
+ ("AlexWortega/RIFE", "flownet.pkl", "models/RIFE"),
355
+ ],
356
+ # CogVideo
357
+ "CogVideoX-5B": [
358
+ ("THUDM/CogVideoX-5b", "text_encoder/config.json", "models/CogVideo/CogVideoX-5b/text_encoder"),
359
+ ("THUDM/CogVideoX-5b", "text_encoder/model.safetensors.index.json", "models/CogVideo/CogVideoX-5b/text_encoder"),
360
+ ("THUDM/CogVideoX-5b", "text_encoder/model-00001-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/text_encoder"),
361
+ ("THUDM/CogVideoX-5b", "text_encoder/model-00002-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/text_encoder"),
362
+ ("THUDM/CogVideoX-5b", "transformer/config.json", "models/CogVideo/CogVideoX-5b/transformer"),
363
+ ("THUDM/CogVideoX-5b", "transformer/diffusion_pytorch_model.safetensors.index.json", "models/CogVideo/CogVideoX-5b/transformer"),
364
+ ("THUDM/CogVideoX-5b", "transformer/diffusion_pytorch_model-00001-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/transformer"),
365
+ ("THUDM/CogVideoX-5b", "transformer/diffusion_pytorch_model-00002-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/transformer"),
366
+ ("THUDM/CogVideoX-5b", "vae/diffusion_pytorch_model.safetensors", "models/CogVideo/CogVideoX-5b/vae"),
367
+ ],
368
+ # Stable Diffusion 3.5
369
+ "StableDiffusion3.5-large": [
370
+ ("stabilityai/stable-diffusion-3.5-large", "sd3.5_large.safetensors", "models/stable_diffusion_3"),
371
+ ("stabilityai/stable-diffusion-3.5-large", "text_encoders/clip_l.safetensors", "models/stable_diffusion_3/text_encoders"),
372
+ ("stabilityai/stable-diffusion-3.5-large", "text_encoders/clip_g.safetensors", "models/stable_diffusion_3/text_encoders"),
373
+ ("stabilityai/stable-diffusion-3.5-large", "text_encoders/t5xxl_fp16.safetensors", "models/stable_diffusion_3/text_encoders"),
374
+ ],
375
+ }
376
+ preset_models_on_modelscope = {
377
+ # Hunyuan DiT
378
+ "HunyuanDiT": [
379
+ ("modelscope/HunyuanDiT", "t2i/clip_text_encoder/pytorch_model.bin", "models/HunyuanDiT/t2i/clip_text_encoder"),
380
+ ("modelscope/HunyuanDiT", "t2i/mt5/pytorch_model.bin", "models/HunyuanDiT/t2i/mt5"),
381
+ ("modelscope/HunyuanDiT", "t2i/model/pytorch_model_ema.pt", "models/HunyuanDiT/t2i/model"),
382
+ ("modelscope/HunyuanDiT", "t2i/sdxl-vae-fp16-fix/diffusion_pytorch_model.bin", "models/HunyuanDiT/t2i/sdxl-vae-fp16-fix"),
383
+ ],
384
+ # Stable Video Diffusion
385
+ "stable-video-diffusion-img2vid-xt": [
386
+ ("AI-ModelScope/stable-video-diffusion-img2vid-xt", "svd_xt.safetensors", "models/stable_video_diffusion"),
387
+ ],
388
+ # ExVideo
389
+ "ExVideo-SVD-128f-v1": [
390
+ ("ECNU-CILab/ExVideo-SVD-128f-v1", "model.fp16.safetensors", "models/stable_video_diffusion"),
391
+ ],
392
+ "ExVideo-CogVideoX-LoRA-129f-v1": [
393
+ ("ECNU-CILab/ExVideo-CogVideoX-LoRA-129f-v1", "ExVideo-CogVideoX-LoRA-129f-v1.safetensors", "models/lora"),
394
+ ],
395
+ # Stable Diffusion
396
+ "StableDiffusion_v15": [
397
+ ("AI-ModelScope/stable-diffusion-v1-5", "v1-5-pruned-emaonly.safetensors", "models/stable_diffusion"),
398
+ ],
399
+ "DreamShaper_8": [
400
+ ("sd_lora/dreamshaper_8", "dreamshaper_8.safetensors", "models/stable_diffusion"),
401
+ ],
402
+ "AingDiffusion_v12": [
403
+ ("sd_lora/aingdiffusion_v12", "aingdiffusion_v12.safetensors", "models/stable_diffusion"),
404
+ ],
405
+ "Flat2DAnimerge_v45Sharp": [
406
+ ("sd_lora/Flat-2D-Animerge", "flat2DAnimerge_v45Sharp.safetensors", "models/stable_diffusion"),
407
+ ],
408
+ # Textual Inversion
409
+ "TextualInversion_VeryBadImageNegative_v1.3": [
410
+ ("sd_lora/verybadimagenegative_v1.3", "verybadimagenegative_v1.3.pt", "models/textual_inversion"),
411
+ ],
412
+ # Stable Diffusion XL
413
+ "StableDiffusionXL_v1": [
414
+ ("AI-ModelScope/stable-diffusion-xl-base-1.0", "sd_xl_base_1.0.safetensors", "models/stable_diffusion_xl"),
415
+ ],
416
+ "BluePencilXL_v200": [
417
+ ("sd_lora/bluePencilXL_v200", "bluePencilXL_v200.safetensors", "models/stable_diffusion_xl"),
418
+ ],
419
+ "StableDiffusionXL_Turbo": [
420
+ ("AI-ModelScope/sdxl-turbo", "sd_xl_turbo_1.0_fp16.safetensors", "models/stable_diffusion_xl_turbo"),
421
+ ],
422
+ "SDXL_lora_zyd232_ChineseInkStyle_SDXL_v1_0": [
423
+ ("sd_lora/zyd232_ChineseInkStyle_SDXL_v1_0", "zyd232_ChineseInkStyle_SDXL_v1_0.safetensors", "models/lora"),
424
+ ],
425
+ # Stable Diffusion 3
426
+ "StableDiffusion3": [
427
+ ("AI-ModelScope/stable-diffusion-3-medium", "sd3_medium_incl_clips_t5xxlfp16.safetensors", "models/stable_diffusion_3"),
428
+ ],
429
+ "StableDiffusion3_without_T5": [
430
+ ("AI-ModelScope/stable-diffusion-3-medium", "sd3_medium_incl_clips.safetensors", "models/stable_diffusion_3"),
431
+ ],
432
+ # ControlNet
433
+ "ControlNet_v11f1p_sd15_depth": [
434
+ ("AI-ModelScope/ControlNet-v1-1", "control_v11f1p_sd15_depth.pth", "models/ControlNet"),
435
+ ("sd_lora/Annotators", "dpt_hybrid-midas-501f0c75.pt", "models/Annotators")
436
+ ],
437
+ "ControlNet_v11p_sd15_softedge": [
438
+ ("AI-ModelScope/ControlNet-v1-1", "control_v11p_sd15_softedge.pth", "models/ControlNet"),
439
+ ("sd_lora/Annotators", "ControlNetHED.pth", "models/Annotators")
440
+ ],
441
+ "ControlNet_v11f1e_sd15_tile": [
442
+ ("AI-ModelScope/ControlNet-v1-1", "control_v11f1e_sd15_tile.pth", "models/ControlNet")
443
+ ],
444
+ "ControlNet_v11p_sd15_lineart": [
445
+ ("AI-ModelScope/ControlNet-v1-1", "control_v11p_sd15_lineart.pth", "models/ControlNet"),
446
+ ("sd_lora/Annotators", "sk_model.pth", "models/Annotators"),
447
+ ("sd_lora/Annotators", "sk_model2.pth", "models/Annotators")
448
+ ],
449
+ "ControlNet_union_sdxl_promax": [
450
+ ("AI-ModelScope/controlnet-union-sdxl-1.0", "diffusion_pytorch_model_promax.safetensors", "models/ControlNet/controlnet_union"),
451
+ ("sd_lora/Annotators", "dpt_hybrid-midas-501f0c75.pt", "models/Annotators")
452
+ ],
453
+ "Annotators:Depth": [
454
+ ("sd_lora/Annotators", "dpt_hybrid-midas-501f0c75.pt", "models/Annotators"),
455
+ ],
456
+ "Annotators:Softedge": [
457
+ ("sd_lora/Annotators", "ControlNetHED.pth", "models/Annotators"),
458
+ ],
459
+ "Annotators:Lineart": [
460
+ ("sd_lora/Annotators", "sk_model.pth", "models/Annotators"),
461
+ ("sd_lora/Annotators", "sk_model2.pth", "models/Annotators"),
462
+ ],
463
+ "Annotators:Normal": [
464
+ ("sd_lora/Annotators", "scannet.pt", "models/Annotators"),
465
+ ],
466
+ "Annotators:Openpose": [
467
+ ("sd_lora/Annotators", "body_pose_model.pth", "models/Annotators"),
468
+ ("sd_lora/Annotators", "facenet.pth", "models/Annotators"),
469
+ ("sd_lora/Annotators", "hand_pose_model.pth", "models/Annotators"),
470
+ ],
471
+ # AnimateDiff
472
+ "AnimateDiff_v2": [
473
+ ("Shanghai_AI_Laboratory/animatediff", "mm_sd_v15_v2.ckpt", "models/AnimateDiff"),
474
+ ],
475
+ "AnimateDiff_xl_beta": [
476
+ ("Shanghai_AI_Laboratory/animatediff", "mm_sdxl_v10_beta.ckpt", "models/AnimateDiff"),
477
+ ],
478
+ # RIFE
479
+ "RIFE": [
480
+ ("Damo_XR_Lab/cv_rife_video-frame-interpolation", "flownet.pkl", "models/RIFE"),
481
+ ],
482
+ # Qwen Prompt
483
+ "QwenPrompt": {
484
+ "file_list": [
485
+ ("qwen/Qwen2-1.5B-Instruct", "config.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
486
+ ("qwen/Qwen2-1.5B-Instruct", "generation_config.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
487
+ ("qwen/Qwen2-1.5B-Instruct", "model.safetensors", "models/QwenPrompt/qwen2-1.5b-instruct"),
488
+ ("qwen/Qwen2-1.5B-Instruct", "special_tokens_map.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
489
+ ("qwen/Qwen2-1.5B-Instruct", "tokenizer.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
490
+ ("qwen/Qwen2-1.5B-Instruct", "tokenizer_config.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
491
+ ("qwen/Qwen2-1.5B-Instruct", "merges.txt", "models/QwenPrompt/qwen2-1.5b-instruct"),
492
+ ("qwen/Qwen2-1.5B-Instruct", "vocab.json", "models/QwenPrompt/qwen2-1.5b-instruct"),
493
+ ],
494
+ "load_path": [
495
+ "models/QwenPrompt/qwen2-1.5b-instruct",
496
+ ],
497
+ },
498
+ # Beautiful Prompt
499
+ "BeautifulPrompt": {
500
+ "file_list": [
501
+ ("AI-ModelScope/pai-bloom-1b1-text2prompt-sd", "config.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
502
+ ("AI-ModelScope/pai-bloom-1b1-text2prompt-sd", "generation_config.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
503
+ ("AI-ModelScope/pai-bloom-1b1-text2prompt-sd", "model.safetensors", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
504
+ ("AI-ModelScope/pai-bloom-1b1-text2prompt-sd", "special_tokens_map.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
505
+ ("AI-ModelScope/pai-bloom-1b1-text2prompt-sd", "tokenizer.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
506
+ ("AI-ModelScope/pai-bloom-1b1-text2prompt-sd", "tokenizer_config.json", "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd"),
507
+ ],
508
+ "load_path": [
509
+ "models/BeautifulPrompt/pai-bloom-1b1-text2prompt-sd",
510
+ ],
511
+ },
512
+ # Omost prompt
513
+ "OmostPrompt": {
514
+ "file_list": [
515
+ ("Omost/omost-llama-3-8b-4bits", "model-00001-of-00002.safetensors", "models/OmostPrompt/omost-llama-3-8b-4bits"),
516
+ ("Omost/omost-llama-3-8b-4bits", "model-00002-of-00002.safetensors", "models/OmostPrompt/omost-llama-3-8b-4bits"),
517
+ ("Omost/omost-llama-3-8b-4bits", "tokenizer.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
518
+ ("Omost/omost-llama-3-8b-4bits", "tokenizer_config.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
519
+ ("Omost/omost-llama-3-8b-4bits", "config.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
520
+ ("Omost/omost-llama-3-8b-4bits", "generation_config.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
521
+ ("Omost/omost-llama-3-8b-4bits", "model.safetensors.index.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
522
+ ("Omost/omost-llama-3-8b-4bits", "special_tokens_map.json", "models/OmostPrompt/omost-llama-3-8b-4bits"),
523
+ ],
524
+ "load_path": [
525
+ "models/OmostPrompt/omost-llama-3-8b-4bits",
526
+ ],
527
+ },
528
+ # Translator
529
+ "opus-mt-zh-en": {
530
+ "file_list": [
531
+ ("moxying/opus-mt-zh-en", "config.json", "models/translator/opus-mt-zh-en"),
532
+ ("moxying/opus-mt-zh-en", "generation_config.json", "models/translator/opus-mt-zh-en"),
533
+ ("moxying/opus-mt-zh-en", "metadata.json", "models/translator/opus-mt-zh-en"),
534
+ ("moxying/opus-mt-zh-en", "pytorch_model.bin", "models/translator/opus-mt-zh-en"),
535
+ ("moxying/opus-mt-zh-en", "source.spm", "models/translator/opus-mt-zh-en"),
536
+ ("moxying/opus-mt-zh-en", "target.spm", "models/translator/opus-mt-zh-en"),
537
+ ("moxying/opus-mt-zh-en", "tokenizer_config.json", "models/translator/opus-mt-zh-en"),
538
+ ("moxying/opus-mt-zh-en", "vocab.json", "models/translator/opus-mt-zh-en"),
539
+ ],
540
+ "load_path": [
541
+ "models/translator/opus-mt-zh-en",
542
+ ],
543
+ },
544
+ # IP-Adapter
545
+ "IP-Adapter-SD": [
546
+ ("AI-ModelScope/IP-Adapter", "models/image_encoder/model.safetensors", "models/IpAdapter/stable_diffusion/image_encoder"),
547
+ ("AI-ModelScope/IP-Adapter", "models/ip-adapter_sd15.bin", "models/IpAdapter/stable_diffusion"),
548
+ ],
549
+ "IP-Adapter-SDXL": [
550
+ ("AI-ModelScope/IP-Adapter", "sdxl_models/image_encoder/model.safetensors", "models/IpAdapter/stable_diffusion_xl/image_encoder"),
551
+ ("AI-ModelScope/IP-Adapter", "sdxl_models/ip-adapter_sdxl.bin", "models/IpAdapter/stable_diffusion_xl"),
552
+ ],
553
+ # Kolors
554
+ "Kolors": {
555
+ "file_list": [
556
+ ("Kwai-Kolors/Kolors", "text_encoder/config.json", "models/kolors/Kolors/text_encoder"),
557
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model.bin.index.json", "models/kolors/Kolors/text_encoder"),
558
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00001-of-00007.bin", "models/kolors/Kolors/text_encoder"),
559
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00002-of-00007.bin", "models/kolors/Kolors/text_encoder"),
560
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00003-of-00007.bin", "models/kolors/Kolors/text_encoder"),
561
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00004-of-00007.bin", "models/kolors/Kolors/text_encoder"),
562
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00005-of-00007.bin", "models/kolors/Kolors/text_encoder"),
563
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00006-of-00007.bin", "models/kolors/Kolors/text_encoder"),
564
+ ("Kwai-Kolors/Kolors", "text_encoder/pytorch_model-00007-of-00007.bin", "models/kolors/Kolors/text_encoder"),
565
+ ("Kwai-Kolors/Kolors", "unet/diffusion_pytorch_model.safetensors", "models/kolors/Kolors/unet"),
566
+ ("Kwai-Kolors/Kolors", "vae/diffusion_pytorch_model.safetensors", "models/kolors/Kolors/vae"),
567
+ ],
568
+ "load_path": [
569
+ "models/kolors/Kolors/text_encoder",
570
+ "models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors",
571
+ "models/kolors/Kolors/vae/diffusion_pytorch_model.safetensors",
572
+ ],
573
+ },
574
+ "SDXL-vae-fp16-fix": [
575
+ ("AI-ModelScope/sdxl-vae-fp16-fix", "diffusion_pytorch_model.safetensors", "models/sdxl-vae-fp16-fix")
576
+ ],
577
+ # FLUX
578
+ "FLUX.1-dev": {
579
+ "file_list": [
580
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder/model.safetensors", "models/FLUX/FLUX.1-dev/text_encoder"),
581
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/config.json", "models/FLUX/FLUX.1-dev/text_encoder_2"),
582
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/model-00001-of-00002.safetensors", "models/FLUX/FLUX.1-dev/text_encoder_2"),
583
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/model-00002-of-00002.safetensors", "models/FLUX/FLUX.1-dev/text_encoder_2"),
584
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/model.safetensors.index.json", "models/FLUX/FLUX.1-dev/text_encoder_2"),
585
+ ("AI-ModelScope/FLUX.1-dev", "ae.safetensors", "models/FLUX/FLUX.1-dev"),
586
+ ("AI-ModelScope/FLUX.1-dev", "flux1-dev.safetensors", "models/FLUX/FLUX.1-dev"),
587
+ ],
588
+ "load_path": [
589
+ "models/FLUX/FLUX.1-dev/text_encoder/model.safetensors",
590
+ "models/FLUX/FLUX.1-dev/text_encoder_2",
591
+ "models/FLUX/FLUX.1-dev/ae.safetensors",
592
+ "models/FLUX/FLUX.1-dev/flux1-dev.safetensors"
593
+ ],
594
+ },
595
+ "FLUX.1-schnell": {
596
+ "file_list": [
597
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder/model.safetensors", "models/FLUX/FLUX.1-dev/text_encoder"),
598
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/config.json", "models/FLUX/FLUX.1-dev/text_encoder_2"),
599
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/model-00001-of-00002.safetensors", "models/FLUX/FLUX.1-dev/text_encoder_2"),
600
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/model-00002-of-00002.safetensors", "models/FLUX/FLUX.1-dev/text_encoder_2"),
601
+ ("AI-ModelScope/FLUX.1-dev", "text_encoder_2/model.safetensors.index.json", "models/FLUX/FLUX.1-dev/text_encoder_2"),
602
+ ("AI-ModelScope/FLUX.1-dev", "ae.safetensors", "models/FLUX/FLUX.1-dev"),
603
+ ("AI-ModelScope/FLUX.1-schnell", "flux1-schnell.safetensors", "models/FLUX/FLUX.1-schnell"),
604
+ ],
605
+ "load_path": [
606
+ "models/FLUX/FLUX.1-dev/text_encoder/model.safetensors",
607
+ "models/FLUX/FLUX.1-dev/text_encoder_2",
608
+ "models/FLUX/FLUX.1-dev/ae.safetensors",
609
+ "models/FLUX/FLUX.1-schnell/flux1-schnell.safetensors"
610
+ ],
611
+ },
612
+ "InstantX/FLUX.1-dev-Controlnet-Union-alpha": [
613
+ ("InstantX/FLUX.1-dev-Controlnet-Union-alpha", "diffusion_pytorch_model.safetensors", "models/ControlNet/InstantX/FLUX.1-dev-Controlnet-Union-alpha"),
614
+ ],
615
+ "jasperai/Flux.1-dev-Controlnet-Depth": [
616
+ ("jasperai/Flux.1-dev-Controlnet-Depth", "diffusion_pytorch_model.safetensors", "models/ControlNet/jasperai/Flux.1-dev-Controlnet-Depth"),
617
+ ],
618
+ "jasperai/Flux.1-dev-Controlnet-Surface-Normals": [
619
+ ("jasperai/Flux.1-dev-Controlnet-Surface-Normals", "diffusion_pytorch_model.safetensors", "models/ControlNet/jasperai/Flux.1-dev-Controlnet-Surface-Normals"),
620
+ ],
621
+ "jasperai/Flux.1-dev-Controlnet-Upscaler": [
622
+ ("jasperai/Flux.1-dev-Controlnet-Upscaler", "diffusion_pytorch_model.safetensors", "models/ControlNet/jasperai/Flux.1-dev-Controlnet-Upscaler"),
623
+ ],
624
+ "alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Alpha": [
625
+ ("alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Alpha", "diffusion_pytorch_model.safetensors", "models/ControlNet/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Alpha"),
626
+ ],
627
+ "alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta": [
628
+ ("alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta", "diffusion_pytorch_model.safetensors", "models/ControlNet/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta"),
629
+ ],
630
+ "Shakker-Labs/FLUX.1-dev-ControlNet-Depth": [
631
+ ("Shakker-Labs/FLUX.1-dev-ControlNet-Depth", "diffusion_pytorch_model.safetensors", "models/ControlNet/Shakker-Labs/FLUX.1-dev-ControlNet-Depth"),
632
+ ],
633
+ "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro": [
634
+ ("Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro", "diffusion_pytorch_model.safetensors", "models/ControlNet/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro"),
635
+ ],
636
+ "InstantX/FLUX.1-dev-IP-Adapter": {
637
+ "file_list": [
638
+ ("InstantX/FLUX.1-dev-IP-Adapter", "ip-adapter.bin", "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter"),
639
+ ("AI-ModelScope/siglip-so400m-patch14-384", "model.safetensors", "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/image_encoder"),
640
+ ("AI-ModelScope/siglip-so400m-patch14-384", "config.json", "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/image_encoder"),
641
+ ],
642
+ "load_path": [
643
+ "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/ip-adapter.bin",
644
+ "models/IpAdapter/InstantX/FLUX.1-dev-IP-Adapter/image_encoder",
645
+ ],
646
+ },
647
+ "InfiniteYou":{
648
+ "file_list":[
649
+ ("ByteDance/InfiniteYou", "infu_flux_v1.0/aes_stage2/InfuseNetModel/diffusion_pytorch_model-00001-of-00002.safetensors", "models/InfiniteYou/InfuseNetModel"),
650
+ ("ByteDance/InfiniteYou", "infu_flux_v1.0/aes_stage2/InfuseNetModel/diffusion_pytorch_model-00002-of-00002.safetensors", "models/InfiniteYou/InfuseNetModel"),
651
+ ("ByteDance/InfiniteYou", "infu_flux_v1.0/aes_stage2/image_proj_model.bin", "models/InfiniteYou"),
652
+ ("ByteDance/InfiniteYou", "supports/insightface/models/antelopev2/1k3d68.onnx", "models/InfiniteYou/insightface/models/antelopev2"),
653
+ ("ByteDance/InfiniteYou", "supports/insightface/models/antelopev2/2d106det.onnx", "models/InfiniteYou/insightface/models/antelopev2"),
654
+ ("ByteDance/InfiniteYou", "supports/insightface/models/antelopev2/genderage.onnx", "models/InfiniteYou/insightface/models/antelopev2"),
655
+ ("ByteDance/InfiniteYou", "supports/insightface/models/antelopev2/glintr100.onnx", "models/InfiniteYou/insightface/models/antelopev2"),
656
+ ("ByteDance/InfiniteYou", "supports/insightface/models/antelopev2/scrfd_10g_bnkps.onnx", "models/InfiniteYou/insightface/models/antelopev2"),
657
+ ],
658
+ "load_path":[
659
+ [
660
+ "models/InfiniteYou/InfuseNetModel/diffusion_pytorch_model-00001-of-00002.safetensors",
661
+ "models/InfiniteYou/InfuseNetModel/diffusion_pytorch_model-00002-of-00002.safetensors"
662
+ ],
663
+ "models/InfiniteYou/image_proj_model.bin",
664
+ ],
665
+ },
666
+ # ESRGAN
667
+ "ESRGAN_x4": [
668
+ ("AI-ModelScope/Real-ESRGAN", "RealESRGAN_x4.pth", "models/ESRGAN"),
669
+ ],
670
+ # RIFE
671
+ "RIFE": [
672
+ ("AI-ModelScope/RIFE", "flownet.pkl", "models/RIFE"),
673
+ ],
674
+ # Omnigen
675
+ "OmniGen-v1": {
676
+ "file_list": [
677
+ ("BAAI/OmniGen-v1", "vae/diffusion_pytorch_model.safetensors", "models/OmniGen/OmniGen-v1/vae"),
678
+ ("BAAI/OmniGen-v1", "model.safetensors", "models/OmniGen/OmniGen-v1"),
679
+ ("BAAI/OmniGen-v1", "config.json", "models/OmniGen/OmniGen-v1"),
680
+ ("BAAI/OmniGen-v1", "special_tokens_map.json", "models/OmniGen/OmniGen-v1"),
681
+ ("BAAI/OmniGen-v1", "tokenizer_config.json", "models/OmniGen/OmniGen-v1"),
682
+ ("BAAI/OmniGen-v1", "tokenizer.json", "models/OmniGen/OmniGen-v1"),
683
+ ],
684
+ "load_path": [
685
+ "models/OmniGen/OmniGen-v1/vae/diffusion_pytorch_model.safetensors",
686
+ "models/OmniGen/OmniGen-v1/model.safetensors",
687
+ ]
688
+ },
689
+ # CogVideo
690
+ "CogVideoX-5B": {
691
+ "file_list": [
692
+ ("ZhipuAI/CogVideoX-5b", "text_encoder/config.json", "models/CogVideo/CogVideoX-5b/text_encoder"),
693
+ ("ZhipuAI/CogVideoX-5b", "text_encoder/model.safetensors.index.json", "models/CogVideo/CogVideoX-5b/text_encoder"),
694
+ ("ZhipuAI/CogVideoX-5b", "text_encoder/model-00001-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/text_encoder"),
695
+ ("ZhipuAI/CogVideoX-5b", "text_encoder/model-00002-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/text_encoder"),
696
+ ("ZhipuAI/CogVideoX-5b", "transformer/config.json", "models/CogVideo/CogVideoX-5b/transformer"),
697
+ ("ZhipuAI/CogVideoX-5b", "transformer/diffusion_pytorch_model.safetensors.index.json", "models/CogVideo/CogVideoX-5b/transformer"),
698
+ ("ZhipuAI/CogVideoX-5b", "transformer/diffusion_pytorch_model-00001-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/transformer"),
699
+ ("ZhipuAI/CogVideoX-5b", "transformer/diffusion_pytorch_model-00002-of-00002.safetensors", "models/CogVideo/CogVideoX-5b/transformer"),
700
+ ("ZhipuAI/CogVideoX-5b", "vae/diffusion_pytorch_model.safetensors", "models/CogVideo/CogVideoX-5b/vae"),
701
+ ],
702
+ "load_path": [
703
+ "models/CogVideo/CogVideoX-5b/text_encoder",
704
+ "models/CogVideo/CogVideoX-5b/transformer",
705
+ "models/CogVideo/CogVideoX-5b/vae/diffusion_pytorch_model.safetensors",
706
+ ],
707
+ },
708
+ # Stable Diffusion 3.5
709
+ "StableDiffusion3.5-large": [
710
+ ("AI-ModelScope/stable-diffusion-3.5-large", "sd3.5_large.safetensors", "models/stable_diffusion_3"),
711
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/clip_l.safetensors", "models/stable_diffusion_3/text_encoders"),
712
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/clip_g.safetensors", "models/stable_diffusion_3/text_encoders"),
713
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/t5xxl_fp16.safetensors", "models/stable_diffusion_3/text_encoders"),
714
+ ],
715
+ "StableDiffusion3.5-medium": [
716
+ ("AI-ModelScope/stable-diffusion-3.5-medium", "sd3.5_medium.safetensors", "models/stable_diffusion_3"),
717
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/clip_l.safetensors", "models/stable_diffusion_3/text_encoders"),
718
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/clip_g.safetensors", "models/stable_diffusion_3/text_encoders"),
719
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/t5xxl_fp16.safetensors", "models/stable_diffusion_3/text_encoders"),
720
+ ],
721
+ "StableDiffusion3.5-large-turbo": [
722
+ ("AI-ModelScope/stable-diffusion-3.5-large-turbo", "sd3.5_large_turbo.safetensors", "models/stable_diffusion_3"),
723
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/clip_l.safetensors", "models/stable_diffusion_3/text_encoders"),
724
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/clip_g.safetensors", "models/stable_diffusion_3/text_encoders"),
725
+ ("AI-ModelScope/stable-diffusion-3.5-large", "text_encoders/t5xxl_fp16.safetensors", "models/stable_diffusion_3/text_encoders"),
726
+ ],
727
+ "HunyuanVideo":{
728
+ "file_list": [
729
+ ("AI-ModelScope/clip-vit-large-patch14", "model.safetensors", "models/HunyuanVideo/text_encoder"),
730
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00001-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
731
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00002-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
732
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00003-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
733
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00004-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
734
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "config.json", "models/HunyuanVideo/text_encoder_2"),
735
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model.safetensors.index.json", "models/HunyuanVideo/text_encoder_2"),
736
+ ("AI-ModelScope/HunyuanVideo", "hunyuan-video-t2v-720p/vae/pytorch_model.pt", "models/HunyuanVideo/vae"),
737
+ ("AI-ModelScope/HunyuanVideo", "hunyuan-video-t2v-720p/transformers/mp_rank_00_model_states.pt", "models/HunyuanVideo/transformers")
738
+ ],
739
+ "load_path": [
740
+ "models/HunyuanVideo/text_encoder/model.safetensors",
741
+ "models/HunyuanVideo/text_encoder_2",
742
+ "models/HunyuanVideo/vae/pytorch_model.pt",
743
+ "models/HunyuanVideo/transformers/mp_rank_00_model_states.pt"
744
+ ],
745
+ },
746
+ "HunyuanVideoI2V":{
747
+ "file_list": [
748
+ ("AI-ModelScope/clip-vit-large-patch14", "model.safetensors", "models/HunyuanVideoI2V/text_encoder"),
749
+ ("AI-ModelScope/llava-llama-3-8b-v1_1-transformers", "model-00001-of-00004.safetensors", "models/HunyuanVideoI2V/text_encoder_2"),
750
+ ("AI-ModelScope/llava-llama-3-8b-v1_1-transformers", "model-00002-of-00004.safetensors", "models/HunyuanVideoI2V/text_encoder_2"),
751
+ ("AI-ModelScope/llava-llama-3-8b-v1_1-transformers", "model-00003-of-00004.safetensors", "models/HunyuanVideoI2V/text_encoder_2"),
752
+ ("AI-ModelScope/llava-llama-3-8b-v1_1-transformers", "model-00004-of-00004.safetensors", "models/HunyuanVideoI2V/text_encoder_2"),
753
+ ("AI-ModelScope/llava-llama-3-8b-v1_1-transformers", "config.json", "models/HunyuanVideoI2V/text_encoder_2"),
754
+ ("AI-ModelScope/llava-llama-3-8b-v1_1-transformers", "model.safetensors.index.json", "models/HunyuanVideoI2V/text_encoder_2"),
755
+ ("AI-ModelScope/HunyuanVideo-I2V", "hunyuan-video-i2v-720p/vae/pytorch_model.pt", "models/HunyuanVideoI2V/vae"),
756
+ ("AI-ModelScope/HunyuanVideo-I2V", "hunyuan-video-i2v-720p/transformers/mp_rank_00_model_states.pt", "models/HunyuanVideoI2V/transformers")
757
+ ],
758
+ "load_path": [
759
+ "models/HunyuanVideoI2V/text_encoder/model.safetensors",
760
+ "models/HunyuanVideoI2V/text_encoder_2",
761
+ "models/HunyuanVideoI2V/vae/pytorch_model.pt",
762
+ "models/HunyuanVideoI2V/transformers/mp_rank_00_model_states.pt"
763
+ ],
764
+ },
765
+ "HunyuanVideo-fp8":{
766
+ "file_list": [
767
+ ("AI-ModelScope/clip-vit-large-patch14", "model.safetensors", "models/HunyuanVideo/text_encoder"),
768
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00001-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
769
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00002-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
770
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00003-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
771
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model-00004-of-00004.safetensors", "models/HunyuanVideo/text_encoder_2"),
772
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "config.json", "models/HunyuanVideo/text_encoder_2"),
773
+ ("DiffSynth-Studio/HunyuanVideo_MLLM_text_encoder", "model.safetensors.index.json", "models/HunyuanVideo/text_encoder_2"),
774
+ ("AI-ModelScope/HunyuanVideo", "hunyuan-video-t2v-720p/vae/pytorch_model.pt", "models/HunyuanVideo/vae"),
775
+ ("DiffSynth-Studio/HunyuanVideo-safetensors", "model.fp8.safetensors", "models/HunyuanVideo/transformers")
776
+ ],
777
+ "load_path": [
778
+ "models/HunyuanVideo/text_encoder/model.safetensors",
779
+ "models/HunyuanVideo/text_encoder_2",
780
+ "models/HunyuanVideo/vae/pytorch_model.pt",
781
+ "models/HunyuanVideo/transformers/model.fp8.safetensors"
782
+ ],
783
+ },
784
+ }
785
+ Preset_model_id: TypeAlias = Literal[
786
+ "HunyuanDiT",
787
+ "stable-video-diffusion-img2vid-xt",
788
+ "ExVideo-SVD-128f-v1",
789
+ "ExVideo-CogVideoX-LoRA-129f-v1",
790
+ "StableDiffusion_v15",
791
+ "DreamShaper_8",
792
+ "AingDiffusion_v12",
793
+ "Flat2DAnimerge_v45Sharp",
794
+ "TextualInversion_VeryBadImageNegative_v1.3",
795
+ "StableDiffusionXL_v1",
796
+ "BluePencilXL_v200",
797
+ "StableDiffusionXL_Turbo",
798
+ "ControlNet_v11f1p_sd15_depth",
799
+ "ControlNet_v11p_sd15_softedge",
800
+ "ControlNet_v11f1e_sd15_tile",
801
+ "ControlNet_v11p_sd15_lineart",
802
+ "AnimateDiff_v2",
803
+ "AnimateDiff_xl_beta",
804
+ "RIFE",
805
+ "BeautifulPrompt",
806
+ "opus-mt-zh-en",
807
+ "IP-Adapter-SD",
808
+ "IP-Adapter-SDXL",
809
+ "StableDiffusion3",
810
+ "StableDiffusion3_without_T5",
811
+ "Kolors",
812
+ "SDXL-vae-fp16-fix",
813
+ "ControlNet_union_sdxl_promax",
814
+ "FLUX.1-dev",
815
+ "FLUX.1-schnell",
816
+ "InstantX/FLUX.1-dev-Controlnet-Union-alpha",
817
+ "jasperai/Flux.1-dev-Controlnet-Depth",
818
+ "jasperai/Flux.1-dev-Controlnet-Surface-Normals",
819
+ "jasperai/Flux.1-dev-Controlnet-Upscaler",
820
+ "alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Alpha",
821
+ "alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta",
822
+ "Shakker-Labs/FLUX.1-dev-ControlNet-Depth",
823
+ "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro",
824
+ "InstantX/FLUX.1-dev-IP-Adapter",
825
+ "InfiniteYou",
826
+ "SDXL_lora_zyd232_ChineseInkStyle_SDXL_v1_0",
827
+ "QwenPrompt",
828
+ "OmostPrompt",
829
+ "ESRGAN_x4",
830
+ "RIFE",
831
+ "OmniGen-v1",
832
+ "CogVideoX-5B",
833
+ "Annotators:Depth",
834
+ "Annotators:Softedge",
835
+ "Annotators:Lineart",
836
+ "Annotators:Normal",
837
+ "Annotators:Openpose",
838
+ "StableDiffusion3.5-large",
839
+ "StableDiffusion3.5-medium",
840
+ "HunyuanVideo",
841
+ "HunyuanVideo-fp8",
842
+ "HunyuanVideoI2V",
843
+ ]
diffsynth-studio/diffsynth/controlnets/__init__.py ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ from .controlnet_unit import ControlNetConfigUnit, ControlNetUnit, MultiControlNetManager, FluxMultiControlNetManager
2
+ from .processors import Annotator
diffsynth-studio/diffsynth/controlnets/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (417 Bytes). View file