import os import random import gradio as gr from PIL import Image import torch from random import randint import sys from subprocess import call import psutil torch.hub.download_url_to_file('https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Abraham_Lincoln_O-77_matte_collodion_print.jpg/1024px-Abraham_Lincoln_O-77_matte_collodion_print.jpg', 'lincoln.jpg') torch.hub.download_url_to_file('https://upload.wikimedia.org/wikipedia/commons/5/50/Albert_Einstein_%28Nobel%29.png', 'einstein.png') import argparse import cv2 import glob import numpy as np import os import torch from basicsr.utils import imwrite from gfpgan import GFPGANer # background upsampler if args.bg_upsampler == 'realesrgan': if not torch.cuda.is_available(): # CPU import warnings warnings.warn('The unoptimized RealESRGAN is very slow on CPU. We do not use it. ' 'If you really want to use it, please modify the corresponding codes.') bg_upsampler = None else: from basicsr.archs.rrdbnet_arch import RRDBNet from realesrgan import RealESRGANer model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=2) bg_upsampler = RealESRGANer( scale=2, model_path='https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth', model=model, tile=args.bg_tile, tile_pad=10, pre_pad=0, half=True) # need to set False in CPU mode else: bg_upsampler = None # set up GFPGAN restorer restorer = GFPGANer( model_path=args.model_path, upscale=args.upscale, arch=args.arch, channel_multiplier=args.channel, bg_upsampler=bg_upsampler) img_list = sorted(glob.glob(os.path.join(args.test_path, '*'))) os.system("pip install gfpgan") os.system("pip freeze") os.system("wget https://github.com/TencentARC/GFPGAN/releases/download/v0.2.0/GFPGANCleanv1-NoCE-C2.pth -P .") def inference(img): input_img = cv2.imread(img, cv2.IMREAD_COLOR) # restore faces and background if necessary cropped_faces, restored_faces, restored_img = restorer.enhance( input_img, has_aligned=args.aligned, only_center_face=args.only_center_face, paste_back=args.paste_back) # save faces # save cropped face # save comparison image cmp_img = np.concatenate((cropped_face, restored_face), axis=1) return Image.fromarray(cmp_img) title = "GFP-GAN" description = "Gradio demo for GFP-GAN: Towards Real-World Blind Face Restoration with Generative Facial Prior. 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 = "

Towards Real-World Blind Face Restoration with Generative Facial Prior | Github Repo

visitor badge
" gr.Interface( inference, [gr.inputs.Image(type="pil", label="Input")], gr.outputs.Image(type="file", label="Output"), title=title, description=description, article=article, examples=[ ['lincoln.jpg'], ['einstein.png'] ], enable_queue=True ).launch(debug=True)