Files
insightface/recognition/partial_fc/mxnet/evaluation/align_ijb.py
2020-11-06 13:59:21 +08:00

43 lines
1.5 KiB
Python

import os
import cv2
import numpy as np
from skimage import transform as trans
src = np.array([[30.2946, 51.6963], [65.5318, 51.5014], [48.0252, 71.7366],
[33.5493, 92.3655], [62.7299, 92.2041]],
dtype=np.float32)
src[:, 0] += 8.0
img_path = '/data/anxiang/datasets/IJB_release/IJBC/loose_crop'
img_path_align = '/data/anxiang/datasets/IJB_release/IJBC/loose_crop_align'
img_list_path = '/data/anxiang/datasets/IJB_release/IJBC/meta/ijbc_name_5pts_score.txt'
img_list = open(img_list_path)
files = img_list.readlines()
for img_index, each_line in enumerate(files):
if img_index % 500 == 0:
print('processing', img_index)
name_lmk_score = each_line.strip().split(' ')
img_name = os.path.join(img_path, name_lmk_score[0])
img = cv2.imread(img_name)
landmark = np.array([float(x) for x in name_lmk_score[1:-1]],
dtype=np.float32)
landmark = landmark.reshape((5, 2))
if landmark.shape[0] == 68:
landmark5 = np.zeros((5, 2), dtype=np.float32)
landmark5[0] = (landmark[36] + landmark[39]) / 2
landmark5[1] = (landmark[42] + landmark[45]) / 2
landmark5[2] = landmark[30]
landmark5[3] = landmark[48]
landmark5[4] = landmark[54]
else:
landmark5 = landmark
tform = trans.SimilarityTransform()
tform.estimate(landmark5, src)
M = tform.params[0:2, :]
img = cv2.warpAffine(img, M, (112, 112), borderValue=0.0)
cv2.imwrite(os.path.join(img_path_align, name_lmk_score[0]), img)