Sub-center ArcFace: Boosting Face Recognition by Large-scale NoisyWeb Faces

Margin-based的深度人脸识别方法(如SphereFace、CosFace和ArcFace)在无约束的人脸识别中取得了显著的成功。然而,这些方法容易受到训练数据中大量标签噪声的影响,因此需要费力的人力来清理数据集。在本文中,我们放宽了ArcFace的类内约束,以提高对标签噪声的鲁棒性。更具体地说,我们为每个类设计了K个子中心,训练样本只需要接近K个正向子中心中的任何一个,而不是只有一个正向中心。所提出的子中心ArcFace鼓励一个包含大部分干净面孔的优势子类和包含硬面孔或噪声面孔的非优势子类。大量的实验证实了sub-center ArcFace在大量真实世界噪声下的鲁棒性。在模型达到足够的判别能力后,我们直接放弃非优势子中心和高置信度的噪声样本,这有助于重现内部紧凑性,降低来自噪声的影响,与人工清洗数据集上训练的ArcFace相比,性能相当。通过利用大规模的web faces(Celeb500K),sub-center Arcface在IJB-B、IJB-C、MegaFace和FRVT上实现了最先进的性能。

1 Introduction

使用带有margin penalty的深度卷积神经网络(DCNN)嵌入进行人脸表示[26,15,32,5],以同时实现类内紧凑性和类间差异性,是最先进的人脸识别的首选方法。为了避免Triplet loss[26]中的采样问题,margin-based的softmax方法[15,32,31,5]集中于将margin penalty纳入一个更可行的框架softmax loss中,该框架在嵌入特征和线性变换矩阵之间的乘法步进内具有全局样本到类比较。当然,线性变换矩阵的每一列都被视为代表某一类的类中心[5]。

即使基于margin的softmax方法取得了显著的进步[8,15,32,31,5,39],但它们都需要在经过良好注释的清洁数据集[30,5]上进行训练,这需要密集的人力工作.Wang等[30]发现带有标签噪声的人脸会显著降低识别精度,于是人工建立了一个包括59K名人的1.7M图像的高质量数据集。然而,50名标注者需要连续工作一个月才能对数据集进行清理,这进一步证明了获得大规模清洁数据集用于人脸识别的难度。

由于精确的人工标注可能很昂贵[30],最近使用大规模噪声数据进行学习引起了很多关注[14,4,11,41,33]。然而,计算样本的time-varying权重[11]或根据当前模型的预测piece-wise损失函数[41],只能在一定程度上缓解来自噪声数据的影响,因为鲁棒性和改进取决于模型的初始性能。此外,协同挖掘法[33]需要一起训练孪生网络,因此对于在大规模数据集上训练大型模型不太实用。

图1.ArcFace与sub-center ArcFace的区别。(a)ArcFace与提出的次中心ArcFace的区别。本文在ArcFace中引入子类,放宽类内约束,可以有效提高噪声下的鲁棒性。(b)来自CASIA数据集[40]的一个身份的子类在使用sub-center ArcFace loss(K=10)后。噪声样本和硬样本(如轮廓和遮挡的人脸)会自动从大部分干净样本中分离出来。

如图1(a)所示,ArcFace[5]的目标有两部分。(1)类内紧凑性:将样本推近相应的positive中心;(2)类间差异:将样本推离其他所有negative中心。如果一个人脸是一个噪声样本,它就不属于相应的positive类。在ArcFace中,这种噪声样本会产生很大的错误损失值,从而影响模型的训练。在本文中,我们通过在ArcFace中引入子类,放宽了强制所有样本接近对应正中心的类内约束。对于每个类,我们设计了K个子中心,训练样本只需要接近K个正向子中心中的任何一个,而不是只有一个正向中心。

如图1(b)所示,提出的sub-center ArcFace将鼓励一个包含大多数干净人脸的主导子类和多个包含hard or noisy face的非主导子类。这种情况的发生是因为sub-center ArcFace的类内约束强制训练样本接近多个正向子类中的一个,但不是所有的子类。噪声很可能形成一个non-dominant sub-class,不会被强制到dominant sub-cl。因此,sub-center ArcFace对噪声的鲁棒性更强。本文大量的实验结果表明,在大量实际噪声下,提出的sub-center ArcFace比ArcFace[5]更稳健。

虽然提出的sub-center ArcFace可以有效地将清洁数据和噪声数据分开。但是,硬样本也被远离。sub-center的存在可以提高鲁棒性,但同时也破坏了类内的紧凑性,这对人脸识别很重要[34]。由于人脸识别的魔鬼在噪声中[30],我们在模型达到足够的判别能力后,直接放弃non-dominant和高置信度的噪声样本。通过将硬样本(hard samples)推近dominant sub-center,我们逐渐夺回类内紧凑性,进一步提高准确率。

概括而言,我们的主要贡献如下:

我们在ArcFace中引入子类,以提高其在噪声训练数据上的鲁棒性。所提出的子类ArcFace在大量真实世界噪声下的表现始终优于ArcFace。

通过放弃non-dominant sub-centers和高置信度的噪声样本,我们的方法可以实现与ArcFace在人工清理数据集上训练的性能相当。

Sub-center Arcface可以通过使用并行工具包轻松实现,从而享有对大规模数据集的可扩展性。通过利用大规模的原始网络人脸(如Celeb500K[1]),所提出的Sub-center Arcface在IJB-B、IJB-C、MegaFace和FRVT 1:1验证上实现了最先进的性能。

2 Related work

Face Recognition with Margin Penalty. 开创性的工作[26]使用Triplet loss来利用triplet数据,使得来自同一类别的人脸比来自不同类别的人脸以明显的欧氏距离余量更接近。尽管Triplet loss对于人脸识别是非常有意义的,但是样本与样本之间的比较是在mini-batch内进行的,而且Triplet loss的训练过程是非常具有挑战性的,因为triplet的数量是组合爆炸的,特别是对于大规模的数据集,需要有效的采样策略来选择信息量大的mini-batch[25,26],并在mini-batch内选择有代表性的triplet[36,21,28]。一些工作尝试用代理法减少triplet的总数[19,23],即把sample-to-sample的比较改为sample-to-proxy 的比较。然而,抽样和代理方法只优化了部分类的嵌入,而不是在一个迭代步骤中优化所有类。

Margin-based softmax方法[15,8,32,31,5]专注于将margin penalty纳入一个更可行的框架–softmax loss,它具有广泛的样本到类的比较。与深度度量学习方法(如Triplet[26]、Tuplet[21,28])相比,基于margin的softmax方法以保持每个类的中心的内存消耗为代价进行全局比较。样本到类的比较比样本到样本的比较更有效、更稳定,因为(1)类数比样本数小得多,(2)每个类可以用一个平滑的中心向量来表示,这个中心向量可以在训练过程中更新。

Face Recognition under Noise. 大多数人脸识别数据集[40,9,2,1]都是通过搜索预先定义的名人名单从互联网上下载的,原始标签很可能是模糊和不准确的[30]。最近,在人脸识别中,利用大量噪声数据进行学习引起了人们的极大关注[37,11,41,33],因为准确的人工标注可能很昂贵[30],甚至无法获得。

Wu等人[37]提出了一种语义引导策略,根据softmax函数的概率对噪声样本进行重新标注。然而,通过引导规则进行自动清洗需要耗时的迭代(如[37]中使用了两次细化步骤),且标签质量受到原始模型容量的影响。Hu等[11]发现样本的清洁度可能性可以通过其在目标logit分布中的位置来动态反映,并采用加权训练样本的思想提出了一种端到端的抗噪范式。Zhong等人。[41]通过引入一个假设的训练标签设计了一个抗噪声损失,该标签是原始标签与当前模型预测标签的概率1−ρ1-\rho1−ρ的凸组合。

然而,计算time-varying fusion weight[11]和设计piece-wise loss[41]包含许多手工设计的超参数。此外,重新加权的方法容易受到初始模型性能的影响.Wang等[33]提出了一种协同挖掘策略,以损失值为线索,同时检测噪声标签,交换高置信度的干净面孔,以缓解采样偏差造成的误差积累,并对预测的干净面孔进行重新加权,使其在判别模型训练中占据主导地位。然而,协同挖掘法需要同时训练twin网络,在大规模数据集上训练大型网络(如ResNet100[10])具有挑战性(如MS1M[9]和Celeb500K[1])。

Face Recognition with Sub-classes. 导致 "子类 "的实践和理论已经被研究了很久[42,43]。应用在人脸识别中的 "子类 "概念最早是在[42,43]中提出来的,用高斯的混合物来逼近每个类的基本分布。例如,一个人的脸部图像可能是正视图或侧视图,当所有图像在同一数据空间中表示时,会产生不同的模态。在[42,43]中,实验结果表明,可以利用子类划分有效地适应不同的人脸模态从而提高人脸识别的性能。Wan等人[29]进一步提出了一种可分离性准则,将每个类划分为子类,子类的重合度更低。新的类内散点可以表示多模态信息,因此优化这个类内散点可以更清晰地分离不同模态,进一步提高人脸识别的精度。然而,这些工作[42,43,29]只是在微小的不可控数据集上采用了手工设计的特征描述符。

与我们的工作同时,Softtriple[22]提出了一种multi-center softmax损失与class-wise正则化器。这些多中心可以更好地捕捉数据的隐藏分布[20],这是因为它们可以捕捉原始数据的复杂几何形状,有助于降低类内方差。在细粒度视觉检索问题上,Softtriple[22]损失比softmax损失的性能更好,因为捕捉局部簇是这个任务的关键。尽管 "子类 "的概念已经被应用于人脸识别[42,43,29]和细粒度视觉检索[22],但这些工作都没有考虑到大规模(如50万个类)的人脸识别问题,在大规模噪声下(如训练数据中大约50%的噪声样本)。

3 The Proposed Approach

3.1 ArcFace

ArcFace[5]在softmax损失中引入了additive angular margin penalty

利用xix_ixi​和WjW_jWj​上的并行加速优势,ArcFace2的实现可以在8个GPU(11GB 1080ti)的单台服务器上高效处理百万级身份。这种直接的解决方案改变了人们根深蒂固的看法,即由于GPU内存的瓶颈,通常无法实现所有类的大规模全局比较[26,28]。

3.2 Sub-center ArcFace

尽管ArcFace[5]已经显示出其在高效和有效的人脸特征嵌入方面的能力,但这种方法假设训练数据是干净的[5,30]。然而,这并不正确,尤其是当数据集规模较大时。如何使ArcFace对噪声具有鲁棒性是阻碍人脸表示和识别发展的主要挑战之一[30]。在本文中,我们针对这一问题,提出了为每个身份使用子类的思想,这可以被ArcFace直接采用,并将显著提高其鲁棒性。

图2. 通过最小化提出的sub-center ArcFace损失来训练深度人脸识别模型。本文的主要贡献由蓝色虚线框强调。基于对xi∈R512×1\mathbf x_i\in\mathbb R^{512\times 1}xi​∈R512×1上的嵌入特征和所有子中心W∈RN×K×512W\in\mathbb R^{N\times K\times 512}W∈RN×K×512的l2归一化步骤,我们通过矩阵乘法WTxiW^T\mathbf x_iWTxi​得到子类的相似度得分S′∈RN×1\mathcal S'\in\mathbb R^{N\times1}S′∈RN×1。以下步骤与ArcFace[5]相同。

Foster Sub-classes. 如图2所示,我们为每个身份设置一个足够大的K。基于对xi∈R512×1\mathbf x_i\in\mathbb R^{512\times 1}xi​∈R512×1上的嵌入特征和所有子中心W∈RN×K×512W\in\mathbb R^{N\times K\times 512}W∈RN×K×512的l2归一化步骤,我们通过矩阵乘法WTxiW^T\mathbf x_iWTxi​得到子类的相似度得分S∈RN×K\mathcal S\in\mathbb R^{N\times K}S∈RN×K。然后,我们对subclass-wise的相似度得分S∈RN×K\mathcal S\in\mathbb R^{N\times K}S∈RN×K采用最大池化步骤,得到类的相似度得分S′∈RN×1\mathcal S'\in\mathbb R^{N\times1}S′∈RN×1。

所提出的sub-center ArcFace损失可以表述为:

表1.不同比较策略的严格性和稳健性分析。不同比较策略的严格性和稳健性分析。在角空间中,"Min "为最近,"Max "为最远。"intra "指的是训练样本与正子中心(K)之间的比较。"inter "指训练样本与所有负子中心((N−1)×K)((N-1)\times K)((N−1)×K)之间的比较。"outlier "表示开集噪声,"label flip "表示闭集噪声。

Robustness and Strictness Analysis. 给定一个大的K,子类能够捕捉整个训练数据的复杂分布。除了在子类的余弦相似度得分上应用最大池化,我们还可以考虑其他不同的比较策略。在Tab. 1中,我们给出了四种比较策略的严格性和鲁棒性分析。(1)在最接近的类间子中心和最接近的类内子中心之间增加angular margin。对于类内比较,选择最接近的positive子中心可以放宽类内约束,提高噪声下的鲁棒性。对于类间比较,选择最接近的negative子中心将增强类间约束,因为与每个类的单一中心相比,子中心可以更好地捕捉整个数据集的复杂几何分布。然而,在闭集噪声下,增强的类间比较的鲁棒性较差。由于类间比较的初始状态是正交的,所以(2)的训练过程不能收敛,放松类间比较和类内比较都会使训练失去方向性,因为类间比较没有损失。(3) (4)由于类内比较的僵化会将子中心压缩到高维特征空间的一个点上,从而削弱了对噪声的鲁棒性。

图3. (a) 由预训练的ArcFace模型[5]预测的样本到其相应中心的角度分布。CASIA数据集存在噪声[40,30]。(b)来自dominant and non-dominant子类的样本的角度分布。清洁数据由子中心ArcFace自动隔离(K=10)。

Dominant and Non-dominant Sub-classes. 在图1(b)中,我们对CASIA数据集[40]中的一个身份采用sub-center ArcFace loss(K=10)进行训练后的聚类结果进行了可视化。很明显,所提出的sub-center ArcFace loss可以自动对人脸进行聚类,使硬样本和噪声样本与dominant干净样本分离开来。请注意,一些子类是空的,因为K = 10对特定身份来说太大。在图3(a)和图3(b)中,我们展示了CASIA数据集[40]上的角度分布。我们使用预先训练的ArcFace模型[5]来预测每个身份的特征中心,然后计算样本与其对应的特征中心之间的角度。从图3(a)中我们可以看到,大部分的样本都是接近其中心的,但是,有一些噪声样本是远离其中心的。在CASIA数据集上的观察结果与[30]中的噪声百分比估计值(9.3% ~13.0%)相符。为了自动获得一个干净的训练数据集,通常会通过一个hard threshold(如角度77或余弦0.225)去除噪声尾部。由于sub-center ArcFace可以自动将训练样本分为dominant子类和non-dominant子类,我们在图3(b)中对这两种不同类型的样本进行可视化。从这两张直方图中我们可以看到,sub-center ArcFace可以自动将干净的样本与硬性和噪声样本分开。更具体地说,大部分干净的面(8.6%)进入了优势子类,而其余的硬面和噪声面则进入了非优势子类。

图4.ArcFace(K=1)和sub-center ArcFace(K=3)的数据分布 丢弃non-dominant 子中心前后ArcFace(K=1)和sub-center ArcFace(K↓3K\downarrow 3K↓3)的数据分布。这里采用MS1MV0[9]。K=3#1表示放弃non-dominant sub-center 的sub-center ArcFace。

Drop Non-dominant Sub-centers and High-confident Noises. 即使使用子类可以提高噪声下的鲁棒性,但由于硬样本也被远离,因此破坏了类内的紧凑性,如图3(b)所示。在[9]中,MS1MV0(100K身份的10M左右的图像)被释放,估计噪声百分比约为47.1%~ 54.4%[30]。在[6]中,MS1MV0通过半自动方法精炼成一个干净的数据集,命名为MS1MV3(约5.1M的93K身份图像). 基于这两个数据集,我们可以在MS1MV0上得到干净和有噪声的标签。在图4(a)和图4(b)中,我们显示了样本到其最接近的子中心的角度分布(训练设置:[MS1MV0,ResNet-50,子中心ArcFace K=3])。

一般来说,样本有四类。(1)属于dominant子类的易干净样本(57.24%),(2)属于dominant子类的硬噪声样品(12.40%),(3)属于non-dominant子类的hard clean samples(4.28%),(4)属于non-dominant子类的easy noisy samples(26.08%)。在图4©中,我们显示了ArcFace模型(训练设置:[MS1MV0,ResNet50,ArcFace K=1])中样本与其对应中心的角度分布。通过对比图4(a)和图4©中的噪声样本百分比,我们发现sub-center ArcFace可以将噪声率显著降低到三分之一左右(从38.47%降低到12.40%),这也是sub-center ArcFace在噪声下更加稳健的原因。在训练sub-center ArcFace的过程中,如图4(b)所示,属于non-dominant子类的样本被推送到这些non-dominant子中心附近。

由于我们没有对子中心设置任何约束,所以每个身份的子中心可以很不同,甚至是正交的。在图4(d)中,我们显示了non-dominant样本到其dominant子中心的角度分布。通过结合图 4(a)和图 4(d),我们发现尽管干净数据和噪声数据有一些重合,但一个恒定的角度阈值(在 70-80 之间)可以很容易地搜索到大部分高置信度的噪声样本。

基于以上观察,我们提出了一种直接的方法来重新获得类内紧凑性。在网络具有足够的判别力后,我们直接放弃non-dominant子中心。同时,我们引入一个恒定的角度阈值来放弃高置信度的噪声数据。之后,我们在自动清理的数据集上从头开始重新训练模型。

3.3 Comparison with Softtriple and Re-weighting Methods

提出的sub-center ArcFace与Softtriple[22]在以下几个方面有所不同。

Softtriple通过采用多中心,在细粒度检索方面有所改善。然而,当我们在干净的数据集上直接使用子中心时,并没有发现明显的改进,因为子中心会破坏类内的紧凑性,而这对于人脸识别问题来说是很重要的。我们的实验分析表明,子中心可以提高噪声下的鲁棒性,这样sub-center ArcFace可以在raw web faces上进行训练,而不需要任何人工清洗步骤。

Softtriple考虑到平滑性,采用了softmax pooling(从子类相似性到类间相似性)。相比之下,我们使用内置的max pooling,性能没有任何下降。Max pooling比softmax pooling更有效率,特别是对于大规模分类问题。

Softtriple增加了子中心之间的相似性正则化(similarity regularization)。然而,在我们的案例中,噪声数据应该是相似的,这是不合理的。为了增强类内紧凑性,我们只保留dominant子中心,在模型有足够的判别力后,放弃non-dominant子中心。为了降低噪声数据的影响,我们直接放弃高置信度的噪声数据,而不是采用复杂的重新加权策略[41,11]。

Softriple只采用了一个小的cosine margin(0.01)来明确在训练过程中打破平局。相反,我们采用了ArcFace所做的大angular margin(0.5)设置。

所提出的sub-center ArcFace与re-weighting方法[11,41]的主要区别在于,sub-center ArcFace在模型训练之初受噪声数据的影响较小。相比之下,初始模型的判别力对于NT[11]和NR[41]方法来说都很重要,因为它们的自适应权重是从模型中预测出来的。

我们的sub-center ArcFace在保持极度简单的同时,实现了人脸识别的高精度,只增加了两个超参数:次中心数和恒定阈值,以丢弃高置信度的噪声数据。

4 Experiments

4.1 Experimental Settings

增加了两个超参数:次中心数和恒定阈值,以丢弃高置信度的噪声数据。

4 Experiments

4.1 Experimental Settings

[外链图片转存中…(img-5bVHSgEX-1597829231430)]

4.2 Ablation Study

Sub-center ArcFace相关推荐

  1. 人脸检测、人脸定位、人脸对齐、MTCNN、人脸识别(衡量人脸的相似或不同:softmax、三元组损失Triplet Loss、中心损失Center Loss、ArcFace)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) # ArcFace class ArcMarginProduc ...

  2. ArcFace - 人脸识别

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:知乎 作者:科密中的科蜜 链接:https://zhuanl ...

  3. 人脸识别 ArcFace 实现

    为什么用ArcFace 前一篇文章已经提到了问什么不能直接用softmax loss做损失,是因为类与类之间交界处不容易分开,而center loss能把他分开是因为缩小了类内距,就是给每一个中心点, ...

  4. 基于ONNX人脸识别实例(SCRFD/ArcFace)-C#版

    一.引用 Microsoft.ML.OnnxRuntime OpenCvSharp OpenCvSharp.Extensions 二.人脸检测(Face Detection) using System ...

  5. 基于javafx和虹软ArcFace的高校新生人脸录入与识别系统

    一.需求分析 随着人脸识别技术的快速发展,各大高校也开始尝试在新生入校时就通过人脸识别相关技术对新生人脸信息进行采集并录入高校人脸信息库中.在今后的学习生活中,已经录入人脸信息的同学可以轻松的通过人脸 ...

  6. 论文阅读之Arcface

    Arcface论文阅读 文章目录 Arcface论文阅读 人脸识别流程 数据 VGG2 MS-Celeb-1M MegaFace LFW CPF AgeDB 损失层 Softmax Loss Cent ...

  7. Additive Angular Margin Loss (ArcFace) 附加角裕度损失的进阶之路

    ArcFace: Additive Angular Margin Loss for Deep Face Recognition 本文目的是梳理loss函数由欧式空间(Euclidean Space)转 ...

  8. 虹软 ArcFace 与 Dlib 人脸识别对比

    我司最近要做和人脸识别相关的产品,原来使用的是某在线人脸识别平台,识别率和识别速度很满意,但是随着量起来的话,成本也是越来越不能接受(目前该功能我们是免费给用户使用的),而且一旦我们的设备掉线了就无法 ...

  9. ArcFace: Additive Angular Margin Loss for Deep Face Recognition 论文学习

    论文地址:https://arxiv.org/pdf/1801.07698.pdf Abstract 使用 DCNN 进行大规模人脸识别的一个主要挑战就是设计损失函数来增强判别能力.Center lo ...

  10. 解析人脸识别中cosface和arcface(insightface)的损失函数以及源码

    人脸识别最近几年的发展,几乎就两条,第一是面向移动设备,第二,改进损失函数,使训练的模型更加有效.这就要求loss能push各个类内在空间分布的更紧凑.从normface开始,人脸识别就进入使用余弦相 ...

最新文章

  1. PS调出通透唯美阳光外景女生照片
  2. spring-boot启动源码学习-1
  3. spring中Validation设计与实现
  4. assertequal用法python_assertEqual和assertIs之间有什么区别(assertIs是在Python 2.7中引入的)?...
  5. android scrollview 底部控件,Android ScrollView和屏幕底部的按钮
  6. Java Annotation认知(包括框架图、详细介绍、示例说明)
  7. HttpServletRequest中获取IP值
  8. LeetCode - Maximum Subarray
  9. type python django models_Django 模型
  10. C ++ Singleton设计模式
  11. 这样的AI技术实战方式,大boss都看不下去了!
  12. jQuery设置文本框回车事件
  13. HIVE数据导入MYSQL实现方式
  14. 09-JS的事件流的概念(重点)
  15. Tomcat8安装配置
  16. 工作转正申请自我评价
  17. 手机java应用安装失败_解决OPPO手机在Android studio 环境下安装失败问题
  18. keycloak 添加 注册邮箱后缀验证
  19. 文件上传绕waf(waf拦不住我)
  20. 彻底解读剪不断理还乱的\r\n和\n, 以Windows和Linux为例

热门文章

  1. java线程(线程的概念,线程的状态)
  2. 中望cad文字显示问号怎么办_中望CAD钢筋符号显示为问号怎么办?
  3. 第二代支付系统专题之报文篇(一)小额支付报文完整版(含二代新增功能业务说明)...
  4. 怎么把cad做的图分享给别人_CAD命令大全分享,作图快人两步
  5. 高斯过程回归预测 C++代码实现
  6. 网页中下拉列表框自动展开的方法
  7. ERP原理学习3-5
  8. 105个上榜!2020年工业互联网试点示范项目名单公布
  9. Axure产品设计软件视频教程大全
  10. 如何计算电机极数和无刷电机的Kv值?