『深度应用』一文搞懂深度学习人脸识别模型开发流程

『深度应用』深度学习人脸识别模型开发与应用流程综述


0. 概念简介

 

度量学习(Metric Learning),也称距离度量学习(Distance Metric Learning,DML) 属于机器学习的一种。其本质就是相似度的学习,也可以认为距离学习。因为在一定条件下,相似度和距离可以相互转换。比如在空间坐标的两条向量,既可以用余弦相似度的大小,也可以使用欧式距离的远近来衡量相似程度。

常见的人脸识别与声纹识别都属于度量学习。

一般的度量学习包含以下步骤:

  1. Encoder编码模型:用于把原始数据编码为特征向量(重点如何训练模型
  2. 相似度判别算法:将一对特征向量进行相似度比对(重点如何计算相似度,阈值如何设定

 

1.编码模型训练

 

通过使用大量数据集进行网络模型训练。使编码模型可以实现对原始数据提取特征向量的功能。

基于深度学习的度量学习算法中,可以分为两个流派:

  1. 网络设计派:代表孪生神经网络(Siamese network)
  2. 损失改进派:代表 xx-softmax

本文主要讲整体开发流程,具体细节请自行查阅。

通过对编码模型训练,得到了具备提取特征的encoder模型,让原始数据通过encoder模型就可以对应特征向量:

X = Encoder(row)

下面就是利用这个encoder模型,作为特征提取器,进行相似度判别。

 

2.相似度判别算法

 

在第一步(1.编码模型训练)完成后,获得了具备特征提取的编码模型,就可以利用此encoder网络进行验证系统开发。

首先要对在第一步得到的编码模型进行性能测试。步骤如下:

  1. 使用测试数据生成测试对,需要保证尽量随机取对和正负数据平衡,同一种标签为1,不同种为0
  2. 使用编码模型得到所有特征向量
  3. 根据测试对的特征向量计算相似度,可选余弦距离度/欧式距离
  4. 根据测试对的相似度与标签,设置合理阈值范围,分辨率取0.0001,遍历阈值计算 FAR(错误接受率)FRR(错误拒绝率),两者相等得到EER(等错误概率),此时的阈值也是较优阈值。(也可以使用类似方法验证准确率)

通过上述步骤就可以获得模型的识别性能和应用阈值。

如若想提高阈值的泛化能力,可以采用测试与验证的方法计算阈值:

  1.  将测试对分为10组,用来确定阈值并验证精读。
  2. 使用其中1组,同种判断错误和不同种判定错误的个数。
  3. 选择错误个数最少的那个阈值,用剩余9组,判断识别精度。
  4. 步骤2和3执行10次,将每次3获取的精度进行累加并求平均,得到最终判定精度。记录下精度最高的那次的阈值,记为最优阈值

 


References:

1.https://blog.csdn.net/fuwenyan/article/details/74943248

posted @ 2019-06-21 09:15  小宋是呢  阅读(2386)  评论(0编辑  收藏  举报