import os import shutil import torch import cv2 import gradio as gr from PIL import Image os.system("pip install einops") os.system("git clone https://github.com/swz30/Restormer.git") shutil.copy("demo_gradio.py","Restormer/demo_gradio.py") os.chdir('Restormer') # Download pretrained models os.system("wget https://github.com/swz30/Restormer/releases/download/v1.0/real_denoising.pth -P Denoising/pretrained_models") os.system("wget https://github.com/swz30/Restormer/releases/download/v1.0/single_image_defocus_deblurring.pth -P Defocus_Deblurring/pretrained_models") os.system("wget https://github.com/swz30/Restormer/releases/download/v1.0/motion_deblurring.pth -P Motion_Deblurring/pretrained_models") os.system("wget https://github.com/swz30/Restormer/releases/download/v1.0/deraining.pth -P Deraining/pretrained_models") # Download sample images os.system("wget https://github.com/swz30/Restormer/releases/download/v1.0/sample_images.zip -P demo") shutil.unpack_archive('demo/sample_images.zip', 'demo/') os.remove('demo/sample_images.zip') examples = [['demo/sample_images/Real_Denoising/degraded/117355.png', 'Denoising'], ['demo/sample_images/Single_Image_Defocus_Deblurring/degraded/engagement.jpg', 'Defocus Deblurring'], ['demo/sample_images/Motion_Deblurring/degraded/GoPro-GOPR0854_11_00-000090-input.jpg','Motion Deblurring'], ['demo/sample_images/Deraining/degraded/Rain100H-77-input.jpg','Deraining']] title = "Restormer" description = """ Gradio demo for Restormer: Efficient Transformer for High-Resolution Image Restoration, CVPR 2022--ORAL. [Paper][Github Code]\n With Restormer, you can perform: (1) Image Denoising, (2) Defocus Deblurring, (3) Motion Deblurring, and (4) Image Deraining. To use it, simply upload your own image, or click one of the examples provided below. """ article = "
Restormer: Efficient Transformer for High-Resolution Image Restoration | Github Repo
" def inference(img,task): os.system('mkdir temp') max_res = 904 width, height = img.size if max(width,height) > max_res: scale = min(width,height)/max(width,height) if width > max_res: width = max_res height = int(scale*max_res) if height > max_res: height = max_res width = int(scale*max_res) img = img.resize((width,height), Image.ANTIALIAS) img.save("temp/image.jpg", "JPEG") if task == 'Motion Deblurring': task = 'Motion_Deblurring' os.system("python demo_gradio.py --task 'Motion_Deblurring' --input_path 'temp/image.jpg' --result_dir './temp/'") if task == 'Defocus Deblurring': task = 'Single_Image_Defocus_Deblurring' os.system("python demo_gradio.py --task 'Single_Image_Defocus_Deblurring' --input_path 'temp/image.jpg' --result_dir './temp/'") if task == 'Denoising': task = 'Real_Denoising' os.system("python demo_gradio.py --task 'Real_Denoising' --input_path 'temp/image.jpg' --result_dir './temp/'") if task == 'Deraining': os.system("python demo_gradio.py --task 'Deraining' --input_path 'temp/image.jpg' --result_dir './temp/'") return f'temp/{task}/image.jpg' gr.Interface( inference, [ gr.inputs.Image(type="pil", label="Input"), gr.inputs.Radio(["Denoising", "Defocus Deblurring", "Motion Deblurring", "Deraining"], default="Denoising", label='task type') ], gr.outputs.Image(type="file", label="Output"), title=title, description=description, article=article, examples=examples, allow_flagging=False, ).launch(debug=True,enable_queue=True)