【读点论文】FaceNet: A Unified Embedding for Face Recognition and Clustering 人脸向量映射到一个特定空间后成为一种集成系统

FaceNet: A Unified Embedding for Face Recognition and Clustering

  • 大规模有效实施人脸验证和识别对当前方法提出了严峻挑战。在本文中,提出了一个称为FaceNet的系统,该系统直接学习从人脸图像到紧致欧氏空间的映射,其中距离直接对应于人脸相似性的度量。
  • 一旦产生了这个空间,如人脸识别、验证和聚类之类的任务就可以使用以人脸网嵌入作为特征向量的标准技术来容易地实现
  • 本文的方法使用经过训练的深度卷积网络来直接优化嵌入本身,而不是像以前的深度学习方法那样使用中间瓶颈层。为了进行训练,本文使用粗略对齐的匹配/不匹配人脸面片的三元组,这些人脸片是使用一种新的在线三元组挖掘方法生成的。
  • 本文的方法的好处是更高的表示效率:只使用每张脸128字节就实现了最先进的人脸识别性能。
  • 在广泛使用的Labeled Faces in the Wild (LFW)数据集上,本文的系统达到了99.63%的新记录准确率。在YouTube Faces DB上达到了95.12%。本文的系统在两个数据集上将错误率与最好的公开结果相比降低了30%。
  • 还引入了harmonic embeddings和harmonic triplet loss的概念,它们描述了人脸嵌入的不同版本(由不同的网络产生),这些版本彼此兼容并允许彼此之间的直接比较。
  • FaceNet是谷歌于CVPR2015.02发表,提出了一个对识别(这是谁?)、验证(这是用一个人吗?)、聚类(寻找类似的人)等问题的统一解决框架。为了降低背景和环境等因素带来的干扰,人脸识别一般先经过人脸检测(Face Detection)、人脸对齐(Face Alignment)等预处理,然后将人脸图像映射到欧几里得等空间,空间距离的长度代表了人脸图像的相似性。只要该映射空间生成,人脸识别,验证和聚类等任务就显得不那么复杂。
  • 它们都可以放到特征空间里统一处理,只需要专注于解决的仅仅是如何将人脸更好的映射到特征空间
  • 其本质是通过卷积神经网络学习人脸图像到128维欧几里得空间的映射,该映射将人脸图像映射为128维的特征向量,联想到二维空间的相关系数的定义,使用特征向量之间的距离的倒数来表征人脸图像之间的"相关系数",对于相同个体的不同图片,其特征向量之间的距离较小(即相似度较大),对于不同个体的图像,其特征向量之间的距离较大(即相似度较小)
Introduction
  • 在本文中,提出了一个统一的系统,用于人脸验证(这是同一个人吗)、识别(这个人是谁)和聚类(在这些人脸中找到共同的人)。本文的方法基于使用深度卷积网络学习每个图像的欧几里德嵌入。训练网络,使得嵌入空间中的平方L2距离直接对应于面部相似性:同一个人的面部具有小的距离,而不同人的面部具有大的距离。
  • 一旦产生了这种嵌入,那么前面提到的任务就变得简单明了了:人脸验证仅仅涉及对两种嵌入之间的距离进行阈值处理;识别变成了k-NN分类问题;并且可以使用诸如k-means或凝聚聚类之类的现成技术来实现聚类。
  • 先前基于深度网络的人脸识别方法使用在一组已知人脸身份上训练的分类层,然后采用中间瓶颈层作为表示,用于在训练中使用的身份集之外推广识别。
  • 这种方法的缺点是**它的间接性和低效率:**人们希望瓶颈表示能很好地推广到新面孔;通过使用瓶颈层,每个面的表示大小通常非常大(1000维)。最近的一些工作[已经使用PCA减少了这种维数,但是这是一种线性变换,可以在网络的一个层中容易地学习。
  • 与这些方法相反,FaceNet使用基于LMNN的三重损失函数直接将其输出训练为紧凑的128维嵌入。本文的三元组由两个匹配的面部缩略图和一个不匹配的面部缩略图组成,损失旨在通过距离余量将正面对与负面对分开。缩略图是面部区域的紧密裁剪,除了缩放和平移之外,没有2D或3D对齐
  • 选择使用哪些三元组对于实现良好的性能非常重要,提出了一种新的在线负面样本挖掘策略,该策略确保随着网络训练不断增加三元组的难度。为了提高聚类的准确性,还探索了硬正挖掘技术,该技术鼓励对单个人的嵌入进行球形聚类。
  • 作为本文的方法可以处理的不可思议的可变性的例子,参见下图。图中显示的是PIE中的图像对,这些图像对之前被认为对于人脸验证系统来说非常困难。
    • 在这里插入图片描述
    • 光照和姿态不变性。姿态和光照是人脸识别中一个长期存在的问题。该图显示了在不同姿势和照明组合下,同一个人和不同个人的成对面部之间的面部网络输出距离。距离为0.0表示面是相同的,4.0对应于相反的光谱,两个不同的身份。你可以看到阈值1.1可以正确分类每一对。
  • 同一个人的不同图像在空间距离很小,不同人的图像在空间中有较大的距离,可以用于人脸验证、识别和聚类。
  • 作为经典的深度学习、人脸识别案例,依然采用主流的深度神经网络来提取特征,并采用triplet_loss来衡量训练过程中样本之间的距离误差。
  • 在训练前或者在线学习中不断给神经网络制造“困难”,即一直在寻找与样本最不像的“自己”,同时寻找与自己最像的“他人”。通过随机梯度下降法,不断缩短自身所有样本的差距,同时尽可能拉大与其他人的差距,最终达到一个最优。通过这样一种嵌入学习(Embedding learing),能对原始的特征提取网络输出层再进一步学习,从而改善特征的表达。
  • FaceNet的终极目标是将人脸图像嵌入到128维的欧氏空间 R 128 \R^{128} R128中,在该向量空间中,单个个体特征向量 x i a x_i^a xia(anchor)和该个体的其它特征向量 x i p x_i^p xip(positive)距离小,与其它个体的特征向量 x i p x_i^p xip(negative)距离大。
Related Work
  • 类似于最近使用深度网络的其他工作,本文的方法是一种纯粹的数据驱动方法,它直接从人脸的像素中学习其表示。不使用工程特征,而是使用一个大的标记人脸数据集来获得姿态、光照和其他变化条件的适当不变性。

  • 在本文中,探索了两种不同的深度网络架构,这两种架构最近在计算机视觉社区中获得了巨大的成功。两者都是深度卷积网络。

    • 第一种架构基于 Zeiler&Fergus 模型,该模型由多层交错卷积、非线性激活、局部响应标准化和最大汇集层组成。另外增加了几个1×1×d卷积层。
    • 第二种架构基于Szegedy等人的Inception模型,该模型最近被用作ImageNet 2014的获胜方法。这些网络使用混合层,并行运行几个不同的卷积层和汇集层,并连接它们的响应。
  • 发现,这些模型可以将参数数量减少20倍,并有可能减少同等性能所需的触发器数量。

  • [Deeply learned face representations are sparse, selective, and robust;][Deepface:Closing the gap to human-level performance in face verification]采用了多级的复杂系统,该系统将深度卷积网络的输出与用于降维的PCA和用于分类的SVM相结合。

  • 使用深度网络将人脸“扭曲”成规范的正面视图,然后学习CNN,将每个人脸分类为属于已知身份。对于人脸验证,使用网络输出上的PCA结合一组支持向量机。

  • 提出了一种多阶段方法,该方法将人脸与一般的3D形状模型对齐。一个多类网络被训练来对超过4000个身份执行面部识别任务。作者还实验了一个所谓的Siamese network ,他们直接优化了两个人脸特征之间的L1距离。他们在LFW上的最佳表现(97.35%)源于使用不同排列和颜色通道的三个网络的集合。这些网络的预测距离(基于χ2核的非线性SVM预测)使用非线性SVM进行组合。

  • 提出了一种紧凑并因此相对简单的计算网络。他们使用了25个这样网络,每个网络在不同的面部贴片上运行。对于他们在LFW的最终表现(99.47% ),作者组合了50个回答(常规和翻转)。PCA和联合贝叶斯模型都有效地对应于嵌入空间中的线性变换。他们的方法不需要明确的2D/3D对准。通过使用分类和验证损失的组合来训练网络。验证损失类似于本文采用的三重损失,因为它最小化了相同身份的人脸之间的L2距离,并加强了不同身份的人脸之间的距离余量。主要区别在于,只比较成对的图像,而三个一组的损失会产生相对距离约束。

  • Wang等人探索了与这里使用的损失类似的损失,用于通过语义和视觉相似性对图像进行排序。

Method
  • FaceNet使用深度卷积网络。讨论了两种不同的核心架构:Zeiler&Fergus 风格的网络和最近出现的Going deeper with convolutions类型的网络。

  • 给定模型细节,并将其视为黑盒(见下图),本文方法中最重要的部分在于整个系统的端到端学习。

    • 在这里插入图片描述
    • 模型结构。网络包括一个批量输入层和一个深度CNN,之后是L2归一化,这导致人脸嵌入。其次是训练时的triplet loss 。
  • 为此,采用直接反映本文想要在人脸验证、识别和聚类中实现什么的三元组损失。即,努力从图像x到特征空间Rd的嵌入f(x),使得独立于成像条件,相同身份的所有人脸之间的平方距离很小,而来自不同身份的一对人脸图像之间的平方距离很大

  • 尽管没有直接与其他损失进行比较。认为三重损失更适合人脸验证。动机是来自[Deep learning face representation by joint identification-verification.]的损失鼓励一个身份的所有面被投影到嵌入空间中的单个点上。然而,三个一组的损失试图在一个人到所有其他人的每一对脸之间强加一个边界。这允许一个身份的面孔生活在一个流形上,同时仍然加强了与其他身份的距离和可区分性。使用成对的正和负,如在下等式。

    • ∣ ∣ f ( x i a ) − f ( x i p ) ∣ ∣ 2 2 + α < ∣ ∣ f ( x i a ) − f ( x i n ) ∣ ∣ 2 2 ∀ ( f ( x i p ) , f ( x i n ) , f ( x i a ) ) ∈ T ||f(x^a_i)-f(x^p_i)||^2_2+\alpha<||f(x^a_i)-f(x^n_i)||^2_2\\ \forall(f(x_i^p),f(x_i^n),f(x_i^a))\in T f(xia)f(xip)22+α<f(xia)f(xin)22(f(xip),f(xin),f(xia))T

    • 其中,α是正负线对之间的余量。T是训练集中所有可能三元组的集合,基数为N。

  • Triplet Loss

    • 嵌入由f(x) ∈ Rd表示。它将图像x嵌入到d维欧氏空间中。此外,将这种嵌入限制在d维超球面上,即||f(x)||2 = 1。这种损失是在最近邻分类法的背景下引起的。这里,想要确保特定人的图像 x i a x^a_i xia(锚)比任何其他人的任何图像 x i n x^n_i xin(负)更接近同一人的所有其他图像 x i p x^p_i xip(正)。这可以在下图中看到。
      • 在这里插入图片描述
      • 三重损失最小化锚和正样例之间的距离,这两者具有相同的身份,并且最大化锚和不同身份的负样例之间的距离。
    • 被最小化的损失是 L = ∑ i N [ ∣ ∣ f ( x i a ) − f ( x i p ) ∣ ∣ 2 2 − ∣ ∣ f ( x i a ) − f ( x i n ) ∣ ∣ 2 2 + α ] + L=\sum_i^N[||f(x^a_i)-f(x^p_i)||^2_2-||f(x^a_i)-f(x^n_i)||^2_2+α]_+ L=iN[f(xia)f(xip)22f(xia)f(xin)22+α]+
    • 生成所有可能的三元组将导致许多容易满足的三元组(即满足等式中的约束)。这些三元组不会有助于训练并导致较慢的收敛,因为它们仍将通过网络传递。选择活跃的hard triplets是至关重要的,因此有助于改进模型。
    • 之所以称之为三元组是因为该损失函数包含了两个匹配脸部缩略图一个非匹配的脸部缩略图,其目标是通过距离边界来区分样本中的正负类,其中的脸部缩略图指裁剪后的人脸图片,除了缩放和平移之外,没有2D或3D对齐
  • Triplet Selection

    • 为了确保快速收敛,选择违反等式中triplets约束的triplets是至关重要的。这意味着,给定 x i a x^a_i xia,想要选择 x i p x^p_i xip(hard positive)使得 a r g m a x x i p ∣ ∣ f ( x i a ) − f ( x i p ) ∣ ∣ 2 2 argmax_{x^p_i} ||f(x^a_i)-f(x^p_i)||_2^2 argmaxxipf(xia)f(xip)22,类似地 x i n x^n_i xin(hard negative)使得 a r g m a x x i p ∣ ∣ f ( x i a ) − f ( x i n ) ∣ ∣ 2 2 argmax_{x^p_i} ||f(x^a_i)-f(x^n_i)||_2^2 argmaxxipf(xia)f(xin)22

    • 整个训练集中计算argmin和argmax是不可行的。此外,它可能会导致糟糕的训练,因为错误标记和糟糕成像的人脸将主导硬阳性和阴性。有两个明显的选择可以避免这个问题:

      • 使用最近的网络检查点并计算数据子集的argmin和argmax,每n步离线生成一个triplets。
      • 在线生成triplets。这可以通过从小批量中选择hard阳性/阴性样本来完成。
    • 首先可以考虑从一个ID的自身样本集中找出与当前训练样本最不像的样本形成hard positive pair;然后与其他类的所有样本比对,找出最像的样本,与之形成hard negative pair

    • 将重点放在在线生成上,并使用几千个样本的大型小批量,并且只计算小批量中的argmin和argmax。

    • 为对锚正距离进行有意义的表示,需要确保任何一个身份的最小数量的样本出现在每个小批量中。在实验中,对训练数据进行采样,使得每个mini_batch的每个身份选择大约40张人脸。此外,随机取样的negative faces被添加到每个小批量中。

      • 每隔n步,计算子集的argmaxargmin
      • 在线生成triplets,即在每隔min-batch中筛选positive/negative样本;
      • 在每个mini-batch中,每个类型都有40个样本,再添加一些反例样本;
      • 选择mini-batch中的所有 anchor-positve 对而不是选择hard positive(即与anchor距离最大的同类图片),并选择 hard negative(即与anchor距离最小的不同类图片)。相比anchor-hard positive,这样收敛速度比较快。
    • 不是挑选最难的正样本,而是在小批量中使用所有锚定正样本对,同时仍然选择hard negatives。没有在小批量中对hard anchor-positive pairs和所有anchor-positive pairs对进行并排比较,但在实践中发现,所有anchor-positive pairs方法更稳定,并且在训练开始时收敛稍快。

    • 还探索了离线生成triplets与在线生成triplets的结合,它可能允许使用更小的批量,但实验不是决定性的。

    • 选择最难的负样例在实践中可能导致在训练早期的糟糕的局部最小值,特别是它可能导致模型崩溃(即f(x) = 0)。为了减轻这种情况,选择 x i n x^n_i xin有助于 ∣ ∣ f ( x i a ) − f ( x i p ) ∣ ∣ 2 2 < ∣ ∣ f ( x i a ) − f ( x i n ) ∣ ∣ 2 2 ||f(x^a_i)-f(x^p_i)||^2_2<||f(x^a_i)-f(x^n_i)||^2_2 f(xia)f(xip)22<f(xia)f(xin)22。称这些负样本为semi-hard样本,因为它们比正样本离锚更远,但是仍然很hard,因为距离的平方接近锚正距离。那些负数位于α页边空白内。

    • 如前所述,正确的triplet选择对于快速收敛至关重要。一方面,希望使用小批量,因为这有助于改善随机梯度下降(SGD) 期间的收敛性。另一方面,实现细节使得几十到几百个样本的批处理更加高效。然而,关于批量大小的主要限制是从小批量中选择hard relevant triplets 的方式。在大多数实验中,使用大约1800个样本的批量。

    • 与传统的softmax loss相比,triplet_loss直接对距离进行度量和优化,效果更明显。根据其他工程人员经验,实际训练中,可以对softmax loss和triplet_loss进行加权,在线调整权值,达到最优。

  • Deep Convolutional Networks

    • 在所有的实验中,使用带有标准反向投影(standard backprop)的随机梯度下降(SGD)和和AdaGrad 来训练CNN。在大多数实验中,以0.05的学习率开始,降低该学习率以最终确定模型。这些模型从随机开始初始化,类似于[Going deeper with convolutions.],并在CPU集群上训练1000到2000小时。经过500小时的训练后,损失的减少(和准确性的增加)会急剧减慢,但是额外的训练仍然可以显著提高性能。边距α设置为0.2。
    • 使用了两种类型的架构,并在实验部分更详细地探讨了它们的利弊。它们的实际区别在于参数和触发器的不同。最佳模型可能因应用而异。例如,在数据中心运行的模型可以具有许多参数,并且需要大量的FLOPS,而在移动电话上运行的模型需要具有很少的参数,以便它可以适合存储器。所有的模型都使用校正的线性单元作为非线性激活函数。
    • 第一类如下表所示,在Zeiler&Fergus架构的标准卷积层之间增加了1×1×d的卷积层,结果得到一个22层深的模型。它总共有1.4亿个参数,每幅图像需要大约16亿次浮点运算。
      • 在这里插入图片描述
      • NN1。该表显示了我们基于泽勒&弗格斯的模型的结构,该模型具有受[Network in network.]启发的1×1卷积。输入和输出大小用行×列×#滤波器描述。内核指定为rows × cols,stride,maxout池大小为p = 2。
    • 使用的第二个类别是基于GoogLeNet风格的初始模型。这些型号的参数少20倍(约6.6M-7.5M),FLOPS最多少5倍(500M-1.6B之间)。这些模型中的一些在尺寸上(深度和过滤器的数量)显著减小,因此它们可以在移动电话上运行。
    • 一个是NNS1,它有26M个参数,每个图像只需要220M个FLOPS。另一个是NNS2,有4.3M的参数和20M的FLOPS。下表详细描述了最大的网络NN2。
      • 在这里插入图片描述
      • NN2。NN2 Inception incarnation的细节。该模型几乎与[16]中描述的模型相同。两个主要区别是在指定的地方使用L2池而不是最大池(m)。即,不是取空间最大值,而是计算L2范数。池总是3×3(除了最终的平均池),并且与每个初始模块中的卷积模块并行。如果在汇集后有维度减少,则用p表示。然后将1×1、3×3和5×5汇集连接起来以获得最终输出。
    • NN3的架构相同,但输入尺寸缩小至160x160。NN4的输入大小仅为96x96,因此大大降低了CPU要求(285M FLOPS vs 1.6B的1.6B)。除了减小输入大小之外,它在较高层中不使用5×5卷积,因为那时感受野已经太小了。一般来说,发现5×5卷积可以被完全去除,而精度只有微小的下降。下图比较了所有的模型。
      • 在这里插入图片描述
      • FLOPS与精度的权衡。图中显示了各种不同模型尺寸和架构的触发器和精度之间的权衡。突出显示的是在实验中关注的四个模型。
  • 新一代的FaceNet采用Inception-ResNet-v2网络,在原有的Google的Inception系列网络的基础上结合了微软的残差网络ResNet思想。其中,残差连接(Residual connections )允许模型中存在shortcuts,可以让研究学者成功地训练更深的神经网络,同时还能明显地简化Inception块。各个模块具体如下:

    • 在这里插入图片描述
  • Inception模块

    • 提升网络的性能的方法有很多,例如硬件的升级,更大的数据集等。但一般而言,提升网络性能最直接的方法是增加网络的深度和宽度。其中,网络的深度只的是网络的层数,宽度指的是每层的通道数。但是,这种方法会带来两个不足:

      • 容易发生过拟合。当深度和宽度不断增加的时候,需要学习到的参数也不断增加,巨大的参数容易发生过拟合。
      • 均匀地增加网络的大小,会导致计算量的加大。
    • Inception v1的网络,将1x1,3x3,5x5的conv和3x3的pooling,堆叠在一起,一方面增加了网络的width,另一方面增加了网络对尺度的适应性;增加了网络的宽度,增加了网络对尺度的适应性,不同的支路的感受野是不同的,所以有多尺度的信息在里面。

      • 在这里插入图片描述
    • Inception v2模型:一方面了加入了BN层,减少了Internal Covariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯;另外一方面学习VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算。(Asymmetric方式,即使用1×3和3×1两种来代替3×3的卷积核。)

      • 可以设置较大的初始学习率,并且减少对参数初始化的依赖,提高了训练速度;
      • 这是个正则化模型,因此可以去除dropout和降低L2正则约束参数;
      • 不需要局部响应归一化层;
      • 能防止网络陷入饱和,即消除梯度弥散。
    • Inception v3模型:一个最重要的改进是分解(Factorization),将7x7分解成两个一维的卷(1x7,7x1),3x3也是一样(1x3,3x1),这样的好处,既可以加速计算(多余的计算能力可以用来加深络),又可以将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性,还有值得注意的地方是网络输入从224x224变为了299x299,更加精细设计了35x35/17x17/8x8的模块。

    • 将3*3的卷积核分解为3*1+1*3,在网络模型的前期使用这样的卷积分解,并不能达到一个很好的效果。通过在网络中期使用,在特征图的尺寸为12-20左右使用最佳。

    • Inception v4模型(Inception和Resnet的结合):研究了Inception模块结合Residual Connection改进,发现ResNet的结构可以极大地加速训练,同时性能也有提升,得到一个Inception-ResNet v2网络,同时还设计了一个更深更优化的Inception v4模型,能达到与Inception-ResNet v2相媲美的性能。

    • inception是通过增加网络的宽度来提高网络性能,在每个inception模块中,使用了不同大小的卷积核,可以理解成不同的感受野,然后将其concentrate起来,丰富了每层的信息。之后,使用了BN算法(BN使用在conv之后,relu之前),来加速网络的收敛速度。在V3版本中,还使用了卷积因子分解的思想,将大卷积核分解成小卷积,节省了参数,降低了模型大小。在V4版本中,使用了更加统一的inception模块,并结合了resnet的残差思想,能将网络做得更深。

  • Zeiler&Fergus架构

    • ILSVRC 2013获胜者是来自Matthew Zeiler和Rob Fergus的卷积网络。它被称为ZFNet(Zeiler&Fergus Net的简称)。这是对AlexNet的改进,通过调整架构超参数,特别是通过扩展中间卷积层的大小。
    • 自Matthew D.Zeiler 和 Rob Fergus (纽约大学)2013年撰写的论文: 《Visualizing and Understanding Convolutional Networks》(做过论文笔记https://blog.csdn.net/weixin_43424450/article/details/121892324)
  • 人脸嵌入

    • 嵌入(embedding):由 f ( x ) ∈ R d f(x)∈R^d f(x)Rd表示,它将图像x嵌入到d维欧几里德空间中。另外,我们将这种嵌入限制在d维超球面上,即 ∣ ∣ f ( x ) ∣ ∣ 2 = 1 ||f(x)||_2=1 f(x)2=1

    • FaceNet直接将人脸图像输出训练成紧凑的128-D嵌入,再使用基于LMNN(Large margin nearest neighbor)的三元组损失函数。

    • 用嵌入是因为两幅人脸图在高维空间的比较作用不大,而低维的嵌入空间的比较就能发挥作用。

    • 一旦产生了这种嵌入,则上述任务变得直截了当:

      • 人脸验证仅涉及对两个嵌入之间的距离进行阈值处理;
      • 人脸识别成为k-NN分类问题;
      • 人脸聚类可以使用诸如k均值或agglomerative聚类的现成技术来实现。
Datasets and Evaluation
  • 在四个数据集上评估了本文的方法,除了在Wild和YouTube人脸中的标记人脸,在人脸验证任务上评估了本文的方法。即,给定一对两幅人脸图像,平方L2距离阈值D(xi,xj)用于确定相同和不同的分类。相同身份的所有人脸对(i,j)用Psame表示,而不同身份的所有人脸对用Pdiff表示。

  • 将所有true accepts 的集合定义为: T A ( d ) = { ( i , j ) ∈ P s a m e , w i t h   D ( x i , x j ) ≤ d } TA(d)=\{(i,j)\in P_{same},with\space D(x_i,x_j)\leq d\} TA(d)={(i,j)Psame,with D(xi,xj)d}.

  • 这些是在阈值d被正确分类为相同的人脸对(i,j)。类似地 F A ( d ) = { ( i , j ) ∈ P d i f f , w i t h   D ( x i , x j ) ≤ d } FA(d)=\{(i,j)\in P_{diff},with\space D(x_i,x_j)\leq d\} FA(d)={(i,j)Pdiff,with D(xi,xj)d},是被错误分类为same(false accept)的所有对的集合。

  • 对于给定的人脸距离d,验证率VAL(d)和错误接受率FAR(d)被定义为:

    • V A L ( d ) = ∣ T A ( d ) ∣ ∣ P s a m e ∣ , F A R ( d ) = ∣ F A ( d ) ∣ ∣ P d i f f ∣ VAL(d)=\frac{|TA(d)|}{|P_{same}|},FAR(d)=\frac{|FA(d)|}{|P_{diff}|} VAL(d)=PsameTA(d),FAR(d)=PdiffFA(d)
  • Hold-out Test Set

    • 保留了大约一百万张图像的支持集,它与本文的训练集具有相同的分布,但是身份不相交。为了评估,将它分成五组互不相交的200k图像。然后在100k × 100k的图像对上计算FAR和VAL率。报告五次分割的标准误差。
  • Personal Photos

    • 这是一个分布与训练集相似的测试集,但是已经被手动验证为具有非常干净的标签。它由三个个人的照片集组成,总共有大约12k张照片。计算所有12k平方对图像的FAR和VAL比率。
  • Academic Datasets

    • Labeled Faces in the Wild(LFW)是事实上的人脸验证学术测试集。遵循不受限制的、带标签的外部数据的标准协议,并报告平均分类准确度以及平均值的标准误差。
    • Youtube Faces DB是一个新的数据集,它在人脸识别社区中受到了欢迎。设置类似于LFW,但不是验证成对的图像,而是使用成对的视频。
Experiments
  • 使用100-200M之间的训练人脸缩略图,由大约8百万个不同的身份组成。在每个图像上运行人脸检测器,并且生成每个人脸周围的紧密边界框。这些面部缩略图被调整到各自网络的输入尺寸。在实验中,输入大小从96x96像素到224x224像素。

  • Computation Accuracy Trade-off

    • 在深入讨论更具体实验的细节之前,将讨论特定模型所需的精度与失败次数之间的权衡。FLOPS vs. Accuracy trade-off.图显示了x轴上的FLOPS和用户标记测试数据集上以0.001错误接受率(FAR)的精度。模型所需的计算量和它所达到的精确度之间的强相关性。该图突出显示了在实验中更详细讨论的五个模型(NN1、NN2、NN3、NNS1、NNS2)。
    • 还研究了关于模型参数数量的精度权衡。然而,在这种情况下,情况就不那么清楚了。例如,基于初始的模型NN2实现了与NN1相当的性能,但是只有其参数的二十分之一。不过,FLOPS次数是相当的。如果参数的数量进一步减少,在某一点上性能预计会下降。其他模型架构可能允许在不损失准确性的情况下进一步缩减,就像Inception在这种情况下所做的那样。
  • Effect of CNN Model

    • 现在更详细地讨论选择的四个模型的性能。一方面,有传统的基于Zeiler&Fergus 的1×1卷积架构。另一方面,有基于Inception的模型,它极大地减少了模型的大小。总体而言,在最终性能方面,两种架构的top models表现相当。然而,一些基于Inception的模型,如NN3,在显著减少FLOPS和模型大小的同时,仍然实现了良好的性能。
    • 对个人照片测试集的详细评估如下图所示。虽然最大的模型与微小的NNS2相比在准确性上取得了巨大的进步,但后者可以在移动电话上运行30毫秒/图像,仍然足够准确地用于面部聚类。FAR < 10时ROC的急剧下降表明测试数据groundtruth中有噪声标签。在极低的错误接受率下,单个错误标记的图像会对曲线产生重大影响。
      • 在这里插入图片描述
  • Sensitivity to Image Quality

    • 下表显示了本文的模型在各种图像尺寸下的鲁棒性。该网络在JPEG压缩方面惊人地健壮,并且在JPEG质量低至20的情况下表现得非常好。对于大小为120x120像素的面部缩略图,性能下降非常小,即使在80x80像素的情况下,它也显示出可接受的性能。这是值得注意的,因为网络是在220x220输入图像上训练的。使用低分辨率人脸进行训练可以进一步提高这个范围。

      • 在这里插入图片描述
      • Image Quality.左边的表格显示了不同JPEG质量在10E-3精度下对验证率的影响。右边的图显示了在10E-3精度下,图像的像素大小是如何影响验证率的。这个实验是在test hold-out dataset的第一次拆分中使用NN1完成的。
    • JPEG压缩:JPEG(Joint Photographic Experts Group,联合图像专家小组):此团队创立于1986年,其于1992年发布的 JPEG 标准在1994年获得了 ISO 10918-1 的认定,成为了图片压缩标准。

      • PEG 文件是由 YUV 的色彩空间来表示颜色的,YUV 中 Y 表示明亮度(Luma),U 和 V 表示色度(Chrominance)和浓度(Chroma),UV 分量同时表示色差。

      • 因为人眼对亮度的差异敏感度高于对色彩的变化。考虑到这种感知能力,允许降低色度以及浓度的带宽。YUV 的色彩空间更容易压缩 U、V 分量

        • RGB 到 YUV 的转换 - 无损

          • RGB 转化 YUV 的公式(经过 PAL制式 CRT伽玛校正)如下:

          • Y = 0.299R’ + 0.587G’ + 0.114B’

            U = -0.147R’ - 0.289G’ + 0.436B’

            V = 0.615R’ - 0.515G’ - 0.100B’

        • 色度抽样-有损

          • 在 YUV 采样的时候可以对 U、V 分量进行色度采样,在 JPEG 压缩算法采用的是 YUV 4:2:0 的色度抽样方法。4:2:0 并非无 V 分量,它对于每行扫描的像素来说,只有一中色度分量以 2:1 的抽样率储存,相邻行储存不同的色度分量。可以理解为奇数行采样 U,YUV 4:2:0;偶数行采样 V,YUV 4:0:2。
        • 离散余弦变化(DCT)- 无损

          • 做好色彩空间转换和 YUV 4:2:0 色彩抽样后,将输入的图片分割成 8*8 像素的单元格。对每个单元格进行离散余弦变化。
          • 做好色彩空间转换和 YUV 4:2:0 色彩抽样后,将输入的图片分割成 8*8 像素的单元格。对每个单元格进行离散余弦变化。
          • 在 JPEG 算法中,图像被分为了 8*8 的像素组,每个像素组用自己的离散余弦变化进行频域编码。
          • 经过 DCT 转换后的频率系数矩阵分别对应64个余弦波在 8*8 图形中的权重。可以看出,左上部分低频区的系数比较大,右下高频区的系数较小。鉴于人眼对高频区的识别不敏感,所以在下面量化部分可以舍弃一些高频区的数据。这里的 DCT 变化还没开始压缩。
        • 量化 - 有损

          • 在 DCT 变化后,舍弃高频区数据的过程称为量化。有两份量化表可供选择,分别为亮度量化表和色度量化表:
            • 在这里插入图片描述
            • 这两张表中的数据基于人眼对不同频率的敏感程度制定。量化表是控制 JPEG 压缩比的关键,可以根据输出图片的质量来自定义量化表,通常自定义量化表与标准量化表呈比例关系,表中数字越大则质量越低,压缩率越高。PhotoShop 有12张量化表。
          • 量化是有损的,在解码时,反量化会乘回量化表的相应值。由于存在取整,低频段会有所损失,高频段的0字段则会被舍弃,最终导致图像质量降低。
        • 熵编码(zigzag scan & 霍夫曼编码)- 无损

          • 得到量化后的矩阵就要开始编码过程了,首先要把二维矩阵变为一维数组,这里采用了 zigzag 排列,将相似频率组在一起。
          • 差值编码和Zig-zag扫描:量化后矩阵左上角的值被称为直流分量DC,其他63个值被称为交流分量AC。其中DC不参与Z字形扫描,而是与前一矩阵的DC系数进行差分编码(DPCM);AC分量则采用Z字形扫描排列并进行游程长度编码(RLE)。
          • 游程长度编码(Run-Length Encoding, RLE):量化AC系数的特点是包含很多连续的0,故使用RLE对其进行编码。JPEG使用了1个字节的高4位来表示连续的0的个数,而使用其低四位来表示下一个非0系数需要的位数,紧随其后的是量化AC系数的值。
          • Huffman编码:JEPG压缩编码时,通过查表实现霍夫曼编码器
  • Embedding Dimensionality

    • 探索了各种嵌入维度,并为所有实验选择了128维,下表中报告的比较除外。人们期望较大的嵌入至少与较小的嵌入一样好,然而,它们可能需要更多的训练来达到相同的精度。也就是说,表5中报告的性能差异在统计上并不显著。
      • 在这里插入图片描述
      • Embedding Dimensionality.该表比较了本文的模型NN1的嵌入维度对hold-out set 的影响。除了10E-3的VAL,还显示了五次分割计算的平均值的标准误差。
    • 在训练期间,使用128维浮点向量,但是它可以被量化为128字节而不损失准确性。因此,每张脸都由一个128维的字节向量紧凑地表示,这对于大规模聚类和识别是理想的。较小的嵌入以较小的准确度损失是可能的,并且可以在移动设备上使用。
  • Amount of Training Data

    • 下表显示了大量训练数据的影响。由于时间限制,该评估在一个较小的模型上进行;在较大的模型上,这种影响可能更大。很明显,使用数以千万计的样本导致个人照片测试集上的准确性明显提高。与仅数百万张图像相比,误差相对减少了60%。使用另一个数量级的更多图像(数以亿计)仍然会有一个小的提升,但这种提升会逐渐消失。
      • 在这里插入图片描述
      • Training Data Size. 比较了96x96像素输入的较小模型在700小时训练后的性能。模型架构类似于NN2,但是在初始模块中没有5x5卷积。
  • Performance on LFW

    • LFW使用标准协议评估本文的模型,用于无限制的、有标签的外部数据。九次训练分割用于选择L2距离阈值。然后在第十次测试分割时进行分类(相同或不同)。对于除八分之一分割(1.256)之外的所有测试分割,所选择的最佳阈值是1.242。

    • 我们的模型以两种模式进行评估:

      • 固定中心crop的LFW提供。
      • 在提供的LFW缩略图上运行专有的人脸检测器(类似于Picasa)。如果未能对齐面部(两幅图像都会出现这种情况),则使用LFW对齐。
    • 下图给出了所有故障案例的概述。它在顶部显示错误接受,在底部显示错误拒绝。当使用描述的固定中心裁剪时,实现了98.87%±0.15的分类准确度,并且当使用额外的面部对齐时,实现了破纪录的99.63%±0.09的平均值标准误差。这将针对DeepFace报告的误差降低了7倍以上,并将针对DeepId2+报告的现有技术水平降低了30%。这是模型NN1的性能,但是即使是小得多的NN3也达到了在统计上没有显著差异的性能。

      • 在这里插入图片描述
      • LFW errors.这显示了在LFW上被错误分类的所有图像对。这里显示的13个错误剔除中只有8个是真正的错误,其他5个在LFW被贴错了标签。
  • Performance on Youtube Faces DB

    • 使用人脸检测器在每个视频中检测到的前一百帧的所有对的平均相似度。这95.12%±0.39的分类精度。使用前一千帧得到95.18%。deepface上也评估每个视频100帧 91.4%的人,相比之下,本文将错误率降低了近一半。DeepId2+ 达到了93.2%,本文的方法将这一误差减少了30%,与在LFW上的改进相当。
  • Face Clustering

    • 本文的compact embedding 有助于将用户的个人照片聚类到具有相同身份的人群中。与纯粹的验证任务相比,由聚类面部强加的分配中的约束导致了真正惊人的结果。
    • 下图显示出了使用聚集聚类生成的用户个人照片集中的一个聚类。它清楚地展示了对遮挡、光照、姿势甚至年龄不可思议的不变性。
      • 在这里插入图片描述
      • Face Clustering.所示的是一个用户的示例集群。用户个人照片集中的所有这些图像都聚集在一起。
Summary
  • 本文提供了一种直接学习嵌入欧几里德空间进行人脸验证的方法。这使得它与使用CNN瓶颈层的其他方法deepface,deepID系列不同,不需要额外的后处理,例如多个模型和PCA的级联,以及SVM分类。本文的端到端训练不仅简化了设置,还表明直接优化与手头任务相关的损失可以提高绩效。
  • 本文的模型的另一个优点是它只需要最小的对齐(面部区域周围的紧密裁剪)。例如,deepface执行复杂的3D对准。本文还试验了相似性转换对齐,并注意到这实际上可以稍微提高性能。不清楚这是否值得额外的复杂性。
  • 未来的工作将集中在更好地理解错误情况,进一步改进模型,以及减小模型大小和降低CPU需求。还将研究如何改善目前极长的训练时间,例如,使用较小的批量和离线以及在线积极和消极挖掘来改变curriculum learning。
  • FaceNet其实就是一个通用人脸识别系统:采用深度卷积神经网络(CNN)学习将图像映射到欧式空间。空间距离直接和图片相似度相关:同一个人的不同图像在空间距离很小,不同人的图像在空间中有较大的距离,可以用于人脸验证、识别和聚类。在800万人2亿多张样本集训练后,FaceNet在LFW数据集上测试的准确率达到了99.63%,在YouTube Faces DB数据集上,准确率为95.12%。
Appendix: Harmonic Embedding
  • 由不同的模型v1和v2生成的一组嵌入,但是在它们可以相互比较的意义上是兼容的。

  • 这种兼容性极大地简化了upgrade paths。例如,在跨一大组图像计算嵌入v1并且推出新的嵌入模型v2的情况下,这种兼容性确保了平滑过渡,而无需担心版本不兼容。下图显示了3G数据集上的结果。可以看出,改进的模型NN2明显优于NN1,而NN2嵌入与NN1嵌入的比较表现在中间水平。

    • 在这里插入图片描述
    • Harmonic Embedding Compatibility.这些roc显示了NN2的调和嵌入与NN1的嵌入的兼容性
    • NN2是一个改进的模型,性能比NN1好得多。当比较由NN1生成的嵌入和由NN2生成的谐波嵌入时,可以看到两者之间的兼容性。其实混合模式性能还是比NN1本身好。
  • Harmonic Triplet Loss

    • 为了学习harmonic embedding ,将v1的嵌入与正在学习的嵌入v2混合在一起。这是在triplet loss 的情况下完成的,并导致额外生成的三元组,这促进了不同嵌入版本之间的兼容性。下图显示了triplet loss和triplet。
      • 在这里插入图片描述
      • Learning the Harmonic Embedding.为了学习Harmonic Embedding,生成混合v1嵌入和正在被训练的v2嵌入的三元组。semihard negatives 是从v1和v2嵌入的整个集合中选择的。
    • 从独立训练的NN2初始化v2嵌入,并从随机初始化重新训练最后一层(嵌入层),其兼容性有利于triplet loss。首先,只重新训练最后一层,然后继续用harmonic loss训练整个v2网络。
    • 下图显示了这种兼容性在实践中如何工作的可能解释。绝大多数的v2嵌入可以被嵌入在对应的v1嵌入附近,然而,不正确放置的v1嵌入可以被轻微扰乱,使得它们在嵌入空间中的新位置提高了验证准确度。
      • 在这里插入图片描述
      • Harmonic Embedding Space.这种可视化描绘了harmonic embeddings 如何能够提高验证精度,同时保持与较低精度嵌入的兼容性的可能解释。在这种情况下,有一个错误分类的人脸,其嵌入被扰乱到v2中的“正确”位置。
  • Summary

    • 这些都是非常有趣的发现,它的效果如此之好多少有些令人惊讶。未来的工作可以探索这个想法可以延伸到什么程度。在兼容的同时,v2嵌入对v1的改进可能是有限的。此外,训练可以在移动电话上运行并且与更大的服务器端模型兼容的小型网络将是令人感兴趣的。
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值