图解facenet算法系列之(二)

2020-08-10 15:34:28 浏览数 (1)

除此之外,我们使用了1亿到2亿张训练人脸缩略图,其中包含大约800万个不同的身份。人脸检测器在每张图像上运行,并在每张人脸周围生成一个紧密的包围框。这些脸部缩略图将根据各自网络的输入大小调整大小。在我们的实验中,输入大小的范围从96x96像素到224x224像素。

在深入研究更具体的实验细节之前,我们将讨论一个特定模型需要的精确度与失败次数之间的权衡。图4显示了x轴上的失败和4.2节中用户标记的测试数据集上0.001假接受率(FAR)的准确率。有趣的是,模型所需要的计算量与它所达到的精度之间存在很强的相关性。图中突出了我们在实验中详细讨论的五个模型(NN1, NN2, NN3, NNS1, NNS2)。

我们还研究了关于模型参数数量的准确性权衡。然而,在这种情况下,情况就不那么清楚了。例如,基于初始的模型NN2取得了与NN1相当的性能,但是只有20个参数。然而,失败的数量是相当的。显然,如果参数的数量进一步减少,那么在某一时刻性能预计会下降。其他的模型架构可能允许在不损失准确性的情况下进行进一步的减少,就像Inception[16]在这种情况下所做的那样。

NN2。NN2 Inception化身的细节。这个模型几乎与[16]中描述的模型相同。两个主要区别是L的使用2 池,而不是最大池(m),其中指定。也就是说,不是取空间最大值,而是取L2 标准计算。池总是3×3(除了最终的平均池),并且与每个初始模块中的卷积模块并行。如果池化后降维,记为p. 1×1,3×3,然后将5×5池连接起来得到最终输出。

图1图1

网络架构。这张图显示了4.2节中我们的个人照片测试集的四种不同模型的完整ROC。10E-4距离的急剧下降可以用groundtruth标签上的噪音来解释。模型性能排序为:NN2: 224×224输入在先启模型;NN1:基于Zeiler&Fergus的1×1卷积网络;NNS1:小型盗梦空间模式,只有2.2亿次失败;《ns2》:微型盗梦空间模型,只有20万次失败。

图2图2

网络架构。这个表比较了我们的模型架构在保持测试集上的性能(参见4.1节)。报告的是平均验证率VAL为10E-3假接受率。另外还显示了五次测试分割的平均值的标准误差。

图3图3

5.2 CNN模型效应

我们现在更详细地讨论我们所选择的四种型号的性能。一方面,我们有基于Zeiler&Fergus的传统架构,1×1卷积[22,9](见表1)。另一方面,我们有基于[16]的初始模型,可以极大地减小模型的大小。总的来说,在最终的性能上,两种架构的顶级模型的表现是相当的。然而,我们的一些基于初始的模型,比如NN3,在显著减少失败和模型大小的同时仍然实现了良好的性能。

对我们的个人照片测试集的详细评价为:

图像质量。左边的表显示了在10E-3精度下,JPEG质量不同对验证率的影响。右边的图显示了以像素为单位的图像大小如何影响10E-3精度的验证率。这个实验是用NN1在我们的测试保持数据集的第一次分割上完成的。

表4表4

嵌入维数 这个表比较了我们的模型NN1的嵌入维数对4.1节中我们的保留集的影响。除了在10E-3处的VAL,我们还显示了五次分割计算的平均值的标准误差

表5表5

如图5所示,虽然最大的模型比小的NNS2在准确率上有了很大的提高,但是小的NNS2在手机上可以运行30ms / image,仍然可以用于人脸聚类。远< 10−4时ROC的急剧下降表明测试数据groundtruth中有噪声标签。在极低的错误接受率下,一张错误标记的图像可以对曲线产生显著的影响。

5.3 图像质量灵敏度

表4显示了我们的模型对各种图像大小的鲁棒性。网络在JPEG压缩方面是惊人的健壮,在JPEG质量为20的情况下执行得非常好。当脸部缩略图缩小到120x120像素时,性能下降非常小,即使是在80x80像素时,性能也可以接受。这是值得注意的,因为网络是在220x220的输入图像上训练的。训练低分辨率的面孔可以进一步提高这一范围。

5.4 嵌入维数

除了表5中报道的比较外,我们探索了各种嵌入维度,并在所有实验中选择了128个嵌入维度。人们期望较大的嵌入式至少能和较小的一样好,然而,它们可能需要更多的训练才能达到同样的精度。也就是说,性能上的差异再次表明表5中的移植在统计上没有意义。

训练数据的大小。表6所示,这个表比较了较小的模型在96x96像素输入下700h训练后的性能。模型架构类似于NN2,但是在先启模块中没有5x5的卷积。

表6表6

需要注意的是,在训练过程中使用了一个128维浮点向量,但是它可以被量化为128字节而不会损失准确性。因此,每个人脸都被一个128维的字节向量紧凑地表示,这是大规模聚类和识别的理想选择。更小的嵌入信息可能在一个小的精度损失,并可用于移动设备。

5.5 训练数据量

表6显示了大量训练数据的影响。由于时间限制,该评估在较小的模型上运行;在较大的模型上,这种影响可能更大。很明显,使用数以千万计的样本可以显著提高4.2节中的个人照片测试集的准确性。与几百万张图像相比,误差相对减少了60%。使用另一个数量级的图像(数亿)仍然会有一个小的提升,但改善逐渐减少。

5.6 表现LFW

我们在LFW上评估我们的模型,使用标准方案来处理不受限制的、标记的外部数据。九个训练叉用于选择L2——远程阈值。分类(相同或不同),然后执行第十次测试分割。对于除第八次分割(1.256)之外的所有测试分割,选择的最佳阈值为1.242。

我们的模型在两种模式下进行评估:

1.固定中心作物的LFW提供缩略图。

2.在提供的LFW缩略图上运行一个专有的人脸检测器(类似于Picasa[3])。如果它未能对齐面(这发生在两个图像),LFW对齐使用。

图6给出了所有故障案例的概述。它在顶部显示错误的接受,在底部显示错误的拒绝。当使用(1)中描述的固定中心剪裁时,我们的分类精度为98.87%±0.15,而当使用额外的面部对齐(2)时,其均值的破纪录标准误差为99.63%±0.09。这将[17]中深脸的误差减少了一个多因子的7和之前最先进的报告DeepId2 在[15]30%。这是NN1模型的性能,但即使是小得多的NN3也实现了统计上没有显著差异的性能。

图6 LFW错误,这显示了在LFW上分类错误的所有对图像,这里显示的13个错误拒绝中只有8个是实际错误,其余5个在LFW中被错误标记。图6 LFW错误,这显示了在LFW上分类错误的所有对图像,这里显示的13个错误拒绝中只有8个是实际错误,其余5个在LFW中被错误标记。

5.7 在Youtube face DB上的表现

我们使用我们的人脸检测器在每个视频中检测到的前100帧的所有对的平均相似性。分类准确率为95.12%±0.39。使用前一千帧的结果是95.18%。与同样评估100帧视频的[17]的91.4%相比,我们将错误率降低了近一半。DeepId2 [15]达到了93.2%,我们的方法减少了30%的误差,与我们对LFW的改进相当。

5.8 面部聚类

我们紧凑的嵌入可以用来将用户的个人照片分组到具有相同身份的人群中。与单纯的验证任务相比,聚类任务所施加的赋值约束,导致真正惊人的结果。图7显示了用户个人照片集合中的一个集群,使用凝聚集群生成。它清楚地展示了不可思议的不变性,遮挡,照明,姿势,甚至年龄。

面部聚类 图7,这里显示的是针对一个用户的示例集群。所有这些图片在用户的个人照片收集聚集在一起。

图7图7

6.总结

我们提供了一种直接学习嵌入到欧几里得空间进行人脸验证的方法。这使它有别于使用CNN瓶颈层或需要额外的后处理(如concate-)的其他方法[15,17]多模型的国家和主成分分析,以及支持向量机分类。我们的端到端训练既简化了设置,也表明直接优化与当前任务相关的损失可以提高性能。

图8图8

图8。谐波嵌入兼容性。这些ROCs显示了NN2的谐波嵌入与NN1的嵌入的相容性。NN2是一种改进的模型,性能比NN1好得多。对比NN1生成的嵌入和NN2生成的谐波,可以看出两者之间的兼容性。实际上,混合模式的性能仍然比NN1本身要好。

我们的模型的另一个优点是它只需要最小的对齐(紧切面部区域)。例如,[17]执行复杂的3D对齐。我们还试验了相似转换对齐,注意到这实际上可以稍微提高性能。目前还不清楚是否值得为此增加额外的复杂性。

未来的工作将集中于更好地理解错误情况进一步改进模型,并减少模型大小和减少CPU需求。我们还将研究如何改善目前极其漫长的训练时间,例如我们的课程学习的变化与较小的批量和离线以及在线积极和消极挖掘。

7.附录:谐波嵌入

在这一节中,我们介绍谐波电磁层的概念。通过这种方式,我们表示了一组由不同的模型v1和v2生成的嵌入,但它们在可以相互比较的意义上是兼容的。

这种兼容性极大地简化了升级路径。例如,在一个场景中,内嵌v1需要在一大堆图像上进行计算,而一个新的内嵌模型v2正在推出,这种兼容性确保了平滑的转换,而不需要担心版本兼容性。图8显示了我们的3G数据集的结果。可以看出,改进后的模型NN2明显优于NN1,而NN2嵌入和NN1嵌入的比较是在中间级别进行的

图9。学习谐波嵌入。图9。学习谐波嵌入。

学习谐波嵌入。为了学习谐波嵌入,我们生成了三联体,将v1 em- bed与正在训练的v2嵌入相混合。半硬负极是从整个v1和v2嵌入集中选择的。

7.1。谐波三联体损失

为了学习谐波嵌入,我们将v1的em层与正在学习的v2的嵌入层混合在一起。这是在三联体丢失的内部完成的,结果是额外生成的三联体促进了不同嵌入版本之间的兼容性。图9可视化了导致三联体损失的不同三联体组合。

我们从一个独立训练的NN2初始化v2嵌入,再从随机初始化的最后一层(嵌入层)重新训练,兼容性鼓励三重值丢失。首先只对最后一层进行再训练,然后继续对整个v2网络进行谐波损耗的训练。

图10显示了这种兼容性在实践中如何工作的可能解释。绝大多数的v2嵌入都可能嵌入在对应的v1嵌入附近,但是不正确放置的v1嵌入会受到轻微的扰动,从而使其在嵌入空间中的新位置提高了验证精度。

7.2。总结

这些都是非常有趣的发现,它的效果如此之好,多少有些令人惊讶。未来的工作将探索这一理念可以推广到何种程度。在仍然兼容的情况下,v2嵌入比v1改进的程度可能是有限的。此外,培训能够在移动电话上运行并与更大的服务器端模型兼容的小型网络也很有趣。

图10。谐波嵌入空间。图10。谐波嵌入空间。

谐波嵌入空间。这个可视化描绘了一个可能的解释,即谐波嵌入如何能够在保持对不太精确嵌入的兼容性的同时提高验证精度。在这种情况下,有一个分类错误的面,它的嵌入被扰动到v2中“正确”的位置。

0 人点赞