Files
insightface/recognition/partial_fc/mxnet/evaluation/align_ijb.py
2020-10-19 01:07:30 +08:00

45 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)