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 = "

To check the full capability of the module, we recommend to clone Github repository and run RefVSR models on videos using GPUs.

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.

The model is the small-sized model trained with the proposed two-stage training strategy.

The sample frames are in HD resolution (1920x1080) and in the PNG format.

Project | arXiv | Github

" #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)