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

阅读: 评论:0

⼈脸识别技术全⾯总结:从传统⽅法到深度学习
选⾃arXiv
作者:Daniel Saez Trigueros等
参与:Panda
英国赫特福德⼤学与 GBG Plc 的研究者近⽇发布了⼀篇综述论⽂,对⼈脸识别⽅法进⾏了全⾯的梳理和总结,其中涵盖各种传统⽅法和如今风头正盛的深度学习⽅法。机器之⼼重点编译介绍了其中的深度学习⽅法部分,更多有关传统⼈脸识别⽅法的内容请参阅原论⽂。
⾃七⼗年代以来,⼈脸识别已经成为了计算机视觉和⽣物识别领域被研究最多的主题之⼀。基于⼈⼯设计的特征和传统机器学习技术的传统⽅法近来已被使⽤⾮常⼤型的数据集训练的深度神经⽹络取代。在这篇论⽂中,我们对流⾏的⼈脸识别⽅法进⾏了全⾯且最新的⽂献总结,其中既包括传统⽅法(基于⼏何的⽅法、整体⽅法、基于特征的⽅法和混合⽅法),也有深度学习⽅法。
引⾔
一次性封条
⼈脸识别是指能够识别或验证图像或视频中的主体的⾝份的技术。⾸个⼈脸识别算法诞⽣于七⼗年代初 [
1,2]。⾃那以后,它们的准确度已经⼤幅提升,现在相⽐于指纹或虹膜识别 [3] 等传统上被认为更加稳健的⽣物识别⽅法,⼈们往往更偏爱⼈脸识别。让⼈脸识别⽐其它⽣物识别⽅法更受欢迎的⼀⼤不同之处是⼈脸识别本质上是⾮侵⼊性的。⽐如,指纹识别需要⽤户将⼿指按在传感器上,虹膜识别需要⽤户与相机靠得很近,语⾳识别则需要⽤户⼤声说话。相对⽽⾔,现代⼈脸识别系统仅需要⽤户处于相机的视野内(假设他们与相机的距离也合理)。这使得⼈脸识别成为了对⽤户最友好的⽣物识别⽅法。这也意味着⼈脸识别的潜在应⽤范围更⼴,因为它也可被部署在⽤户不期望与系统合作的环境中,⽐如监控系统中。⼈脸识别的其它常见应⽤还包括访问控制、欺诈检测、⾝份认证和社交媒体。
当被部署在⽆约束条件的环境中时,由于⼈脸图像在现实世界中的呈现具有⾼度的可变性(这类⼈脸图像通常被称为⾃然⼈脸(faces in-the-wild)),所以⼈脸识别也是最有挑战性的⽣物识别⽅法之⼀。⼈脸图像可变的地⽅包括头部姿势、年龄、遮挡、光照条件和⼈脸表情。图 1 给出了这些情况的⽰例。
图 1:在⾃然⼈脸图像中到的典型变化。(a)头部姿势,(b)年龄,(c)光照,(d)⾯部表情,(e)遮挡。
⼈脸识别技术这些年已经发⽣了重⼤的变化。传统⽅法依赖于⼈⼯设计的特征(⽐如边和纹理描述量)与机器学习技术(⽐如、或⽀持向量机)的组合。⼈⼯设计在⽆约束环境中对不同变化情况稳健
的特征是很困难的,这使得过去的研究者侧重研究针对每种变化类型的专⽤⽅法,⽐如能应对不同年龄的⽅法 [4,5]、能应对不同姿势的⽅法 [6]、能应对不同光照条件的⽅法 [7,8] 等。近段时间,传统的⼈脸识别⽅法已经被基于卷积神经⽹络(CNN)的深度学习⽅法接替。深度学习⽅法的主要优势是它们可⽤⾮常⼤型的数据集进⾏训练,从⽽学习到表征这些数据的最佳特征。⽹络上可⽤的⼤量⾃然⼈脸图像已让研究者可收集到⼤规模的⼈脸数据集 [9-15],这些图像包含了真实世界中的各种变化情况。使⽤这些数据集训练的基于 CNN 的⼈脸识别⽅法已经实现了⾮常⾼的准确度,因为它们能够学到⼈脸图像中稳健的特征,从⽽能够应对在训练过程中使⽤的⼈脸图像所呈现出的真实世界变化情况。此外,深度学习⽅法在计算机视觉⽅⾯的不断普及也在加速⼈脸识别研究的发展,因为 CNN 也正被⽤于解决许多其它计算机视觉任务,⽐如⽬标检测和识别、分割、光学字符识别、⾯部表情分析、年龄估计等。
⼈脸识别系统通常由以下构建模块组成:
•⼈脸检测。⼈脸检测器⽤于寻图像中⼈脸的位置,如果有⼈脸,就返回包含每张⼈脸的边界框的坐标。如图 3a 所⽰。气体处理
•⼈脸对齐。⼈脸对齐的⽬标是使⽤⼀组位于图像中固定位置的参考点来缩放和裁剪⼈脸图像。这个过程通常需要使⽤⼀个特征点检测器来寻⼀组⼈脸特征点,在简单的 2D 对齐情况中,即为寻最适合参考点的最佳仿射变换。
图 3b 和 3c 展⽰了两张使⽤了同⼀组参考点对齐后的⼈脸图像。更复杂的 3D 对齐算法(如 [16])还能实现⼈脸正⾯化,即将⼈脸的姿势调整到正⾯向前。
•⼈脸表征。在⼈脸表征阶段,⼈脸图像的像素值会被转换成紧凑且可判别的特征向量,这也被称为模板
纯露怎么提取
(template)。理想情况下,同⼀个主体的所有⼈脸都应该映射到相似的特征向量。
•⼈脸匹配。在⼈脸匹配构建模块中,两个模板会进⾏⽐较,从⽽得到⼀个相似度分数,该分数给出了两者属于同⼀个主体的可能性。焙烧回转窑
个主体的可能性。
图 2:⼈脸识别的构建模块。
很多⼈认为⼈脸表征是⼈脸识别系统中最重要的组件,这也是本论⽂第⼆节所关注的重点。
图 3:(a)⼈脸检测器到的边界框。(b)和(c):对齐后的⼈脸和参考点。
卢卡纤维深度学习⽅法
卷积神经⽹络(CNN)是⼈脸识别⽅⾯最常⽤的⼀类深度学习⽅法。深度学习⽅法的主要优势是可⽤⼤量数据来训练,从⽽学到对训练数据中出现的变化情况稳健的⼈脸表征。这种⽅法不需要设计对不同类型的类内差异(⽐如光照、姿势、⾯部表情、年龄等)稳健的特定特征,⽽是可以从训练数据中学到它们。深度学习⽅法的主要短板是它们需要使⽤⾮常⼤的数据集来训练,⽽且这些数据集中需要包含⾜够的变化,从⽽可以泛化到未曾见过的样本上。幸运的是,⼀些包含⾃然⼈脸图像的⼤规模⼈脸数据集已被公开 [9-15],可被⽤来训练 CNN 模型。除了学习判别特征,神经⽹络还可以降维,并可被训练成分类器或使⽤度量学习⽅法。CNN 被认为是端到端可训练的系统,⽆需与任何其它特定⽅法结合。
⽤于⼈脸识别的 CNN 模型可以使⽤不同的⽅法来训练。其中之⼀是将该问题当作是⼀个分类问题,训练集中的每个主体都对应⼀个类别。训练完之后,可以通过去除分类层并将之前层的特征⽤作⼈脸表征⽽将该模型⽤于识别不存在于训练集中的主体 [99]。在深度学习⽂献中,这些特征通常被称为瓶颈特征(bottleneck features)。在这第⼀个训练阶段之后,该模型可以使⽤其它技术来进⼀步训练,以为⽬标应⽤优化瓶颈特征(⽐如使⽤联合贝叶斯 [9] 或使⽤⼀个不同的损失函数来微调该 CNN 模型 [10])。另⼀种学习⼈脸表征的常⽤⽅法是通过优化配对的⼈脸 [100,101] 或⼈脸三元组[102] 之间的距离度量来直接学习瓶颈特征。
使⽤神经⽹络来做⼈脸识别并不是什么新思想。1997 年就有研究者为⼈脸检测、眼部定位和⼈脸识别
提出了⼀种名为「基于概率决策的神经⽹络(PBDNN)」[103] 的早期⽅法。这种⼈脸识别 PDBNN 被分成了每⼀个训练主体⼀个全连接⼦⽹络,以降低隐藏单元的数量和避免过拟合。研究者使⽤密度和边特征分别训练了两个 PBDNN,然后将它们的输出组合起来得到最终分类决定。另⼀种早期⽅法 [104] 则组合使⽤了⾃组织映射(SOM)和卷积神经⽹络。⾃组织映射[105] 是⼀类以⽆监督⽅式训练的神经⽹络,可将输⼊数据映射到更低维的空间,同时也能保留输⼊空间的拓扑性质(即在原始空间中相近的输⼊在输出空间中也相近)。注意,这两种早期⽅法都不是以端到端的⽅式训练的([103] 中使⽤了边特征,[104] 中使⽤了 SOM),⽽且提出的神经⽹络架构也都很浅。[100] 中提出了⼀种端到端的⼈脸识别CNN。这种⽅法使⽤了⼀种孪⽣式架构,并使⽤了⼀个对⽐损失函数 [106] 来进⾏训练。这个对⽐损失使⽤了⼀种度量学习流程,其⽬标是最⼩化对应同⼀主体的特征向量对之间的距离,同时最⼤化对应不同主体的特征向量对之间的距离。该⽅法中使⽤的 CNN 架构也很浅,且训练数据集也较⼩。
上⾯提到的⽅法都未能取得突破性的成果,主要原因是使⽤了能⼒不⾜的⽹络,且训练时能⽤的数据集也相对较⼩。直到这些模型得到扩展并使⽤⼤量数据 [107] 训练后,⽤于⼈脸识别的⾸个深度学习⽅法 [99,9] 才达到了当前最佳⽔平。尤其值得⼀提的是 Facebook 的 DeepFace [99],这是最早的⽤于⼈脸识别的 CNN ⽅法之⼀,其使⽤了⼀个能⼒很强的模型,在 LFW 基准上实现了 97.35% 的准确度,将之前最佳表现的错误率降低了 27%。研究者使⽤ softmax 损失和⼀个包含 440 万张⼈脸(来
⾃ 4030 个主体)的数据集训练了⼀个 CNN。本论⽂有两个全新的贡献:(1)⼀个基于明确的 3D ⼈脸建模的⾼效的⼈脸对齐系统;(2)⼀个包含局部连接的层的 CNN 架构 [108,109],这些层不同于常规的卷积层,可以从图像中的每个区域学到不同的特征。在那同时,DeepID 系统 [9] 通过在图块(patch)上训练 60 个不同的 CNN ⽽得到了相近的结果,这些图块包含⼗个区域、三种⽐例以及 RGB 或灰度通道。在测试阶段,会从每个图块提取出 160 个瓶颈特征,加上其⽔平翻转后的情况,可形成⼀个 19200 维的特征向量(160×2×60)。类似于 [99],新提出的 CNN 架构也使⽤了局部连接的层。其验证结果是通过在这种由 CNN 提取出的 19200 维特征向量上训练⼀个联合贝叶斯分类器 [48] 得到的。训练该系统所使⽤的数据集包含 202599 张⼈脸图像,来⾃ 10177 位名⼈ [9]。
对于基于 CNN 的⼈脸识别⽅法,影响准确度的因素主要有三个:训练数据、CNN 架构和损失函数。因为在⼤多数深度学习应⽤中,都需要⼤训练集来防⽌过拟合。⼀般⽽⾔,为分类任务训练的 CNN 的准确度会随每类的样本数量的增长⽽提升。这是因为当类内差异更多时,CNN 模型能够学习到更稳健的特征。但是,对于⼈脸识别,我们感兴趣的是提取出能够泛化到训练集中未曾出现过的主体上的特征。因此,⽤于⼈脸识别的数据集还需要包含⼤量主体,这样模型也能学习到更多类间差异。[110] 研究了数据集中主体的数量对⼈脸识别准确度的影响。在这项研究中,⾸先以降序形式按照每个主体的图像数量对⼀个⼤数据集进⾏了排序。然后,研究者通过逐渐增⼤主体数量⽽使⽤训练数据的不同⼦集训练了⼀个 CNN。当使⽤了图像数量最多的 10000 个主体进⾏训练时,得到的准确度是最⾼的。
增加更多主体会降低准确度,因为每个额外主体可⽤的图像⾮常少。另⼀项研究 [111] 研究了更宽度的数据集更好,还是更深度的数据集更好(如果⼀个数据集包含更多主体,则认为它更宽;类似地,如果每个主体包含的图像更多,则认为它更深)。这项研究总结到:如果图像数量相等,则更宽的数据集能得到更好的准确度。研究者认为这是因为更宽度的数据集包含更多类
究总结到:如果图像数量相等,则更宽的数据集能得到更好的准确度。研究者认为这是因为更宽度的数据集包含更多类间差异,因⽽能更好地泛化到未曾见过的主体上。表 1 展⽰了某些最常⽤于训练⼈脸识别 CNN 的公开数据集。
数据销毁
表 1:公开的⼤规模⼈脸数据集。
⽤于⼈脸识别的 CNN 架构从那些在 ImageNet ⼤规模视觉识别挑战赛(ILSVRC)上表现优异的架构上取得了很多灵感。举个例⼦,[11] 中使⽤了⼀个带有 16 层的 VGG ⽹络 [112] 版本,[10] 中则使⽤了⼀个相似但更⼩的⽹络。[102] 中探索了两种不同类型的 CNN 架构:VGG 风格的⽹络 [112] 和 GoogleNet 风格的⽹络 [113]。即使这两种⽹络实现了相当的准确度,但 GoogleNet 风格的⽹络的参数数量少 20 倍。更近段时间,残差⽹络(ResNet)[114] 已经成为了很多⽬标识别任务的最受偏爱的选择,其中包括⼈脸识别 [115-121]。ResNet 的主要创新点是引⼊了⼀种使⽤捷径连接的构建模块来学习残差映射,如图 7 所⽰。捷径连接的使⽤能让研究者训练更深度的架构,因为它们有助于跨层的
信息流动。[121] 对不同的 CNN 架构进⾏了全⾯的研究。在准确度、速度和模型⼤⼩之间的最佳权衡是使⽤带有⼀个残差模块(类似于 [122] 中提出的那种)的 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] 中提出的中⼼损失(centre loss)。中⼼损失的⽬标是最⼩化瓶颈特征与它们对应类别的中⼼之间的距离。通过使⽤ softmax 损失和中⼼损失进⾏联合训练,结果表明 CNN 学习到的特征能够有效增⼤类间差异(softmax 损失)和降低类内个体差异(中⼼损失)。相⽐于对⽐损失和三元组损失,中⼼损失的优点是更⾼效和更容易实现,因为它不需要在训练过程中构建配对或三元组。另⼀种相关的度量学习⽅法是 [134] 中提出的范围损失(range loss),这是为改善使⽤不平衡数据集的训练⽽提出的。范围损失有两个组件。类内的损失组件是最⼩化同⼀类样本之间的 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]
更容易实现和优化。在这项⼯作中,除了归⼀化权重向量,特征向量也如 [115] 中⼀样进⾏了归⼀化和⽐例调整。[121]中提出了另⼀种加性余量,它既有 [119,120] 那样的优点,还有更好的⼏何解释⽅式,因为这个余量是加在⾓度上的,⽽不是余弦上。表 2 总结了有余量的 softmax 损失的不同变体的决策边界。这些⽅法是⼈脸识别领域的当前最佳。
图 8:在两个类别之间的决策边界中引⼊⼀个余量 m 的效果。(a)softmax 损失,(b)有余量的 softmax 损失。
表 2:有余量的 softmax 损失的不同变体的决策边界。注意这些决策边界针对的是⼆元分类案例中的类别 1。
本⽂为机器之⼼编译,转载请联系本获得授权。

本文发布于:2023-06-05 00:42:33,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/126483.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:训练   损失   识别
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图