当前位置:   article > 正文

2020-01-09:InsightFace项目实战(四)调用模型检测_insightface模型输出

insightface模型输出

一、参考资料

https://zhuanlan.zhihu.com/p/43804018

二、实战

1、cd到如下目录:insightface/deploy/test.py,test.py的input是图片,output是人脸特征

2、复制test.py,并修改文件名为test_mines.py

3、修改test_mines.py

  • 修改模型存储路径:r100模型存储路径和性别年龄模型存储路径
  • 修改数据存储路径
  • 用余弦距离计算相似度,与设定阈值比较,输出检测结果

4、test_mines.py代码如下

  1. import face_model_mines
  2. import argparse
  3. import cv2
  4. import sys
  5. import numpy as np
  6. parser = argparse.ArgumentParser(description='face model test')
  7. # general
  8. parser.add_argument('--image-size', default='112,112', help='')
  9. parser.add_argument('--model', default='/data/tensorflow/WorkSpace/syd/FaceRecognition/Projects/insightface/recognition/models/model-r100-ii/r100-arcface-emore/model,0555', help='path to load model.')
  10. parser.add_argument('--ga-model', default='/data/tensorflow/WorkSpace/syd/FaceRecognition/Projects/insightface/models/gamodel-r50/model,0', help='path to load model.')
  11. parser.add_argument('--gpu', default=0, type=int, help='gpu id')
  12. parser.add_argument('--det', default=0, type=int, help='mtcnn option, 1 means using R+O, 0 means detect from begining')
  13. parser.add_argument('--flip', default=0, type=int, help='whether do lr flip aug')
  14. parser.add_argument('--threshold', default=1.24, type=float, help='ver dist threshold')
  15. args = parser.parse_args()
  16. ##模型载入
  17. model = face_model_mines.FaceModel(args)
  18. ##图片载入
  19. path_img1 = '/data/tensorflow/WorkSpace/syd/FaceRecognition/Projects/insightface/deploy/test/shenyanding1.jpg'
  20. path_img2 = '/data/tensorflow/WorkSpace/syd/FaceRecognition/Projects/insightface/deploy/test/shenyanding2.jpg'
  21. #提取图片名称:姓名
  22. s1 = path_img1.rfind('/', 1)+1
  23. s2 = path_img1.rfind('.',1)-1
  24. name_img1 = path_img1[s1:s2]
  25. print("被检测人姓名:",name_img1)
  26. ss1 = path_img2.rfind('/', 1)+1
  27. ss2 = path_img2.rfind('.',1)-1
  28. name_img2 = path_img2[ss1:ss2]
  29. print("比对人姓名:",name_img2)
  30. ##根据模型计算人脸特征向量
  31. img1 = cv2.imread(path_img1)
  32. img1 = model.get_input(img1)
  33. f1 = model.get_feature(img1)
  34. img2 = cv2.imread(path_img2)
  35. img2 = model.get_input(img2)
  36. f2 = model.get_feature(img2 )
  37. ##计算余弦距离
  38. dist1 = np.sum(np.square(f1-f2))
  39. dist1 = float("%.2f" % dist1)
  40. ##输出模型检测结果
  41. #检测逻辑:如果两张人脸的距离超过设定阈值则不是同一人,如果小于等于设定阈值则为同一人
  42. dist_yuzhi = 1.24
  43. if dist1<=dist_yuzhi:
  44. print("模型检测结果:是同一人")
  45. else:
  46. print("模型检测结果:不是同一人")

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/289258
推荐阅读
  

闽ICP备14008679号