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=[
|