diffsynth-engine 0.4.3.dev9__py3-none-any.whl → 0.4.3.dev11__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,13 @@
1
1
  import torch
2
2
  import numpy as np
3
+ import math
3
4
  from PIL import Image
5
+ from enum import Enum
6
+ from typing import List, Tuple, Optional
7
+
8
+ from diffsynth_engine.utils import logging
9
+
10
+ logger = logging.get_logger(__name__)
4
11
 
5
12
 
6
13
  def tensor_to_image(t: torch.Tensor, denormalize: bool = True) -> Image.Image:
@@ -23,3 +30,209 @@ def tensor_to_image(t: torch.Tensor, denormalize: bool = True) -> Image.Image:
23
30
  else:
24
31
  mode = "RGB"
25
32
  return Image.fromarray(t, mode=mode)
33
+
34
+
35
+ class ChannelDimension(Enum):
36
+ FIRST = "channels_first"
37
+ LAST = "channels_last"
38
+
39
+
40
+ def convert_to_rgb(image: Image.Image) -> Image.Image:
41
+ if not isinstance(image, Image.Image):
42
+ raise TypeError(f"image must be a PIL.Image.Image, but got {type(image)}")
43
+ if image.mode == "RGB":
44
+ return image
45
+ image = image.convert(mode="RGB")
46
+ return image
47
+
48
+
49
+ def infer_channel_dimension_format(image: np.ndarray) -> ChannelDimension:
50
+ num_channels = (1, 3)
51
+ if image.ndim == 3:
52
+ first_dim, last_dim = 0, 2
53
+ elif image.ndim == 4:
54
+ first_dim, last_dim = 1, 3
55
+ else:
56
+ raise ValueError(f"Unsupported number of image dimensions: {image.ndim}")
57
+
58
+ if image.shape[first_dim] in num_channels and image.shape[last_dim] in num_channels:
59
+ logger.warning("Image has both first and last dimensions as channels. This may lead to unexpected behavior.")
60
+ return ChannelDimension.FIRST
61
+ elif image.shape[first_dim] in num_channels:
62
+ return ChannelDimension.FIRST
63
+ elif image.shape[last_dim] in num_channels:
64
+ return ChannelDimension.LAST
65
+ raise ValueError("Unable to infer channel dimension format")
66
+
67
+
68
+ def get_image_size(image: np.ndarray, channel_dim: Optional[ChannelDimension] = None) -> Tuple[int, int]:
69
+ """
70
+ Returns the (height, width) dimensions of the image.
71
+ """
72
+ if channel_dim is None:
73
+ channel_dim = infer_channel_dimension_format(image)
74
+ if channel_dim == ChannelDimension.FIRST:
75
+ return image.shape[-2], image.shape[-1]
76
+ elif channel_dim == ChannelDimension.LAST:
77
+ return image.shape[-3], image.shape[-2]
78
+ else:
79
+ raise ValueError(f"Unsupported channel dimension format: {channel_dim}")
80
+
81
+
82
+ def smart_resize(
83
+ height: int, width: int, factor: int = 28, min_pixels: int = 56 * 56, max_pixels: int = 14 * 14 * 4 * 1280
84
+ ) -> Tuple[int, int]:
85
+ """Rescales the image so that the following conditions are met:
86
+ 1. Both dimensions (height and width) are divisible by 'factor'.
87
+ 2. The total number of pixels is within the range ['min_pixels', 'max_pixels'].
88
+ 3. The aspect ratio of the image is maintained as closely as possible.
89
+ """
90
+ abs_aspect_ratio = max(height, width) / min(height, width)
91
+ if height < factor or width < factor:
92
+ raise ValueError(f"Image height: {height} and width: {width} must be greater than or equal to factor: {factor}")
93
+ elif abs_aspect_ratio > 200:
94
+ raise ValueError(f"absolute aspect ratio must be smaller than 200, got {abs_aspect_ratio}")
95
+
96
+ h_bar = round(height / factor) * factor
97
+ w_bar = round(width / factor) * factor
98
+ if h_bar * w_bar > max_pixels:
99
+ beta = math.sqrt(height * width / max_pixels)
100
+ h_bar = math.floor(height / beta / factor) * factor
101
+ w_bar = math.floor(width / beta / factor) * factor
102
+ elif h_bar * w_bar < min_pixels:
103
+ beta = math.sqrt(min_pixels / (height * width))
104
+ h_bar = math.ceil(height * beta / factor) * factor
105
+ w_bar = math.ceil(width * beta / factor) * factor
106
+ return h_bar, w_bar
107
+
108
+
109
+ def to_channel_dimension_format(
110
+ image: np.ndarray, channel_dim: ChannelDimension, input_channel_dim: Optional[ChannelDimension] = None
111
+ ) -> np.ndarray:
112
+ if not isinstance(image, np.ndarray):
113
+ raise TypeError(f"Input image must be of type np.ndarray, got {type(image)}")
114
+ if input_channel_dim is None:
115
+ input_channel_dim = infer_channel_dimension_format(image)
116
+ if input_channel_dim == channel_dim:
117
+ return image
118
+ if channel_dim == ChannelDimension.FIRST:
119
+ image = image.transpose((2, 0, 1))
120
+ elif channel_dim == ChannelDimension.LAST:
121
+ image = image.transpose((1, 2, 0))
122
+ else:
123
+ raise ValueError(f"Unsupported channel dimension format: {channel_dim}")
124
+ return image
125
+
126
+
127
+ def get_channel_dimension_axis(image: np.ndarray, input_data_format: Optional[ChannelDimension] = None) -> int:
128
+ if input_data_format is None:
129
+ input_data_format = infer_channel_dimension_format(image)
130
+ if input_data_format == ChannelDimension.FIRST:
131
+ return image.ndim - 3
132
+ elif input_data_format == ChannelDimension.LAST:
133
+ return image.ndim - 1
134
+ raise ValueError(f"Unsupported channel dimension format: {input_data_format}")
135
+
136
+
137
+ def rescale_image(
138
+ image: np.ndarray,
139
+ rescale_factor: float,
140
+ data_format: Optional[ChannelDimension] = None,
141
+ input_data_format: Optional[ChannelDimension] = None,
142
+ ) -> np.ndarray:
143
+ rescaled_image = image.astype(np.float64) * rescale_factor
144
+ if data_format is not None:
145
+ rescaled_image = to_channel_dimension_format(rescaled_image, data_format, input_data_format)
146
+ rescaled_image = rescaled_image.astype(np.float32)
147
+ return rescaled_image
148
+
149
+
150
+ def normalize_image(
151
+ image: np.ndarray,
152
+ mean: List[float],
153
+ std: List[float],
154
+ data_format: Optional[ChannelDimension] = None,
155
+ input_data_format: Optional[ChannelDimension] = None,
156
+ ) -> np.ndarray:
157
+ if input_data_format is None:
158
+ input_data_format = infer_channel_dimension_format(image)
159
+ channel_axis = get_channel_dimension_axis(image, input_data_format)
160
+ num_channels = image.shape[channel_axis]
161
+ if len(mean) != num_channels:
162
+ raise ValueError(f"mean must have {num_channels} elements, but got {len(mean)}")
163
+ if len(std) != num_channels:
164
+ raise ValueError(f"std must have {num_channels} elements, but got {len(std)}")
165
+ if not np.issubdtype(image.dtype, np.floating):
166
+ image = image.astype(np.float32)
167
+ mean = np.array(mean, dtype=image.dtype)
168
+ std = np.array(std, dtype=image.dtype)
169
+ if input_data_format == ChannelDimension.LAST:
170
+ image = (image - mean) / std
171
+ else:
172
+ image = ((image.T - mean) / std).T
173
+ if data_format is not None:
174
+ image = to_channel_dimension_format(image, data_format, input_data_format)
175
+ return image
176
+
177
+
178
+ def to_pil_image(
179
+ image: np.ndarray,
180
+ do_rescale: Optional[bool] = None,
181
+ input_data_format: Optional[ChannelDimension] = None,
182
+ image_mode: Optional[str] = None,
183
+ ) -> Image.Image:
184
+ image = to_channel_dimension_format(image, ChannelDimension.LAST, input_data_format)
185
+ image = np.squeeze(image, axis=-1) if image.shape[-1] == 1 else image
186
+ do_rescale = do_rescale if do_rescale is not None else _need_rescale_pil_conversion(image)
187
+ if do_rescale:
188
+ image = rescale_image(image, 255)
189
+ image = image.astype(np.uint8)
190
+ return Image.fromarray(image, mode=image_mode)
191
+
192
+
193
+ def resize_image(
194
+ image: np.ndarray,
195
+ height: int,
196
+ width: int,
197
+ resample: Image.Resampling = Image.Resampling.BILINEAR,
198
+ reducing_gap: Optional[int] = None,
199
+ input_data_format: Optional[ChannelDimension] = None,
200
+ data_format: Optional[ChannelDimension] = None,
201
+ ) -> np.ndarray:
202
+ if input_data_format is None:
203
+ input_data_format = infer_channel_dimension_format(image)
204
+ data_format = data_format if data_format is not None else input_data_format
205
+ do_rescale = _need_rescale_pil_conversion(image)
206
+ pil_image = to_pil_image(image, do_rescale, input_data_format)
207
+ resized_image = pil_image.resize((width, height), resample=resample, reducing_gap=reducing_gap)
208
+ resized_image = np.array(resized_image)
209
+ resized_image = np.expand_dims(resized_image, axis=-1) if resized_image.ndim == 2 else resized_image
210
+ resized_image = to_channel_dimension_format(resized_image, data_format, ChannelDimension.LAST)
211
+ resized_image = rescale_image(resized_image, 1 / 255) if do_rescale else resized_image
212
+ return resized_image
213
+
214
+
215
+ def _need_rescale_pil_conversion(image: np.ndarray) -> bool:
216
+ """
217
+ Detects whether or not the image needs to be rescaled before being converted to a PIL image.
218
+ The assumption is that if the image is of type `np.float` and all values are between 0 and 1, it needs to be
219
+ rescaled.
220
+ """
221
+ if image.dtype == np.uint8:
222
+ do_rescale = False
223
+ elif np.allclose(image, image.astype(int)):
224
+ if np.all(0 <= image) and np.all(image <= 255):
225
+ do_rescale = False
226
+ else:
227
+ raise ValueError(
228
+ "The image to be converted to a PIL image contains value outside the range [0, 255], "
229
+ f"got [{image.min()}, {image.max()}] which cannot be converted to uint8."
230
+ )
231
+ elif np.all(0 <= image) and np.all(image <= 1):
232
+ do_rescale = True
233
+ else:
234
+ raise ValueError(
235
+ "The image to be converted to PIL image contains values outside the range [0, 1]"
236
+ f"got [{image.min()}, {image.max()}] which cannot be converted to uint8."
237
+ )
238
+ return do_rescale
@@ -3,6 +3,7 @@ import torch.nn as nn
3
3
  from typing import Dict
4
4
  import platform
5
5
 
6
+
6
7
  def enable_sequential_cpu_offload(module: nn.Module, device: str = "cuda"):
7
8
  module = module.to("cpu")
8
9
  if len(list(module.children())) == 0:
@@ -26,13 +27,13 @@ def add_cpu_offload_hook(module: nn.Module, device: str = "cuda", recurse: bool
26
27
  for name, buffer in module.named_buffers(recurse=recurse):
27
28
  buffer.data = buffer.data.to(device=device)
28
29
  return tuple(x.to(device=device) if isinstance(x, torch.Tensor) else x for x in input_)
29
- for name, param in module.named_parameters(recurse=recurse):
30
- if platform.system() == 'Linux':
30
+ for name, param in module.named_parameters(recurse=recurse):
31
+ if platform.system() == "Linux":
31
32
  param.data = param.data.pin_memory()
32
33
  offload_param_dict[name] = param.data
33
34
  param.data = param.data.to(device=device)
34
35
  for name, buffer in module.named_buffers(recurse=recurse):
35
- if platform.system() == 'Linux':
36
+ if platform.system() == "Linux":
36
37
  buffer.data = buffer.data.pin_memory()
37
38
  offload_param_dict[name] = buffer.data
38
39
  buffer.data = buffer.data.to(device=device)
@@ -59,11 +60,11 @@ def offload_model_to_dict(module: nn.Module) -> Dict[str, torch.Tensor]:
59
60
  module = module.to("cpu")
60
61
  offload_param_dict = {}
61
62
  for name, param in module.named_parameters(recurse=True):
62
- if platform.system() == 'Linux':
63
+ if platform.system() == "Linux":
63
64
  param.data = param.data.pin_memory()
64
65
  offload_param_dict[name] = param.data
65
66
  for name, buffer in module.named_buffers(recurse=True):
66
- if platform.system() == 'Linux':
67
+ if platform.system() == "Linux":
67
68
  buffer.data = buffer.data.pin_memory()
68
69
  offload_param_dict[name] = buffer.data
69
70
  return offload_param_dict
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsynth_engine
3
- Version: 0.4.3.dev9
3
+ Version: 0.4.3.dev11
4
4
  Author: MuseAI x ModelScope
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Operating System :: OS Independent
@@ -29,7 +29,7 @@ Requires-Dist: scikit-image
29
29
  Requires-Dist: trimesh
30
30
  Provides-Extra: dev
31
31
  Requires-Dist: diffusers==0.31.0; extra == "dev"
32
- Requires-Dist: transformers==4.45.2; extra == "dev"
32
+ Requires-Dist: transformers==4.52.4; extra == "dev"
33
33
  Requires-Dist: accelerate; extra == "dev"
34
34
  Requires-Dist: build; extra == "dev"
35
35
  Requires-Dist: ruff; extra == "dev"
@@ -30,7 +30,7 @@ diffsynth_engine/conf/models/components/vae.json,sha256=EvlfeZ8hBCquep6JH1zVTcco
30
30
  diffsynth_engine/conf/models/flux/flux_dit.json,sha256=DdNjcNH6xI4Uz_sSoTkU0VGxYKhRDa3DdBu0g3M0rWc,5343
31
31
  diffsynth_engine/conf/models/flux/flux_text_encoder.json,sha256=AnSsOuOTesiQKW2UIuRWhpBE4Z_L6uFRpXTm3UN67FQ,748
32
32
  diffsynth_engine/conf/models/flux/flux_vae.json,sha256=2daLDQPjahufox1mEtsuYEAa0YyKpqvTPdeDYwUKlMQ,19970
33
- diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_config.json,sha256=jfoXtZiCfom30iItDdfXPKhuH9EkVtXCkYtk5iD9Tr4,604
33
+ diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_config.json,sha256=VnOh5-PrKrOMlI3PohcazU-eZ4AaW_qKNGxNX70UVRE,629
34
34
  diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_vision_config.json,sha256=Nkjg1A45MgMKXKfeP3zgIHd0KX_EEwG5ljkVXvEtT0A,364
35
35
  diffsynth_engine/conf/models/qwen_image/qwen_image_vae.json,sha256=eVLTSRqbXm3JD8QDkLbM6vFfCdynlS-8QxqCfi4BzrI,815
36
36
  diffsynth_engine/conf/models/qwen_image/qwen_image_vae_keymap.json,sha256=u9MJ3yRL45kdqRVoBnYbHkmuUmOseUFtwte-_9ZvdHc,25224
@@ -58,6 +58,7 @@ diffsynth_engine/conf/tokenizers/flux/tokenizer_2/special_tokens_map.json,sha256
58
58
  diffsynth_engine/conf/tokenizers/flux/tokenizer_2/spiece.model,sha256=1grLEoz3t_JTbo84pbGKBVNcnhTHo1WQQnDhWwlF6oY,791656
59
59
  diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer.json,sha256=9d_sFjdl4Y4nBTf-iWxJ9frXTbFSVkHZslWjAIuZlZY,2424235
60
60
  diffsynth_engine/conf/tokenizers/flux/tokenizer_2/tokenizer_config.json,sha256=Gj0ttkIV7XeFTdQgiqxfg2HBtUccq9GcDvFHLRqJXrA,20817
61
+ diffsynth_engine/conf/tokenizers/qwen_image/qwen2_vl_image_processor.json,sha256=u_Uw_SNp6qET_TWe0Hujm3v75NDEvizHetHrgpVC7CM,644
61
62
  diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/added_tokens.json,sha256=2JrIc9odOnjBcOLt7aweUkMEsf3fWQ1kMg0WsMvKZYM,648
62
63
  diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/merges.txt,sha256=iDHk8aBERxNA98CoPXvXEwaluGfpX9hw900MUwipBNU,1671853
63
64
  diffsynth_engine/conf/tokenizers/qwen_image/tokenizer/special_tokens_map.json,sha256=21yCGVKkEO6UtBk0EeHZDSNEXlBuY1J2Zbc6TZBnEPY,716
@@ -78,13 +79,13 @@ diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer.json,sha256=bhl7TT29cdoU
78
79
  diffsynth_engine/conf/tokenizers/wan/umt5-xxl/tokenizer_config.json,sha256=7Zo6iw-qcacKMoR-BDX-A25uES1N9O23u0ipIeNE3AU,61728
79
80
  diffsynth_engine/configs/__init__.py,sha256=7d7DWeWxRlXdU5y3NinEdwlwC4W-V5U3KSBOmUwL_tc,778
80
81
  diffsynth_engine/configs/controlnet.py,sha256=EpUkCdRNk2G5uo56syaOzPFdR9g0sDHRXckagmMsgaQ,948
81
- diffsynth_engine/configs/pipeline.py,sha256=3ZcppVFMfKCk57Z8bYhEr3tvHBvCSMMBHcxyQICixTM,10995
82
+ diffsynth_engine/configs/pipeline.py,sha256=ZBNNJQB3uvle2urEAFn-_cCqqUlJkcpgp-GLepZn24s,11143
82
83
  diffsynth_engine/kernels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
84
  diffsynth_engine/models/__init__.py,sha256=8Ze7cSE8InetgXWTNb0neVA2Q44K7WlE-h7O-02m2sY,119
84
85
  diffsynth_engine/models/base.py,sha256=sbyyGP-ENnqicr6cxjEmXRf6dWrmKjCu6k5yamuJ518,2665
85
86
  diffsynth_engine/models/utils.py,sha256=r5xLSEog1_ODaFrpqzJvAj3r23PQiEpgivzErClTZTg,1561
86
87
  diffsynth_engine/models/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- diffsynth_engine/models/basic/attention.py,sha256=PJ3xQ8ifGeoiEBh-vDRI32-v8Syd8ostuhll3Yo5Nsk,10323
88
+ diffsynth_engine/models/basic/attention.py,sha256=H-LKiVD09GFj6hIwiIb5wiDS1HVCslN_TXgR7FrkUX4,10343
88
89
  diffsynth_engine/models/basic/lora.py,sha256=qEh44zfh7ZBblLpjmKzwzAxmTlVyY0wu9IkGsnr7Ih8,10614
89
90
  diffsynth_engine/models/basic/relative_position_emb.py,sha256=rCXOweZMcayVnNUVvBcYXMdhHS257B_PC8PZSWxvhNQ,2540
90
91
  diffsynth_engine/models/basic/timestep.py,sha256=WJODYqkSXEM0wcS42YkkfrGwxWt0e60zMTkDdUBQqBw,2810
@@ -106,8 +107,8 @@ diffsynth_engine/models/hunyuan3d/moe.py,sha256=FAuUqgrB2ZFb0uGBhI-Afv850HmzDFP5
106
107
  diffsynth_engine/models/hunyuan3d/surface_extractor.py,sha256=b15mb1N4PYwAvDk1Gude8qlccRKrSg461xT59RjMEQk,4167
107
108
  diffsynth_engine/models/hunyuan3d/volume_decoder.py,sha256=sgflj1a8sIerqGSalBAVQOlyiIihkLOLXYysNbulCoQ,2355
108
109
  diffsynth_engine/models/qwen_image/__init__.py,sha256=X5pig621WEsDZ6L7HVkmYspV53-GDfs_la1ncaq_NFw,417
109
- diffsynth_engine/models/qwen_image/qwen2_5_vl.py,sha256=vpBo6eo_96iLky9YV5MX0nbmOleY2EX97TrJoRBNnw4,56511
110
- diffsynth_engine/models/qwen_image/qwen_image_dit.py,sha256=qxwuB42rrVy2R-gBNcP_9ykvgKgXP3BuxLhU-0ArPas,16949
110
+ diffsynth_engine/models/qwen_image/qwen2_5_vl.py,sha256=ykq-A7kPZedMNnvsJuHXHEgDgsQoTYhk8HQDTOmxz2Q,55448
111
+ diffsynth_engine/models/qwen_image/qwen_image_dit.py,sha256=RSffbhK2YmcXLdzGilYXZ-URuaKRIfGqoRmWVROsXP4,17698
111
112
  diffsynth_engine/models/qwen_image/qwen_image_dit_fbcache.py,sha256=tgCmD4MFNgd3HmLyoYnt8HZCzPBTgQ4zCQjV5qZSW_I,4870
112
113
  diffsynth_engine/models/qwen_image/qwen_image_vae.py,sha256=m455iJfJx8KVEsrkinjClokkEqd0RshSZoKZ_QAdRyk,38509
113
114
  diffsynth_engine/models/sd/__init__.py,sha256=hjoKRnwoXOLD0wude-w7I6wK5ak7ACMbnbkPuBB2oU0,380
@@ -136,21 +137,23 @@ diffsynth_engine/models/wan/wan_image_encoder.py,sha256=LYwcfCcQmXf9FP08DGaU2bfa
136
137
  diffsynth_engine/models/wan/wan_text_encoder.py,sha256=bkphxtqNNwXcEA_OaUrwV9CvICV-s16awu5Z9gjjzsM,10912
137
138
  diffsynth_engine/models/wan/wan_vae.py,sha256=AmBuqyPwZCFY0e8lUThlJoNHmpmTm2_dE1XYzXBCaAI,38937
138
139
  diffsynth_engine/pipelines/__init__.py,sha256=bEdXa533rXgjySO0aiLlfLkVmxoP6Yy_I4kj3WkpxnI,528
139
- diffsynth_engine/pipelines/base.py,sha256=goe_UO1LvUXVwP5geUmu0zdFUrSms9iss3OuRyuMjXY,13726
140
+ diffsynth_engine/pipelines/base.py,sha256=RTkVwWaWXr5ujqn5-UBHvdPddYwr-uvChj9-fmoXrms,13729
140
141
  diffsynth_engine/pipelines/flux_image.py,sha256=Cwak7zZ86Um63YQB-fsiW87ip8lpzn2kXXS2Btune6o,49176
141
142
  diffsynth_engine/pipelines/hunyuan3d_shape.py,sha256=fwNKET54KjCiWDpW2S1Fk-p3nfJreZ-RH7p46VLawEQ,7911
142
- diffsynth_engine/pipelines/qwen_image.py,sha256=v99ZnERw_g-opET7Sh5XNTFLr_SV9c4wBRfWCVXFayA,18411
143
- diffsynth_engine/pipelines/sd_image.py,sha256=GhrCadEmAWv4id0NdRpJW_EC2PgItBctXLkfPxq5gDI,18100
144
- diffsynth_engine/pipelines/sdxl_image.py,sha256=kmidIz8zDtrw9ggLXI3WG7AQq_jmOPVct-O3hGNra_g,21951
143
+ diffsynth_engine/pipelines/qwen_image.py,sha256=QDbiI7xpc8fPgskygz-246zzJOLRLkk-X2ZHK3pRf_Y,23606
144
+ diffsynth_engine/pipelines/sd_image.py,sha256=yreiiQDWaMA5LOgLs_GDoC1hLMVk2LRMk99RLWQ1W90,18076
145
+ diffsynth_engine/pipelines/sdxl_image.py,sha256=-gRkNP9EpPRR0plnCWiSSXVNkIQd2zTVvJgziZuxUQU,21975
145
146
  diffsynth_engine/pipelines/utils.py,sha256=lk7sFGEk-fGjgadLpwwppHKG-yZ0RC-4ZmHW7pRRe8A,473
146
147
  diffsynth_engine/pipelines/wan_video.py,sha256=l6GUfv7WJ-Hue5MZH9L3eXWHA-I0oOelxCNwUkjMSRg,26132
147
148
  diffsynth_engine/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
149
  diffsynth_engine/processor/canny_processor.py,sha256=hV30NlblTkEFUAmF_O-LJrNlGVM2SFrqq6okfF8VpOo,602
149
150
  diffsynth_engine/processor/depth_processor.py,sha256=dQvs3JsnyMbz4dyI9QoR8oO-mMFBFAgNvgqeCoaU5jk,1532
150
- diffsynth_engine/tokenizers/__init__.py,sha256=l4PMxLs6WQ_2ah0LXApkYsQY8-2HQZTHcQHpsWigNnI,294
151
+ diffsynth_engine/tokenizers/__init__.py,sha256=KxTna7UrkptrBU1j3zBYOi_8mVEWlcSMGZwK2ahuHNw,456
151
152
  diffsynth_engine/tokenizers/base.py,sha256=JX4C8FX7Y-glpszk39pUlS0QvqRyiKBYr-GWrrpee78,5149
152
153
  diffsynth_engine/tokenizers/clip.py,sha256=6yggDSRGZc34CKflO1DwTIisggv53aITe_h-YnsERzc,10695
153
154
  diffsynth_engine/tokenizers/qwen2.py,sha256=NDuE0hs1c4WfHOYUZ9KC0L-1vqOQ0Pj7ugWMqp24rys,9263
155
+ diffsynth_engine/tokenizers/qwen2_vl_image_processor.py,sha256=7IBOn2m4AbL-URVrSrFY0k88r4_gkK_nuTQRAxorBes,6239
156
+ diffsynth_engine/tokenizers/qwen2_vl_processor.py,sha256=Zyu8_5ETCjACQ8BX6jvVRWj37nZqJgtI0hesSUGm4-g,4145
154
157
  diffsynth_engine/tokenizers/t5.py,sha256=brhRFkXaTzE29hl_wDdcjQ3MCoL0pQslwHIRbMX_bNo,7442
155
158
  diffsynth_engine/tokenizers/wan.py,sha256=4bvibHZKNQYHnl0oSyN_pJK5PAxkUC0TWgbNDgckdCQ,2265
156
159
  diffsynth_engine/tools/__init__.py,sha256=3sgNSD5sts3cHSyKVH5qziTykJQ6gDRMx_RyrrxSzZ8,388
@@ -160,17 +163,17 @@ diffsynth_engine/tools/flux_reference_tool.py,sha256=wY3ey7s5vZLu9gYBCdZZveapQJY
160
163
  diffsynth_engine/tools/flux_replace_tool.py,sha256=ZUpc2T1nMRXOBHGnBN8MImjgs3hoRmJ-SludpZ1u0bM,4557
161
164
  diffsynth_engine/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
165
  diffsynth_engine/utils/cache.py,sha256=Ivef22pCuhEq-4H00gSvkLS8ceVZoGis7OSitYL6gH4,2101
163
- diffsynth_engine/utils/constants.py,sha256=W9znMP8O7td3RF_2ykeIARCWVtIxfro9ytmlXR_GG2c,3121
166
+ diffsynth_engine/utils/constants.py,sha256=csKPtXA9YFoRPnhUBmnw3zf1KlTV963a43Nu4j9TqOE,3354
164
167
  diffsynth_engine/utils/download.py,sha256=8O56zQr2taY4BnCBEKVk3YGorTqTTCqTblf7tI9otXA,6721
165
168
  diffsynth_engine/utils/env.py,sha256=43x-kBjt5zI2cwZ9G4BOeTbedi2k6TuBzHGOBeFbFvU,280
166
169
  diffsynth_engine/utils/flag.py,sha256=6zQLnoEaU69pBEyhavCgydQfP0khw5ppCU7sue4yRqg,1370
167
170
  diffsynth_engine/utils/fp8_linear.py,sha256=NosnWMoAr_IpFcLn-OYbAx-vXySphjxutDZqmXLNjJI,4064
168
171
  diffsynth_engine/utils/gguf.py,sha256=ZWvw46V4g4uVyAR_oCq-4K5nPdKVrYk3u47uXMgA9lU,14092
169
- diffsynth_engine/utils/image.py,sha256=_46CVs1Qe7GdZNulWWJISnR_Y6FotC2tZGLKtr04gIE,562
172
+ diffsynth_engine/utils/image.py,sha256=xZ_bEU-DdoSwMPG7jpP1daAro2tsy9ddeXKbXqXaeC0,9335
170
173
  diffsynth_engine/utils/loader.py,sha256=Z5v1WNDWFY0OrVubB70j5VU3zeaAfEK_j8c1KrGI4yM,1240
171
174
  diffsynth_engine/utils/lock.py,sha256=1Ipgst9eEFfFdViAvD5bxdB6HnHHBcqWYOb__fGaPUI,1601
172
175
  diffsynth_engine/utils/logging.py,sha256=XB0xTT8PBN6btkOjFtOvjlrOCRVgDGT8PFAp1vmse28,467
173
- diffsynth_engine/utils/offload.py,sha256=8dHMEzAQcE-GNbFYotGQg2YBBB0eywoRTIffVmK4A0k,3746
176
+ diffsynth_engine/utils/offload.py,sha256=d8cVb3ToYGbbeNnCd2dSRqR5Rm4lxrviGCTTEZ-cjo0,3703
174
177
  diffsynth_engine/utils/onnx.py,sha256=jeWUudJHnESjuiEAHyUZYUZz7dCj34O9aGjHCe8yjWo,1149
175
178
  diffsynth_engine/utils/parallel.py,sha256=Z9jqCv4mLV4JyXR3uTHyv1rujPiKU8PSCbAfiN9jkPc,16818
176
179
  diffsynth_engine/utils/platform.py,sha256=2lXdw6YkqcRONCeT98n4cyg1Ii8Ybbyj2Ns72Se9tlk,496
@@ -179,8 +182,8 @@ diffsynth_engine/utils/video.py,sha256=Ne0rd2lb59UT1q5EotpjlY7OT8F9oTCFDyo1ST77u
179
182
  diffsynth_engine/utils/memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
183
  diffsynth_engine/utils/memory/linear_regression.py,sha256=oW_EQEw13oPoyUrxiL8A7Ksa5AuJ2ynI2qhCbfAuZbg,3930
181
184
  diffsynth_engine/utils/memory/memory_predcit_model.py,sha256=qYlp0JvZ02IhLD8YVEHrtVPQcGLNHVijpUit0dz4FWE,3896
182
- diffsynth_engine-0.4.3.dev9.dist-info/licenses/LICENSE,sha256=x7aBqQuVI0IYnftgoTPI_A0I_rjdjPPQkjnU6N2nikM,11346
183
- diffsynth_engine-0.4.3.dev9.dist-info/METADATA,sha256=sxEnokIrLWZwbL9jkLzpT84VfWXIHDmqrdDma9Yjuxg,1117
184
- diffsynth_engine-0.4.3.dev9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
185
- diffsynth_engine-0.4.3.dev9.dist-info/top_level.txt,sha256=6zgbiIzEHLbhgDKRyX0uBJOV3F6VnGGBRIQvSiYYn6w,17
186
- diffsynth_engine-0.4.3.dev9.dist-info/RECORD,,
185
+ diffsynth_engine-0.4.3.dev11.dist-info/licenses/LICENSE,sha256=x7aBqQuVI0IYnftgoTPI_A0I_rjdjPPQkjnU6N2nikM,11346
186
+ diffsynth_engine-0.4.3.dev11.dist-info/METADATA,sha256=pxJONCO3LVvgJA0OQjR7vUqJWKXlxEpbZe6J6mB5JcI,1118
187
+ diffsynth_engine-0.4.3.dev11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
188
+ diffsynth_engine-0.4.3.dev11.dist-info/top_level.txt,sha256=6zgbiIzEHLbhgDKRyX0uBJOV3F6VnGGBRIQvSiYYn6w,17
189
+ diffsynth_engine-0.4.3.dev11.dist-info/RECORD,,