英语原文共 10 页
FaceNet:用于人脸识别和聚类的统一嵌入
摘要
尽管人脸识别领域最近取得了重大进展[10,14,15,17],但有效地大规模实施人脸验证和识别对目前的方法来说仍是一个严峻的挑战。在本文中,我们提出了一个系统,称为FaceNet,它直接学习从人脸图像到一个紧凑的欧几里德空间的映射,其中距离直接对应于人脸相似性的度量。一旦产生了这个空间,像人脸识别、验证和聚类这样的任务就可以很容易地使用以FaceNet嵌入为fea- ture向量的标准技术来实现。
我们的方法使用经过训练的深度卷积网络直接优化嵌入本身,而不是像以前的深度学习方法那样使用一个即时瓶颈层。为了训练,我们使用一种新的在线三重挖掘方法生成的大致对齐匹配/不匹配的三联人脸贴片。我们的方法的好处是更具代表性的效率:我们实现了最先进的人脸识别性能,每个人脸只使用128字节。
在广泛应用的野外标定人脸(LFW)数据集上,系统实现了99.63%的新记录精度。在YouTube Faces DB网站上,这个数字达到了95.12%。在两个数据集上,我们的系统与最好的发布结果[15]相比,错误率降低了30%。
我们还介绍了谐波嵌入和谐波三重损耗的概念,它们描述了不同的人脸嵌入(由不同的网络产生)彼此兼容并允许彼此之间直接通信的不同版本。
图1所示。照度和位姿不变性。姿态和光照是人脸识别中一个长期存在的问题。这张图显示了在不同的姿势和日光灯组合下,相同和不同人的对脸之间的FaceNet的输出距离。距离为0。0意味着面是相同的,4.0对应于相反的光谱,两个不同的恒等式。可以看到,阈值为1.1可以正确地对每一对进行分类。
1.介绍
本文提出了一个统一的人脸真伪识别、人脸识别和人脸聚类的系统。我们的方法是基于使用深度卷积网络学习每幅图像的欧氏嵌入。对网络进行训练,使得嵌入空间中L2距离的平方直接对应于人脸相似性:同一个人的脸距离较小,不同人的脸距离较大。
一旦这种嵌入被生成,那么上述任务就变得简单明了:人脸验证只需要对两个嵌入之间的距离进行阈值化;识别成为一个k-NN分类问题;聚类可以采用k-means或聚集聚类等现有技术来实现。
以往基于深度网络的人脸识别方法都是先在一组已知的人脸身份上训练一个分类层[15,17],然后以一个中间的瓶颈层作为表示,将识别推广到训练中使用的一组身份之外。这种方法的缺点是它的间接性和低效率:人们必须希望瓶颈表示能够很好地推广到新面孔;通过使用瓶颈层,每个表面的压痕尺寸通常很大(1000倍)。最近[15]的一些工作使用主成分分析(PCA)减少了这种二向性,但这是一个线性变换,可以很容易地在网络的一层学习。
与这些方法相比,FaceNet直接使用基于LMNN[19]的基于三重损耗函数将其输出训练为紧凑的128-D嵌入。我们的三联图分别是两个匹配的脸的缩略图和一个不匹配的脸的缩略图,而丢失的目的是在一定距离内将正对和负对分开。缩略图是脸部区域的紧密修剪,除了缩放和平移,没有2D或3D对齐。
选择使用哪一个三联对于取得好的成绩是非常重要的,受课程学习[1]的启发,我们提出了一种新颖的在线反例挖掘策略,该策略保证了随着网络训练的进行,三联的难度不断增加。为了提高聚类精度,我们还探索了硬阳性挖掘技术,该技术鼓励球形聚类用于嵌入单个人。
我们的方法可以处理难以置信的可变性,如图1所示。所示为PIE[13]中的图像对,这些图像对以前被认为是面部验证系统非常困难的。
本文其余部分的概述如下:在第2节中,我们回顾了这一领域的文献;第3.1节定义了三元组丢失,第3.2节描述了我们新的三元组选择和训练过程;在3.3节中,我们将描述所使用的模型体系结构。最后在第四节和第五节中,我们给出了一些嵌入信息的定量结果,并定性地探讨了一些聚类结果。
2.相关工作
与最近其他使用深度网络的研究类似[15,17],我们的方法是一种纯粹的数据驱动方法,直接从人脸像素中学习其表示。我们不是使用工程特征,而是使用一个大的有标签的人脸数据集来获得适当的姿态、光照和其他变化条件的方差。
在本文中,我们探讨了两种不同的深度网络架构,它们最近在计算机视觉社区中获得了巨大的成功。两者都是深度卷积网络[8,11]。第一个架构基于Zeileramp;Fergus[22]模型,该模型由多个交错的卷积层、非线性激活层、局部响应规范化层和最大池化层组成。我们另外添加几个1times;1times;维卷积层受[9]的工作。第二个架构基于Szegedy等人的Inception模型,该模型最近被用作ImageNet 2014[16]的获胜方法。这些网络使用混合层并行运行几个不同的卷积层和池层,并连接它们的响应。我们发现,这些模型可以将参数数量减少多达20倍,并且有可能减少类似性能所需的失败次数。
有大量的人脸验证和识别工作。回顾它超出了本文的范围,所以我们将只简要讨论最近最相关的工作。
[15,17,23]的作品都采用了一个多阶段的复杂系统,将深度卷积网络的输出与PCA进行降维,SVM进行分类。
Zhenyao等人的[23]利用一个深度网络将人脸“扭曲”成一个典型的正面视图,然后学习CNN将每张脸分类为属于一个已知身份。为了进行人脸验证,将网络输出中的PCA与SVMs集合结合使用。
Taigman等人[17]提出了一种多阶段方法,将人脸对齐到一个通用的三维形状模型中。一个多类网络被训练来执行超过4000个身份的人脸识别任务。作者还用所谓的Siamese网络进行了实验,他们直接优化了两个面部特征之间的l1距离。它们在LFW(97.35%)上的最佳性能源于使用不同对齐和颜色通道的三个网络的集成。预测的距离(非线性支持向量机预测基于chi;2内核)的网络使用非线性支持向量机相结合。
Sun等人[14,15]提出了一种紧凑且相对便宜的计算网络。他们使用了25个这样的网络,每个网络在不同的面部贴片上运行。对于他们在LFW(99.47%[15])上的最终表现,作者结合了50个回答(常规和翻转)。采用主成分分析和有效对应嵌入空间线性变换的联合贝叶斯模型[2]。他们的方法不需要显式的2D/3D对齐。该网络采用分类和验证损失相结合的方法进行训练。验证损失类似于我们使用的三元组损失[12,19],它最小化了相同身份的人脸之间的l2距离,并在不同身份的人脸之间建立了一个边界。主要的区别是,只有对图像进行比较,而三元组丢失鼓励了相对距离约束。
Wang等人在使用[18]对图像进行语义和视觉相似性排序时,也发现了类似的损失。
图2。模型结构。我们的网络由批处理输入层和深度CNN组成,L2归一化后得到人脸嵌入。接下来是训练中的三连音丢失。
图3。三重损失使锚与正极之间的距离最小化,两者具有相同的恒等式,并使锚与不同恒等式的负极之间的距离最大化
3.方法
FaceNet使用深度卷积网络。我们讨论了两种不同的核心架构:Zeileramp;Fergus[22]风格的网络和最近出现的[16]类型的网络。这些网络的详细情况见第3.3节。给出模型的详细信息,并将其视为一个黑盒子(参见图2),我们的方法最重要的部分在于在整个系统的端到端学习中。为此我们利用三重损失直接反映我们想要的实现了对人脸的验证、识别和聚类。也就是说,我们努力从图像中嵌入f(x),x进入特征空间,使得距离的平方所有面之间,独立于成像条件,的相同的恒等式较小,而来自不同恒等式的两幅人脸图像之间的平方距离较大。虽然我们没有直接与其他损失进行比较,正片叠底法,正片叠底法,正片叠底法,正片叠底法,正片叠底法,正片叠底法在[14]式(2)中,我们认为三重态损失更适合人脸验证。动机是失去
从[14]开始,鼓励将同一标识的所有面投影到嵌入空间中的一个点上。的然而,三重态损耗试图在每一种状态之间强制留出一个裕度从一个人到其他所有人的一对面孔。这允许一个恒等式的面存在于一个流形上仍然保持着距离,因此对他人具有辨别能力身份。下一节将介绍这种三重态的损耗及其方式它可以大规模有效地学习。
3.1三联体的损失
嵌入由f(x)isin;R表示d。它将图像x嵌入到d维欧氏空间中。此外,我们将此嵌入限制为住在d维超球面,即||f(x)|| = 1。这个损失在最近邻分类的背景下,[19]的动机阳离子。这里我们要确保图像(锚)一个特定的人更接近所有其他的图像(积极的)和任何x图像相比都是相同的(负面)任何其他的人。如图3所示。因此我们想要
(1)
(2)
其中alpha;是一个利润率之间执行积极的和消极的对。T是训练集中所有可能的三元组的集合,基数为N。
被最小化的损失是L =
(3)
生成所有可能的三元组将生成许多容易满足的三元组(即满足式(1)中的约束)。这些三元组对训练没有帮助,导致收敛速度变慢,因为它们仍然会通过网络。选择困难活跃的三元组是至关重要的,因此可以帮助改进模型。下一节将讨论三联体选择的不同方法。
3.2三个一组的选择
为了保证快速收敛,选取违反式(1)三联体约束的三联体是至关重要的,给定,我们希望选择一个,得到argmax以及同样的,得到argmax。
计算argmin和argmax是不可行的
此外,这可能会导致糟糕的训练,因为错误的标签和糟糕的图像将主导硬的正面和负面。有两个明显的选择可以避免这个问题:
bull;每n步离线生成三胞胎,使用最新的网络检查点,计算数据子集上的argmin和argmax。
bull;在线生成三胞胎。这可以通过从ami -batch中选择硬的正面/负面范例来实现。
在这里,我们将重点放在在线生成上,并按照数千个示例的顺序使用大型迷你批,并且只在一个迷你批中计算argmin和argmax。
要有锚定正距离的有意义的表示,需要确保在每个小批中出现任意一个标识的最小数量的示例。在我们的实验中,我们对训练数据进行抽样
这样,每个小批的每个身份大约选择40个面孔。此外,随机抽样的负面面孔被添加到每个小批。
我们没有选择最难的正面,而是在一个小批中使用所有锚定的正面对,同时仍然选择最难的负面。我们没有对小批量内的硬锚-正对和所有锚-正对进行并排比较,但我们在实践中发现,所有锚-正方法在训练开始时更稳定,收敛速度略快。
我们还探索了三胞胎的离线生成与在线生成的结合,这可能允许使用更小的批量,但实验尚未得出结论。
在实践中,选择最困难的底片可能会在早期的训练中导致糟糕的局部极小值,特别是它可能导致一个崩溃的模型(即f(x) = 0)。为了减轻这种情况,选择符合lt;的是很有帮助的。
我们称这些消极的范例为半硬的,因为它们比积极的范例离锚更远,但是仍然是硬的,因为平方距离接近锚-正距离。这些底片躺在alpha;。
如前所述,正确的三元组选择对于快速收敛是至关重要的。一方面,我们希望使用小批量的方法,因为在随机梯度下降(SGD)[20]过程中,这些方法可以提高收敛性。另一方面,实现细节使成批的数十到数百个范例更加有效。然而,与批大小有关的主要约束是我们从小批中选择硬相关三胞胎的方式。在大多数实验中,我们使用大约1800个样本的批量大小。
3.3深卷积网络
在我们所有的实验中,我们使用随机梯度下降(SGD)和标准的backprop[8,11]和AdaGrad[5]对CNN进行训练。在大多数实验中,我们从0.05的学习率开始,我们将其降低以最终确定模型。这些模型是随机初始化的,类似于[16],并在CPU集群上训练1000到2000小时。在500小时的训练后,损失的减少(和准确性的增加)急剧下降,但是额外的训练仍然可以显著提高性能。保证金alpha;设置为0.2。
我们使用了两种类型的体系结构,并在实验部分更详细地探讨了它们的优缺点。它们的实际差异在于参数的差异和故障。最好的模型可能会有所不同应用程序。例如,在数据中心中运行的模型可以有很多参数,并且需要大量的失败,而在移动电话上运行的模型需要很少的参数,这样它就可以装入内存。所有的模型都采用线性单元作为非线性激活函数。
表1。NN1。这张表展示了我们基于zeiler和fergus[22]的模型的结构,该模型的卷积为1times;1,灵感来自[9]。输入和输出大小用rowstimes;colstimes;#filter描述。内核指定为rowstimes;cols, stride, maxout[6]池大小为p = 2。
第一类如表1所示,在Zeileramp;Fergus[22]架构的标准卷积层之间增加了1times;1times;d卷积层,如[9]所示,模型深度为22层。它总共有1.4亿个参数,每幅图像需要大约16亿次拖放。
我们使用的第二类是基于GoogLeNet风格的Inception模型[16]。这些模型具有20times;更少的参数(大约6.6M-7.5M)和多达5times;更少的触发器(在500 -1.6 b之间)。其中一些模型的尺寸(深度和过滤器的数量)大大减小,因此可以在移动电话上运行。其中,NNS1有26M个参数,每张图像只需要2.2 m次拖放。
另一个是NNS2,它有430万参数和20万次触发器。
表2详细描述了我们最大的网络NN2。NN3在架构上是相同的,但是输入大小减少为160x160。NN4的输入大小只有96x96,因此大大降低了CPU需求(NN2的CPU需求是1.6B,而CPU需求是285M)。除了减小了输入大小之外,它还没有在更高的层中使用5x5卷积,因为接收域已经太小了。一般来说,我们发现5x5的卷积可以在整个过程中去除,而精度只会有微小的下降。图4比较了我们所
资料编号:[5217]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。