Skip to content

Commit a74926c

Browse files
committed
Support NoobAI inpaint control-net
1 parent f4a4412 commit a74926c

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

ai_diffusion/comfy_workflow.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -724,8 +724,10 @@ def apply_ip_adapter_face(
724724
def apply_self_attention_guidance(self, model: Output):
725725
return self.add("SelfAttentionGuidance", 1, model=model, scale=0.5, blur_sigma=2.0)
726726

727-
def inpaint_preprocessor(self, image: Output, mask: Output):
728-
return self.add("InpaintPreprocessor", 1, image=image, mask=mask)
727+
def inpaint_preprocessor(self, image: Output, mask: Output, fill_black=False):
728+
return self.add(
729+
"InpaintPreprocessor", 1, image=image, mask=mask, black_pixel_for_xinsir_cn=fill_black
730+
)
729731

730732
def apply_fooocus_inpaint(self, model: Output, patch: Output, latent: Output):
731733
return self.add("INPAINT_ApplyFooocusInpaint", 1, model=model, patch=patch, latent=latent)

ai_diffusion/resources.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ def is_required(kind: ResourceKind, arch: Arch, identifier: ControlMode | Upscal
442442
search_paths: dict[str, list[str]] = {
443443
resource_id(ResourceKind.controlnet, Arch.sd15, ControlMode.inpaint): ["control_v11p_sd15_inpaint"],
444444
resource_id(ResourceKind.controlnet, Arch.flux, ControlMode.inpaint): ["flux.1-dev-controlnet-inpaint"],
445+
resource_id(ResourceKind.controlnet, Arch.illu, ControlMode.inpaint): ["noobaiinpainting"],
445446
resource_id(ResourceKind.controlnet, Arch.sdxl, ControlMode.universal): ["union-sdxl", "xinsirunion"],
446447
resource_id(ResourceKind.controlnet, Arch.sd15, ControlMode.scribble): ["control_v11p_sd15_scribble", "control_lora_rank128_v11p_sd15_scribble"],
447448
resource_id(ResourceKind.controlnet, Arch.sdxl, ControlMode.scribble): ["xinsirscribble", "scribble-sdxl", "mistoline_fp16", "mistoline_rank", "control-lora-sketch-rank", "sai_xl_sketch_"],

ai_diffusion/workflow.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,12 +461,13 @@ def apply_control(
461461
):
462462
models = models.control
463463
control_lora: ControlMode | None = None
464+
is_illu = models.arch in [Arch.illu, Arch.illu_v]
464465

465466
for control in (c for c in control_layers if c.mode.is_control_net):
466467
image = control.image.load(w, shape)
467-
if control.mode is ControlMode.inpaint and models.arch is Arch.sd15:
468+
if control.mode is ControlMode.inpaint and (models.arch is Arch.sd15 or is_illu):
468469
assert control.mask is not None, "Inpaint control requires a mask"
469-
image = w.inpaint_preprocessor(image, control.mask.load(w))
470+
image = w.inpaint_preprocessor(image, control.mask.load(w), fill_black=is_illu)
470471
if control.mode.is_lines: # ControlNet expects white lines on black background
471472
image = w.invert_image(image)
472473

@@ -772,7 +773,7 @@ def detect_inpaint(
772773
and prompt != ""
773774
and not any(c.mode.is_structural for c in control)
774775
)
775-
elif sd_ver is Arch.sdxl:
776+
elif sd_ver.is_sdxl_like:
776777
result.use_inpaint_model = strength > 0.8
777778
elif sd_ver is Arch.flux:
778779
result.use_inpaint_model = strength == 1.0

0 commit comments

Comments
 (0)