Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from PIL import Image | |
| import cv2 | |
| import numpy as np | |
| demo_inf_ofa = gr.Interface.load(name="spaces/ICML2022/OFA") #"spaces/freddyaboulton/blocks_inputs") | |
| #demo_inf_lama = gr.Interface.load(name="spaces/CVPR/lama-example") #gr.Blocks.load | |
| #img = gr.Interface.load("spaces/multimodalart/latentdiffusion")(ent[0],'50','256','256','1',10)[0] | |
| #assert demo_inf("Foo", "bar") == "Foo bar" | |
| def get_ofa(img, txt, ques): | |
| print("********Inside OFA ********") | |
| Img = cv2.imread(img) #no use | |
| #txt = "Visual Grounding" | |
| print(f"text is :{txt}") #= cv2.imread(img2) #Image.open(img2) | |
| img_pil = Image.fromarray(Img) #no use | |
| img_ofa_out, dummy_txt = gr.Interface.load(name="spaces/ICML2022/OFA")(img, txt, ques) | |
| img_ofa_out = cv2.imread(img_ofa_out) | |
| img = Image.open(img) #cv2.imread(img) | |
| print("Calling Workflow function!") | |
| img_final = workflow(img, img_ofa_out) | |
| return img_final #img_ofa_out | |
| def get_lama(img1, img2): | |
| print("********Inside LAMA ********") | |
| #Img1 = cv2.imread(img1) #Image.open(img1) | |
| #Img2 = cv2.imread(img2) #Image.open(img2) | |
| #img1_pil = Image.fromarray(Img1) | |
| #img2_pil = Image.fromarray(Img2) | |
| img, mask = gr.Interface.load(name="spaces/CVPR/lama-example")(img1, img2, "automatic (U2net)") | |
| #TypeError: expected str, bytes or os.PathLike object, not Image | |
| #TypeError: expected str, bytes or os.PathLike object, not JpegImageFile | |
| #TypeError: expected str, bytes or os.PathLike object, not Image | |
| #img = cv2.imread(img) | |
| print("Going back to Workflow") | |
| return img | |
| def workflow(img, img_ofa_out): | |
| print("********Inside Workflow ********") | |
| #Image with visual grounding | |
| im_vg = img_ofa_out #cv2.imread(image_path_vg) | |
| green_color = (0,255,0) | |
| #Getting cordinates for bounding box | |
| Y, X = np.where(np.all(im_vg==green_color,axis=2)) | |
| zipped = np.column_stack((X,Y)) | |
| img_crop_cords = tuple(list(zipped[0]) + list(zipped[-1])) | |
| print(f">>>img_crop_cordinates are : {img_crop_cords}") | |
| width = img_crop_cords[2] - img_crop_cords[0] #x2-x1 | |
| height = img_crop_cords[3] - img_crop_cords[1] #y2-y1 | |
| print(f">>>Width is:{width}, Height is:{height}") | |
| #creating mask | |
| print(">>>creating mask") | |
| blank_image_mask = 255 * np.ones(shape=(height, width), dtype=np.uint8) | |
| #cv2_imshow(blank_image_mask) | |
| cv2.imwrite("image_mask.png", blank_image_mask) | |
| print(">>>mask created") | |
| #Crop using these derived cordinates | |
| print(">>>Cropping original image based on cordinates for preparing input to LAMA") | |
| #img = Image.open(image_path) | |
| imgcrop = img.crop(img_crop_cords) | |
| imgcrop.save("image_crop.jpg") | |
| #imgcrop | |
| #Call LAMA Space for inference | |
| print(">>>Calling LAMA with cropped image ") | |
| img_lama = get_lama("image_crop.jpg", "image_mask.png") #(imgcrop, blank_image_mask) | |
| #Resize the LAMA image to have cols (width) and rows (height) as original cropped image | |
| print(">>>Resizing LAMA image to meet original crop size") | |
| img_lama = cv2.imread(img_lama) | |
| img_lama_resize = cv2.resize(img_lama, (width, height)) #- src is not a numpy array, neither a scalar | |
| print(">>>LAMA image resized") | |
| #Paste resized LAMA image on top of original image at correct cordinates | |
| print(">>>Pasting LAMA image on original image at desired cordinates") | |
| #img = cv2.imread(img) #getting TypeError: Can't convert object to 'str' for 'filename' | |
| #converting to cv2 image | |
| #img = np.array(img) | |
| img.save('temp.jpg') | |
| img = cv2.imread("temp.jpg") | |
| x, y = zipped[0][0], zipped[0][1] | |
| img[y: y + height, x: x + width] = img_lama_resize | |
| #cv2_imshow(im_orig) | |
| print(">>>LAMA image Pasted on original image") | |
| cv2.imwrite("image_ofa_lama_out.png", img) | |
| print(">>>Workflow function complete") | |
| return img | |
| demo = gr.Blocks() | |
| with demo: | |
| gr.Markdown("<h1><center>Testing</center></h1>") | |
| gr.Markdown( | |
| """Testing Inference for Gradio. Work in Progress.""" | |
| ) | |
| with gr.Row(): | |
| in_image = gr.Image(type='filepath') #(visible=False) type='numpy' | |
| in_image_mask = gr.Image(type='filepath') #, source="canvas") #, visible=False) #type='numpy', | |
| out_image = gr.outputs.Image(type='file') #(type='file') | |
| #in_text1 = gr.Textbox() | |
| #in_text2 = gr.Textbox() | |
| #out_text = gr.Textbox() | |
| b1 = gr.Button("Image Button") | |
| #b2 = gr.Button("Text Button") | |
| b1.click(get_lama,inputs=[in_image, in_image_mask], outputs=out_image) | |
| #b2.click(txt_fun, inputs=[in_text1, in_text2], outputs=out_text) | |
| #examples=examples | |
| with gr.Row(): | |
| in_image_ofa = gr.Image(type='filepath') #(visible=False) type='numpy' | |
| in_txt_ofa = gr.Textbox(value="Visual Grounding", visible=False) | |
| in_txt_ofa_ques = gr.Textbox(label="Who do you want to remove from your picture?") | |
| out_image_ofa = gr.outputs.Image(type='file') #(type='file') | |
| #in_text1 = gr.Textbox() | |
| #in_text2 = gr.Textbox() | |
| #out_text = gr.Textbox() | |
| b2 = gr.Button("Image Button OFA") | |
| #b2 = gr.Button("Text Button") | |
| b2.click(get_ofa,inputs=[in_image_ofa, in_txt_ofa, in_txt_ofa_ques], outputs=out_image_ofa) | |
| demo.launch(enable_queue=True, debug=True) |