Alexander McKinney commited on
Commit
5d57acf
1 Parent(s): 3796cef

adds mask inversion checkbox

Browse files
Files changed (1) hide show
  1. app.py +9 -1
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=[