Real-ESRGAN / app.py
NickKolok's picture
optipng
50a4094 verified
raw
history blame
2.61 kB
import os
import random
import gradio as gr
from PIL import Image
import torch
from random import randint
import sys
import psutil
import subprocess
def run_cmd(command):
try:
print(f"Running command: {command}")
# Run the command and capture both output and error
result = subprocess.run(command, shell=True, text=True, capture_output=True)
# Print stdout and stderr
if result.stdout:
print("Output:\n", result.stdout)
if result.stderr:
print("Error:\n", result.stderr)
# Check for command success
if result.returncode != 0:
print(f"Command failed with return code {result.returncode}")
except KeyboardInterrupt:
print("Process interrupted")
sys.exit(1)
run_cmd("wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P .")
run_cmd("wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth -P .")
run_cmd("apt-get update; apt-get install optipng")
def inference(img,mode):
_id = randint(1, 10000)
INPUT_DIR = "./tmp/input_image" + str(_id) + "/"
OUTPUT_DIR = "./tmp/output_image" + str(_id) + "/"
run_cmd("ls -l ./tmp/*/*")
run_cmd("rm -rf " + INPUT_DIR)
run_cmd("rm -rf " + OUTPUT_DIR)
run_cmd("mkdir -p " + INPUT_DIR)
run_cmd("mkdir -p " + OUTPUT_DIR)
img.save(INPUT_DIR + "1.png", "PNG")
if mode == "base":
run_cmd("python inference_realesrgan.py -n RealESRGAN_x4plus -i "+ INPUT_DIR + " -o " + OUTPUT_DIR)
else:
run_cmd("python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i "+ INPUT_DIR + " -o " + OUTPUT_DIR)
image_filename = os.path.join(OUTPUT_DIR, "1_out.png")
run_cmd("optipng -o5 " + image_filename)
return image_filename
title = "Real-ESRGAN"
description = "Gradio demo for Real-ESRGAN. To use it, simply upload your image, or click one of the examples to load them. Read more at the links below. Please click submit only once"
article = "<p style='text-align: center'><a href='https://arxiv.org/abs/2107.10833'>Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data</a> | <a href='https://github.com/xinntao/Real-ESRGAN'>Github Repo</a></p>"
gr.Interface(
inference,
[gr.inputs.Image(type="pil", label="Input"),gr.inputs.Radio(["base","anime"], type="value", default="anime", label="model type")],
gr.outputs.Image(type="file", label="Output"),
title=title,
description=description,
article=article
).launch()