深度面部识别技术——DeepFace

DeepFace Advanced facial recognition technology

面部识别在人工智能和机器学习领域已经成为一个热门领域多年了,面部识别的广泛文化和社会影响是深远的。然而,目前人类视觉系统与机器之间存在着性能差距,这限制了面部识别的应用。

为了克服性能差距所带来的障碍,并实现人类级别的准确性,Meta推出了DeepFace,一个面部识别框架。DeepFace模型是在一个与用于构建评估基准的数据集明显不同的大型面部数据集上进行训练的,并且它有潜力通过最小的适应性改进来超越现有的框架。此外,与其他生成数千个面部外貌特征的系统相比,DeepFace框架产生了紧凑的面部表示。

提出的DeepFace框架使用深度学习对包括图像、视频和图形在内的不同形式的数据进行训练。DeepFace网络架构假设一旦完成对齐,每个面部区域的位置在像素级别上是固定的。因此,可以使用原始像素RGB值,而不需要像其他框架中那样使用多个卷积层。

现代面部识别框架的传统流程包括四个阶段:检测、对齐、表示和分类。DeepFace框架采用显式的三维面部建模来应用分段变换,并使用一个九层深度神经网络来生成面部表示。DeepFace框架试图做出以下贡献:

  1. 开发一种有效的深度神经网络架构,可以利用大型数据集创建可以推广到其他数据集的面部表示。
  2. 使用显式的三维建模来开发一种有效的面部对齐系统。

理解DeepFace模型的工作原理

面部对齐

面部对齐是一种根据眼睛角度旋转人物图像的技术。面部对齐是一种常用的用于预处理面部识别数据的方法,面部对齐的数据集有助于通过提供归一化输入来提高识别算法的准确性。然而,由于涉及到非刚性表情、身体姿势等多个因素,以无约束方式对齐面部可能是一项具有挑战性的任务。使用面部分析三维模型或从外部数据集中寻找基准点等多种复杂的对齐技术可能帮助开发人员克服这些挑战。

尽管对齐是处理无约束人脸验证和识别的最流行方法,但目前还没有完美的解决方案。也有使用三维模型的方法,但在过去几年中,它们的受欢迎程度显著下降,特别是在无约束环境中工作时。然而,由于人脸是三维对象,如果使用正确,可能是正确的方法。DeepFace模型使用一种利用基准点创建面部的分析三维模型的系统。然后使用这个三维模型将面部裁剪图像变形为三维正面模式。

此外,就像大多数对齐实践一样,DeepFace对齐也使用基准点探测器来指导对齐过程。虽然DeepFace模型使用一个简单的点检测器,但它在多次迭代中应用它以改进输出。支持向量回归器或SVR在每次迭代中从图像描述符中提取基准点。DeepFace的图像描述符基于LBP直方图,尽管它也考虑其他特征。

2D对齐

DeepFace模型通过在检测到的裁剪图像内部的六个基准点上进行检测,这些基准点位于眼睛、嘴巴位置和鼻尖的中心处,来启动对齐过程。它们被用于将图像旋转、缩放和平移为六个锚定位置,并在变形图像上迭代,直到没有可见的变化为止。聚合的变换然后生成一个2D对齐的结果。这种对齐方法与LFW-a中使用的方法非常相似,并且多年来一直被用于试图提高模型准确性。

3D对齐

为了对齐具有平面外旋转的面部,DeepFace框架使用通用的三维形状模型,并注册一个可以用于将2D对齐的图像裁剪与其图像平面中的3D形状对齐的3D相机。因此,该模型生成了3D对齐的版本,并通过使用第二个支持向量回归器或SVR在2D对齐的图像裁剪中定位额外的67个基准点来实现。

模型然后手动在3D形状上放置了67个锚点,从而能够实现3D参考和相应基准点之间的完全对应关系。在下一步中,使用已知协方差矩阵对线性系统进行广义最小二乘解法,添加了一个3D到2D仿射相机,以最小化特定损失。

正脸化

由于没有建模非刚性变形和完全透视投影,拟合的3D到2D相机仅作为近似。为了减少重要特征对最终变形的损坏,DeepFace模型将相应的残差添加到每个参考基准点的x-y分量上。这种为了使2D图像变形对身份的扭曲更小的放松是合理的,如果没有这样做,面部在3D中将被扭曲成相同的形状,并在过程中丢失重要的区分因素。

最后,模型通过使用由67个基准点派生的Delaunay三角剖分来进行分段仿射变换,实现正脸化。

  1. 检测到的带有6个基准点的人脸。
  2. 诱导的2D对齐公司。
  3. 2D对齐公司上的67个基准点。
  4. 将参考3D形状变换为2D对齐公司图像。
  5. 相对于3D-2D相机的三角形可见性。
  6. 由3D模型诱导的67个基准点。
  7. 最终公司的3D对齐版本。
  8. 由3D模型生成的新视图。

表示

随着训练数据量的增加,基于学习的方法在效率和准确性方面已被证明比工程特征更好,主要是因为基于学习的方法可以发现和优化特定任务的特征。

DNN架构和训练

DeepFace DNN是在多类人脸识别任务上进行训练的,用于对人脸图像的身份进行分类。

上图表示了DeepFace模型的整体架构。模型具有一个卷积层(C1),其中有32个大小为11x11x3的滤波器,输入是一个尺寸为152×152像素的3D对齐的3通道RGB图像,并生成32个特征图。然后将这些特征图输入到一个最大池化层M2中,对每个通道分别取3×3空间邻域的最大值,并具有2的步长。接着是另一个卷积层(C3),由16个大小为9x9x16的滤波器组成。这些层的主要目的是提取低层次的特征,如纹理和简单边缘。使用最大池化层的优点是使卷积层生成的输出对局部平移更具鲁棒性,当应用于对齐的人脸图像时,使网络在小尺度上对注册错误更具鲁棒性。

多级池化确实使网络对某些情况更具鲁棒性,但也导致网络丢失有关微观纹理和详细面部结构的精确位置信息。为了避免网络丢失信息,DeepFace模型仅在第一个卷积层中使用最大池化层。这些层被模型解释为前端自适应预处理步骤。虽然它们进行了大部分计算,但它们本身的参数有限,只是将输入扩展为一组局部特征。

接下来的L4、L5和L6层在本地连接,并像卷积层一样应用滤波器组,其中特征图中的每个位置学习一组唯一的滤波器。由于对齐图像中的不同区域具有不同的局部统计信息,因此不能保持空间平稳性假设。例如,眉毛和眼睛之间的区域与嘴和鼻子之间的区域相比具有更高的区分能力。使用局部连接层会影响训练的参数数量,但不会影响特征提取过程中的计算负担。

DeepFace模型之所以在首个位置使用三个层,是因为它有大量的良好标记的训练数据。使用局部连接层的原因可以进一步证明,因为局部连接层的每个输出单元可以受到大块输入数据的影响。

最后,顶层完全连接,每个输出单元与所有输入相连。这两层可以捕捉到脸部图像不同部分的特征之间的相关性,比如嘴巴的位置和形状,眼睛的位置和形状。第一个完全连接层(F7)的输出将作为网络的原始人脸表示特征向量。然后,模型将把最后一个完全连接层(F8)的输出馈送到一个K路softmax,产生一个类标签的分布。

数据集

DeepFace模型使用一组数据集,其中Social Face Classification(SFC)数据集是主要数据集。此外,DeepFace模型还使用了LFW数据集和YTF数据集。

SFC数据集

SFC数据集是从Facebook的一组图片中学习得到的,包含了4030人的440万张标记图像,每个人都有800到1200张脸部图像。SFC数据集中每个身份的最近5%的人脸图像被保留用于测试。

LFW数据集

LFW数据集包含了超过5000位名人的13323张照片,然后将其分成了10个部分的6000个人脸对。

YTF数据集

YTF数据集包含了1595位主体的3425个视频,是LFW数据集中名人的一个子集。

结果

在没有正面化和仅使用2D对齐的情况下,该模型的准确率仅约为94.3%。当模型使用面部检测的中心裁剪而不使用任何对齐时,由于面部区域的某些部分可能超出中心裁剪,模型返回的准确率为87.9%。为了评估人脸表示的辨别能力,模型遵循无监督学习设置,比较归一化特征的内积。这将模型的平均准确率提高到95.92%。

上述模型将DeepFace模型与其他最先进的人脸识别模型进行了性能比较。

上图显示了数据集上的ROC曲线。

结论

理想情况下,人脸分类器将能够像人类一样准确识别人脸,并且无论图像质量、姿态、表情或光照如何,都能返回高准确率。此外,理想的人脸识别框架将能够应用于各种应用程序,几乎不需要或不需要进行大幅修改。尽管DeepFace是目前最先进和高效的人脸识别框架之一,但它并不完美,可能无法在某些情况下提供准确的结果。但DeepFace框架是人脸识别行业的重要里程碑,通过使用强大的度量学习技术来弥补性能差距,并且随着时间的推移,它将变得更加高效。