Abstract

当前先进的深度人脸识别方法大多是通过一个 softmax 多类别分类框架来训练。尽管它们的应用很广、也很有效,但是多项缺点束缚了它们在推理阶段的表现。本文首次找到了这些多类别分类框架在训练和测试阶段的差异,讨论了 softmax 归一化的“竞争”本质造成的束缚。于是提出了一个新的二元分类训练框架,叫做SphereFace2。与现有方法相比,SphereFace2 规避了 softmax 归一化,以及相应的 closed-set 假设。它有效地弥补了训练和测试时的差异,通过每个二分类任务来单独地改善表征。除了设计一个表现良好的损失函数,作者也针对"one-vs-all"二分类框架,归纳了一些通用的原则。作者在主流基准上做了充分的实验,证明了 SphereFace2 的能力。

1. Introduction

近些年我们看到了人脸识别取得了巨大成功,主要归功于训练目标函数的推动。当前的人脸识别都是基于一个多分类学习目标函数,比如 softmax 交叉熵损失。尽管很有效,但在多类别分类训练和 open-set pair-wise 测试之间仍有着明显的差异,如图1所示。与多类别分类相比,pair-wise 验证是一个二元问题,我们要判断一对图片是否属于同一个人。这个明显的分歧会造成训练目标偏离人脸识别任务,制约模型表现。另一方面,多类别分类训练假设在 closed-set 环境中,所有训练数据皆属于某一类别,这和 open-set testing 不一样。


图1. 多类别分类训练和二元分类训练的比较。

为了打破这些限制,作者提出了一个新的人脸识别框架,完全基于二元分类。SphereFace 最早将人脸识别的多类别分类问题放在超球面上(即角度空间)。因此本文的方法叫做 SphereFace2,因为它完全是在超球面上做二分类(所以叫"2")。与多分类训练不同,SphereFace2 有效地弥补了训练和测试的差异,因为训练和测试时都是做 pair-wise 比较。此外,SphereFace2 放宽了 closed-set 假设,将训练看作为一个 open-set 问题。比如,不属于任何一个类别的训练样本仍然有用,SphereFace2 可以看作为负样本,而在多分类框架中它们是没发挥作用的。给定训练集中的 K K K个类别,SphereFace2 构建了 K K K个二元分类目标,目标类别的数据看作为正样本,其余类别的数据看作为负样本。其精髓与 “one-vs-all” 分类相似。图1 展示了常见的多类别训练、 SphereFace2 和 open-set 评测。

在多类别分类训练中,softmax loss 在不同类别之间引入了竞争,很容易导致网络预测过于自信。SphereFace2 让每个二分类任务单独地优化表征的判别性,没有竞争产生。

我们也可从另一个角度来理解其重要性。根据训练过程中样本间的关系,人脸识别方法可以分为 triplet-based 方法和 pair-based 方法。Triplet-based 方法在目标函数中使用了一个 anchor、多个正样本和多个负样本,而 pair-based 学习则使用多个正负样本。关于模型是否有用 proxy 来表示一组样本, triplet-based 和 pair-based 方法可以用也可不用 proxy 来学习。表1将一些人脸识别方法做了分类。Proxy-free 方法通常需要昂贵的 pair/triplet 挖掘,大多使用了一个包括 softmax 损失的混合损失函数。用 proxy 的 triplet 方法包括 softmax loss 及其变种,分类器是一个类别 proxy,学习过程中会包含一个 anchor(即深度特征 x \bm{x} x)、正样本 proxy(即目标分类器 W y \bm{W}_y Wy​)和负样本分类器(即其它分类器 W j , j ≠ y \bm{W}_{j}, j\neq y Wj​,j​=y)。大多人脸识别方法都默认用了 proxies,因为它们可以大幅度加快训练速度,提升数据效率(尤其在大规模数据集上)。与其它的人脸识别方法不同,SphereFace2 首次采用了带 proxies 的 pair-wise 的学习范式。

Triplet-based 方法和 pair-based 方法的显著区别就是是否用了一个全局阈值。图2展示了 triplet-based 方法比较不同样本对的相似得分,而 pair-based 方法则将相似得分和一个阈值比较。作为一个 pair-based 方法,SphereFace2 也是优化相似得分和全局阈值之间的差异。通过学习区分正负样本对的阈值,它自然就可泛化到 open-set 人脸识别任务上。

作者系统地讨论了正负样本平衡、难例样本挖掘和角度 margin 的重要性,将它们结合起来设计了 SphereFace2 的损失函数。实际,大多数的 softmax loss 也做了难例挖掘,加入了角度 margin。此外,作者发现正样本对的相似度分布与负样本对的差异巨大,有着较大的方差,造成阈值很难决断。于是作者提出了一个新的相似度校正方法,调整正负样本对的分布,有效地提升 SphereFace2 的泛化性。


图2. Triplet-based 和 pair-based 方法的比较。紫色箭头表示优化方向。Triplet 训练比较不同的相似度。Pair 训练比较相似度和阈值。

SphereFace2 的二分类富有灵活性,并带来下面几点好处。一,softmax loss 的分类层的很难做到并行,SphereFace2 的分类层则可以在多个 GPUs 上做到并行。Softmax loss 的梯度更新需要给到每个分类器,而 SphereFace2 是独立的,分类器之间完全解耦。每个分类器的梯度只取决于特征 x \bm{x} x和二元分类器自己。因此,SphereFace2 能够解决 softmax loss 在海量人脸身份数据训练中遇到的问题。二,SphereFace2 用到的 pair-wise 标签是 softmax losses 的类别标签的弱化监督。这个性质和 open-set 假设紧密相关,使得 SphereFace2 对于类标签噪声不敏感。比如在每个二分类中,SphereFace2 无需负样本的类别标签。只要我们知道负样本与正样本标签不同,SphereFace2 即可运行。实验证明了 SphereFace2 对类标签噪声的鲁棒性。本文贡献如下:

  • SphereFace2 构建了一个二分类框架,用于人脸识别。SphereFace2 首先在人脸识别领域采用了带 proxies 的 pair-wise 学习范式。
  • SphereFace2 通过 pair-wise 验证对齐了训练目标,弥补 open-set 人脸识别中训练和测试的差异。
  • 除了提出一个不错的损失函数,也归纳了损失函数设计原则。
  • 二分类解耦促使了分类层并行化,SphereFace2 要比 softmax loss 更适合大规模计算。
  • SphereFace2 的 pair-wise 标签要比 softmax loss 的类标签的监督弱一些,因此模型对类标签噪声更加鲁棒。

2. Related Work

人脸识别方法要么基于 proxy,要么没用 proxy,如图1所示。Proxy-free 方法包括 contrastive loss、triplet loss。这俩损失函数直接优化样本间的相似度,因此很不稳定,缺乏数据效率。Proxy-free 方法更多用在度量学习任务。Proxy-based 方法则使用一组 proxies 来表示不同样本的类别,对大规模数据集来说更好。常见的包括 softmax loss 和变种,每个 proxy 表示一个类别。SphereFace 认为 large-margin 分类更符合 open-set 人脸识别,提出用大角度距离来学习特征。CosFace 和 ArcFace 用一个替代方法来学习大角度距离的特征,稳定性得到提升。尽管大角度距离分类使训练目标更加接近 open-set 人脸识别,但是差异仍存在。此外,大角度距离造成训练不稳定。而 SphereFace2 避免了这些问题,通过带 proxies 的 pair-wise 学习将训练目标和 open-set 人脸识别对齐。

3. SphereFace2 Framework

3.1 Overview and Preliminaries

SphereFace2 目的是将训练目标函数和 open-set 验证对齐,训练更加有效,在 open-set 人脸识别上的泛化性更强。

SphereFace2 在训练中直接加入 pair-wise 比较,构建 K K K个二分类任务( K K K是训练集中的类别个数)。SphereFace2 的核心就是将训练目标表示为二分类问题。在第 i i i个二分类中,我们用第 i i i个类别的人脸图片作为正样本,其它类别的人脸图片作为负样本。我们将第 i i i个二分类的权重表示为 W i \bm{W}_i Wi​,特征表示为 x \bm{x} x,它对应的标签是 y y y。一个简单的损失函数就是:

L f = log ⁡ ( 1 + exp ⁡ ( − W y T x − b y ) ) + ∑ i ≠ y log ⁡ ( 1 + exp ⁡ ( W i T x + b i ) ) L_f = \log (1+ \exp (-\bm{W}_y^T \bm{x} - b_y)) + \sum_{i\neq y} \log (1 + \exp (\bm{W}_i^T \bm{x} + b_i)) Lf​=log(1+exp(−WyT​x−by​))+i​=y∑​log(1+exp(WiT​x+bi​))

它是 K K K个标准二元 logistic 回归损失的组合。而作者通过归一化分类器 W i , ∀ i \bm{W}_i,\forall i Wi​,∀i和特征 x \bm{x} x,在单位超球面上进行二元分类。损失函数就变成了:

L s = log ⁡ ( 1 + exp ⁡ ( − cos ⁡ ( θ y ) ) ) + ∑ i ≠ y log ⁡ ( 1 + exp ⁡ ( cos ⁡ ( θ i ) ) ) , (1) L_s = \log (1 + \exp(-\cos(\theta_y))) + \sum_{i\neq y} \log(1 + \exp (\cos(\theta_i))), \tag{1} Ls​=log(1+exp(−cos(θy​)))+i​=y∑​log(1+exp(cos(θi​))),(1)

其中 θ i \theta_i θi​是第 i i i个二元分类器 W i \bm{W}_i Wi​和样本 x \bm{x} x的角度。偏置 b i , ∀ i b_i,\forall i bi​,∀i通常会被去除,因为它们是在 closed set 中学习,无法泛化到未知类别上。但是在 SphereFace2 中,作者发现它们很有用,后面会讨论。现在我们就暂时去除它们。将二元分类器如此参数化的一个优势就是,它用 W i \bm{W}_i Wi​来构建第 i i i个类别的 positive proxy,用 − W i -\bm{W}_i −Wi​来构建 negative proxy。根据标签,训练会最小化 x \bm{x} x和 W i \bm{W}_i Wi​的角度,或 x \bm{x} x和 − W i -\bm{W}_i −Wi​的角度,从而最小化损失。这种正负 proxies 参数化可以保证 minimum hyperspherical energy,这对模型泛化是有益的。SphereFace2 的参数个数和多类别训练中分类层的参数个数是一样的,没有增加计算量。但是,简单地最小化等式1并不能带来满意的效果。因此,作者在后面讨论了如何为 SphereFace2 找到一个可靠的损失函数。

3.2 A Principled View on Loss Function

作者强调该损失函数的具体形式不重要,SphereFace2 的核心是二分类(带proxies的 pair-wise 学习)。因此就存在很多的替代损失函数。除了提出一个具体的损失函数,作者也归纳了设计损失函数的原则。

正负样本均衡。SphereFace2 的第一个问题就是平衡正负样本。在 triplet loss、contrastive loss 和 softmax loss 中,也考虑了正负样本均衡。Contrastive loss 通过样本对选取来实现正负样本均衡。根据 [28] 的观点,triplet-based 方法(包括 triplet loss 和 softmax-based loss)能天然地实现正负样本均衡,因为这些损失要求正负样本的个数均衡。

从等式1,正样本和负样本的梯度是高度不均衡的,因为只有一项在计算正样本的梯度。一个简单而有效的办法是增加一个加权系数 λ \lambda λ,平衡正负样本的梯度:

L b = λ log ⁡ ( 1 + exp ⁡ ( − cos ⁡ ( θ y ) ) ) + ( 1 − λ ) ∑ i ≠ y log ⁡ ( 1 + exp ⁡ ( cos ⁡ ( θ i ) ) ) L_b = \lambda \log(1 + \exp(-\cos(\theta_y))) + (1 - \lambda) \sum_{i\neq y} \log(1 + \exp(\cos(\theta_i))) Lb​=λlog(1+exp(−cos(θy​)))+(1−λ)i​=y∑​log(1+exp(cos(θi​)))

λ ∈ [ 0 , 1 ] \lambda \in [0,1] λ∈[0,1] 是一个超参数,平衡正负样本。最简单的方式就是, λ \lambda λ值是 λ = K − 1 K \lambda = \frac{K-1}{K} λ=KK−1​, K K K是类别个数。

难例样本挖掘。另一个判断损失函数优劣的标准就是难例挖掘,因为它和收敛速度、质量紧密相关。人们普遍认为 softmax-based 损失无需难例挖掘,不像 triplet loss 或 contrastive loss。但是这不准确。作者构建了一个简单的例子,展示 softmax-based loss 是如何进行难例挖掘的。假设四个类别的余弦对数是 [ cos ⁡ ( θ 1 ) , cos ⁡ ( θ 2 ) , cos ⁡ ( θ 3 ) , cos ⁡ ( θ 4 ) ] [\cos(\theta_1), \cos(\theta_2), \cos(\theta_3), \cos(\theta_4)] [cos(θ1​),cos(θ2​),cos(θ3​),cos(θ4​)],目标类别是 y = 1 y=1 y=1。然后固定 cos ⁡ ( θ i ) = 0.2 , i ≠ y \cos(\theta_i)=0.2, i\neq y cos(θi​)=0.2,i​=y,从-1到1之间变动 cos ⁡ ( θ y ) \cos(\theta_y) cos(θy​),计算 s − s- s−归一化 softmax loss L n = − log ⁡ ( exp ⁡ ( s ⋅ cos ⁡ ( θ y ) ) ∑ i exp ⁡ ( s ⋅ cos ⁡ ( θ i ) ) ) L_n = -\log(\frac{\exp(s\cdot \cos(\theta_y))}{\sum_i \exp(s\cdot \cos(\theta_i))}) Ln​=−log(∑i​exp(s⋅cos(θi​))exp(s⋅cos(θy​))​)。在图3a中,我们可以发现随着 s s s增大,难例样本的损失会越大,对损失要更加敏感。这就让网络更加关注于难例样本角度的优化,加快收敛、提升泛化性。在 softmax-based margin loss 中,普遍使用了scaling 策略,隐式地进行难例挖掘。对于标准的 softmax 交叉熵损失,它通过特征与分类器的范数动态进行着难例挖掘。


图3. 不同目标余弦值下的损失目标值

本文框架需要一个相似的策略进行难例挖掘。受到[5]的 rescaled softplus 函数启发,我们使用了一个额外的超参数 r r r,基于 L b L_b Lb​来调节损失函数的曲率,

L e = λ r ⋅ log ⁡ ( 1 + exp ⁡ ( − r ⋅ cos ⁡ ( θ y ) ) ) + 1 − λ r ⋅ ∑ i ≠ y log ⁡ ( 1 + exp ⁡ ( r ⋅ cos ⁡ ( θ i ) ) ) (2) L_e = \frac{\lambda}{r} \cdot \log (1+\exp(-r \cdot \cos(\theta_y))) + \frac{1-\lambda}{r} \cdot \sum_{i\neq y} \log(1+\exp(r\cdot \cos(\theta_i))) \tag{2} Le​=rλ​⋅log(1+exp(−r⋅cos(θy​)))+r1−λ​⋅i​=y∑​log(1+exp(r⋅cos(θi​)))(2)

r r r越大,表示越关注在难例样本上。假设我们只有一个二元分类器,当 λ = 1 \lambda=1 λ=1时, L e L_e Le​就变成了 1 r ⋅ log ⁡ ( 1 + exp ⁡ ( − r ⋅ cos ⁡ ( θ y ) ) ) \frac{1}{r} \cdot \log (1+\exp(-r \cdot \cos(\theta_y))) r1​⋅log(1+exp(−r⋅cos(θy​)))。在图3b中,作者给出了不同的 r r r值下,损失随着 cos ⁡ ( θ y ) \cos(\theta_y) cos(θy​)在 [ − 1 , 1 ] [-1,1] [−1,1]区间变化的样子。我们可以发现当 r r r变大时,容易样本的损失趋近于0,而难例样本的值仍然很大。因此, r r r能帮助挖掘难例样本,增强泛化性。

Angular margin。在 open-set 人脸识别任务,利用 large angular margin 来学习深度特征是实现泛化性的最有效的方式之一。SphereFace 通过一个乘数 margin,为深度人脸识别带来了 angular margin。CosFace、ArcFace 则考虑了一个加数 angular margin,让损失函数训练起来更容易。本文作者提出了一个双面的 angular margin,有2个可调节参数:

L a = λ r ⋅ log ⁡ ( 1 + exp ⁡ ( − r ⋅ ( cos ⁡ ( θ y ) − m p ) ) ) + 1 − λ r ⋅ ∑ i ≠ y log ⁡ ( 1 + exp ⁡ ( r ⋅ ( cos ⁡ ( θ i ) + m n ) ) ) (3) L_a = \frac{\lambda}{r}\cdot \log(1+\exp(-r \cdot (\cos (\theta_y) - m_p))) + \frac{1-\lambda}{r}\cdot \sum_{i\neq y} \log(1+\exp(r\cdot (\cos(\theta_i) + m_n))) \tag{3} La​=rλ​⋅log(1+exp(−r⋅(cos(θy​)−mp​)))+r1−λ​⋅i​=y∑​log(1+exp(r⋅(cos(θi​)+mn​)))(3)

m p m_p mp​控制正样本的 margin 大小, m n m_n mn​ 控制负样本的 margin 大小。 m p m_p mp​和 m n m_n mn​越大,加数 angular margin 就越大,这与 CosineFace 相似。其它形式的 angular margin 也适用本框架,不在本文讨论范围内。


图4. 不同损失的 angular margin 比较

但是与 softmax 损失中的 angular margin 不同,等式3的 angular margin 有一个全局置信度阈值0(即 cos ⁡ ( θ i ) = 0 \cos(\theta_i)=0 cos(θi​)=0)。 m p m_p mp​和 m n m_n mn​都是关于决策边界 cos ⁡ ( θ i ) = 0 \cos(\theta_i)=0 cos(θi​)=0引入的,见图4b。该性质有利有弊。好处就是,每个类的 angular margin 是基于一个全局连续的置信度阈值加入的,不依赖于其它的分类器,而 softmax loss 的 angular margin 则受到相邻分类器的影响。但是,想要实现全局阈值0是非常困难的,造成训练难度增加且不稳定。为了提升稳定性,softmax loss 中不需要的偏置就可以发挥作用了。于是有:

L b = λ r ⋅ log ⁡ ( 1 + exp ⁡ ( − r ⋅ ( cos ⁡ ( θ y ) − m p ) − b y ) ) + 1 − λ r ⋅ ∑ i ≠ y log ⁡ ( 1 + exp ⁡ ( r ⋅ ( cos ⁡ ( θ i ) + m n ) + b i ) ) (4) L_b = \frac{\lambda}{r}\cdot \log(1+\exp(-r \cdot (\cos(\theta_y) - m_p) - b_y)) + \frac{1-\lambda}{r}\cdot \sum_{i\neq y}\log(1+\exp (r\cdot (\cos (\theta_i) + m_n) + b_i)) \tag{4} Lb​=rλ​⋅log(1+exp(−r⋅(cos(θy​)−mp​)−by​))+r1−λ​⋅i​=y∑​log(1+exp(r⋅(cos(θi​)+mn​)+bi​))(4)

b i b_i bi​表示第 i i i个类的二元分类器的偏置项。因为在 open-set 设定中,类别相关的偏置没啥用,作者就为所有类别都用一个相同的偏置 b b b。偏置 b b b现在就成了所有二分类的全局置信度阈值,决策边界就成了 r ⋅ cos ⁡ ( θ y ) + b = 0 r\cdot \cos(\theta_y)+b=0 r⋅cos(θy​)+b=0,而非 r ⋅ cos ⁡ ( θ y ) = 0 r\cdot \cos(\theta_y)=0 r⋅cos(θy​)=0,训练就更加稳定、灵活。最终的决策边界就是, r ⋅ ( cos ⁡ ( θ y ) − m p ) + b = 0 r\cdot (\cos(\theta_y)-m_p)+b=0 r⋅(cos(θy​)−mp​)+b=0对于正样本, r ⋅ ( cos ⁡ ( θ y ) + m n ) + b = 0 r\cdot (\cos(\theta_y)+m_n)+b=0 r⋅(cos(θy​)+mn​)+b=0对于负样本。阈值 b b b对每个类来说是通用的、连续的。图4展示了等式4。我们也可将等式4理解为一个可学习的 angular margin,置信度阈值为0。然后,我们可以将 m p − b r m_p-\frac{b}{r} mp​−rb​看作为 positive margin,将 m n + b r m_n + \frac{b}{r} mn​+rb​看作为 negative margin。因为 b b b可学习,我们只需关注 m p + m n m_p+m_n mp​+mn​,这样就只有一个超参数了。为了实际操作中简便, m p = m n = m m_p=m_n=m mp​=mn​=m,这样只需调节 m m m的值。


图5. 不同的 t t t训练时,正负样本对的相似度分布。测试样本对来自于4个验证集:LFT、Age-DB30、CA-LFW、CP-LFW.

相似度调节。在图5a,发现正负样本对的余弦相似度分布存在明显的差异。负样本对的相似度分布的方差较小,更加聚集,而正样本对的分布方差更大。正负样本对的分布差异导致大量的相似度得分是重叠的,很难有一个明确的阈值来区分出正负样本对。这不利于泛化性。图5a 也显示出相似度得分大多聚集在 [ − 0.2 , 1 ] [-0.2, 1] [−0.2,1]。这就促使我们去(1)减少重叠的相似度得分,(2)增加相似度得分的动态域。

于是作者提出了一个新的相似度调节方法。基本思想就是构建一个单调递减的函数 g ( z ) g(z) g(z), z ∈ [ − 1 , 1 ] , g ( z ) ∈ [ − 1 , 1 ] z\in [-1,1], g(z)\in [-1,1] z∈[−1,1],g(z)∈[−1,1]。然后用 g ( cos ⁡ ( θ ) ) g(\cos(\theta)) g(cos(θ))替代原来的 cos ⁡ ( θ ) \cos(\theta) cos(θ),调节训练过程中从角度到相似度得分的映射关系。考虑到原来的 cos ⁡ ( θ ) \cos(\theta) cos(θ)大多位于 [ − 0.2 , 1 ] [-0.2, 1] [−0.2,1]之内,我们需要 g ( z ) g(z) g(z)将 [ − 0.2 , 1 ] [-0.2, 1] [−0.2,1]映射到一个更大的域内(比如 [ − 0.9 , 1 ] [-0.9, 1] [−0.9,1])。 g ( z ) g(z) g(z)为:

g ( z ) = 2 ( z + 1 2 ) t − 1 , z ∈ [ − 1 , 1 ] , (5) g(z)=2(\frac{z+1}{2})^t -1, \ \ \ z\in [-1,1], \tag{5} g(z)=2(2z+1​)t−1,   z∈[−1,1],(5)

通常, z = cos ⁡ ( θ ) z=\cos(\theta) z=cos(θ)。在实际操作中,我们只将原来的余弦相似度替换为 g ( cos ⁡ ( θ ) ) g(\cos(\theta)) g(cos(θ))。 t t t控制相似度调节的力度。当 t = 1 t=1 t=1, g ( cos ⁡ ( θ ) ) g(\cos(\theta)) g(cos(θ))退化为标准的余弦相似度。图5显示了通过增大 t t t的值,相似度分布会相应地调整。随着 t t t变大,正负样本对之间的重叠区域随之变小,二者的相似度分布逐渐区分开来。此外,相似度得分的动态域也由 [ − 0.2 , 1 ] [-0.2, 1] [−0.2,1]增大到 [ − 0.4 , 1 ] [-0.4, 1] [−0.4,1]。这些结果证明了相似度调节的作用,可以极大地提升模型在人脸识别基准上的表现。

最终的损失函数。基于上述设计原则、简化超参数后,我们得到:

L = λ r ( 1 + exp ⁡ ( − r ⋅ ( g ( cos ⁡ ( θ y ) ) − m ) − b ) ) + 1 − λ r ⋅ ∑ i ≠ y log ⁡ ( 1 + exp ⁡ ( r ⋅ ( g ( cos ⁡ ( θ i ) ) + m ) + b ) ) , (6) L=\frac{\lambda}{r}(1+\exp (-r \cdot (g(\cos(\theta_y)) - m) - b)) + \frac{1-\lambda}{r}\cdot \sum_{i\neq y} \log(1+\exp(r\cdot (g(\cos(\theta_i)) + m) + b)), \tag{6} L=rλ​(1+exp(−r⋅(g(cos(θy​))−m)−b))+r1−λ​⋅i​=y∑​log(1+exp(r⋅(g(cos(θi​))+m)+b)),(6)

g ( ⋅ ) g(\cdot) g(⋅)有一个超参数 t t t。总共有4个超参数, λ , r , m , t \lambda, r, m, t λ,r,m,t。每个都有单独的几何解释,调参起来更容易。根据这些设计原则,我们可以想出多个损失函数。

3.3 几何解释

这一部分详细阐述了损失的设计,解释每个超参数的几何意义。 r r r是超球面的半径,所有的特征都坐落在它的上面,它也是特征的幅级。第 i i i个类的偏置 b b b沿着分类器 W i \bm{W}_i Wi​的方向移动决策边界。参数 m m m控制 angular margin 大小。输出特征维度设为2,在图7中展示了不同 m m m值下,SphereFace2训练的2D特征。该可视化验证了下面几点论断。


图7. SphereFace2 的2D特征。作者从 VGGFace2 中构建了一个小型数据集,包含6个人脸类别。同一颜色的点表示同一类别的样本。

偏置 b b b移动决策边界。从图7中,可以发现偏置 b b b能有效地学习沿着分类器的方向去移动决策边界,为所有的类别提供一个新的全局阈值 b b b。 b b b让学习变得简单、稳定,且保留了所有类别共享分类置信度阈值的特性。与其它人脸识别方法相比,SphereFace2 的全局置信度能学习到一致的正负样本对区分,简化选取阈值的难度。

m , r m,r m,r控制 angular margin。图7 给出了基线决策边界(图7b中的(2)),以及正负样本的决策边界(图7b中的(1)/(3))。正负样本决策边界的距离是 2 r m 2rm 2rm,输出有效的 angular margin。结果显示该 angular margin 符合我们的期望。

m m m越大,angular margin 越大。从图7中,我们可以比较 m = 0 , m = 0.2 m=0,m=0.2 m=0,m=0.2时的特征,发现 m m m越大,不同类别间的 angular margin 就越大。


图8. 3D 可视化

在图8中,作者也可视化了3D特征,以及 r = 30 , m = 0.2 r=30, m=0.2 r=30,m=0.2 的决策面。可发现每个类的样本区分的很好,angular margins 较大,这和2D情形一致。Angular margin 符合我们的期望。该结果进一步证明了2D可视化得出的结论。

3.4 Efficient Model Parallelization on GPUs

要想人脸识别效果好,在大规模数据集上训练不可少,但是分类层的大小是个瓶颈,它的空间复杂度随着类别数线性增加。常用办法是将分类器 W i , ∀ i W_i, \forall i Wi​,∀i和梯度计算分布到多个 GPU 上。然后每个 GPU 只计算部分类别的对数。但是,softmax loss 归一化不可避免地需要在多个 GPUs 之间进行数据通信,造成并行效率低下。SphereFace2 的梯度计算是独立于类别的,可在单个 GPU 上完成计算。因此,无需任何的通信成本。SphereFace2 将不同的分类器解耦,就很适合多GPU的模型并行化。

Softmax loss 的 softmax 归一化包含了所有分类器的计算,所以计算某个分类器的梯度就需要其它分类器的权重,造成跨 GPU 通信负担。SphereFace2 的损失可以写作 L = ∑ i = 1 K f i ( W i , x ) L=\sum_{i=1}^K f_i(\bm{W}_i, \bm{x}) L=∑i=1K​fi​(Wi​,x),其中 f i ( ⋅ , ⋅ ) f_i(\cdot, \cdot) fi​(⋅,⋅)是一个可微的函数。为了计算 ∂ L ∂ W i \frac{\partial L}{\partial \bm{W}_i} ∂Wi​∂L​,我们只用计算 ∂ f i ( W i , x ) ∂ W i \frac{\partial f_i(\bm{W}_i, \bm{x})}{\partial \bm{W}_i} ∂Wi​∂fi​(Wi​,x)​,不涉及到其它的分类器。因此,梯度计算可以局部完成,没有通信负担。

SphereFace2 Binary Classification is All You Need for Deep Face Recognition相关推荐

  1. Keras-6 IMDB, a binary classification example

    Classifying movie reviews: IMDB, a binary classification example 这个例子整理自<Deep Learning with Pytho ...

  2. 人脸验证与二分类(Face verification and binary classification)

    来源:Coursera吴恩达深度学习课程 听着五月天的<仓颉>,五月的每一天都是五月天. 三元组损失(Triplet loss)是一个学习人脸识别卷积网络参数的好方法,还有其他学习参数的方 ...

  3. xgboost学习样例解析之binary classification

    玩kaggle时听说这个库很牛逼,准确率很高,于是打算学学看看.xgboost是extreme gradient boosting的缩写,gradient boosting是一类思想方法,这里不多赘述 ...

  4. 深度学习2.1二分类(Binary Classification)

    二分类-深度学习2.1-吴恩达老师课程 介绍 案例 符号定义 仅作为个人学习记录 介绍 当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧.例如有一个包含mmm个样本的训练集,你很可能习惯 ...

  5. 2.1 二分类(Binary Classification)

    当实现一个神经网络的时候,我们需要知道一些非常重要的技术和技巧.例如有一个包含个样本的训练集,你很可能习惯于用一个for循环来遍历训练集中的每个样本,但是当实现一个神经网络的时候,我们通常不直接使用f ...

  6. Binary classification - 聊聊评价指标的那些事儿【回忆篇】

    在解决分类问题的时候,可以选择的评价指标简直不要太多.但基本可以分成两2大类,我们今分别来说道说道 基于一个概率阈值判断在该阈值下预测的准确率 衡量模型整体表现(在各个阈值下)的评价指标 在说指标之前 ...

  7. Performance Metrics for Binary Classification

    查看全文 http://www.taodudu.cc/news/show-262150.html 相关文章: word文档中添加mathtype加载项 创作链接 2020年十大机器学习框架 np.c_ ...

  8. Binary classification - 聊聊评价指标的那些事儿【实战篇】

    分类问题就像披着羊皮的狼,看起来天真无害用起来天雷滚滚.比如在建模前你思考过下面的问题么? 你的分类模型输出的概率只是用来做样本间的相对排序,还是概率本身? 你的训练数据本身分布如何是否存在Imbal ...

  9. 《预训练周刊》第20期:EVA:包含28亿参数的中文预训练对话模型、基于知识融入提示词的文本分类...

    No.20 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第20期&l ...

最新文章

  1. Apollo 你了解下这些内容就完美了
  2. 网络工程原理与实践教程实验安排
  3. python读取 .mat 文件(matlab文件)
  4. 基于数据挖掘的旅游推荐APP(四):“我的”模块
  5. java泛型约束_JAVA泛型 - 约束与局限性
  6. Linux高级编程--05.文件读写
  7. Spark SQL连接数据库找不到Mysql驱动解决方法
  8. argparse、glob、findall
  9. javascript函数参数的传递问题
  10. MVC (jsp + servlet + javabean) 以及jdbc
  11. 367.有效的完全平方数   (力扣leetcode) 博主可答疑该问题
  12. 20181225面试
  13. Intel HD Graphics
  14. 用于热水器行业气密性检测的五款快速密封接头
  15. 什么叫faq_FAQ是什么意思啊
  16. 米家扫地机器人 设置不停止_【小米 米家 扫地机器人使用总结】设置|清扫_摘要频道_什么值得买...
  17. 模态框中弹模态框的问题
  18. 下载微软官方原版系统镜像
  19. Oracle EBS子库存转移,项目转移whole LPN
  20. 拼多多微信登陆服务器请求失败,拼多多客服网页无法登陆/卡死,怎么办?

热门文章

  1. Java项目中高并发问题的简单解决方案
  2. Cocoapods安装与SVN使用
  3. 内测视频号,微博来迟了吗?
  4. 程序员的台式机组建之路
  5. STM32F051K8U6按键中断实例
  6. 信息安全概论期末复习
  7. 【架构实践】软件架构之道:论架构的原则、范式及治理
  8. 关于dorado中在配置sessionFactory中的packagesToScan的时候出现bean报错的情况
  9. 第十二章 IBM WebSphere MQ检索邮件
  10. chapter1 静态分析技术-01反病毒引擎扫描virustotal