【论文笔记】SphereFace: Deep Hypersphere Embedding for Face Recognition(pytorch)
SphereFace: Deep Hypersphere Embedding for Face Recognition
本文对open-set protocol下的深度人脸识别问题进行了探讨,在适当选择的度量空间中,在同一类别中的最大类内距离与不同类别间的最小类间距离相比较小。
然而,在现有算法中,并未有许多能达到这一标准。
为此我们提出了angular softmax(A-Softmax)损失函数以增强卷积神经网络(CNN)在该方面的表现。
从几何学角度来看,a-Softmax损失相当于在超球面流形上施加判别约束这一操作与流形上的先验条件完美契合。
此外通过调节参数m我们可以精确地控制角余量的大小。
进一步地我们推导出一个具体的M来近似理想的特征准则。
在Labeled Face in the Wild(LFW)、YouTube Faces(YTF)以及MegaFace Challenge等广泛的数据集上进行实验分析表明angular softmax损失在深度人脸识别任务中展现出显著的优势
- open-set:
- closed-set:
softmax loss
考虑一个二分类问题,在类中对样本x来说,在类别1中的概率p₁由公式(1)给出;在类别2中的概率p₂由公式(2)给出。对于样本x来说,在类中
Wi and bi represent the weights and biases of the last fully connected layer belonging to class i, respectively.
当W_1x + b_1 = W_2x + b_2时,则有(W_1 - W_2)x + (b_1 - b_2) = 0成立;若W_1x + b_1 > W_2x + b_2时,则可观察到两者的分母均为指数函数形式且单调递增特性;因此由此可得(W_1 - W_2)x + (b_1 - b_2) > 0;基于此结论可知softmax模型的决策边界方程为:(W_1 - W_2)x + (b_1 - b_2);而针对softmax损失函数L_{\text{softmax}}的具体计算式如下所示:

在本研究中,在向量f中定义其第j个元素为f_j(其中j取值于1到K之间,K为类别总数),而N则代表训练样本的数量。从CNN架构的角度来看,在这种情况下,f通常被定义为全连接层权重矩阵W对应的输出结果。具体而言,f_j=W_{j}^Tx_i+b_j,同时对于目标类别y_i,我们有f_{yi}=W_{yi}^Txi+b_{yi},其中x_i表示第i个训练样本,w_j代表权重矩阵W中的第j列元素,w_{yi}则对应于目标类别y_i所对应的那一列权重信息。
Modified Softmax Loss
公式4是将Li展开来写,并且引入了角度参数:

公式四上下两个等式成立的原因:
W_{i}^Tx+b_i=|| W_{i}^T ||||x||cos(\Theta_i)+b_i
如果加入条件:||W_1||=||W_2||=1,b_1=b_2=0,则公式3就会变成:

引入以上两个条件后,decision boundary就变成了||x||(cos\Theta_1-cos\Theta_2)=0
也就是说边界的确定变成只取决于角度了,这样就能简化很多问题。
A_Softmax Loss
然而,单凭这一点还不够,我们期望类间更加紧密,因此决定通过引入一个m值来限制theta的变化范围.原先的条件是cos(θ₁) > cos(θ₂),经过这一调整后,不等式变为: cos(m·θ₁) > cos(θ₂).这样一来,theta₁就被限制为趋向于较小值,从而使得类间变得更加紧密.
基于上述两个限制条件的基础上,作者进一步引入了与large margin softmax loss类似的参数设置,从而将公式5转化为如下的公式6.

可以看出当参数m增大时(替换词语),优化难度也随之增加(调整动词和结构)。然而,在类别之间(补充关联词),angular margin同样增大(使用同义词替代)。也就是说,在类间距离更大的情况下(分步改写),类内空间会变得更狭窄(替换词语+结构变化)。因此在本文中,默认设置参数m为4。
在实际应用中需要注意的一点是:当仅采用余弦作为优化指标时(其中θy的取值范围限定为区间[0, π/m]),必须对参数空间施加相应的限制条件以保证余弦函数在此区间内呈现单调递减特性。然而,在放弃这种限制条件的情况下试图直接对卷积神经网络(CNN)进行优化,则必须采用余弦函数的一个近似替代函数作为替代方案。这个替代函数同样具备单调递减特性。

公式7也被称为作者文中所采用的损失函数。
可以看出A-softmax损失可被视为基于大间隔Softmax损失的一种改进版;
即基于此基础增加了两个特定约束条件。
关于这个 \psi: 参考博客
在代码实现过程中引入了一个超参数\lambda,
其中\lambda=\max(\lambda_{\min}, \frac{\lambda_{\max}}{1+0.1\times\text{iterator}}),
其中\lambda_{\min}=5,\ \lambda_{\max}=1500为程序预先设定的常数,
因此实际上\psi(\theta_{yi})=\frac{(-1)^k \cos(m\theta_{yi})-2k+\lambda \cos(\theta_{yi})}{1+\lambda} = \cos(\theta_{yi}) - \frac{\cos(\theta_{yi})}{1+\lambda} + \frac{\psi(\theta_{yi})}{1+\lambda}。
综上所述,在代码实现过程中我们实现了如下内容:

表1展示了本文所讨论的三种loss函数(即分类边界)之间的对比分析结果;从训练结果来看,在优化过程中,softmax损失主要作用于W与x之间的内积关系;而改进型softmax损失(通过约束权重向量模长为1以及偏置项为0)则聚焦于调整各子类间的相对位置关系;进一步研究发现,在A-softmax损失中同样关注子类间相对位置关系的同时还引入了一个参数m来调节优化难度

以上信息来自博客1以及博客2
以上信息来自
experiments
exerimental Settings
- RGB图像中每个像素值位于[0, 255]区间内,在经过先将其减去127.5的步骤后完成标准化处理,并将结果再除以128。
- 图4展示了SphereFace特征提取的总体流程。

采用不同深度的卷积神经网络(具体数值为4、10、20、36和64)能够更优地评估我们的方法效果。表2详细说明了所采用的各种卷积神经网络的具体配置参数。

其中我们设定参数m为4;确定批次大小为128;学习率起始值设为 learning\ rate = 5 ,并在每隔一定次数迭代(如 5 万次)后将学习率减少至原来的\frac{5}{7}倍。
**Training data:**我们从官方发布的网络爬取的数据中提取了训练数据集Casia-WebFace,并剔除测试集中出现的标识图像。
Casia-WebFace包含源自10575个不同个体的494414张面部图像。这些面部图像经过水平翻转处理的数据增强。
Extracting Testing Features: The original FC1 layer outputs are utilized to extract deep features from each testing face. The final representation of each testing face is formed by concatenating the original and horizontally flipped feature vectors from the original and mirrored faces, respectively. The similarity score (as a measure of similarity) between two feature vectors is calculated using their cosine distance. This score is then used in nearest neighbor classification for identification purposes, with a threshold applied to distinguish between genuine and spoofed faces.
4.2. Exploratory(探究性) Experiments
对m值设定的研究:
- 基于CASIA-WebFace平台选取最大样本数量的六个体进行A-Softmax损失函数训练。
- 设置输出特征维度(Fc1)为3。
- use 64-layer CNN

对cnn最佳层数的研究:
- m=4

4.3 Experiments on LFW and YTF
*LFW数据集涵盖来自5749个不同身份的人脸图像样本共13233张,YTF数据集则涵盖来自1595个不同个人的身份信息,共计约有 3424 个视频样本. 在 LFW 提供的 6000 对人脸图像和 YTF 提供的 5000 对视频样本中, 对 SphereFace 模型进行了系统性评估. 结果显示如图所示.

FAR
- 误识率(FAR)是指在标准指纹数据库上测试指纹识别算法时,不同指纹的匹配分数大于给定阈值,从而被认为是相同指纹的比例,简单地说就是“把不应该匹配的指纹当成匹配的指纹”的比例。
举个例子:
假定有110个人,每人的大拇指的8幅指纹图片共110*8=880幅的指纹数据库,即110类,每类8幅图片。当然,我们希望类内的任意两幅图片匹配成功,类间的任意图片匹配失败。现在我们让库中的每一幅图片除开它自身之外与其他的所有图片进行匹配,分别计算误识率,与拒识率。
基于指纹识别算法性能的基础上,在假定出现误判的情况下(即本应未能匹配却误判为匹配成功的场景),假设这种错误发生次数共计1000次。在理论条件下,在同一指模图像间的正确匹配次数总计7 8 110=6160次(即同一指模图像间的正确配对数量),而总的配对次数则为880×(880-1)=773520次(即所有指模样本之间的配对总数)。因此在实际情况下出现配对失败的情况共计773520-6160=767360次(即所有指模样本之间的配对中未能成功的情况)。则在此情况下计算得出的误识率FAR值即为:出现误判情况的数量除以总配对失败情况的数量再乘以百分比值:即1000/767360*100%=约等于 0.13%
