|
|
from upcunet_v3 import RealWaifuUpScaler
|
|
|
import gradio as gr
|
|
|
import time
|
|
|
import logging
|
|
|
import os
|
|
|
from PIL import ImageOps
|
|
|
import numpy as np
|
|
|
import math
|
|
|
|
|
|
|
|
|
def greet(input_img, input_model_name, input_tile_mode):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
input_img = np.array(input_img)
|
|
|
if input_model_name not in model_cache:
|
|
|
t1 = time.time()
|
|
|
upscaler = RealWaifuUpScaler(input_model_name[2], ModelPath + input_model_name, half=False, device="cpu")
|
|
|
t2 = time.time()
|
|
|
logger.info(f'load model time, {t2 - t1}')
|
|
|
model_cache[input_model_name] = upscaler
|
|
|
else:
|
|
|
upscaler = model_cache[input_model_name]
|
|
|
logger.info(f'load model from cache')
|
|
|
|
|
|
start = time.time()
|
|
|
result = upscaler(input_img, tile_mode=input_tile_mode)
|
|
|
end = time.time()
|
|
|
logger.info(f'input_model_name, {input_model_name}')
|
|
|
logger.info(f'input_tile_mode, {input_tile_mode}')
|
|
|
logger.info(f'input shape, {input_img.shape}')
|
|
|
logger.info(f'output shape, {result.shape}')
|
|
|
logger.info(f'speed time, {end - start}')
|
|
|
return result
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
logging.basicConfig(level=logging.INFO, format="[%(asctime)s] [%(process)d] [%(levelname)s] %(message)s")
|
|
|
logger = logging.getLogger()
|
|
|
|
|
|
ModelPath = "weights_v3/"
|
|
|
model_cache = {}
|
|
|
|
|
|
input_model_name = gr.inputs.Dropdown(os.listdir(ModelPath), default="up2x-latest-denoise2x.pth", label='选择model')
|
|
|
input_tile_mode = gr.inputs.Dropdown([0, 1, 2, 3, 4], default=2, label='选择tile_mode')
|
|
|
input_img = gr.inputs.Image(label='image', type='pil')
|
|
|
|
|
|
inputs = [input_img, input_model_name, input_tile_mode]
|
|
|
outputs = "image"
|
|
|
iface = gr.Interface(fn=greet,
|
|
|
inputs=inputs,
|
|
|
outputs=outputs,
|
|
|
allow_screenshot=False,
|
|
|
allow_flagging='never',
|
|
|
examples=[['test-img.jpg', "up2x-latest-denoise2x.pth", 2]],
|
|
|
article='[https://github.com/bilibili/ailab/tree/main/Real-CUGAN](https://github.com/bilibili/ailab/tree/main/Real-CUGAN)<br>'
|
|
|
'感谢b站开源的项目,图片过大会导致内存不足,所有我将图片裁剪小,想体验大图片的效果请自行前往上面的链接。<br>'
|
|
|
'修改bbb'
|
|
|
'The large image will lead to memory limit exceeded. So I crop and resize image. '
|
|
|
'If you want to experience the large image, please go to the link above.')
|
|
|
iface.launch()
|
|
|
|