Spaces:
Runtime error
Runtime error
import gradio as gr | |
import inpaint.infer_model as inpaint | |
import sod.infer_model as sod | |
import numpy as np | |
import torch | |
import glob | |
import cv2 | |
# import os | |
# cmd = 'sh download.sh' | |
# os.system(cmd) | |
device = torch.device("cpu") | |
print(device) | |
inpaint_model = inpaint.IVModel(device=device) | |
sod_model = sod.IVModel(device=device) | |
max_size=512 | |
scale_factor = 8 | |
count = 0 | |
def sod_inpaint(img): | |
global count | |
h,w = img.shape[:2] | |
if max(h, w) > max_size: | |
if h < w: | |
h, w = int(max_size * h / w), max_size | |
else: | |
h, w = max_size, int(max_size * w / h) | |
h = h // scale_factor * scale_factor | |
w = w // scale_factor * scale_factor | |
img = cv2.resize(img, (w,h)) | |
img = img[:,:,::-1] | |
sod_res = sod_model.forward(img,None) | |
sod_res = np.uint8(sod_res) | |
h,w = sod_res.shape[:2] | |
so = np.uint8(sod_res[:,:w//2,:] * (sod_res[:,w//2:,:]>0).astype(np.float32)) | |
inpaint_res = inpaint_model.forward(sod_res,None) | |
inpaint_res = np.uint8(inpaint_res) | |
count +=1 | |
print(count, ' images have been processed') | |
return so[:,:,::-1], inpaint_res[:,:,::-1] | |
examples = glob.glob('examples/*.*') | |
inputs = gr.inputs.Image(shape=(512,512), image_mode="RGB", invert_colors=False, source="upload", tool="editor", type="numpy", label=None, optional=False) | |
iface = gr.Interface(fn=sod_inpaint, inputs=inputs, outputs=["image", "image"], examples=examples, title='Salient Object Detection + Inpaint', description='Upload an image and you will see the fg and inpainted bg', theme='huggingface') | |
iface.launch() | |