Spaces:
Runtime error
Runtime error
liuyizhang
commited on
Commit
Β·
634639d
1
Parent(s):
ed4b6a1
update app.py: add outpainting, remove relate anything
Browse files
app.py
CHANGED
|
@@ -53,7 +53,7 @@ plt = matplotlib.pyplot
|
|
| 53 |
groundingdino_enable = True
|
| 54 |
sam_enable = True
|
| 55 |
inpainting_enable = True
|
| 56 |
-
ram_enable =
|
| 57 |
|
| 58 |
lama_cleaner_enable = True
|
| 59 |
|
|
@@ -620,7 +620,7 @@ def run_anything_task(input_image, text_prompt, task_type, inpaint_prompt, box_t
|
|
| 620 |
return output_images, gr.Gallery.update(label='relate images'), time_cost_str, gr.Textbox.update(visible=(time_cost_str !='')), None, None, None
|
| 621 |
|
| 622 |
text_prompt = text_prompt.strip()
|
| 623 |
-
if not ((task_type
|
| 624 |
if text_prompt == '':
|
| 625 |
return [], gr.Gallery.update(label='Detection prompt is not found!ππππ'), time_cost_str, gr.Textbox.update(visible=(time_cost_str !='')), None, None, None
|
| 626 |
|
|
@@ -652,7 +652,7 @@ def run_anything_task(input_image, text_prompt, task_type, inpaint_prompt, box_t
|
|
| 652 |
H, W = size[1], size[0]
|
| 653 |
|
| 654 |
# run grounding dino model
|
| 655 |
-
if (task_type
|
| 656 |
pass
|
| 657 |
else:
|
| 658 |
groundingdino_device = 'cpu'
|
|
@@ -682,7 +682,7 @@ def run_anything_task(input_image, text_prompt, task_type, inpaint_prompt, box_t
|
|
| 682 |
run_task_time, time_cost_str = get_time_cost(run_task_time, time_cost_str)
|
| 683 |
|
| 684 |
logger.info(f'run_anything_task_[{file_temp}]_{task_type}_2_')
|
| 685 |
-
if task_type == 'segment' or ((task_type
|
| 686 |
image = np.array(input_img)
|
| 687 |
if sam_predictor:
|
| 688 |
sam_predictor.set_image(image)
|
|
@@ -734,7 +734,7 @@ def run_anything_task(input_image, text_prompt, task_type, inpaint_prompt, box_t
|
|
| 734 |
if task_type == 'detection' or task_type == 'segment':
|
| 735 |
logger.info(f'run_anything_task_[{file_temp}]_{task_type}_9_')
|
| 736 |
return output_images, gr.Gallery.update(label='result images'), time_cost_str, gr.Textbox.update(visible=(time_cost_str !='')), None, None, None
|
| 737 |
-
elif task_type
|
| 738 |
if inpaint_prompt.strip() == '' and mask_source_radio == mask_source_segment:
|
| 739 |
task_type = 'remove'
|
| 740 |
|
|
@@ -752,10 +752,17 @@ def run_anything_task(input_image, text_prompt, task_type, inpaint_prompt, box_t
|
|
| 752 |
output_images.append(mask_pil.convert("RGB"))
|
| 753 |
run_task_time, time_cost_str = get_time_cost(run_task_time, time_cost_str)
|
| 754 |
|
| 755 |
-
if task_type
|
| 756 |
# inpainting pipeline
|
| 757 |
image_source_for_inpaint = image_pil.resize((512, 512))
|
| 758 |
image_mask_for_inpaint = mask_pil.resize((512, 512))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 759 |
image_inpainting = sd_model(prompt=inpaint_prompt, image=image_source_for_inpaint, mask_image=image_mask_for_inpaint).images[0]
|
| 760 |
else:
|
| 761 |
# remove from mask
|
|
@@ -828,9 +835,9 @@ def change_radio_display(task_type, mask_source_radio):
|
|
| 828 |
kosmos_output_visible = True
|
| 829 |
kosmos_text_output_visible = True
|
| 830 |
|
| 831 |
-
if task_type
|
| 832 |
inpaint_prompt_visible = True
|
| 833 |
-
if task_type
|
| 834 |
mask_source_radio_visible = True
|
| 835 |
if mask_source_radio == mask_source_draw:
|
| 836 |
text_prompt_visible = False
|
|
@@ -872,6 +879,7 @@ def main_gradio(args):
|
|
| 872 |
task_types.append("segment")
|
| 873 |
if inpainting_enable:
|
| 874 |
task_types.append("inpainting")
|
|
|
|
| 875 |
if lama_cleaner_enable:
|
| 876 |
task_types.append("remove")
|
| 877 |
if ram_enable:
|
|
@@ -887,7 +895,7 @@ def main_gradio(args):
|
|
| 887 |
value=mask_source_segment, label="Mask from",
|
| 888 |
visible=False)
|
| 889 |
text_prompt = gr.Textbox(label="Detection Prompt[To detect multiple objects, seperating each with '.', like this: cat . dog . chair ]", placeholder="Cannot be empty")
|
| 890 |
-
inpaint_prompt = gr.Textbox(label="Inpaint Prompt (if this is empty, then remove)", visible=False)
|
| 891 |
num_relation = gr.Slider(label="How many relations do you want to see", minimum=1, maximum=20, value=5, step=1, visible=False)
|
| 892 |
|
| 893 |
kosmos_input = gr.Radio(["Brief", "Detailed"], label="Kosmos Description Type", value="Brief", visible=False)
|
|
|
|
| 53 |
groundingdino_enable = True
|
| 54 |
sam_enable = True
|
| 55 |
inpainting_enable = True
|
| 56 |
+
ram_enable = False
|
| 57 |
|
| 58 |
lama_cleaner_enable = True
|
| 59 |
|
|
|
|
| 620 |
return output_images, gr.Gallery.update(label='relate images'), time_cost_str, gr.Textbox.update(visible=(time_cost_str !='')), None, None, None
|
| 621 |
|
| 622 |
text_prompt = text_prompt.strip()
|
| 623 |
+
if not ((task_type in ['inpainting', 'outpainting'] or task_type == 'remove') and mask_source_radio == mask_source_draw):
|
| 624 |
if text_prompt == '':
|
| 625 |
return [], gr.Gallery.update(label='Detection prompt is not found!ππππ'), time_cost_str, gr.Textbox.update(visible=(time_cost_str !='')), None, None, None
|
| 626 |
|
|
|
|
| 652 |
H, W = size[1], size[0]
|
| 653 |
|
| 654 |
# run grounding dino model
|
| 655 |
+
if (task_type in ['inpainting', 'outpainting'] or task_type == 'remove') and mask_source_radio == mask_source_draw:
|
| 656 |
pass
|
| 657 |
else:
|
| 658 |
groundingdino_device = 'cpu'
|
|
|
|
| 682 |
run_task_time, time_cost_str = get_time_cost(run_task_time, time_cost_str)
|
| 683 |
|
| 684 |
logger.info(f'run_anything_task_[{file_temp}]_{task_type}_2_')
|
| 685 |
+
if task_type == 'segment' or ((task_type in ['inpainting', 'outpainting'] or task_type == 'remove') and mask_source_radio == mask_source_segment):
|
| 686 |
image = np.array(input_img)
|
| 687 |
if sam_predictor:
|
| 688 |
sam_predictor.set_image(image)
|
|
|
|
| 734 |
if task_type == 'detection' or task_type == 'segment':
|
| 735 |
logger.info(f'run_anything_task_[{file_temp}]_{task_type}_9_')
|
| 736 |
return output_images, gr.Gallery.update(label='result images'), time_cost_str, gr.Textbox.update(visible=(time_cost_str !='')), None, None, None
|
| 737 |
+
elif task_type in ['inpainting', 'outpainting'] or task_type == 'remove':
|
| 738 |
if inpaint_prompt.strip() == '' and mask_source_radio == mask_source_segment:
|
| 739 |
task_type = 'remove'
|
| 740 |
|
|
|
|
| 752 |
output_images.append(mask_pil.convert("RGB"))
|
| 753 |
run_task_time, time_cost_str = get_time_cost(run_task_time, time_cost_str)
|
| 754 |
|
| 755 |
+
if task_type in ['inpainting', 'outpainting']:
|
| 756 |
# inpainting pipeline
|
| 757 |
image_source_for_inpaint = image_pil.resize((512, 512))
|
| 758 |
image_mask_for_inpaint = mask_pil.resize((512, 512))
|
| 759 |
+
if task_type in ['outpainting']:
|
| 760 |
+
# reverse mask
|
| 761 |
+
img_arr = np.array(image_mask_for_inpaint)
|
| 762 |
+
img_arr = 1 - img_arr
|
| 763 |
+
image_mask_for_inpaint = Image.fromarray(255*img_arr.astype('uint8'))
|
| 764 |
+
output_images.append(image_mask_for_inpaint.convert("RGB"))
|
| 765 |
+
run_task_time, time_cost_str = get_time_cost(run_task_time, time_cost_str)
|
| 766 |
image_inpainting = sd_model(prompt=inpaint_prompt, image=image_source_for_inpaint, mask_image=image_mask_for_inpaint).images[0]
|
| 767 |
else:
|
| 768 |
# remove from mask
|
|
|
|
| 835 |
kosmos_output_visible = True
|
| 836 |
kosmos_text_output_visible = True
|
| 837 |
|
| 838 |
+
if task_type in ['inpainting', 'outpainting']:
|
| 839 |
inpaint_prompt_visible = True
|
| 840 |
+
if task_type in ['inpainting', 'outpainting'] or task_type == "remove":
|
| 841 |
mask_source_radio_visible = True
|
| 842 |
if mask_source_radio == mask_source_draw:
|
| 843 |
text_prompt_visible = False
|
|
|
|
| 879 |
task_types.append("segment")
|
| 880 |
if inpainting_enable:
|
| 881 |
task_types.append("inpainting")
|
| 882 |
+
task_types.append("outpainting")
|
| 883 |
if lama_cleaner_enable:
|
| 884 |
task_types.append("remove")
|
| 885 |
if ram_enable:
|
|
|
|
| 895 |
value=mask_source_segment, label="Mask from",
|
| 896 |
visible=False)
|
| 897 |
text_prompt = gr.Textbox(label="Detection Prompt[To detect multiple objects, seperating each with '.', like this: cat . dog . chair ]", placeholder="Cannot be empty")
|
| 898 |
+
inpaint_prompt = gr.Textbox(label="Inpaint/Outpaint Prompt (if this is empty, then remove)", visible=False)
|
| 899 |
num_relation = gr.Slider(label="How many relations do you want to see", minimum=1, maximum=20, value=5, step=1, visible=False)
|
| 900 |
|
| 901 |
kosmos_input = gr.Radio(["Brief", "Detailed"], label="Kosmos Description Type", value="Brief", visible=False)
|