测试开源C#人脸识别模块ViewFaceCore(3:人脸特征提取和对比)

  ViewFaceCore模块的FaceRecognizer支持人脸特征提取和对比,将人脸中的关键信息转换为矢量信息,然后通过计算两个矢量的相似度以判断人脸的相似程序。
  调用FaceRecognizer对比人脸相似度主要包括以下步骤:
  1)调用faceDetector类获取图片的人脸信息;
  2)调用FaceLandmarker类获取人脸关键点信息;
  3)调用FaceRecognizer类的Extract函数,输入人脸关键点信息计算人脸的特征矢量;
  4)逐个计算人脸与人脸之间的特征矢量相似度,相似度高则为同一人脸。

  FaceRecognizer类中提供两种方式判断人脸相似度:
  1)IsSelf函数基于两个人脸特征矢量直接返回是否为同一人,此时判断相似度是基于程序中内置的阈值进行判断的,超过阈值则判断为同一人,否则为不同人。该阈值与人脸识别模型相关:68个关键点检测模型的默认阈值为0.62,5个关键点检测模型的默认阈值为0.55,戴口罩关键点检测模型的默认阈值为0.4,可以在FaceRecognizeConfig中调制阈值。
  2)Compare函数基于两个人脸特征矢量返回两个人脸的相似度值,此时由编程的人根据需要或特定算法判断是否为同一人,例如相似度最高的为同一人,或者所有相似度超过指定值的人脸均为同一人。

  根据上述内容,编写测试程序测试FaceRecognizer的基本用法,主要是先导入人像,计算人像的特征矢量,然后在导入另一图片,在图片中根据相似度判断是否存在人像,存在则用蓝色框标识,否则用红色框标识。
  采用68个关键点检测模型,调用IsSelf函数的测试程序效果如下所示,图片中人较多或者人脸看着差不多时,调用IsSelf、采用默认阈值会有误判。

测试开源C#人脸识别模块ViewFaceCore(3:人脸特征提取和对比)_第1张图片
  采用5个关键点检测模型,调用IsSelf函数的测试程序效果如下所示。

测试开源C#人脸识别模块ViewFaceCore(3:人脸特征提取和对比)_第2张图片

参考文献:
[1]https://github.com/ViewFaceCore/ViewFaceCore

你可能感兴趣的:(dotnet编程,C#,ViewFaceCore,人脸特征提取)