当前位置:   article > 正文

使face_recognition返回最相似人脸下标

使face_recognition返回最相似人脸下标

在使用face_recognition的过程中发现 compare_faces 比较人脸的过程会将小于 tolerance 的人脸编码全部按照true返回,会丢失具体的欧氏距离的信息,源码如下:

  1. def compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.6):
  2. """
  3. Compare a list of face encodings against a candidate encoding to see if they match.
  4. :param known_face_encodings: A list of known face encodings
  5. :param face_encoding_to_check: A single face encoding to compare against the list
  6. :param tolerance: How much distance between faces to consider it a match. Lower is more strict. 0.6 is typical best performance.
  7. :return: A list of True/False values indicating which known_face_encodings match the face encoding to check
  8. """
  9. return list(face_distance(known_face_encodings, face_encoding_to_check) <= tolerance)

在这里返回的是一个list,长度和传入的known_face_encodings相等

对此进行调整,自己写了一个函数,如下:

  1. # 调整face_recognition的脸部编码比较函数,返回下标和距离最小值
  2. def my_compare_faces(known_face_encodings, face_encoding_to_check, tolerance):
  3. # 如果已知人脸列表为空或待比较人脸为空则直接返回
  4. if len(known_face_encodings) == 0 or len(face_encoding_to_check) == 0:
  5. return -1, 1
  6. distance = face_recognition.face_distance(known_face_encodings, face_encoding_to_check)
  7. if distance.min() < tolerance:
  8. return distance.argmin(), distance.min()
  9. else:
  10. return -1, distance.min()

在这里返回人脸距离的小于 tolerance 的最小值的下标,即返回最相似的人脸下标,如果不符合tolerance 就返回-1,对返回值做一个判定即可区分。

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

闽ICP备14008679号