| | |
| |
|
| | import os |
| | import os.path as osp |
| | import argparse |
| | import cv2 |
| | import numpy as np |
| | import onnxruntime |
| | from scrfd import SCRFD |
| | from arcface_onnx import ArcFaceONNX |
| |
|
| | onnxruntime.set_default_logger_severity(5) |
| |
|
| | assets_dir = osp.expanduser('~/.insightface/models/buffalo_l') |
| |
|
| | detector = SCRFD(os.path.join(assets_dir, 'det_10g.onnx')) |
| | detector.prepare(0) |
| | model_path = os.path.join(assets_dir, 'w600k_r50.onnx') |
| | rec = ArcFaceONNX(model_path) |
| | rec.prepare(0) |
| |
|
| | def parse_args() -> argparse.Namespace: |
| | parser = argparse.ArgumentParser() |
| | parser.add_argument('img1', type=str) |
| | parser.add_argument('img2', type=str) |
| | return parser.parse_args() |
| |
|
| |
|
| | def func(args): |
| | image1 = cv2.imread(args.img1) |
| | image2 = cv2.imread(args.img2) |
| | bboxes1, kpss1 = detector.autodetect(image1, max_num=1) |
| | if bboxes1.shape[0]==0: |
| | return -1.0, "Face not found in Image-1" |
| | bboxes2, kpss2 = detector.autodetect(image2, max_num=1) |
| | if bboxes2.shape[0]==0: |
| | return -1.0, "Face not found in Image-2" |
| | kps1 = kpss1[0] |
| | kps2 = kpss2[0] |
| | feat1 = rec.get(image1, kps1) |
| | feat2 = rec.get(image2, kps2) |
| | sim = rec.compute_sim(feat1, feat2) |
| | if sim<0.2: |
| | conclu = 'They are NOT the same person' |
| | elif sim>=0.2 and sim<0.28: |
| | conclu = 'They are LIKELY TO be the same person' |
| | else: |
| | conclu = 'They ARE the same person' |
| | return sim, conclu |
| |
|
| |
|
| |
|
| | if __name__ == '__main__': |
| | args = parse_args() |
| | output = func(args) |
| | print('sim: %.4f, message: %s'%(output[0], output[1])) |
| |
|
| |
|