import torch import gradio as gr import spaces from inference_gradio import inference_one_image, model_init MODEL_PATH = "./checkpoints/docres.pkl" possible_tasks = [ "dewarping", "deshadowing", "appearance", "deblurring", "binarization", ] @spaces.GPU(duration=90) def run_tasks(image, tasks): device = "cuda" if torch.cuda.is_available() else "cpu" # load model model = model_init(MODEL_PATH, device) # run inference bgr_image = image[..., ::-1].copy() bgr_restored_image = inference_one_image(model, bgr_image, tasks, device) if bgr_restored_image.ndim == 3: rgb_image = bgr_restored_image[..., ::-1] else: rgb_image = bgr_restored_image return rgb_image with gr.Blocks() as demo: with gr.Row(): input_image = gr.Image(type="numpy") output_image = gr.Image(type="numpy") task = gr.CheckboxGroup(choices=possible_tasks, label="Choose tasks:") button = gr.Button() button.click( run_tasks, inputs=[input_image, task], outputs=[output_image] ) gr.Examples( examples=[ ["input/for_debluring.png", ["deblurring"]], ], inputs=[input_image, task], outputs=[output_image], fn=run_tasks, cache_examples="lazy", ) demo.launch()