File size: 4,455 Bytes
ded9852 37ae4f3 0e0ccfd 0b8ccd5 0e0ccfd 97c70fe 0e0ccfd 5dcb962 ded9852 0e0ccfd 8aa2992 8eeae86 aca3a01 8eeae86 137fd43 b157748 9974be3 e7e1eaf 687282d 0e0ccfd 5086b19 d84731a d4740d1 bf86791 6aea108 ded9852 0e0ccfd ded9852 0e0ccfd 687282d 0e0ccfd 709fd3c 8aa2992 0e0ccfd ded9852 edeeb36 0e0ccfd ded9852 edeeb36 ded9852 0e0ccfd e7e1eaf ded9852 687282d edeeb36 ded9852 edeeb36 ded9852 0e0ccfd f8aa4fe d84731a 0e0ccfd 62744f4 ded9852 0e0ccfd |
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 86 87 88 89 90 |
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/SPyNet.pytorch -O ckpt/SPyNet.pytorch")
os.system("wget https://huggingface.co/spaces/codeslake/RefVSR/resolve/main/RefVSR_MFID_8K.pytorch -O ckpt/RefVSR_MFID_8K.pytorch")
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/RefVSR_MFID.pytorch -O ckpt/RefVSR_MFID.pytorch")
os.system("wget https://huggingface.co/spaces/codeslake/RefVSR/resolve/main/RefVSR_small_MFID_8K.pytorch -O ckpt/RefVSR_small_MFID.pytorch")
sys.path.append("RefVSR")
## Input setup (creates folders and places inputs corresponding to the original RefVSR code)
HR_LR_path = "test/RealMCVSR/test/HR/UW/0000"
HR_Ref_path = "test/RealMCVSR/test/HR/W/0000"
HR_Ref_path_T = "test/RealMCVSR/test/HR/T/0000"
LR_path = "test/RealMCVSR/test/LRx4/UW/0000"
Ref_path = "test/RealMCVSR/test/LRx4/W/0000"
Ref_path_T = "test/RealMCVSR/test/LRx4/T/0000"
os.makedirs(LR_path)
os.makedirs(Ref_path)
os.makedirs(Ref_path_T)
os.makedirs(HR_LR_path)
os.makedirs(HR_Ref_path)
os.makedirs(HR_Ref_path_T)
os.makedirs('result')
os.system("wget https://www.dropbox.com/s/vqekqdz80d85gi4/UW.png -O LR.png")
os.system("wget https://www.dropbox.com/s/lsopmquhpm87v83/W.png -O Ref.png")
## resize if necessary (not used)
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
## inference
def inference(LR, Ref):
## resize for user selected input (not used)
#LR = resize(LR)
#Ref = resize(Ref)
## Input setup (creates folders and places inputs corresponding to the original RefVSR code)
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'))
LR.save(os.path.join(HR_LR_path, '0000.png'))
Ref.save(os.path.join(HR_Ref_path, '0000.png'))
Ref.save(os.path.join(HR_Ref_path_T, '0000.png'))
## Run RefVSR model
os.system("python -B run.py \
--mode amp_RefVSR_small_MFID \
--config config_RefVSR_small_MFID \
--data RealMCVSR \
--ckpt_abs_name ckpt/RefVSR_small_MFID.pytorch \
--data_offset ./test \
--output_offset ./result \
--qualitative_only \
--cpu \
--is_gradio")
return "result/0000.png"
title="RefVSR (under construction)"
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. The demo runs on CPUs and takes about 120s."
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 trained by the proposed pre-stage training strategy only. The sample frames are in 430x270 resolution and saved 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>"
## resize for sample (not used)
#LR = resize(Image.open('LR.png')).save('LR.png')
#Ref = resize(Image.open('Ref.png')).save('Ref.png')
## input
examples=[['LR.png', 'Ref.png']]
## interface
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) |