Advertisement

FaceNet: A Unified Embedding for Face Recognition and Clustering

阅读量:

论文地址:https://arxiv.org/abs/1503.03832

摘要

尽管已有研究表明,在人脸识别领域已取得显著成就[10,14,15,17],但在实际应用中实现大规模的人脸验证与识别仍面临诸多难题。本研究提出了一种名为FaceNet的新系统设计。该系统能够将人脸图像映射到Euclidean空间(人脸图像→空间向量),其中两个空间向量之间的距离程度反映两张人脸图像之间的相似性水平。通过建立这一空间映射关系,则可利用预先训练好的深度卷积网络架构来优化特征向量表示(基于不同损失函数)。具体而言,在训练过程中我们采用了三元组损失函数原理:首先通过随机采样三元组组合以建立正样本与负样本的关系;随后结合困难样本筛选策略动态平衡各类样本间的难易程度;最终实现了对特征向量表示的有效优化。该方法较传统基于瓶颈层优化的方法具有更高的收敛效率与更好的泛化性能表现:每张人脸仅占用约128维向量空间即可达到国际先进水平的人脸识别效果[9])。实验结果表明:在LFW数据集上实现了99.63%的高准确率;在YouTube数据集上则达到了95.12%的人脸识别准确率;相较于现有最优方法,在两个测试数据集上的错误率均降低了约30%[15](具体数值参考文献[15])。此外我们还引入了新型谐波嵌入概念与和谐波三元组损失函数框架:这些新型方法不仅能够实现跨不同网络生成的不同版本面嵌入之间的兼容性比较;还能够直接评估由不同网络生成的面嵌入之间的相似性差异度

1 引言

本文提出了一种统一的方法,可以用在人脸验证,人脸识别,人脸聚类任务中。我们的方法是利用深度卷积神经网络学习将图像映射到欧几里得空间(人脸图像->128维的空间向量)。训练网络使得在空间中,向量的L2距离平方表示了人脸的相似程度:同一个人的不同图像在空间中的距离很小,不同人的图像在空间中的距离很大。
一旦这个空间映射生成,上面提到的三个任务就变得很直接。人脸验证:通过设置两个向量之间距离的阈值,区分是否两张人脸图像是否属于同一个人。人脸识别:使用knn分类器。人脸聚类:使用k-means或agglomerative clustering等。
以前基于深度网络的人脸识别方法是在一个已知的人脸身份的数据集上训练分类层,然后采取卷积层的最后一层作为人脸的向量表示。这种间接方法是低效的:一是我们希望最后一层卷积层的特征表示能够表示一些新面孔,二是这个特征表示的尺寸通常非常大(通常1000维度)。最近的一些工作已经使用PCA降低维度,但这是一种线性变换,可以用一层网络轻松学习到
相比于传统的方法,FaceNet利用基于LMNN的三元组损失函数来训练,可以直接输出一个压缩后的128维度的特征向量。我们的三元组损失函数包含两张同一个人的图像和一张另外一个不同人的图像(anchor,positive,negative)。损失函数的目标是通过距离区分一对正样本和一个负样本。人脸的图像是紧密裁剪的人脸区域,除了执行缩放和平移外,没有经过2D和3D对齐。
选择使用哪个三元组对于性能非常重要,并且受[1]的启发,我们提出了一种新的在线负样本挖掘策略,可确保网络训练时,持续增加三元组难度。 为了提高聚类的准确性,我们还探索了困难正样本的挖掘技术。
如图1的图像。对于之前的人脸验证系统来说非常困难。但是我们的方法可以很容易处理。

在这里插入图片描述

图1. 光照和位姿不变性。姿态和光照是人脸识别中长期存在的问题。该图显示了FaceNet在不同的姿势和光照组合下对相同的面孔和不同的人之间的输出距离。距离0.0表示两张脸是相同的,4.0表示相反的光谱,两种不同的身份。可以看到,阈值为1.1将正确地对每一对进行分类。
本文其余部分的概述如下:在第2节中,我们回顾了这一领域的文献;3.1节定义了三元组的损失,3.2节描述了我们新的三个图像的选择和训练过程;在第3.3节中,我们描述了所使用的模型架构。最后,在第4节和第5节中,我们将展示一些嵌入的定量结果,并从定性的角度探讨一些聚类结果。

2 相关工作

与近期使用深度网络解决问题的方法相同[15,17],我们的方法也是靠纯数据驱动,深度网络直接从人脸图像的像素中学习特征表示。我们使用大量带标记的人脸数据集来获得姿态、光照和其他变化条件的不变性而不是其他工程特征。
在这篇文章中,我们探索两种不同的深度卷积神经网络结构,这两种结构近期在计算机视觉领域取得了很大成功。两者都是深度卷积网络[8,11]。第一个结构是基于ZFNet [22],该模型由多个交错卷积层,非线性激活,局部响应归一化和最大池化层组成。我们额外增加了一些1×1×d卷积层[9]。第二个结构是基于GoogLeNet,该模型获得了2014 ImageNet冠军[16]。该网络使用混合的层,并行运行几个不同的卷积层和池化层,并将它们的输出响应连接起来。 我们发现,这些模型可以将参数数量减少多达20倍,并有可能减少可比性能所需的FLOPS数量。
一些近期人脸验证和识别的工作如下:
[15,17,23]使用了多阶段的复杂系统,将深度卷积网络的输出与PCA相结合以降低维度,并用SVM分类。
[23]Zhenyao等人采用深层网络将脸部“扭曲”成典型的正面视图,然后学习一个CNN对已知身份的脸部进行分类。 对于人脸验证,将深度卷积网络的输出与PCA相结合以降低维度,并用SVM分类。
Taigman等人[17]提出了一种多阶段方法,将人脸对齐到一个通用的3D形状模型。一个经过训练的多类网络可以对超过4000个身份进行人脸识别。作者还试验了一个Siamese network,他们直接优化两个脸部特征之间的L1距离。 他们在LFW上的最佳表现(97.35%)源于三个网络的集成。网络预测的距离结合了非线性的SVM。
Sun等人[14,15]提出了一种紧凑且相对简单的计算网络。他们使用了25个这样的网络,每一个都在不同的人脸patch上操作。作者结合了50个操作(常规和翻转),最终他们在LFW上得到了很好的(99.47%[15])表现。同时使用PCA和联合贝叶斯模型[2],联合贝叶斯模型在嵌入空间中有效对应线性变换的。他们的方法不需要明确的2D/3D对齐。网络的训练结合了分类和验证损失。验证损失类似于我们使用的三元组损失[12,19],因为它最小化了相同身份的面之间的L_2距离,并在不同身份的面之间的距离施加了一个边界。主要的区别是只有两个图像进行比较,而三元组的损失导致了相对距离的限制。
我们这里使用的损失函数类似于Wang等人使用[18]对图像进行语义和视觉相似度排序损失函数。

3 方法

FaceNet基于深度卷积神经网络构建了其核心架构。涵盖ZFNet [22]与GoogLeNet [16]两种典型架构的设计。具体架构在3.3节中进行了详细阐述。

深入探讨模型的核心要素(如图2所示)。将其视为一个整体模块。系统采用端到端学习策略,在最终阶段实现了对输入数据的全面处理。通过三元组损失函数优化目标,在人脸验证、识别及聚类任务中追求最佳性能。

具体而言,在此过程中,图像x被映射至d维特征空间中。计算所有样本的人脸特征向量之间的距离平方。这一数值不受成像条件的影响。

在这里插入图片描述

如图2所示的模型架构

3.1 三元组损失

该模型旨在将输入图像x转换至d维欧氏空间中,并将其对应的特征向量表示为f(x)。在训练过程中,默认约束所有样本点位于d维超平面上(即满足||f(x)||_2=1),以防止特征向量出现过冲现象并保持稳定状态。这种设计灵感来源于最近邻分类方法[19]的研究成果。在该嵌入式空间中,我们期望对于同一个体的所有锚点样本x_i^a与其对应的正样本x_i^p之间的距离尽可能地缩小(即减少差异),同时与其他类别的负样本x_i^n之间的距离则应尽量增大(即提高区分度)。图3展示了不同类别的样本之间的对比关系

在这里插入图片描述

图3.三元组损失使anchor和positive之间的距离最小,两者具有相同的特性,并使anchor和negative之间的距离最大,两者具有不同的特性。
因此,我们有:
||f(x^a_i)−f(x^p_i)||^2_2+α<||f(x^a_i)−f(x^n_i)||^2_2
∀(f(x^a_i),f(x^p_i),f(x^n_i))∈T
这里α是正对和负对之间的边际,即相同人脸间的距离平方至少要比不同人脸间的距离平方小α。T是训练集中所有可能的三个图片(anchor,positive,negative)的集合,其基数为N
我们要最小化的损失函数是:
L=∑^N_{i=1}[||f(x^a_i)−f(x^p_i)||^2_2−||f(x^a_i)−f(x^n_i)||^2_2+α]
所有可能的三元组中,会有很多的三元组不学习也能满足上述条件(1)。这些三元组不产生任何损失,对训练没有贡献,会导致收敛速度减慢(因为它们仍然会通过网络)。 选择三元组是非常重要的,不能随机选择,正确选择可以有助于改善模型。 以下部分将讨论我们如何选择不同的三元组。

3.2 三元组选择

为了加速模型收敛,在公式(1)之外选取合适的三元组至关重要。这表明我们需要为每个 anchor 选择最难正样本 x^p_i 和最负样本 x^n_i ,使得其与 anchor 的正样本之间的欧氏距离最大化的同时 ,与 anchor 的负样本之间的欧氏距离最小化 。

3.3 深度卷积网络

在实验中我们采用了SGD以及传统反向传播算法[8 11]和AdaGrad[5]等方法进行CNN训练

在这里插入图片描述

表1.NN1。该表展示了基于Zeiler&Ferguson[22]的研究模型,在此基础之上参考了文献[9]中的1×1卷积设计。输入与输出的空间维度以行数(rows)、列数(cols)以及通道数(#f)进行描述。其中内核设计采用rows×cols尺寸,并结合stride策略,在maxout层设置池大小p=6。
第二类架构是基于GoogLeNet模块构建的缩减型网络结构,在此过程中生成两种不同的架构设计。其参数规模较之前降低了约19倍(减少至约5%),运算量也大幅下降至原始水平的五分之一。
具体而言,NNS1架构拥有约26 million个可训练参数,在处理每个图像时仅需约0.44 billion FLOPS计算量;而NNS2则拥有4.3 million个参数,在相同条件下每图像只需约80 million FLOPS运算量。
详细列出了NN3的最大网络架构信息。

在这里插入图片描述

表2.NN2. NN2基于Inception的设计细节. 该模型与文献[16]所述模型高度相似, 主要区别在于采用了L2范数而非取空间最大值(m), 即不是通过计算区域内像素的最大值来降维, 而是通过计算L2范数来实现降维效果. 除了最后采用平均池之外的所有池均采用3×3尺寸, 并与内部卷积模块并行工作. 如果池化操作导致维度降低, 则标记为p. 在此架构下, 输入规模分别为: NN3采用224x224分辨率; NN4则缩减至96x96分辨率, 这一设计大幅降低了运算需求(达到约285M FLOPS, 相比NN2高达1.6B参数). 在高层次结构中完全取代了5×5卷积核后, 模型依然能维持较高的识别精度(仅精度下降微乎其微). 图4对比展示了我们所提出的所有模型性能表现

在这里插入图片描述

本图对比了FLOPS与准确性之间的权衡关系。文章探讨了不同模型规模与架构在计算效率与精度上的权衡问题。特别强调了实验中重点分析的四个典型模型。

4 数据集和评估方法

我们针对四个不同的数据集进行了方法评估。除开LFW和YouTube Faces两个基准数据集之外,在进行人脸验证任务时我们也进行了评估工作。即,在给定一对待识别的人脸图像中我们采用平方L2距离阈值D(x_i,x_j)来判断其是否属于同一身份类别。对于所有属于同一身份类别的人脸对(i,j)我们将其归类到P_{same}集合中;而对于所有不属于同一身份类别的人脸对(i,j)则归类到P_{diff}集合中。

接下来我们将所有的true accepts集合定义如下:TA(d)=\{(i,j)\in P_{same} \mid D(x_i,x_j)\leq d\}其中d代表给定的 faces之间的距离阈值。

基于上述设定我们可以进一步定义基于给定人脸距离d的识别正确率VAL(d):

同时为了全面衡量系统性能我们还引入了错误拒绝率FAR(d)的概念:

其中\text{TP}(d)\text{FP}(d)\text{TN}(d)\text{FN}(d)分别代表真实正样本、假正样本、真实负样本以及假负样本的数量

VAL=∣TA∣∣Psame∣,FAR=∣FA∣∣Pdiff∣
4.1 Hold-out测试集

我们有一个约100万张的图像集合(记为Set A),其来自与我们的训练集具有相同分布的数据源,并且该集合中的个体身份互不重叠。为了评估Set A的整体表现特征,在其内部随机划分为5个互不相交的子集(每个子集包含200,000张图像)。随后,在每对来自不同子集的成千上万图像对中计算FAR和VAL指标,并计算这些指标在五次分割方案下的平均标准误(average standard error)。

4.2 人物照片

这种测试数据集具有一致性特征,并且已经经过人工标注以确保准确性。它包含三个不同的人物相册集合,并总计大约12,000张图片。我们系统地计算每一对图像的False Acceptance Rate(FAR)和Validation Ratio(VAL)。

4.3 学术数据集

LFW被视为一个正规的人脸识别学术测试集[7]。在处理非受限且已标注的外部数据时,我们采用了常规方法,并报告了平均分类精度及其均值的标准误差。

5 实验

假如未提及,则采用1亿到两亿张面部压缩样本库(108至2×108);其中约包含8百万种独特的面部特征样本(约8 million unique facial features);对于每张图像,在其脸部区域检测出精确且紧致的边界框(run facial detection and generate precise bounding boxes around each face);这些压缩图像经过尺寸调整以适应相关网络输入要求(these compressed images undergo resizing to meet network input specifications);在我们的实验中,默认设置下使用的输入尺寸范围为96×96至224×224像素(default input sizes range from 96x96 to 224x224 pixels)

5.1 计算准确性权衡

在深入探讨具体实验细节之前,在探索精确度与特定模型所需计算资源(FLOPS)之间的权衡关系时

5.2 CNN模型的效果

我们对所选四个模型的性能进行了更为详尽地探讨。 其中一方面是我们采用了传统的Zeiler-Fergus架构,并结合了1×1卷积层[22,9](如图所示)。 另一方面则是基于Inception模块的设计方案能够显著降低整体规模。 总体而言,在实验结果上这两种结构表现相似。 不过值得注意的是,在基于Inception的一些子网络(例如NN3)依然能够维持良好性能的同时,并且显著降低了计算复杂度与资源占用

本表详细列出了网络体系结构的相关信息(参见第3章)。研究者编制了一份详细的数据对比报告,在第4章中对此进行了深入讨论。具体分析结果表明,在设定为10^{-3}的错误接受率下,在各个验证区间内的平均验证效率 VAL 均得到了显著提升。同时,在统计学分析方面也值得注意的是各子样本区间的均值及其标准差之间的差异性分析结果

如图5所示,本节4.2节中展示了四种不同模型在个人照片测试集上的完整ROC曲线.当FAR降至1e-4时,显著下降的原因在于groundtruth标签中的噪声.性能表现顺序为:NN_{2}:采用[?]_{?}?输入基线模型;NN_{1}:基于Zeiler & Fergus提出的网络架构,采用[?]_{?}?卷积层;NNS_{1}:小型Inception风格设计,计算量仅为~?~?~?~?~M FLOPS;NNS_{2}:微小Inception型网络,计算量仅为~?~?~?~?~M FLOPS.]

我们的个人照片测试装置的详细评估如图5所示。相比之下,在手机上运行30ms/图像的小型NNS2与当前最小型号相比,在提高精度的同时仍能保证足够的准确性用于面部聚类。表明测试数据中的标签噪声显著。在极低错误接受率下,单个错误标记会显著影响曲线形状。

5.3. 对图片质量的敏感度

表4展示了图像质量的相关数据。左侧表格通过对比不同JPEG压缩比率下10E-3精度的验证率变化情况展示了其性能。右侧部分则通过展示图像尺寸(以像素计)对10E-3精度验证率的影响来补充说明。在本次实验中,我们采用了测试集首次拆分的方法,并利用神经网络模型NN1进行建模与计算。表4进一步证实了我们模型在不同分辨率下的鲁棒性与稳定性。该神经网络展现出出色的整体性能,在JPEG压缩过程中尤其表现出色,在JPEG质量设置为20时性能更是达到了较高水平。对于分辨率达到120x120像素的面部缩略图,在本研究中发现其性能下降幅度非常有限。即使将分辨率进一步降低至80x80像素级别,在实际应用中仍能维持较好的性能水平。

5.4. 嵌入维度

表5. 嵌入维度对比表

5.5. 训练数据的大小

表6展示了不同规模的数据集及其对模型性能的影响。
通过对比不同尺寸的数据输入(如96×96像素分辨率),该研究评估了模型在700小时训练后的性能表现。
在Inception模块的设计上有所改动的情况下,在不使用5×5卷积层的前提下,默认采用了与NN2相似的整体架构。
通过分析表6的数据结果发现,在训练过程中积累的数据量显著影响着模型的表现。
受限于计算资源的时间限制,在当前的研究框架下扩展到更大规模的数据集可能会带来更好的性能表现。
当采用超过1亿张个人自拍照时,在第4.2节中的测试集中准确率显著提升。
相较于仅包含数百万张图片的数据集,“深度学习基础算法”一文中提到的方法约减少了百分之六十,“深度学习基础算法”一文中提到的方法约减少了百分之六十,
即便进一步扩大到10亿级别的数据规模,“深度学习基础算法”一文中提到的方法带来的收益也会逐步降低。“深度学习基础算法”一文中提到的方法带来的收益也会逐步降低。“深度学习基础算法”一文中提到的方法带来的收益也会逐步降低。

5.6. 在LFW数据集上的表现

我们采用了标准协议来检验LFW上的模型,并针对非受限标记外部数据集进行了评估。 为了确定最佳参数设置,在9个训练划分的基础上优化了超参数配置。 最终,在第10个独立划分上完成了最终验证阶段(区分相同与不同类别)。 在排除初始8分位中的一个部分(即占总样本约1.256%)的情况下,在剩余所有划分中找到的最佳区分率对应的比例为1.242%

全部评论 (0)

还没有任何评论哟~