Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hope to add upscaler: UpscalerData to API #280

Open
xddun opened this issue Nov 5, 2023 · 1 comment
Open

Hope to add upscaler: UpscalerData to API #280

xddun opened this issue Nov 5, 2023 · 1 comment

Comments

@xddun
Copy link

xddun commented Nov 5, 2023

i use api,this greatly increases flexibility:

def roop_api(_: gr.Blocks, app: FastAPI):
    @app.post("/roop/image")
    async def roop_image(
        source_image: str = Body("",title="source face image"),
        target_image: str = Body("",title="target image"),
        face_index: list[int] = Body([0],title="face index"),
        scale: int = Body(1,title="scale"),
        upscale_visibility: float = Body(1,title="upscale visibility"),
        face_restorer: str = Body("None",title="face restorer"),
        restorer_visibility: float = Body(1,title="face restorer"),
        model: str = Body("inswapper_128.onnx",title="model"),
    ):
        s_image = api.decode_base64_to_image(source_image)
        t_image = api.decode_base64_to_image(target_image)
        f_index = set(face_index)
        up_options = UpscaleOptions(scale=scale, upscale_visibility=upscale_visibility,face_restorer=get_face_restorer(face_restorer),restorer_visibility=restorer_visibility)
        use_model = get_full_model(model)
        if use_model is None:
            Exception("Model not found")
        result = swap_face(s_image, t_image, use_model, f_index, up_options)
        return {"image": api.encode_pil_to_base64(result.image())}

But this API cannot provide a choice of upscaler methods. How should I operate to add upscaler methods?

@xddun
Copy link
Author

xddun commented Nov 5, 2023

it work for me :


def roop_api(_: gr.Blocks, app: FastAPI):
    @app.post("/roop/image")
    async def roop_image(
            source_image: str = Body("", title="source face image"),
            target_image: str = Body("", title="target image"),
            face_index: list[int] = Body([0], title="face index"),
            scale: int = Body(1, title="scale"),
            upscale_visibility: float = Body(1, title="upscale visibility"),
            face_restorer: str = Body("None", title="face restorer"),
            restorer_visibility: float = Body(1, title="face restorer"),
            model: str = Body("inswapper_128.onnx", title="model"),
            upscaler_name: str = Body("None", title="upscaler name"),
    ):
        s_image = api.decode_base64_to_image(source_image)
        t_image = api.decode_base64_to_image(target_image)
        f_index = set(face_index)
        upscalerx = None
        if upscaler_name != "None":
            for upscaler in shared.sd_upscalers:
                if upscaler.name == upscaler_name:
                    upscalerx = upscaler
        up_options = UpscaleOptions(scale=scale,
                                    upscaler=upscalerx,
                                    upscale_visibility=upscale_visibility,
                                    face_restorer=get_face_restorer(face_restorer),
                                    restorer_visibility=restorer_visibility)
        use_model = get_full_model(model)
        if use_model is None:
            Exception("Model not found")
        result = swap_face(s_image, t_image, use_model, f_index, up_options)
        return {"image": api.encode_pil_to_base64(result.image())}

I hope to add this logical code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant