Object-Remover / app.py
Jagrut Thakare
v2.5
2c4722e
raw
history blame
1.76 kB
import numpy as np
import gradio as gr
from PIL import Image
from io import BytesIO
from copy import deepcopy
from core import process_inpaint
from huggingface_hub import login
import os
import spaces
login(os.getenv("HF_TOKEN"))
@spaces.GPU()
def process_image(image, mask, progress=gr.Progress(track_tqdm=True)):
if np.unique(mask["background"]).size == 1:
print("\nDid not Receive Mask\n")
print("Mask Size : ", image["layers"][0].shape)
print("Unique values: ", np.unique(image["layers"][0]))
print("Type : ", type(image["layers"][0]))
mask = image["layers"][0]
output = process_inpaint(image["background"], mask)
else:
print("\nProcessing Received Mask\n")
print("Mask Size : ", mask["background"].shape)
print("Unique values: ", np.unique(mask["background"]))
print("Type : ", type(mask["background"]))
mask = mask["background"]
output = process_inpaint(image["background"], mask)
img_output = Image.fromarray(output).convert("RGB")
return img_output, mask
with gr.Blocks() as demo:
gr.Markdown("# OBJECT REMOVER")
with gr.Row():
with gr.Column():
image = gr.ImageMask(type="numpy", layers=False, label="Upload Image")
with gr.Accordion(label="Advanced", open=False):
mask = gr.ImageMask(label="Mask", format="png", value=None, sources=["upload"])
button = gr.Button("Remove")
with gr.Column():
output = gr.Image(format="png", label="Output Image")
mask_out = gr.Image(format="png", label="Output Image")
button.click(fn=process_image, inputs=[image, mask], outputs=[output, mask_out])
demo.launch(debug=True,show_error=True)