1. 前言
人脸识别本身是一个很复杂的系统,从人脸的检测,定位,提取到识别,都有很多需要仔细研究的内容。单从人脸的识别来说,我们可以暂时简单地把目标定为,为人脸学习到一个好的特征表示。什么是好的特征呢?简单来说就是,同一个人的人脸特征是相近的,不同的人的人脸特征是远离的。
2. Deep Learning Face Representation by Joint Identification-Verification
为了更好地学习特征,这篇论文提出将Identification和Verification都作为训练的目标,也就是使用两个loss的组合,使得学习的特征能够不仅用于分类,同时用于判断是否是同一个人。相应地:
Identification的loss,它用于判断属于哪一个类,使用softmax计算概率:
Verification的loss,它使得同一个人的不同人脸的特征倾向于类似,不同人的人脸特征趋向于分开。使用L2 Norm,使得不同人的特征大于
作者还使用了cosine similarity,如下是两个特征向量的cosine 相似度:
训练算法如下:
很显然,该算法需要每次选取两个样本。
3. Deeply learned face representations are sparse, selective, and robust
在这篇论文中,作者提出三个对神经网络效果非常重要的因素:稀疏性,选择性,鲁棒性。
作者提出了DeepID2+,如下图:
- 最终的特征维度为512维
-
作者将每一层卷积层的特征输出接FC层,加入到loss中。作者认为这样提高了监督信号的传递,以及在较低层的作用。
如下图,是每层的准确率
4. SphereFace: Deep Hypersphere Embedding for Face Recognition
在这篇论文中,作者对常用的欧几里得距离提出了质疑。在常见的分类任务中,我们都会对特征进行处理,最终经过一个fc层得到每个类别的一个评分,评分最大的,就是我们预测的类。假设一个二分类任务,分类的边界就是:。其中就是分类层的参数。
倘若对进行归一化,是长度为1,将置为。边界变为:,其中是和的夹角。如下图:
- (图a,b)原始的softmax loss的边界是一条直线,它关注的是特征向量和的内积哪个更大。
- (图c, d)对进行归一化后,就相当于在一个球面,现在关心的是特征向量和的角度大小。
- (图e, f)由于之前的边界在和两个类都过于接近,因此,得到的特征不会是分类效果好的特征,因此作者提出了A-Softmax。将分类边界变为: 和 。其中控制的两个边界之间的区域的大小。如果你要问,那中间是什么?我认为,中间属于错分类区域。也就是说,在分类的时候,必须使得特征向量在正确区域的里面,这个正确区域比原来的softmax要小,这就是loss要完成的事情。
论文中还特地提到了hypersphere manifold,之前看过一些流形的内容,在这里,感觉只是提了一个高大上的概念而已。
5. NormFace: L2 Hypersphere Embedding for Face Verification
在这篇论文中,作者对分类层(FC)的特征和参数都进行了归一化处理,却发现在很多轮的训练后,网络依旧没有收敛,因此,作者探究了这个现象的原因,并提出了可以训练这种网络的方法。
作者回答了如下问题:
- 为什么对特征归一化处理在测试阶段会很有效?
- 为什么仅仅优化cosine相似度无法收敛?
- 怎样在使用softmax loss的时候来优化cosine相似度?
- 既然归一化后无法收敛,那么针对归一化特征是否有其他合适的loss?
回答:
- 对于问题一,参考下图:
左图可以看到如果使用欧几里得距离,和更近,和相距较远,但是和属于同一类。右图可以看到,用softmax分在类别0的区域。作者发现特征向量之间角度比欧式距离,内积更好。
作者解释了为什么softmax会出现右图的样子。当使用softmax进行分类的时候,结果就是最大的那个。并且,对于最大的那个, 对于 总是成立的。这说明softmax总是倾向于增大特征的绝对值。对于加了偏置的分类层,作者同样进行了分析,并且发现有些类会聚集在零点附近。因此,倘若进行归一化,就会使得这些类分散在四周,得到非常差的效果。
论文中,作者对特征和参数使用如下归一化方式:
梯度如下图:
因此,向量正则化后进行反向传递,总会导致向量的长度增加。
- 为什么不收敛呢?正则化后,相当于优化余弦距离:
这主要是因为,正则化后的在-1 到 1之间,然而如果使用内积 和 softmax loss常常是和。这使得概率很难接近1,即使它已经分的很好了。同时由于softmax loss总会给予ground truth那一类 的梯度,使得模型总会给分得很好的样本很大的梯度,然而,分得不好的的梯度却很小。
作者证明了,即使在所有样本被很完美地分类(每个样本的特征和对应的类的weight 完全一样)时,正则化后的softmax loss也会有一个较大的下限。
那么解决方法就是,不要正则化到1,而是一个大于1的值(下限)。如下图:
5.1 REFORMULATING METRIC LEARNING
作者研究了正则后的metric learning,例如:contrastive loss,triplet loss。由于正则后,内积可以看作欧几里得距离,如下式:
将
// TODO
这样的loss有一些不好的地方,就是对于边界内的负样本没有作用。如下图:
阴影的红点是没有被loss作用到的点。
6. Large-Margin Softmax Loss for Convolutional Neural Networks
L-softmax设计了一个新的分类层,用于增大特征的表达性能。如下图:
7. FaceNet: A Unified Embedding for Face Recognition and Clustering
在这篇论文中,作者使用了一个神经网络(Inception,ResNet等)作为特征提取器,将输出的特征用triplet loss进行训练。这样的结构不需要分类层,模型会非常小。
Triplet Loss:
训练的时候会选择一个三元组,anchor,negative,positive,其中anchor和positive属于同一个类,negative是其他类。loss就是拉大anchor negative距离,减少anchor和positive距离。
这样的方法关键在于如何选择三元组。
8. ArcFace: Additive Angular Margin Loss for Deep Face Recognition
ArcFace的loss如下:
需要注意的是
阅读ArcFace的源码会发现,对于
后记
还有很多关于人脸,metric learning的文章没有仔细读,即使是介绍的这几篇也不是全部理解。为了在大规模的人脸识别中学习到discriminative的特征,需要在很多地方做文章 。即使是一个更有效的loss,如果参数没有选择好,很可能得到的效果还不如普通的fc。