Spaces:
Running
Running
import gradio as gr | |
import os | |
import cv2 | |
from rembg import new_session, remove | |
from PIL import Image | |
from io import BytesIO | |
def inference(file, mask, model, alpha_influence, segmentation_strength, smoothing): | |
im = cv2.imread(file, cv2.IMREAD_COLOR) | |
cv2.imwrite(os.path.join("input.png"), im) | |
input_path = 'input.png' | |
output_path = 'output.png' | |
with open(input_path, 'rb') as i: | |
with open(output_path, 'wb') as o: | |
input = i.read() | |
output = remove( | |
input, | |
only_mask=(True if mask == "Mask only" else False), | |
alpha_matting=True, # Habilitar el modo alpha matting | |
alpha_matting_foreground_threshold=alpha_influence, # Control de influencia del canal alfa | |
alpha_matting_background_threshold=1 - alpha_influence, # Control del canal alfa para el fondo | |
alpha_matting_erode_size=int(segmentation_strength * 10), # Control de fuerza de segmentaci贸n | |
alpha_matting_smoothing=smoothing, # Control de suavizado de bordes de la segmentaci贸n | |
session=new_session(model) | |
) | |
o.write(output) | |
return Image.open(BytesIO(output)) | |
title = "Background Using RemBG" | |
description = "<a href='https://www.buymeacoffee.com/diego2554' target='_blank'>Help me improve my computer equipment, I need RTX 4070 :)</a>Gradio demo for RemBG. erase the background of any image, To use it, simply upload your image and adjust the sliders and choose a eraser plugin from the U2net library. / <a href='https://huggingface.co/spaces/KenjieDec/RemBG' target='_blank'>Original article made by KenjieDec</a> / <a href='https://github.com/danielgatis/rembg' target='_blank'>Github Repo</a></p>" | |
article = "<p style='text-align: center;'><a href='https://github.com/danielgatis/rembg' target='_blank'>Github Repo</a></p>" | |
article = "<p style='text-align: center;'><a href='https://huggingface.co/spaces/KenjieDec/RemBG' target='_blank'>Model on Hugging Face</a></p>" | |
gr.Interface( | |
inference, | |
[ | |
gr.inputs.Image(type="filepath", label="Input"), | |
gr.inputs.Radio( | |
[ | |
"Default", | |
"Mask only" | |
], | |
type="value", | |
default="Default", | |
label="Choices" | |
), | |
gr.inputs.Dropdown([ | |
"u2net", | |
"u2netp", | |
"u2net_human_seg", | |
"u2net_cloth_seg", | |
"silueta", | |
"isnet-general-use", | |
"isnet-anime", | |
"sam", | |
], | |
type="value", | |
default="isnet-general-use", | |
label="Models" | |
), | |
gr.inputs.Slider(minimum=0.5, maximum=1.5, default=1, label="Alpha Influence"), | |
gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.5, label="Segmentation Strength"), | |
gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25, label="Smoothing"), | |
], | |
gr.outputs.Image(type="PIL", label="Output"), | |
#description = "<a href='https://huggingface.co/spaces/KenjieDec/RemBG' target='_blank'>Original article made by KenjieDec</a><a href='https://github.com/danielgatis/rembg' target='_blank'>Github Repo</a></p>" | |
title=title, | |
description=description, | |
article=article, | |
examples=[["lion.png", "Default", "u2net", 1, 0.5, 0.25], ["girl.jpg", "Default", "u2net", 1, 0.5, 0.25], ["anime-girl.jpg", "Default", "isnet-anime", 1, 0.5, 0.25]], | |
enable_queue=True | |
).launch() | |