Connect with us

人工智能

DeepFace for Advanced Facial Recognition

mm

面部识别已经成为人工智能和机器学习领域的热点,面部识别的文化和社会影响非常深远。然而,当前的人机视觉系统和机器之间存在性能差距,限制了面部识别的应用。

为了克服性能差距,Meta 引入了 DeepFace,一个面部识别框架。DeepFace 模型是在一个大型面部数据集上训练的,该数据集与用于构建评估基准的数据集有很大不同,它有可能在最小的适应性调整下超越现有的框架。另外,DeepFace 框架产生的面部表示比其他系统产生的面部外观特征要紧凑得多。

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

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

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

理解 DeepFace 模型的工作原理

面部对齐

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

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

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

2D 对齐

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

3D 对齐

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

然后,模型手动将 67 个锚点放置在 3D 形状上,因此能够在 3D 参考点和其对应的 fiducial 点之间实现完全的对应关系。在下一步中,使用广义最小二乘解来线性系统添加 3D 到 2D 仿射相机,具有已知的协方差矩阵,以最小化某些损失。

正面化

由于非刚性变形和全视图投影没有被建模,拟合的 3D 到 2D 相机仅作为近似值。为了减少对最终变形的身份相关因素的破坏,DeepFace 模型将相应的残差添加到每个参考 fiducial 点的 x-y 分量中。这种放松对于以较少的身份失真来变形 2D 图像是合理的,如果没有它,面部将被变形为 3D 中的相同形状,并在此过程中丢失重要的鉴别因素。

最后,模型通过使用从 67 个 fiducial 点推导出的 Delaunay 三角化来实现正面化,得到一个分段仿射变换。

  1. 检测到的面部,具有 6 个 fiducial 点。
  2. 引入的 2D 对齐 corp。
  3. 2D 对齐 corp 上的 67 个 fiducial 点。
  4. 参考 3D 形状转换为 2D 对齐 corp 图像。
  5. 相对于 3D-2D 相机的三角形可见性。
  6. 由 3D 模型引入的 67 个 fiducial 点。
  7. corp 的 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 的图片集合中学习的,包含 4,030 人的 440 万张标记图像,每个人都有 800 到 1,200 张面部图像。SFC 数据集的最新 5% 的每个身份的面部图像被留出用于测试目的。

LFW 数据集

LFW 数据集包含 5,000 多位名人的 13,323 张照片,分为 10 个子集中的 6,000 个面部对。

YTF 数据集

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

结果

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

上述模型比较了 DeepFace 模型与其他最先进的面部识别模型的性能。

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

结论

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

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