一、人脸识别流程

(一)对齐

    通过确定人脸中的标定点(landmark)的位置进行人脸对齐。(找3个点即可,一般找5个点:鼻子、眼睛、嘴角两端)对齐后可以找到一个二维坐标平面,进行下一步仿射变换。
深度学习之人脸识别——2020.2.9

(二)仿射变换

原理

  • 二维坐标到二维坐标之间的线性变换
  • 不共线的三对对应点决定了一个唯一的仿射变换
    深度学习之人脸识别——2020.2.9
    深度学习之人脸识别——2020.2.9
        其中,平移——\(c_1\)\(c_2\)为平移量;缩放——\(a_1\)\(b_2\)为缩放量;旋转——θ是旋转角度。

(三)回归

    使用神经网络(下面使用的DCNN)进行回归对标定点进行检测。
深度学习之人脸识别——2020.2.9
    其中,输入原始画像后,进行4*4卷积后,在进行池化,卷积....最后使用两个全连接得到最终结果。这里面采用了一个级联思想实现CNN组合,级联思想实现细节如下图:
深度学习之人脸识别——2020.2.9
论文:Deep Convolutional Network Cascade for Facial Point Detection

(四)特征学习

1. 分类模型
  • Deepface
  • DeepID
  • VGG
  • ResNet
2. 度量学习模型——FaceNet为例

    下图是FaceNet的简略示意图,例如,输入三张图片:Anchor、与Anchor不同类的Negative、与Anchor同类的Positive,通过一系列学习后实现同类相近,异类相远。
深度学习之人脸识别——2020.2.9
论文:FaceNet- A Unified Embedding for Face Recognition and Clustering
    距离计算公式(前半部分为与同类positive之间的距离,后半部分计算与不同类negative的距离。):
深度学习之人脸识别——2020.2.9
    最终实现效果如下图所示,距离>1.1即可认为相互之间为不同人,即使一个人不同角度也可以被识别为同一人。
深度学习之人脸识别——2020.2.9

二、人脸识别

(一)人脸验证

    人脸识别中的人脸验证问题即是验证两张图片是否来自同一个人。主要有以下三种方法,欧氏距离和余弦距离方法是工业中常用的验证方法,Joint Bayesian方法常用在学术研究中。首先假定两张人脸图片提取的特征向量为 \(\overrightarrow{x_j}\)\(\overrightarrow{x_k}\)

1. 欧氏距离:

    距离差越大,相似度越大。

\[\begin{Vmatrix}
\overrightarrow{x_j}-\overrightarrow{x_k}
\end{Vmatrix}
\]

2. 余弦距离

\[\cos\theta =\frac { \overrightarrow{x_j} \cdot \overrightarrow{x_k}}{\begin{Vmatrix} \overrightarrow{x_j} \end{Vmatrix} \cdot \begin{Vmatrix} \overrightarrow{x_k} \end{Vmatrix}}
\]

3. Joint Bayesian 方法

深度学习之人脸识别——2020.2.9

    其中,????(∆) 是差异 ∆ 的函数,????(\(H_1\))为先验概率,????(\(∆|????_1\)) 为似然概率,????($????_1|∆)是后验概率,是人脸相似性的度量。

(二)人脸搜索

    深度网络 + hashing [Deep Learning of Binary Hash Codes for Fast Image Retrieval]
深度学习之人脸识别——2020.2.9
    在预训练好的网络倒数第二层和最终的任务层中间,插入一个新的全连接层,这个层使用sigmoid激活函数来提供范围约束,节点数即为目标二值码的码长。通过端到端的finetune,可以将语义信息嵌入到这个新加入的全连接层输出之中。

(三)人脸识别数据集

    主要有以下几种数据集,其中仅MultiPIE需要购买,其余的申请即可。
深度学习之人脸识别——2020.2.9