Skip to content

Commit acee95b

Browse files
committed
Fix numerical issues with inpaint masks in certain cases
* masks can have values slightly below 1 after certain operations like scaling, this could break noise masks when they are thresholded/rounded at 1.0
1 parent 4d0eb5c commit acee95b

3 files changed

Lines changed: 8 additions & 3 deletions

File tree

ai_diffusion/comfy_workflow.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,6 +1114,9 @@ def expand_mask(self, mask: Output, grow: int, blur: int, kernel="gaussian"):
11141114
def shrink_mask(self, mask: Output, shrink: int, blur: int):
11151115
return self.add("INPAINT_ShrinkMask", 1, mask=mask, shrink=shrink, blur=blur)
11161116

1117+
def stabilize_mask(self, mask: Output, epsilon=0.01):
1118+
return self.add("INPAINT_StabilizeMask", 1, mask=mask, epsilon=epsilon)
1119+
11171120
def apply_mask(self, image: Output, mask: Output):
11181121
return self.add("ETN_ApplyMaskToImage", 1, image=image, mask=mask)
11191122

ai_diffusion/resources.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ class CustomNode(NamedTuple):
4848
"Inpaint Nodes",
4949
"comfyui-inpaint-nodes",
5050
"https://github.com/Acly/comfyui-inpaint-nodes",
51-
"4ebbdc840db881c50a38965aa7955b76cec2a4c5",
52-
["INPAINT_LoadFooocusInpaint", "INPAINT_ShrinkMask", "INPAINT_ExpandMask"],
51+
"ab62c98d408186324eeb7baff32a31dd7961ea64",
52+
["INPAINT_LoadFooocusInpaint", "INPAINT_ShrinkMask", "INPAINT_StabilizeMask"],
5353
),
5454
]
5555

ai_diffusion/workflow.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,9 @@ def scale_to_initial(
759759
extent: ScaledExtent, w: ComfyWorkflow, image: Output, models: ModelDict, is_mask=False
760760
):
761761
if is_mask and extent.target != extent.initial:
762-
return w.scale_mask(image, extent.initial)
762+
result = w.scale_mask(image, extent.initial)
763+
result = w.stabilize_mask(result)
764+
return result
763765
elif not is_mask:
764766
return scale(extent.input, extent.initial, extent.initial_scaling, w, image, models)
765767
else:

0 commit comments

Comments
 (0)