本文来自《L2-constrained Softmax Loss for Discriminative Face Verification》,时间线为2017年6月。
近些年,人脸验证的性能因引入了深度卷积网络而提高很大。一个典型的人脸识别流程就是:算法
- 训练一个基于softmax loss的深度卷积网络;
- 提取倒数第二层做为每一个样本图片的特征表征;
- 基于两个样本的表征向量,计算cos的向量类似度。
softmax自己并不会让两个正样本对的类似度得分优化的更大,两个负样本对的类似度得分优化的更小。而实际须要中,须要构建具备类内紧凑性和类间可分性的特征,这会存在瓶颈,因此须要在loss上增长一些相似正则项的东西。本文中,做者在特征表征层加入\(L_2\)约束,意图让该样本落在一个固定半径的超球面表面。该模型能够很容易的基于现有的深度学习框架实现。经过在训练集整合该简单步骤,明显可以提高人脸验证的性能。特别的,在IJB-A上的True Accept Rate为0.909,False Accept Rate为0.0001。网络
近些年,人脸识别上也有很多出色的工做,其主要从2个角度解决人脸验证上的问题:app
- 将人脸图片对输入到训练算法中,并得到embedding向量,在该向量中,正对(相同ID的人脸)会更靠近,负对(不一样ID的人脸)会更远离。如《Learning a similarity metric discriminatively, with application to face verification》《Discriminative deep metric learning for face verification in the wild.》,FaceNet等等;
- 将人脸图片和对应的ID label一块儿用来训练辨识性的特征。大多数现有方法是先基于softmax loss训练一个DCNN,而后这些特征后续直接计算人脸对的类似性得分或者用来训练获得辨识性度量embedding;另外一个策略是联合识别-验证来多任务训练网络。
最近提出的center loss能够学到更具辨识性的人脸特征。不过L2-norm softmax不一样的是:框架
- 本方法只用一个loss函数,而center loss要联合softmax一块儿训练;
- center loss在训练中会引入额外的CxD参数,这里C是类别个数,D是特征维度;另外一方面,L2-norm softmax定义中 只引入一个超参数。同时能够将L2-norm softmax 与center loss一块儿联合训练。
在无约束条件下进行人脸验证依然是一个挑战,由于仍然很难去处理视角,分辨率,遮挡和图像质量等变化极大的问题。训练集中数据质量的非平衡性也是形成上述性能瓶颈的缘由之一。现有的人脸识别训练样本数据集包含大量高质量的正脸图片,而无约束和难分辨的人脸数据较少。大可能是基于DCNN的模型都是基于softmax训练的,但是该模型倾向于对高质量图片过拟合,因此就无法正确区分困难场景下的人脸。ide
固然使用softmax 训练人脸验证也有其优缺点:函数
- 一方面,它能够很容易的用现有的深度学习框架去实现,并且不一样于triplet loss等,softmax不须要在输入batchsize上作任何限制,并且收敛也快。学到的特征对于人脸验证而言具备足够的辨识性,且不须要额外的度量学习(metric learning);
- 另外一方面,softmax对于样本分布是有偏的。不一样于contrastive loss和triplet loss,它们是特定寻找难样本,而softmax loss就是最大化给定mini-batch下全部样本的条件几率,所以,softmax可以很好的拟合高质量人脸,却忽略了整个mini-batch中不多出现的困难脸。
做者受到《Deep convolutional neural network features and the original image》的启发,带有L2-norm的softmax已经带有足够图片质量的信息:性能
- 高质量的正脸特征的L2-norm很高,同时模糊且姿态特异的人脸的L2-norm很小,如图1b
- 更甚,softmax loss不会特定优化人脸验证的需求(即,相同ID的人脸更靠近,不一样ID的人脸更远离)。正是基于这个缘由,许多方法在softmax特征部分采用度量学习《Unconstrained face verification using deep cnn features》,《Deep face recognition》,《Triplet probabilistic embedding for face verification and clustering》或者在softmax loss上增长辅助loss《Deeply learned face representations are sparse, selective, and robust》,《Latent factor guided convolutional neural networks for age-invariant face recognition》,《A discriminative feature learning approach for deep face recognition》。
本文提出一个针对softmax loss的策略,做者指望在训练中,在特征上增长一个约束,如L2-norm。换句话说,是指望将特征约束在一个固定半径的超球面表面,提出的L2-softmax有2个优点:学习
- 同时关注高质量和低质量的人脸,由于此时全部特征都都有相同的L2-norm;
- 它经过在规范化空间(normalized space)中更严格的让相同ID的特征更靠近,不一样ID的特征更远离来加强人脸验证信息。
所以,它最大化了负对(不一样ID的人脸)和正对(相同ID的人脸)之间的规范化L2距离或余弦类似性得分的边际。所以,它克服了常规softmax loss的主要缺点。不过它同时保留了常规softmax loss的优点:一个网络结构,一个loss体系,不须要联合监督(多任务学习,正则项等等方式),其自己能够很容易的基于现有的深度学习框架去编写,并且收敛也很快。它对网络只是引入一个标量。相比于常规softmax loss,L2-norm softmax在性能加速上有明显提高。且在几个比赛上比那些多网络或者多loss的模型更好。本文贡献:测试
- 提出一个简单,新颖,高效的L2-softmax,且能将特征表征约束到一个标量\(\alpha\);
- 研究不一样性能变化与尺度参数\(\alpha\)之间的关系,并提供合适的边际,以获取稳定的高性能;
- 在全部比赛上得到了一致,明显的加速。
先概述下使用DCNN训练一我的脸验证系统的流程。
大数据
在预测的时候,用\(f(\mathbf{x}_g)\)和\(f(\mathbf{x}_p)\)表示测试图片\(\mathbf{x}_g\),\(\mathbf{x}_p\)通过DCNN获得的特征描述,并通过归一化到单位模(length=1)。而后,在这两个特征描述上,使用一个距离度量去计算在嵌入空间中它们之间的类似度得分。若是该得分超过一个设定的阈值,那么就断定这2张图片来自同一ID。而经常使用的计算距离度量的就是L2距离或者是cos距离如式子2。
上述流程中隐含2个主要问题:
- 人脸验证中训练和预测是分开的。用softmax作训练不管是在规范化仍是角度空间中,都不会倾向于正对相距更近,负对相距更远(即自己没这种正则惩罚);
softmax分类器在对困难或者极端样本建模时候是很弱的。如在经典的训练batch中,且当前batch是数据质量不平衡的,softmax能够经过增长容易样本的L2-norm,并忽略难样本,从而达到最小化。网络所以经过特征描述的L2-norm来响应人脸的质量。为了验证这个理论,做者在IJB-A上作了个实验。首先将该数据集中templates(同一个ID的图片/帧组,groups of images/frames of same subject)基于各自特征描述(这些特征都是使用Face-Resnet经过常规softmax训练获得的)的L2-norm分红3个不一样的子集:
- L2-norm < 90归类到集合1;
- 90< L2-norm <150归类到集合2;
- L2-norm< 150归类到集合3.
它们总共造成6组评估对。图1a描述了这6对的结果,能够很容易发现当两个templates的L2-norm都很小的时候,效果是不好的。而若是一对中两个的L2-norm都很大,那么效果是最好的。不一样组之间的结果差距仍是很明显的。图1b展现了集合1,集合2,集合3中的一些样本templates,能够发现L2-norm透露着图片质量信息。
因此做者让每一个人脸图片的L2-norm都是固定的。即增长一个L2约束到特征描述上,从而强制每一个特征都处在一个固定半径的超球面上。该方法有2个优点:
- 在超球面上,最小化softmax等效于最大化正对之间的cos类似度同时最小化负对之间的cos类似度,从而强调特征的验证信息;
- softmax loss能够更好的对极端或者困难人脸进行建模,由于此时全部的人脸特征都有相同L2-norm。
提出的L2-softmax式子如:
做者在MNIST上研究了L2-softmax的效果,首先采用的是比LeNet5更深更宽的网络结构,其中最后一层隐藏层神经元设为2,方即可视化,并作了一组对照实验:
- 使用常规softmax进行end-to-end的训练;
- 在最后的2维空间上,增长一个L2-norm层和scale层,即式子3的描述。
图3描述了MNIST中1w个测试样本,不一样类的2D特征,每一个点表示一个样本。第二个对照实验使用的向量是来自L2-norm层以前的输出
做者在上面对照实验中发现两个很清晰的不一样点:
- 当使用常规softmax,类内角度变化会更大,这能够经过每一个叶片(形象描述)的平均宽度来计算。L2-softmax获取的特征类内角度变化是更小的;
- 更大的特征范数,会让一个可以正确分类的类别得到更大的几率。因此softmax的特征幅值要更大(都快到150了)。然而在L2-softmax中,特征范数的影响却很小,由于每一个特征都在计算loss以前被归一化到固定半径的园上了。所以网络重点会在规范化或者角度空间中,未来自同一个ID的特征互相靠近,并让来自不一样ID的特征相互远离 。
ps:值得注意的是,这里基于经典DCNN并将图片映射到2维空间。
这里提供基于DCNN,式子3的实现细节。该约束是经过增长一个L2-norm层和scale层实现的:
该模块是全可微分的,能够用在end-to-end的网络训练中。在预测阶段,该模块是冗余的,由于在计算cos类似度的时候,自己特征向量就须要归一化到单位模(unit length)。在训练阶段,梯度会反向通过L2-norm和scale层。经过链式法则计算关于\(\alpha\)的梯度以下:
如上所述,\(\alpha\)扮演着关键角色。即有2种方法来加强L2-norm约束:
- 在整个训练过程当中保持\(\alpha\)不变;
- 让网络本身学习\(\alpha\)。
第二个方法相对优雅并且也能保证数据驱动,从而老是可以在常规softmax上提高效果。可是网络学到的\(\alpha\)很大,会致使一个相对宽松的L2-约束。softmax分类器意在最小化总的loss下增大特征范数,如今是增大\(\alpha\),会让网络更自由的去拟合容易的样本。因此由网络学习的\(\alpha\)能够当作是该参数的上限。因此一个更好的性能就是将\(\alpha\)固定到一个相对更低的常量。
不过另外一方面,\(\alpha\)若是很小,训练就不会收敛,例如\(\alpha=1\)在LFW上效果就不好,只有86.37%的准确度。
做者前面DCNN用的是Face-ResNet,其结构为: