Skip to content

Commit 8cc0f0b

Browse files
Merge branch 'main' into main
2 parents ac0beba + 22b229b commit 8cc0f0b

30 files changed

+1911
-548
lines changed

docs/source/en/_toctree.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
- local: tutorials/autopipeline
1818
title: AutoPipeline
1919
- local: using-diffusers/custom_pipeline_overview
20-
title: Load community pipelines and components
20+
title: Community pipelines and components
2121
- local: using-diffusers/callback
2222
title: Pipeline callbacks
2323
- local: using-diffusers/reusing_seeds

docs/source/en/api/pipelines/overview.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,17 @@ The table below lists all the pipelines currently available in 🤗 Diffusers an
113113
## PushToHubMixin
114114

115115
[[autodoc]] utils.PushToHubMixin
116+
117+
## Callbacks
118+
119+
[[autodoc]] callbacks.PipelineCallback
120+
121+
[[autodoc]] callbacks.SDCFGCutoffCallback
122+
123+
[[autodoc]] callbacks.SDXLCFGCutoffCallback
124+
125+
[[autodoc]] callbacks.SDXLControlnetCFGCutoffCallback
126+
127+
[[autodoc]] callbacks.IPAdapterScaleCutoffCallback
128+
129+
[[autodoc]] callbacks.SD3CFGCutoffCallback

docs/source/en/api/pipelines/qwenimage.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ The `guidance_scale` parameter in the pipeline is there to support future guidan
120120
- all
121121
- __call__
122122

123+
## QwenImaggeControlNetPipeline
124+
- all
125+
- __call__
126+
123127
## QwenImagePipelineOutput
124128

125129
[[autodoc]] pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput

docs/source/en/using-diffusers/callback.md

Lines changed: 30 additions & 213 deletions
Large diffs are not rendered by default.

docs/source/en/using-diffusers/custom_pipeline_overview.md

Lines changed: 79 additions & 292 deletions
Large diffs are not rendered by default.

src/diffusers/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@
218218
"OmniGenTransformer2DModel",
219219
"PixArtTransformer2DModel",
220220
"PriorTransformer",
221+
"QwenImageControlNetModel",
222+
"QwenImageMultiControlNetModel",
221223
"QwenImageTransformer2DModel",
222224
"SanaControlNetModel",
223225
"SanaTransformer2DModel",
@@ -491,6 +493,7 @@
491493
"PixArtAlphaPipeline",
492494
"PixArtSigmaPAGPipeline",
493495
"PixArtSigmaPipeline",
496+
"QwenImageControlNetPipeline",
494497
"QwenImageEditPipeline",
495498
"QwenImageImg2ImgPipeline",
496499
"QwenImageInpaintPipeline",
@@ -885,6 +888,8 @@
885888
OmniGenTransformer2DModel,
886889
PixArtTransformer2DModel,
887890
PriorTransformer,
891+
QwenImageControlNetModel,
892+
QwenImageMultiControlNetModel,
888893
QwenImageTransformer2DModel,
889894
SanaControlNetModel,
890895
SanaTransformer2DModel,
@@ -1128,6 +1133,7 @@
11281133
PixArtAlphaPipeline,
11291134
PixArtSigmaPAGPipeline,
11301135
PixArtSigmaPipeline,
1136+
QwenImageControlNetPipeline,
11311137
QwenImageEditPipeline,
11321138
QwenImageImg2ImgPipeline,
11331139
QwenImageInpaintPipeline,

src/diffusers/guiders/adaptive_projected_guidance.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import torch
1919

2020
from ..configuration_utils import register_to_config
21-
from .guider_utils import BaseGuidance, rescale_noise_cfg
21+
from .guider_utils import BaseGuidance, GuiderOutput, rescale_noise_cfg
2222

2323

2424
if TYPE_CHECKING:
@@ -92,7 +92,7 @@ def prepare_inputs(
9292
data_batches.append(data_batch)
9393
return data_batches
9494

95-
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> torch.Tensor:
95+
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> GuiderOutput:
9696
pred = None
9797

9898
if not self._is_apg_enabled():
@@ -111,7 +111,7 @@ def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] =
111111
if self.guidance_rescale > 0.0:
112112
pred = rescale_noise_cfg(pred, pred_cond, self.guidance_rescale)
113113

114-
return pred, {}
114+
return GuiderOutput(pred=pred, pred_cond=pred_cond, pred_uncond=pred_uncond)
115115

116116
@property
117117
def is_conditional(self) -> bool:

src/diffusers/guiders/auto_guidance.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from ..configuration_utils import register_to_config
2121
from ..hooks import HookRegistry, LayerSkipConfig
2222
from ..hooks.layer_skip import _apply_layer_skip_hook
23-
from .guider_utils import BaseGuidance, rescale_noise_cfg
23+
from .guider_utils import BaseGuidance, GuiderOutput, rescale_noise_cfg
2424

2525

2626
if TYPE_CHECKING:
@@ -145,7 +145,7 @@ def prepare_inputs(
145145
data_batches.append(data_batch)
146146
return data_batches
147147

148-
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> torch.Tensor:
148+
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> GuiderOutput:
149149
pred = None
150150

151151
if not self._is_ag_enabled():
@@ -158,7 +158,7 @@ def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] =
158158
if self.guidance_rescale > 0.0:
159159
pred = rescale_noise_cfg(pred, pred_cond, self.guidance_rescale)
160160

161-
return pred, {}
161+
return GuiderOutput(pred=pred, pred_cond=pred_cond, pred_uncond=pred_uncond)
162162

163163
@property
164164
def is_conditional(self) -> bool:

src/diffusers/guiders/classifier_free_guidance.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import torch
1919

2020
from ..configuration_utils import register_to_config
21-
from .guider_utils import BaseGuidance, rescale_noise_cfg
21+
from .guider_utils import BaseGuidance, GuiderOutput, rescale_noise_cfg
2222

2323

2424
if TYPE_CHECKING:
@@ -96,7 +96,7 @@ def prepare_inputs(
9696
data_batches.append(data_batch)
9797
return data_batches
9898

99-
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> torch.Tensor:
99+
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> GuiderOutput:
100100
pred = None
101101

102102
if not self._is_cfg_enabled():
@@ -109,7 +109,7 @@ def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] =
109109
if self.guidance_rescale > 0.0:
110110
pred = rescale_noise_cfg(pred, pred_cond, self.guidance_rescale)
111111

112-
return pred, {}
112+
return GuiderOutput(pred=pred, pred_cond=pred_cond, pred_uncond=pred_uncond)
113113

114114
@property
115115
def is_conditional(self) -> bool:

src/diffusers/guiders/classifier_free_zero_star_guidance.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import torch
1919

2020
from ..configuration_utils import register_to_config
21-
from .guider_utils import BaseGuidance, rescale_noise_cfg
21+
from .guider_utils import BaseGuidance, GuiderOutput, rescale_noise_cfg
2222

2323

2424
if TYPE_CHECKING:
@@ -89,7 +89,7 @@ def prepare_inputs(
8989
data_batches.append(data_batch)
9090
return data_batches
9191

92-
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> torch.Tensor:
92+
def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] = None) -> GuiderOutput:
9393
pred = None
9494

9595
if self._step < self.zero_init_steps:
@@ -109,7 +109,7 @@ def forward(self, pred_cond: torch.Tensor, pred_uncond: Optional[torch.Tensor] =
109109
if self.guidance_rescale > 0.0:
110110
pred = rescale_noise_cfg(pred, pred_cond, self.guidance_rescale)
111111

112-
return pred, {}
112+
return GuiderOutput(pred=pred, pred_cond=pred_cond, pred_uncond=pred_uncond)
113113

114114
@property
115115
def is_conditional(self) -> bool:

0 commit comments

Comments
 (0)