AI 模型与平台

DeepFace 高级人脸识别

mm
将 Unite.AI 添加到您在 Google 上的首选来源

人脸识别已经成为人工智能和机器学习领域的热门领域,具有广泛的文化和社会影响。然而,目前的人脸识别技术仍然存在一个性能差距,限制了其应用范围。为了克服这个性能差距,Meta 推出了 DeepFace,一种人脸识别框架。DeepFace 模型是在一个大型人脸数据集上训练的,该数据集与用于构建评估基准的数据集有很大不同,并且具有超越现有框架的潜力。另外,DeepFace 框架产生的面部表示比其他系统产生的面部外观特征要紧凑得多。

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

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

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

理解 DeepFace 模型的工作原理

面部对齐

面部对齐是一种旋转图像的技术,根据眼睛的角度进行旋转。面部对齐是一种流行的预处理数据技术,用于人脸识别,面部对齐的数据集有助于通过提供归一化输入来提高识别算法的准确性。然而,在无约束条件下对齐面部可能是一项具有挑战性的任务,因为涉及多个因素,如非刚性表达、身体姿势等。一些复杂的对齐技术,例如使用面部的分析 3D 模型或从外部数据集搜索特征点,可能允许开发人员克服这些挑战。

虽然对齐是处理无约束面部验证和识别的最流行的方法,但目前还没有完美的解决方案。3D 模型也被使用,但它们的受欢迎程度在过去几年中尤其是在无约束环境中显著下降。然而,由于人类面部是 3D 对象,因此如果使用正确,可能是正确的方法。DeepFace 模型使用一种使用特征点创建面部分析 3D 建模的系统。然后使用该 3D 建模将面部剪辑变形为 3D 正面模式。

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

2D 对齐

DeepFace 模型通过在检测到的面部区域中心检测六个特征点来启动对齐过程,检测到的面部区域位于眼睛、嘴巴位置和鼻子尖。这些特征点用于旋转、缩放和将图像转换为六个锚点位置,并在变形图像上迭代,直到没有可见的变化。然后,聚合变换生成 2D 对齐的面部区域。对齐方法与 LFW-a 中使用的方法非常相似,多年来一直被用来尝试提高模型的准确性。

3D 对齐

为了对齐具有非平面旋转的面部,DeepFace 框架使用一个通用的 3D 形状模型,并注册一个 3D 相机,可以将 2D 对齐的面部区域包裹在其图像平面中。因此,模型生成面部区域的 3D 对齐版本,这是通过在 2D 对齐的面部区域中使用第二个支持向量回归器(SVR)定位额外的 67 个特征点来实现的。

然后,模型手动将 67 个锚点放置在 3D 形状上,从而能够在 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 模型生成的新视图。

表示

随着训练数据量的增加,学习方法已被证明比工程特征更高效、更准确,因为学习方法可以为特定任务发现和优化特征。

DeepFace 的 DNN 架构和训练

DeepFace 的 DNN 在一个多类人脸识别任务上进行训练,该任务对面部图像进行分类以确定其身份。

上图表示 DeepFace 模型的整体架构。模型具有一个卷积层(C1),该层具有 32 个 11x11x3 的滤波器,输入为 152×152 像素的 3 通道 RGB 图像,结果为 32 个特征图。这些特征图然后输入到一个最大池化层(M2),该层对每个通道的 3×3 空间邻域取最大值,步长为 2。然后是另一个卷积层(C3),该层具有 16 个 9x9x16 的滤波器。这些层的主要目的是提取低级特征,如纹理和简单边缘。使用最大池化层的好处是,它使得卷积层生成的输出对于局部平移更加稳健,当应用于对齐的面部图像时,它使得网络对于注册错误更加稳健。

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

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

DeepFace 模型之所以使用三个层,只是因为它具有大量的标记数据。使用局部连接层可以进一步证明,每个局部连接层的输出单元可以受到大量输入数据的影响。

最后,顶层是完全连接的,每个输出单元都连接到所有输入。两个完全连接层可以捕获面部图像不同部分捕获的特征之间的相关性,例如嘴巴和眼睛的位置和形状。第一个完全连接层(F7)的输出将被网络用作其原始面部表示特征向量。然后,模型将最后一个完全连接层(F8)的输出输入到 K 路 softmax 中,生成类标签的分布。

数据集

DeepFace 模型使用多个数据集的组合,主要使用社会面部分类(SFC)数据集。此外,DeepFace 模型还使用 LFW 数据集和 YTF 数据集。

SFC 数据集

SFC 数据集是从 Facebook (META ) 的图片集合中学习的,包含 4,030 人的 440 万张标记图像,每个人都有 800 到 1200 张面部图像。每个身份的 SFC 数据集的最新 5% 的面部图像被保留用于测试目的。

LFW 数据集

LFW 数据集包含 13,323 张超过 5,000 位名人的照片,然后被划分为 10 个子集中的 6,000 对面部图像。

YTF 数据集

YTF 数据集包含 1,595 位名人的 3,425 个视频,是 LFW 数据集中名人的一个子集。

结果

在没有正面化的情况下,仅使用 2D 对齐时,模型的准确率仅为 94.3%。当模型使用面部检测的中心区域时,不使用任何对齐,在这种情况下,模型的准确率为 87.9%,因为面部区域的一些部分可能会落在中心区域之外。为了评估面部表示的鉴别能力,模型遵循无监督学习设置来比较归一化特征的内积。它将模型的平均准确率提高到 95.92%。

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

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

结论

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

专业为工程师,心为作家。 Kunal是一名技术作家,对AI和ML有着深厚的热爱和理解,致力于通过其引人入胜和信息丰富的文档来简化这些领域中的复杂概念。