人脸识别的方法 人脸识别技术全面总结:从传统方法到深度学习

编辑:
发布时间: 2021-02-03 02:54:36
分享:

选自arXiv

机器之心编译

参与:Panda

英国赫特福德大学与 GBG Plc 的研究者近日发布了一篇综述论文,对

人脸识别

方法进行了全面的梳理和总结,其中涵盖各种传统方法和如今风头正盛的深度学习方法。机器之心重点编译介绍了其中的深度学习方法部分,更多有关传统人脸识别方法的内容请参阅原论文。

图 2:人脸识别的构建模块。

很多人认为人脸表征是人脸识别系统中最重要的组件,这也是本论文第二节所关注的重点。

图 3:人脸检测器找到的边界框。和:对齐后的人脸和参考点。

深度学习方法

卷积神经网络是人脸识别方面最常用的一类深度学习方法。深度学习方法的主要优势是可用大量数据来训练,从而学到对训练数据中出现的变化情况稳健的人脸表征。这种方法不需要设计对不同类型的类内差异稳健的特定特征,而是可以从训练数据中学到它们。深度学习方法的主要短板是它们需要使用非常大的数据集来训练,而且这些数据集中需要包含足够的变化,从而可以泛化到未曾见过的样本上。幸运的是,一些包含自然人脸图像的大规模人脸数据集已被公开 [9-15],可被用来训练 CNN 模型。除了学习判别特征,神经网络还可以降维,并可被训练成分类器或使用度量学习方法。CNN 被认为是端到端可训练的系统,无需与任何其它特定方法结合。

用于人脸识别的 CNN 模型可以使用不同的方法来训练。其中之一是将该问题当作是一个分类问题,训练集中的每个主体都对应一个类别。训练完之后,可以通过去除分类层并将之前层的特征用作人脸表征而将该模型用于识别不存在于训练集中的主体 [99]。在深度学习文献中,这些特征通常被称为瓶颈特征。在这第一个训练阶段之后,该模型可以使用其它技术来进一步训练,以为目标应用优化瓶颈特征。另一种学习人脸表征的常用方法是通过优化配对的人脸 [100,101] 或人脸三元组 [102] 之间的距离度量来直接学习瓶颈特征。

使用神经网络来做人脸识别并不是什么新思想。1997 年就有研究者为人脸检测、眼部定位和人脸识别提出了一种名为「基于概率决策的神经网络」[103] 的早期方法。这种人脸识别 PDBNN 被分成了每一个训练主体一个全连接子网络,以降低隐藏单元的数量和避免过拟合。研究者使用密度和边特征分别训练了两个 PBDNN,然后将它们的输出组合起来得到最终分类决定。另一种早期方法 [104] 则组合使用了自组织映射和卷积神经网络。自组织映射[105] 是一类以无监督方式训练的神经网络,可将输入数据映射到更低维的空间,同时也能保留输入空间的拓扑性质。注意,这两种早期方法都不是以端到端的方式训练的,而且提出的神经网络架构也都很浅。[100] 中提出了一种端到端的人脸识别 CNN。这种方法使用了一种孪生式架构,并使用了一个对比损失函数 [106] 来进行训练。这个对比损失使用了一种度量学习流程,其目标是最小化对应同一主体的特征向量对之间的距离,同时最大化对应不同主体的特征向量对之间的距离。该方法中使用的 CNN 架构也很浅,且训练数据集也较小。

上面提到的方法都未能取得突破性的成果,主要原因是使用了能力不足的网络,且训练时能用的数据集也相对较小。直到这些模型得到扩展并使用大量数据 [107] 训练后,用于人脸识别的首个深度学习方法 [99,9] 才达到了当前最佳水平。尤其值得一提的是 Facebook 的 DeepFace [99],这是最早的用于人脸识别的 CNN 方法之一,其使用了一个能力很强的模型,在 LFW 基准上实现了 97.35% 的准确度,将之前最佳表现的错误率降低了 27%。研究者使用 softmax 损失和一个包含 440 万张人脸的数据集训练了一个 CNN。本论文有两个全新的贡献:一个基于明确的 3D 人脸建模的高效的人脸对齐系统;一个包含局部连接的层的 CNN 架构 [108,109],这些层不同于常规的卷积层,可以从图像中的每个区域学到不同的特征。在那同时,DeepID 系统 [9] 通过在图块上训练 60 个不同的 CNN 而得到了相近的结果,这些图块包含十个区域、三种比例以及 RGB 或灰度通道。在测试阶段,会从每个图块提取出 160 个瓶颈特征,加上其水平翻转后的情况,可形成一个 19200 维的特征向量。类似于 [99],新提出的 CNN 架构也使用了局部连接的层。其验证结果是通过在这种由 CNN 提取出的 19200 维特征向量上训练一个联合贝叶斯分类器 [48] 得到的。训练该系统所使用的数据集包含 202599 张人脸图像,来自 10177 位名人 [9]。

对于基于 CNN 的人脸识别方法,影响准确度的因素主要有三个:训练数据、CNN 架构和损失函数。因为在大多数深度学习应用中,都需要大训练集来防止过拟合。一般而言,为分类任务训练的 CNN 的准确度会随每类的样本数量的增长而提升。这是因为当类内差异更多时,CNN 模型能够学习到更稳健的特征。但是,对于人脸识别,我们感兴趣的是提取出能够泛化到训练集中未曾出现过的主体上的特征。因此,用于人脸识别的数据集还需要包含大量主体,这样模型也能学习到更多类间差异。[110] 研究了数据集中主体的数量对人脸识别准确度的影响。在这项研究中,首先以降序形式按照每个主体的图像数量对一个大数据集进行了排序。然后,研究者通过逐渐增大主体数量而使用训练数据的不同子集训练了一个 CNN。当使用了图像数量最多的 10000 个主体进行训练时,得到的准确度是最高的。增加更多主体会降低准确度,因为每个额外主体可用的图像非常少。另一项研究 [111] 研究了更宽度的数据集更好,还是更深度的数据集更好。这项研究总结到:如果图像数量相等,则更宽的数据集能得到更好的准确度。研究者认为这是因为更宽度的数据集包含更多类间差异,因而能更好地泛化到未曾见过的主体上。表 1 展示了某些最常用于训练人脸识别 CNN 的公开数据集。

表 1:公开的大规模人脸数据集。

用于人脸识别的 CNN 架构从那些在 ImageNet 大规模视觉识别挑战赛上表现优异的架构上取得了很多灵感。举个例子,[11] 中使用了一个带有 16 层的 VGG 网络 [112] 版本,[10] 中则使用了一个相似但更小的网络。[102] 中探索了两种不同类型的 CNN 架构:VGG 风格的网络 [112] 和 GoogleNet 风格的网络 [113]。即使这两种网络实现了相当的准确度,但 GoogleNet 风格的网络的参数数量少 20 倍。更近段时间,残差网络[114] 已经成为了很多目标识别任务的最受偏爱的选择,其中包括人脸识别 [115-121]。ResNet 的主要创新点是引入了一种使用捷径连接的构建模块来学习残差映射,如图 7 所示。捷径连接的使用能让研究者训练更深度的架构,因为它们有助于跨层的信息流动。[121] 对不同的 CNN 架构进行了全面的研究。在准确度、速度和模型大小之间的最佳权衡是使用带有一个残差模块的 100 层 ResNet 得到的。

图 7:[114] 中提出的原始的残差模块。

选择用于训练 CNN 方法的损失函数已经成为近来人脸识别最活跃的研究领域。即使使用 softmax 损失训练的 CNN 已经非常成功 [99,9,10,123],但也有研究者认为使用这种损失函数无法很好地泛化到训练集中未出现过的主体上。这是因为 softmax 损失有助于学习能增大类间差异的特征,但不一定会降低类内差异。研究者已经提出了一些能缓解这一问题的方法。优化瓶颈特征的一种简单方法是使用判别式子空间方法,比如联合贝叶斯 [48],就像 [9,124,125,126,10,127] 中所做的那样。另一种方法是使用度量学习。比如,[100,101] 中使用了配对的对比损失来作为唯一的监督信号,[124-126] 中还结合使用了分类损失。人脸识别方面最常用的度量学习方法是三元组损失函数 [128],最早在 [102] 中被用于人脸识别任务。三元组损失的目标是以一定余量分开正例对之间的距离和负例对之间的距离。从数学形式上讲,对于每个三元组 i,需要满足以下条件 [102]:

其中 x_a 是锚图像,x_p 是同一主体的图像,x_n 是另一个不同主体的图像,f 是模型学习到的映射关系,α 施加在正例对和负例对距离之间的余量。在实践中,使用三元组损失训练的 CNN 的收敛速度比使用 softmax 的慢,这是因为需要大量三元组才能覆盖整个训练集。尽管这个问题可以通过在训练阶段选择困难的三元组来缓解 [102],但常见的做法是在第一个训练阶段使用 softmax 损失训练,在第二个训练阶段使用三元组损失来对瓶颈特征进行调整 [11,129,130]。研究者们已经提出了三元组损失的一些变体。比如 [129] 中使用了点积作为相似度度量,而不是欧几里德距离;[130] 中提出了一种概率式三元组损失;[131,132] 中提出了一种修改版的三元组损失,它也能最小化正例和负例分数分布的标准差。用于学习判别特征的另一种损失函数是 [133] 中提出的中心损失。中心损失的目标是最小化瓶颈特征与它们对应类别的中心之间的距离。通过使用 softmax 损失和中心损失进行联合训练,结果表明 CNN 学习到的特征能够有效增大类间差异和降低类内个体差异。相比于对比损失和三元组损失,中心损失的优点是更高效和更容易实现,因为它不需要在训练过程中构建配对或三元组。另一种相关的度量学习方法是 [134] 中提出的范围损失,这是为改善使用不平衡数据集的训练而提出的。范围损失有两个组件。类内的损失组件是最小化同一类样本之间的 k-最大距离,而类间的损失组件是最大化每个训练批中最近的两个类中心之间的距离。通过使用这些极端案例,范围损失为每个类都使用同样的信息,而不管每个类别中有多少样本可用。类似于中心损失,范围损失需要与 softmax 损失结合起来以避免损失降至零 [133]。

当结合不同的损失函数时,会出现一个困难,即寻找每一项之间的正确平衡。最近一段时间,已有研究者提出了几种修改 softmax 损失的方法,这样它无需与其它损失结合也能学习判别特征。一种已被证明可以增加瓶颈特征的判别能力的方法是特征归一化 [115,118]。比如,[115] 提出归一化特征以具有单位 L2 范数,[118] 提出归一化特征以具有零均值和单位方差。一个成功的方法已经在 softmax 损失中每类之间的决策边界中引入了一个余量 [135]。为了简单,我们介绍一下使用 softmax 损失进行二元分类的情况。在这种情况下,每类之间的决策边界可由下式给定:

其中 x 是特征向量,W_1 和 W_2 是对应每类的权重,θ_1 和 θ_2 是 x 分别与 W_1 和 W_2 之间的角度。通过在上式中引入一个乘法余量,这两个决策边界可以变得更加严格:

如图 8 所示,这个余量可以有效地增大类别之间的区分程度以及各自类别之内的紧凑性。根据将该余量整合进损失的方式,研究者们已经提出了多种可用方法 [116,119-121]。比如 [116] 中对权重向量进行了归一化以具有单位范数,这样使得决策边界仅取决于角度 θ_1 和 θ_2。[119,120] 中则提出了一种加性余弦余量。相比于乘法余量 [135,116],加性余量更容易实现和优化。在这项工作中,除了归一化权重向量,特征向量也如 [115] 中一样进行了归一化和比例调整。[121] 中提出了另一种加性余量,它既有 [119,120] 那样的优点,还有更好的几何解释方式,因为这个余量是加在角度上的,而不是余弦上。表 2 总结了有余量的 softmax 损失的不同变体的决策边界。这些方法是人脸识别领域的当前最佳。

图 8:在两个类别之间的决策边界中引入一个余量 m 的效果。softmax 损失,有余量的 softmax 损失。

表 2:有余量的 softmax 损失的不同变体的决策边界。注意这些决策边界针对的是二元分类案例中的类别 1。

本文为机器之心编译,转载请联系本公众号获得授权。

------------------------------------------------

相关阅读
热门精选
皮肤 孕妇