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.
- diffsynth_engine/conf/models/qwen_image/qwen2_5_vl_config.json +2 -1
- diffsynth_engine/conf/tokenizers/qwen_image/qwen2_vl_image_processor.json +29 -0
- diffsynth_engine/configs/pipeline.py +5 -0
- diffsynth_engine/models/basic/attention.py +3 -3
- diffsynth_engine/models/qwen_image/qwen2_5_vl.py +41 -57
- diffsynth_engine/models/qwen_image/qwen_image_dit.py +45 -28
- diffsynth_engine/pipelines/base.py +1 -1
- diffsynth_engine/pipelines/qwen_image.py +125 -13
- diffsynth_engine/pipelines/sd_image.py +3 -3
- diffsynth_engine/pipelines/sdxl_image.py +10 -6
- diffsynth_engine/tokenizers/__init__.py +4 -0
- diffsynth_engine/tokenizers/qwen2_vl_image_processor.py +157 -0
- diffsynth_engine/tokenizers/qwen2_vl_processor.py +100 -0
- diffsynth_engine/utils/constants.py +6 -0
- diffsynth_engine/utils/image.py +213 -0
- diffsynth_engine/utils/offload.py +6 -5
- {diffsynth_engine-0.4.3.dev9.dist-info → diffsynth_engine-0.4.3.dev11.dist-info}/METADATA +2 -2
- {diffsynth_engine-0.4.3.dev9.dist-info → diffsynth_engine-0.4.3.dev11.dist-info}/RECORD +21 -18
- {diffsynth_engine-0.4.3.dev9.dist-info → diffsynth_engine-0.4.3.dev11.dist-info}/WHEEL +0 -0
- {diffsynth_engine-0.4.3.dev9.dist-info → diffsynth_engine-0.4.3.dev11.dist-info}/licenses/LICENSE +0 -0
- {diffsynth_engine-0.4.3.dev9.dist-info → diffsynth_engine-0.4.3.dev11.dist-info}/top_level.txt +0 -0
diffsynth_engine/utils/image.py
CHANGED
|
@@ -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()
|
|
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()
|
|
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()
|
|
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()
|
|
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.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
110
|
-
diffsynth_engine/models/qwen_image/qwen_image_dit.py,sha256=
|
|
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=
|
|
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=
|
|
143
|
-
diffsynth_engine/pipelines/sd_image.py,sha256=
|
|
144
|
-
diffsynth_engine/pipelines/sdxl_image.py,sha256
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
183
|
-
diffsynth_engine-0.4.3.
|
|
184
|
-
diffsynth_engine-0.4.3.
|
|
185
|
-
diffsynth_engine-0.4.3.
|
|
186
|
-
diffsynth_engine-0.4.3.
|
|
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,,
|
|
File without changes
|
{diffsynth_engine-0.4.3.dev9.dist-info → diffsynth_engine-0.4.3.dev11.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{diffsynth_engine-0.4.3.dev9.dist-info → diffsynth_engine-0.4.3.dev11.dist-info}/top_level.txt
RENAMED
|
File without changes
|