Spaces:
Running
Running
import sys | |
import os | |
from face_alignment import mtcnn | |
import argparse | |
from PIL import Image | |
from tqdm import tqdm | |
import random | |
from datetime import datetime | |
import torch | |
device = "cuda:0" if torch.cuda.is_available() else "cpu" | |
mtcnn_model = mtcnn.MTCNN(device=device, crop_size=(112, 112)) | |
def add_padding(pil_img, top, right, bottom, left, color=(0,0,0)): | |
width, height = pil_img.size | |
new_width = width + right + left | |
new_height = height + top + bottom | |
result = Image.new(pil_img.mode, (new_width, new_height), color) | |
result.paste(pil_img, (left, top)) | |
return result | |
def get_aligned_face(image_path, rgb_pil_image=None): | |
if rgb_pil_image is None: | |
img = Image.open(image_path).convert('RGB') | |
else: | |
assert isinstance(rgb_pil_image, Image.Image), 'Face alignment module requires PIL image or path to the image' | |
img = rgb_pil_image | |
# find face | |
try: | |
bboxes, faces = mtcnn_model.align_multi(img, limit=1) | |
face = faces[0] | |
except Exception as e: | |
print('Face detection Failed due to error.') | |
print(e) | |
face = None | |
return face | |