File size: 4,193 Bytes
ded9852
 
 
 
 
 
 
 
 
0a35c65
 
450d71c
37ae4f3
51a4776
 
5dcb962
ded9852
 
 
109eb1a
 
9926668
137fd43
 
b157748
e7e1eaf
5086b19
 
bf86791
 
 
 
d4740d1
 
bf86791
 
 
 
6aea108
bf86791
ded9852
 
 
5086b19
 
6bdaae4
ded9852
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7e1eaf
ded9852
 
dd6eb85
7390b66
ded9852
6aea108
ded9852
5086b19
 
d9b11af
 
 
18d9300
ded9852
18d9300
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
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.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")

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')
max_side = 512
def resize(img):
    #basewidth = max_side
    #wpercent = (basewidth/float(img.size[0]))
    #hsize = int((float(img.size[1])*float(wpercent)))
    #img = img.resize((basewidth,hsize), Image.ANTIALIAS)
    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 inference_realbasicvsr.py configs/realbasicvsr_x4.py RealBasicVSR_x4.pth test/ results/demo_000")
    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).\nInstruction: Upload a low-resolution frame and a reference frame to 'LR' and 'Ref' input windows, respectively.\nNote 1: This demo only supports RefVSR for a single LR and Ref frame due to computational complexity. Hence, the model might not take advantage of temporal frames. \nNote 2: The model is our small 8K model trained with the proposed two-stage training strategy. \nNote 3: The spatial size of input LR and Ref frames is 1920x1080 (HD), in the PNG format."
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 frames will be resized so that the length of a longer side of the frames doesn't exceed 256 pixels.</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'))
Ref = resize(Image.open('Ref.png'))
LR.save('LR.png')
Ref.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)