Spaces:
Runtime error
Runtime error
Alexander McKinney
commited on
Commit
·
5d57acf
1
Parent(s):
3796cef
adds mask inversion checkbox
Browse files
app.py
CHANGED
@@ -96,9 +96,14 @@ def fn_update_mask(
|
|
96 |
masks_enabled: List[int],
|
97 |
max_kernel: int,
|
98 |
min_kernel: int,
|
|
|
99 |
):
|
100 |
masks_enabled = [int(m.split(':')[0]) for m in masks_enabled]
|
101 |
combined_mask = reduce(lambda x, y: x | y, [masks[i] for i in masks_enabled], np.zeros_like(masks[0], dtype=bool))
|
|
|
|
|
|
|
|
|
102 |
combined_mask = clean_mask(combined_mask, max_kernel, min_kernel)
|
103 |
|
104 |
masked_image = np.array(image).copy()
|
@@ -169,6 +174,7 @@ with demo:
|
|
169 |
with gr.Row():
|
170 |
max_slider = gr.Slider(minimum=1, maximum=99, value=23, step=2, label="Mask Overflow")
|
171 |
min_slider = gr.Slider(minimum=1, maximum=99, value=5, step=2, label="Mask Denoising")
|
|
|
172 |
|
173 |
mask_checkboxes = gr.CheckboxGroup(interactive=True, label="Mask Selection")
|
174 |
|
@@ -184,11 +190,12 @@ with demo:
|
|
184 |
|
185 |
inpainted_image = gr.Image(type='pil', label="Inpainted Image")
|
186 |
|
187 |
-
update_mask_inputs = [input_image, mask_storage, mask_checkboxes, max_slider, min_slider]
|
188 |
update_mask_outputs = [mask_image, masked_image]
|
189 |
|
190 |
# Clear checkbox group on input image change
|
191 |
input_image.change(lambda: gr.CheckboxGroup.update(choices=[], value=[]), outputs=mask_checkboxes)
|
|
|
192 |
|
193 |
# Segmentation button callback
|
194 |
bt_masks.click(fn_segmentation, inputs=[input_image, max_slider, min_slider], outputs=[mask_storage, mask_checkboxes, mask_image, masked_image])
|
@@ -198,6 +205,7 @@ with demo:
|
|
198 |
max_slider.change(fn_update_mask, inputs=update_mask_inputs, outputs=update_mask_outputs, show_progress=False)
|
199 |
min_slider.change(fn_update_mask, inputs=update_mask_inputs, outputs=update_mask_outputs, show_progress=False)
|
200 |
mask_checkboxes.change(fn_update_mask, inputs=update_mask_inputs, outputs=update_mask_outputs, show_progress=False)
|
|
|
201 |
|
202 |
# Diffusion button callback
|
203 |
bt_diffusion.click(fn_diffusion, inputs=[
|
|
|
96 |
masks_enabled: List[int],
|
97 |
max_kernel: int,
|
98 |
min_kernel: int,
|
99 |
+
invert_mask: bool
|
100 |
):
|
101 |
masks_enabled = [int(m.split(':')[0]) for m in masks_enabled]
|
102 |
combined_mask = reduce(lambda x, y: x | y, [masks[i] for i in masks_enabled], np.zeros_like(masks[0], dtype=bool))
|
103 |
+
|
104 |
+
if invert_mask:
|
105 |
+
combined_mask = ~combined_mask
|
106 |
+
|
107 |
combined_mask = clean_mask(combined_mask, max_kernel, min_kernel)
|
108 |
|
109 |
masked_image = np.array(image).copy()
|
|
|
174 |
with gr.Row():
|
175 |
max_slider = gr.Slider(minimum=1, maximum=99, value=23, step=2, label="Mask Overflow")
|
176 |
min_slider = gr.Slider(minimum=1, maximum=99, value=5, step=2, label="Mask Denoising")
|
177 |
+
invert_mask = gr.Checkbox(label="Invert Mask")
|
178 |
|
179 |
mask_checkboxes = gr.CheckboxGroup(interactive=True, label="Mask Selection")
|
180 |
|
|
|
190 |
|
191 |
inpainted_image = gr.Image(type='pil', label="Inpainted Image")
|
192 |
|
193 |
+
update_mask_inputs = [input_image, mask_storage, mask_checkboxes, max_slider, min_slider, invert_mask]
|
194 |
update_mask_outputs = [mask_image, masked_image]
|
195 |
|
196 |
# Clear checkbox group on input image change
|
197 |
input_image.change(lambda: gr.CheckboxGroup.update(choices=[], value=[]), outputs=mask_checkboxes)
|
198 |
+
input_image.change(lambda: gr.Checkbox.update(value=False), outputs=invert_mask)
|
199 |
|
200 |
# Segmentation button callback
|
201 |
bt_masks.click(fn_segmentation, inputs=[input_image, max_slider, min_slider], outputs=[mask_storage, mask_checkboxes, mask_image, masked_image])
|
|
|
205 |
max_slider.change(fn_update_mask, inputs=update_mask_inputs, outputs=update_mask_outputs, show_progress=False)
|
206 |
min_slider.change(fn_update_mask, inputs=update_mask_inputs, outputs=update_mask_outputs, show_progress=False)
|
207 |
mask_checkboxes.change(fn_update_mask, inputs=update_mask_inputs, outputs=update_mask_outputs, show_progress=False)
|
208 |
+
invert_mask.change(fn_update_mask, inputs=update_mask_inputs, outputs=update_mask_outputs, show_progress=False)
|
209 |
|
210 |
# Diffusion button callback
|
211 |
bt_diffusion.click(fn_diffusion, inputs=[
|