自20世纪70年代以来,人脸识别已成为计算机视觉和生物识别领域研究最多的课题之一。基于人工设计的特征和传统机器学习技术的传统方法最近已被使用非常大的数据集训练的深度神经网络所取代。在本文中,我们对流行的人脸识别方法进行了全面的最新文献总结,包括传统方法(基于几何、整体、基于特征和混合方法)以及深入研究方法。引言人脸识别是指能够识别或验证图像或视频中主体身份的技术。***人脸识别算法诞生于七十年代初期[1,2]。从那时起,它们的准确性得到了显着提高,现在人们通常更喜欢面部识别,而不是传统上认为更强大的生物识别方法,如指纹或虹膜识别[3]。面部识别比其他生物识别方法更受欢迎的一大区别是面部识别本质上是非侵入性的。例如,指纹识别需要用户将手指按在传感器上,虹膜识别需要用户非常靠近摄像头,语音识别需要用户大声说话。相比之下,现代人脸识别系统只要求用户在摄像头的视野内(假设他们也与摄像头保持合理的距离)。这使得面部识别成为最人性化的生物识别方法。这也意味着面部识别的潜在应用更广泛,因为它也可以部署在用户不希望与系统合作的环境中,例如监控系统。面部识别的其他常见应用包括访问控制、欺诈检测、身份验证和社交媒体。当部署在不受约束的环境中时,由于现实世界中人脸图像表示的高度可变性(此类人脸图像通常被称为野外人脸),因此人脸识别也是最具挑战性的生物识别之一方法。面部图像中的变量包括头部姿势、年龄、遮挡、照明条件和面部表情。图1给出了这些情况的示例。图1:在自然人脸图像中发现的典型变化。(a)头部姿势,(b)年龄,(c)光照,(d)面部表情,(e)遮挡。多年来,面部识别技术发生了重大变化。传统方法依赖于手工特征(例如边缘和纹理描述符)和机器学习技术(例如主成分分析、线性判别分析或支持向量机)的组合。在不受约束的环境中人工设计对不同变化具有鲁棒性的特征是困难的,这导致过去的研究人员专注于针对每种变化类型的专用方法,例如可以应对不同年龄的方法[4,5],可以处理不同的姿势[6],可以处理不同光照条件的方法[7,8]等。最近,传统的人脸识别方法已被基于卷积神经网络(CNN)的深度学习方法所取代。深度学习方法的主要优点是它们可以在非常大的数据集上进行训练,从而学习表征这些数据的最佳特征。互联网上大量可用的自然人脸图像使研究人员能够收集大规模的人脸数据集[9-15],其中包含现实世界中的各种变化。使用这些数据集训练的基于CNN的人脸识别方法已经取得了非常高的准确性,因为它们能够学习能够应对现实世界变化的人脸图像中的鲁棒特征。此外,深度学习方法在计算机视觉中的日益普及也加速了人脸识别研究的发展,因为CNN也被用于解决许多其他计算机视觉任务,例如对象检测和识别、分割、光学字符识别、面部表情分析、年龄估计等。面部识别系统通常由以下构建块组成:面部检测。人脸检测器用于查找图像中人脸的位置,如果有人脸,则返回包含每张人脸的边界框的坐标。如图3a所示。面部对齐。面部对齐的目标是使用位于图像中固定位置的一组参考点来缩放和裁剪面部图像。这个过程通常涉及使用特征点检测器来找到一组面部标志,或者在简单的2D对齐情况下,找到参考点的最佳仿射变换。图3b和3c显示了使用同一组参考点对齐的两个面部图像。更复杂的3D对齐算法(如[16])也可以实现人脸正面化,即将人脸的姿态调整为面向前方。人脸表示。在人脸表示阶段,将人脸图像的像素值转化为紧凑的、可区分的特征向量,也称为模板。理想情况下,同一对象的所有面孔都应映射到相似的特征向量。人脸匹配。在人脸匹配构建块中,比较两个模板以获得相似度分数,该分数给出它们属于同一主题的可能性。图2:人脸识别的构建模块。很多人认为人脸表示是人脸识别系统中最重要的组成部分,这也是本文第二部分的重点。图3:(a)人脸检测器发现的边界框。(b)和(c):对齐的面和参考点。深度学习方法卷积神经网络(CNN)是人脸识别中最常用的一类深度学习方法。深度学习方法的主要优点是它们可以用大量数据进行训练,因此它们可以学习对训练数据中发生的变化具有鲁棒性的面部表示。这种方法不需要设计对不同类型的类内方差(例如,光照、姿势、面部表情、年龄等)具有鲁棒性的特定特征,而是可以从训练数据中学习它们。深度学习方法的主要缺点是它们需要使用非常大的数据集进行训练,这些数据集包含足够多的变化以推广到看不见的样本。幸运的是,一些包含自然人脸图像的大规模人脸数据集已经公开可用[9-15],可用于训练CNN模型。除了学习判别特征外,神经网络还可以降维,可以作为分类器或使用度量学习方法进行训练。CNN被认为是端到端的可训练系统,不需要与任何其他特定方法相结合。可以使用不同的方法训练用于人脸识别的CNN模型。其中之一是将问题视为分类问题,训练集中的每个主题对应一个类别。训练后,该模型可用于通过删除分类层并使用先前层的特征作为面部表示来识别训练集中不存在的对象[99]。在深度学习文献中,这些特征通常被称为瓶颈特征。在第一个训练阶段之后,可以使用其他技术进一步训练模型以优化目标应用程序的瓶颈特征(例如使用联合贝叶斯[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]通过在包含十个区域、三个尺度和RGB或灰度通道的块上训练60个不同的CNN,取得了类似的结果。在测试阶段,从每个瓦片中提取160个瓶颈特征,加上它的水平翻转,可以形成一个19200维的特征向量(160×2×60)。与[99]类似,新提出的CNN架构也使用局部连接层。验证结果是通过在CNN提取的这个19200维特征向量上训练联合贝叶斯分类器[48]获得的。用于训练系统的数据集包含来自10,177名名人的202,599张人脸图像[9]。对于基于CNN的人脸识别方法,影响准确率的因素主要有三个:训练数据、CNN架构和损失函数。因为在大多数深度学习应用中,都需要大量的训练集来防止过拟合。一般来说,为分类任务训练的CNN的准确性随着每个类别的样本数量的增加而增加。这是因为当存在更多类内差异时,CNN模型能够学习到更稳健的特征。然而,对于人脸识别,我们感兴趣的是提取可推广到训练集中未见对象的特征。因此,用于人脸识别的数据集也需要包含大量的受试者,这样模型也能学到更多的类间差异。[110]研究了数据集中受试者数量对人脸识别准确性的影响。在这项研究中,首先按每个主题的图像数量降序对大型数据集进行排序。然后,研究人员通过逐渐增加受试者数量,使用训练数据的不同子集训练了一个CNN。当使用图像数量最多的10,000个对象进行训练时,得到的准确度最好。添加更多主题会降低准确性,因为每个额外主题的可用图像很少。另一项研究[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架构进行了全面研究。使用带有残差模块的100层ResNet(类似于[122]中提出的)获得精度、速度和模型大小之间的最佳权衡。图7:[114]中提出的原始残差模块。训练CNN方法的损失函数的选择一直是最近人脸识别研究最活跃的领域。尽管使用softmax损失训练的CNN非常成功[99、9、10、123],但一些研究人员认为,使用这种损失函数并不能很好地泛化到训练集中不存在的对象。这是因为softmaxloss有助于学习增加类间差异的特征(这样可以在训练集中区分不同的类),但不一定减少类内差异。研究人员想出了一些方法来缓解这个问题。优化瓶颈特征的一种简单方法是使用判别子空间方法,例如联合贝叶斯[48],正如[9,124,125,126,10,127]中所做的那样。另一种方法是使用度量学习。例如,[100,101]使用成对的对比损失作为唯一的监督信号,[124-126]结合了分类损失。人脸识别最常用的度量学习方法是三元组损失函数[128],它在[102]中首次用于人脸识别任务。tripletloss的目标是将正例对之间的距离和负例对之间的距离分开一定的距离。从数学上讲,对于每个三元组i,需要满足以下条件[102]:其中x_a是锚图像,x_p是同一主题的图像,x_n是不同主题的另一幅图像,f是学习的模型映射关系α在正对和负对之间的距离之间施加了一个余量。在实践中,使用三元组损失训练的CNN收敛速度比softmax慢,因为需要大量的三元组(或对比损失中的对)来覆盖整个训练集。虽然这个问题可以通过在训练阶段选择困难的三元组(即违反边界条件的三元组)来缓解[102],但通常的做法是在第一个训练阶段和两个训练阶段使用softmax损失进行训练使用三元组损失来调整瓶颈特征[11,129,130]。研究人员提出了三重态损失的一些变体。例如,[129]使用点积作为相似性度量而不是欧氏距离;[130]提出了概率三元组损失;[131,132]提出了三元组损失的修改版本,它也最小化了正分和负分分布的标准差。另一个学习判别特征的损失函数是[133]中提出的中心损失。中心损失的目标是最小化瓶颈特征与其对应类的中心之间的距离。通过使用softmaxloss和centerloss联合训练,结果表明CNN学习到的特征可以有效地增加类间差异(softmaxloss)和减小类内个体差异(centerloss)。与contrastiveloss和tripletloss相比,centerloss具有更高效且更易于实现的优势,因为它不需要在训练期间构建配对或三元组。另一种相关的度量学习方法是[134]中提出的范围损失,它被提议用于改进不平衡数据集的训练。范围损失有两个组成部分。类内损失分量最小化同一类样本之间的k-***距离,而类间损失分量最大化每个训练批次中最近的两个类中心之间的距离。通过使用这些极端情况,范围损失对每个类别使用相同的信息,而不管每个类别中有多少样本可用。与中心损失类似,范围损失需要与softmax损失相结合,以避免损失降为零[133]。当组合不同的损失函数时,很难在每一项之间找到正确的平衡。最近,研究人员提出了几种修改softmax损失的方法,使其在不与其他损失相结合的情况下也能学习到判别特征。一种已被证明可以提高瓶颈特征判别力的方法是特征归一化[115,118]。例如,[115]提出归一化特征具有单位L2范数,[118]提出归一化特征具有零均值和单位方差。一种成功的方法在softmax损失[135]中的每个类别之间的决策边界中引入了一个余量。为简单起见,我们介绍了使用softmax损失的二元分类的情况。在这种情况下,每个类之间的决策边界(如果偏差为零)由下式给出:其中x是特征向量,W_1和W_2是每个类对应的权重,θ_1和θ_2是和W_2之间的夹角。通过在上式中引入一个乘法边距,可以使这两个决策边界更加严格:如图8所示,这个边距可以有效地增加类之间的区分度和各自类内的紧凑度。根据该余量如何整合到损失中,研究人员提出了几种可用的方法[116,119-121]。例如,在[116]中,权重向量被归一化为具有单位范数,使得决策边界仅取决于角度θ_1和θ_2。在[119,120]中提出了加性余弦残差。相加边距比乘法边距更容易实现和优化[135,116]。在这项工作中,除了对权重向量进行归一化之外,特征向量也像[115]中那样被归一化和缩放。[121]中提出了另一种附加边距,它具有[119,120]的优点,但也有更好的几何解释,因为这个边距被添加到角度而不是余弦。表2总结了带有边际的softmax损失的不同变体的决策边界。这些方法是目前人脸识别领域最先进的方法。图8:在两个类之间的决策边界中引入边距m的效果。(a)softmaxloss,(b)softmaxlosswithmargin。表2:带边距的softmax损失的不同变体的决策边界。请注意,这些决策边界适用于二元分类情况下的第1类。【本文为栏目组织《机器之心》微信公众号《机器之心(id:almosthuman2014)》原文翻译】点击此处查看作者更多好文
