由 Facebook 提出。广义的人脸识别是说看到这个人脸,确定它是谁,而落在应用/产品层面,更多的是 verification,先拿到别人的照片,做一个 model,再拿一张新的照片,来判断是不是这个人,也就是人脸身份确认。
先来看一下人脸图片的数据特点:
- 结构化:所有人脸的组成相似,理论上可以实现对齐
- 差异化:相同的位置,形貌(appearance)不同
DeepFace 在训练神经网络前,使用了对齐(frontalization),论文认为神经网络能够 work 的原因在于一旦人脸经过对齐后,人脸区域的特征就固定在某些像素上了,所以就可以用卷积神经网络来学习特征。之后的 DeepID 和 FaceNet 并没有对齐这个步骤。
传统 CNN 用同一个卷积核对整张图片进行卷积运算,卷积核参数共享,不同局部特性对参数影响相互削弱,达不到最优的效果,对应的解决方法是局部卷积,不同的区域用不同参数。
人脸识别的基本流程:
|
|
结构:
经过 3D 对齐后,形成的图像都是 152×152 的图像,输入到上述网络结构中,该结构的参数如下:
|
|
前三层的目的在于提取低层次的特征,比如简单的边和纹理。其中 Max-pooling 层使得卷积的输出对微小的偏移情况更加鲁棒。但没有用太多的 Max-pooling 层,因为太多的 Max-pooling 层会使得网络损失图像信息。
后面三层都是使用参数不共享的卷积核,之所以使用参数不共享,有如下原因:
- 对齐的人脸图片中,不同的区域会有不同的统计特征,卷积的局部稳定性假设并不存在,所以使用相同的卷积核会导致信息的丢失
- 不共享的卷积核并不增加抽取特征时的计算量,而会增加训练时的计算量
- 使用不共享的卷积核,需要训练的参数量大大增加,因而需要很大的数据量,然而这个条件本文刚好满足。
全连接层将上一层的每个单元和本层的所有单元相连,用来捕捉人脸图像不同位置的特征之间的相关性。其中,第7层(4096-d)被用来表示人脸。
全连接层的输出可以用于Softmax的输入,Softmax层用于分类。
全局部卷积连接的缺陷:
- 预处理:大量对准,对对准要求高,原始信息可能丢失
- 卷积参数数量很大,模型收敛难度大,需要大量数据
- 模型可扩展性差,基本限于人脸计算