Open zhuchenye opened 1 year ago
Me too. As a workaround I installed rembg standalone. But why load and wait every time when it is already loaded on the sd server anyway?
I found there is no API route for rembg. So if I used extra_single_image interface, the rembg params will be none.
It used to work up until a couple weeks ago. I think an update on the webui side broke it. I still have it working on our older setups but any new setups are broke. when working, you have to put postprocessingrembg before each parameter (see pic)
That setup 100% was working up until about a week or two ago, so if anyone wants to play with that to see what you can find, please post back here if you solve it.
One alternative approach is to create a new file called api.py
in the scripts folder of the plugin.
# api.py
from fastapi import FastAPI, Body
from modules.api.models import *
from modules.api import api
import gradio as gr
import rembg
def rembg_api(_: gr.Blocks, app: FastAPI):
@app.post("/rembg")
async def rembg_remove(
input_image: str = Body("", title='rembg input image'),
model: str = Body("u2net", title='rembg model'),
return_mask: bool = Body(False, title='return mask'),
alpha_matting: bool = Body(False, title='alpha matting'),
alpha_matting_foreground_threshold: int = Body(240, title='alpha matting foreground threshold'),
alpha_matting_background_threshold: int = Body(10, title='alpha matting background threshold'),
alpha_matting_erode_size: int = Body(10, title='alpha matting erode size')
):
if not model or model == "None":
return
input_image = api.decode_base64_to_image(input_image)
image = rembg.remove(
input_image,
session=rembg.new_session(model),
only_mask=return_mask,
alpha_matting=alpha_matting,
alpha_matting_foreground_threshold=alpha_matting_foreground_threshold,
alpha_matting_background_threshold=alpha_matting_background_threshold,
alpha_matting_erode_size=alpha_matting_erode_size,
)
return {"image": api.encode_pil_to_base64(image).decode("utf-8")}
try:
import modules.script_callbacks as script_callbacks
script_callbacks.on_app_started(rembg_api)
except:
pass
I want to use the API on webui server with the payload as : payload = { "image": encode_pil_to_base64(image), "model": "u2net", "return_mask": False, "alpha_matting": False, "alpha_matting_foreground_threshold": 240, "alpha_matting_background_threshold": 10, "alpha_matting_erode_size": 10, } but it dos not work.
Is there any docs for remby API?