gfp-Gans / app.py
ali-ghamdan's picture
Update app.py
b55c4c2
raw
history blame
2.24 kB
import gradio as gr
import numpy as np
from PIL import Image
import os
os.system('pip install basicsr')
os.system('pip install realesrgan')
from gfpgan import GFPGANer
# installing version 1 of GFPGAN
os.system('wget https://github.com/TencentARC/GFPGAN/releases/download/v0.1.0/GFPGANv1.pth')
# installing version 1.2 of GFPGAN
os.system('wget https://github.com/TencentARC/GFPGAN/releases/download/v0.2.0/GFPGANCleanv1-NoCE-C2.pth')
# installing version 1.3 of GFPGAN (latest)
os.system('wget https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth')
def interface(image: Image, model: str = "GFPGANv1.3.pth", useRealesrgan=False):
if model == "":
model = "GFPGANv1.3.pth"
if model != "GFPGANv1.pth" and model != "GFPGANCleanv1-NoCE-C2.pth" and model != "GFPGANv1.3.pth":
model = "GFPGANv1.3.pth"
if useRealesrgan == True:
from basicsr.archs.rrdbnet_arch import RRDBNet
from realesrgan import RealESRGANer
BGupscaler = RealESRGANer(
scale=2,
model_path='https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth',
model=RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=2),
tile=0,
tile_pad=10,
pre_pad=0
)
else:
BGupscaler = None
restorer = GFPGANer(
model_path=model,
arch="original" if model == "GFPGANv1.pth" else "clean",
bg_upsampler=BGupscaler,
channel_multiplier=1 if model == "GFPGANv1.pth" else 2,
upscale=2)
img = np.array(image).copy()
cropped_faces, restored_faces, restored_img = restorer.enhance(img)
return restored_img
gr.Interface(
interface,
[
gr.components.Image(
type="pil",
label="Image",
),
gr.components.Radio([
"GFPGANv1.pth",
"GFPGANCleanv1-NoCE-C2.pth",
"GFPGANv1.3.pth",
],
label="model",
default="GFPGANv1.3.pth",
type="value"),
gr.Checkbox(label="realesrgan?"),
],
[gr.components.Image(label="Enhanced Image")],
).launch()