File size: 2,010 Bytes
49f65e4 269eef7 49f65e4 a64a9ce 5a0cd79 49f65e4 269eef7 49f65e4 269eef7 49f65e4 269eef7 49f65e4 a64a9ce 49f65e4 5a0cd79 c8067b8 7f5a3aa df80b79 e198db2 7f5a3aa 49f65e4 d911574 9c7d136 0f5662c 49f65e4 269eef7 49f65e4 269eef7 49f65e4 269eef7 49f65e4 376476a f8bccd7 ae52322 |
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 |
import torch
from PIL import Image
from RealESRGAN import RealESRGAN
import gradio as gr
import gc
import spaces
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model2 = RealESRGAN(device, scale=2)
model2.load_weights('weights/RealESRGAN_x2.pth', download=True)
model4 = RealESRGAN(device, scale=4)
model4.load_weights('weights/RealESRGAN_x4.pth', download=True)
model8 = RealESRGAN(device, scale=8)
model8.load_weights('weights/RealESRGAN_x8.pth', download=True)
if torch.cuda.is_available():
torch.cuda.empty_cache()
gc.collect()
@spaces.GPU
def inference(image, size):
if image is None:
raise gr.Error("Image not uploaded")
width, height = image.size
if width >= 5000 or height >= 5000:
raise gr.Error("The image is too large.")
if size == '2x':
result = model2.predict(image.convert('RGB'))
elif size == '4x':
result = model4.predict(image.convert('RGB'))
else:
result = model8.predict(image.convert('RGB'))
print(f"Image size ({device}): {size} ... OK")
return result
title = "Face Real ESRGAN UpScale: 2x 4x 8x"
description = "This is an unofficial demo for Real-ESRGAN. Scales the resolution of a photo. This model shows better results on faces compared to the original version.<br>Telegram BOT: https://t.me/restoration_photo_bot"
article = "<div style='text-align: center;'>Twitter <a href='https://twitter.com/DoEvent' target='_blank'>Max Skobeev</a> | <a href='https://huggingface.co/sberbank-ai/Real-ESRGAN' target='_blank'>Model card</a><div>"
gr.Interface(inference,
[gr.Image(type="pil"),
gr.Radio(['2x', '4x', '8x'],
type="value",
value='2x',
label='Resolution model')],
gr.Image(type="pil", label="Output"),
title=title,
description=description,
article=article,
examples=[['groot.jpeg', "2x"]],
allow_flagging='never',
cache_examples=False,
).queue(api_open=False).launch(show_error=True, show_api=False)
|