import os os.system("pip install dlib") import sys import face_detection import PIL from PIL import Image, ImageOps import numpy as np import torch torch.set_grad_enabled(False) net = torch.jit.load('ComicsHeroesReduced_v2E03_Traced_Script_CPU.pt') net.eval() def tensor2im(var): var = var.cpu().detach().transpose(0, 2).transpose(0, 1).numpy() var = ((var + 1) / 2) var[var < 0] = 0 var[var > 1] = 1 var = var * 255 return Image.fromarray(var.astype('uint8')) def image_as_array(image_in): im_array = np.array(image_in, np.float32) im_array = (im_array/255)*2 - 1 im_array = np.transpose(im_array, (2, 0, 1)) im_array = np.expand_dims(im_array, 0) return im_array def find_aligned_face(image_in, size=512): aligned_image, n_faces, quad = face_detection.align(image_in, face_index=0, output_size=size) return aligned_image, n_faces, quad def align_first_face(image_in, size=512): aligned_image, n_faces, quad = find_aligned_face(image_in,size=size) if n_faces == 0: image_in = image_in.resize((size, size)) im_array = image_as_array(image_in) else: im_array = image_as_array(aligned_image) return im_array def img_concat_h(im1, im2): dst = Image.new('RGB', (im1.width + im2.width, im1.height)) dst.paste(im1, (0, 0)) dst.paste(im2, (im1.width, 0)) return dst import gradio as gr def face2hero( img: Image.Image, size: int ) -> Image.Image: aligned_img = align_first_face(img) if aligned_img is None: output=None else: input = torch.Tensor(aligned_img) output = net(input) output = tensor2im(output[0]) output = img_concat_h(tensor2im(torch.Tensor(aligned_img)[0]), output) return output import os import collections from typing import Union, List import numpy as np from PIL import Image import PIL.Image import PIL.ImageFile import numpy as np import scipy.ndimage import requests def inference(img): out = face2hero(img, 512) return out title = "Comics hero" description = "Turn a face into the face of a \"Comics hero\". Upload an image with a face, or click on one of the examples below. If a face could not be detected, an image will still be created." article = "

See the Github Repo

samples: Sample00001Sample00002Sample00003Sample00004Sample00005

The \"Comics Hero\" model was trained using Pix2PixHD by Doron Adler

" examples=[['Example00001.jpg'],['Example00002.jpg'],['Example00003.jpg'],['Example00004.jpg'],['Example00005.jpg'], ['Example00006.jpg']] gr.Interface(inference, gr.inputs.Image(type="pil",shape=(512,512)), gr.outputs.Image(type="pil"),title=title,description=description,article=article,examples=examples,enable_queue=True).launch()