本文主要介绍一篇来自nips 2017的文章 《Rethinking Feature Discrimination and Polymerization for Large-scale Recognition》。本文主要提出了一个新的loss提高人脸识别准确率。这篇文章算是特征归一化的一系列文章中的一篇,同一时期的还有 L2-Softmax,NormFace。SphereFace在这基础上提出Margin的概念,算其中效果最好的。
论文地址:http://cn.arxiv.org/pdf/1710.00870v2
https://arxiv.org/abs/1702.06890
代码主页:https://github.com/sciencefans/coco_loss
Motivation
人脸分类任务中,核心思想都是类内方差小,类间方差大。而SoftmaxLoss并不能学习到判别性较好的特征,因此为了解决这个问题,出现了一系列loss,包括triplet loss,contrastive loss。而这两种loss的缺点在于如何选取样本对,当一个batch较小时,样本对较小,因此很难挖掘到难样本,最终导致训练效果不佳。而之前的Centerloss免去了采样这个步骤,训练较为简单,但问题在于Centerloss的center是个统计意义值,即不是样本进行迭代更新,更新时是求一个batch当中同一类样本减去该类样本的中心取平均值。而本篇文章提出的Center即使用全连接进行中心学习。
算法核心
在一个batch中计算两个样本的余弦相似度如下:
很自然的我们会想到,让每一类之间的中心距离离得更远,可以得到下面的loss:
但如果循环计算每个样本的距离,时间复杂度过高,受Centerloss的启发,只许与自己的中心近则类内特征会变得更加紧缩。因此得到下面的loss:
因此cocoloss如下:
在实现时只要将 f和c进行归一化,全连接的w就相当于中心c。
特征可视化结果:
实验结果
从结果来看base softmax已经很高了,添加coco已将lfw全部识别正确(有10几对数据标错)。
Trick
- 对齐很重要,作者并没有详细说明其对齐方式。
- 微软1M名人数据集比较脏,数据的干净也极大的影响结果。