@@ -546,11 +546,13 @@ def step(
546
546
# Handle ControlNet(s) and T2I-Adapter(s)
547
547
down_block_additional_residuals = None
548
548
mid_block_additional_residual = None
549
- if control_data is not None and t2i_adapter_data is not None :
549
+ down_intrablock_additional_residuals = None
550
+ # if control_data is not None and t2i_adapter_data is not None:
550
551
# TODO(ryand): This is a limitation of the UNet2DConditionModel API, not a fundamental incompatibility
551
552
# between ControlNets and T2I-Adapters. We will try to fix this upstream in diffusers.
552
- raise Exception ("ControlNet(s) and T2I-Adapter(s) cannot be used simultaneously (yet)." )
553
- elif control_data is not None :
553
+ # raise Exception("ControlNet(s) and T2I-Adapter(s) cannot be used simultaneously (yet).")
554
+ # elif control_data is not None:
555
+ if control_data is not None :
554
556
down_block_additional_residuals , mid_block_additional_residual = self .invokeai_diffuser .do_controlnet_step (
555
557
control_data = control_data ,
556
558
sample = latent_model_input ,
@@ -559,7 +561,8 @@ def step(
559
561
total_step_count = total_step_count ,
560
562
conditioning_data = conditioning_data ,
561
563
)
562
- elif t2i_adapter_data is not None :
564
+ # elif t2i_adapter_data is not None:
565
+ if t2i_adapter_data is not None :
563
566
accum_adapter_state = None
564
567
for single_t2i_adapter_data in t2i_adapter_data :
565
568
# Determine the T2I-Adapter weights for the current denoising step.
@@ -584,7 +587,8 @@ def step(
584
587
for idx , value in enumerate (single_t2i_adapter_data .adapter_state ):
585
588
accum_adapter_state [idx ] += value * t2i_adapter_weight
586
589
587
- down_block_additional_residuals = accum_adapter_state
590
+ # down_block_additional_residuals = accum_adapter_state
591
+ down_intrablock_additional_residuals = accum_adapter_state
588
592
589
593
uc_noise_pred , c_noise_pred = self .invokeai_diffuser .do_unet_step (
590
594
sample = latent_model_input ,
@@ -593,8 +597,9 @@ def step(
593
597
total_step_count = total_step_count ,
594
598
conditioning_data = conditioning_data ,
595
599
# extra:
596
- down_block_additional_residuals = down_block_additional_residuals ,
597
- mid_block_additional_residual = mid_block_additional_residual ,
600
+ down_block_additional_residuals = down_block_additional_residuals , # for ControlNet
601
+ mid_block_additional_residual = mid_block_additional_residual , # for ControlNet
602
+ down_intrablock_additional_residuals = down_intrablock_additional_residuals , # for T2I-Adapter
598
603
)
599
604
600
605
guidance_scale = conditioning_data .guidance_scale
0 commit comments