Spaces:
Sleeping
Sleeping
File size: 3,793 Bytes
f78da30 7397a8f f78da30 dad1674 f78da30 6cbfd74 f78da30 6cbfd74 f78da30 6cbfd74 f78da30 6cbfd74 f78da30 cdef45b f78da30 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
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")
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. <a href='https://arxiv.org/abs/2111.09881'>[Paper]</a><a href='https://github.com/swz30/Restormer'>[Github Code]</a>\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 = "<p style='text-align: center'><a href='https://arxiv.org/abs/2111.09881'>Restormer: Efficient Transformer for High-Resolution Image Restoration </a> | <a href='https://github.com/swz30/Restormer'>Github Repo</a></p>"
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)
|