利用自己的人脸数据集对人脸识别模型进行精度评测

本博记录为卤煮学习过程中的理解,作为备忘demo。其中有错误疏漏之处,还请大家帮忙指正。

卤煮:非文艺小燕儿

本博地址:利用自己的人脸数据集对人脸识别模型进行精度评测


一般人脸识别模型的精度验证都是用LFW,但是LFW的数据分布于我们实用阶段有些差距,因此最好还是在我们自己实用环境下的人脸图像进行测试评估。

LFW精度评测:利用LFW对人脸识别模型进行精度评测


以下使用的都是crop后的人脸彩色图像,人脸的图片命名都是以name_****.jpg的格式存放(***的长度和内容随意)。以便区分同人(name相同)和异人*(name不同)。

(1)自己的图片分两组,一组为ref_faces(M张),一组为test_faces(N张)。

(2)利用你的人脸识别模型和网络,计算所有faces的特征。

(3)将ref_faces中每一个face,与test_faces中的所有face一一匹配计算相似度。

将相似度存放在Similarity_file.txt中,每匹配完一张ref_face,进行一次回车。最终会得到M行数据,每行N个相似度。也就是M*N的矩阵。

同时将真实匹配结果(同人为1,异人为0),以相同的方式存放在Ref_file.txt中,也相当也得到一个M*N的矩阵。


(4)ref_file矩阵的和,就是同人匹配对的个数S_n,则异人匹配对的个数D_n=M*N-S_n。

(5)以ref_file为参照,将Similarity_file中的所有同人匹配概率存放到Same_p向量中,所有异人匹配概率存放到Diff_p向量中。

(6)由(5)的结果已经可以通过matlab绘制出概率密度figure,和累积分布figure。如下图:

利用自己的人脸数据集对人脸识别模型进行精度评测


(7)对Same_p进行从小到大排序,Diff_p进行从大到小排序。指定一个错误接受率(FAR),根据异人匹配总数D_n,可以计算出容错个数Miss_n,在排序后Diff_p中第Miss_n+1个数值,便是判定阈值。

(8)在排序后的Same_p中,从头开始查找比判定阈值大的数,找到第一个大于阈值的数为止。由于找到这个数之前所排查的数都是小于阈值的,因此这些就是同脸匹配失败的结果,用其总数除以S_n就可以得到错误拒绝率(FRR)。


备注:

FAR:False Accept Rate,错误接受率,指将身份不同的两张照片,判别为相同身份,越低越好

FRR:False Reject Rate,错误拒绝率,指将身份相同的两张照片,判别为不同身份,越低越好

这两个指标有明确的物理意义,FAR决定了系统的安全性,FRR决定了系统的易用程度。