RefVSR / app.py
codeslake's picture
Update app.py
1148912
import os
import sys
import gradio as gr
from PIL import Image
## environment settup
os.system("git clone https://github.com/codeslake/RefVSR.git")
os.chdir("RefVSR")
os.system("./install/install_cudnn113.sh")
os.mkdir("ckpt")
os.system("wget https://huggingface.co/spaces/codeslake/RefVSR/resolve/main/RefVSR_small_MFID_8K.pytorch -O ckpt/RefVSR_small_MFID_8K.pytorch")
os.system("wget https://huggingface.co/spaces/codeslake/RefVSR/resolve/main/SPyNet.pytorch -O ckpt/SPyNet.pytorch")
sys.path.append("RefVSR")
## RefVSR
LR_path = "test/RealMCVSR/test/HR/UW/0000"
Ref_path = "test/RealMCVSR/test/HR/W/0000"
Ref_path_T = "test/RealMCVSR/test/HR/T/0000"
os.makedirs(LR_path)
os.makedirs(Ref_path)
os.makedirs(Ref_path_T)
os.makedirs('result')
os.system("wget https://www.dropbox.com/s/xv6inxwy0so4ni0/LR.png -O LR.png")
os.system("wget https://www.dropbox.com/s/abydd1oczs1163l/Ref.png -O Ref.png")
def resize(img):
max_side = 512
w = img.size[0]
h = img.size[1]
if max(h, w) > max_side:
scale_ratio = max_side / max(h, w)
wsize=int(w*scale_ratio)
hsize=int(h*scale_ratio)
img = img.resize((wsize,hsize), Image.ANTIALIAS)
return img
def inference(LR, Ref):
LR = resize(LR)
Ref = resize(Ref)
LR.save(os.path.join(LR_path, '0000.png'))
Ref.save(os.path.join(Ref_path, '0000.png'))
Ref.save(os.path.join(Ref_path_T, '0000.png'))
os.system("python -B run.py \
--mode amp_RefVSR_small_MFID_8K \
--config config_RefVSR_small_MFID_8K \
--data RealMCVSR \
--ckpt_abs_name ckpt/RefVSR_small_MFID_8K.pytorch \
--data_offset ./test \
--output_offset ./result \
--qualitative_only \
--cpu \
--is_gradio")
return "result/0000.png"
title="RefVSR"
description="Demo application for Reference-based Video Super-Resolution (RefVSR). Upload a low-resolution frame and a reference frame to 'LR' and 'Ref' input windows, respectively."
article = "<p style='text-align: center'><b>To check the full capability of the module, we recommend to clone Github repository and run RefVSR models on videos using GPUs.</b></p><p style='text-align: center'>This demo runs on CPUs and only supports RefVSR for a single LR and Ref frame due to computational complexity. Hence, the model will not take advantage of temporal LR and Ref frames.</p><p style='text-align: center'>The model is the small-sized model trained with the proposed two-stage training strategy.</p><p style='text-align: center'>The sample frames are in HD resolution (1920x1080) and in the PNG format. </p><p style='text-align: center'><a href='https://junyonglee.me/projects/RefVSR' target='_blank'>Project</a> | <a href='https://arxiv.org/abs/2203.14537' target='_blank'>arXiv</a> | <a href='https://github.com/codeslake/RefVSR' target='_blank'>Github</a></p>"
#LR = resize(Image.open('LR.png')).save('LR.png')
#Ref = resize(Image.open('Ref.png')).save('Ref.png')
examples=[['LR.png', 'Ref.png']]
gr.Interface(inference,[gr.inputs.Image(type="pil"), gr.inputs.Image(type="pil")],gr.outputs.Image(type="file"),title=title,description=description,article=article,theme ="peach",examples=examples).launch(enable_queue=True)