InsightFace
论文地址: https://arxiv.org/abs/1801.07698
项目地址: https://github.com/deepinsight/insightface
创新点
- 提出了一个新的损失函数(ArcFace),有更好的几何解释性
- 对于一些公开数据集的二次处理,并将处理后的数据公开
- 评测了不同网络结构的效果和性能
损失函数
- 基于欧式距离的损失函数
网络的输出结果为人脸的特征向量,再根据不同人脸特征向量之间的距离判断两者是否是一个人
- 以这种思路为基础,一些损失函数(Centre loss, Range loss, Marginal loss)额外添加惩罚来使类内距离变小,类外距离变大,以提升准确率。利用这几个损失函数的算法都在网络的最后使用了softmax,但是由于人脸分类结果的庞大(百万级),这样会是的分类层消耗大量GPU资源
- contrastive loss和Triplet loss利用了结对训练的策略(pair training strategy)。contrastive loss函数包括positive pairs和negative pairs。positive pairs的损失函数倾向于小,negative pairs的损失函数倾向于大。Triplet loss损失函数最小化一个anchor和positive样例,最大化一个anchor和negative样例(如果两个样例图为同一个人,即positive;如果两个样例图为两个人,即negative)。
-
Angular and cosine margin based loss
出现了large margin Softmax (L- Softmax),除了Euclidean distance上的差异,引入了angular margin。使得类内间距变小,类外间距变大。具体如下图所示。
原始的softmax的loss损失是一个互熵损失,
其中
将其代入第一个式子,得出了损失函数如下,
进行归一化操作,将其都映射到一个单位球面上,令||W||=1,b=0,并且引入夹角,得出Modified Softmax Loss公式如下,
SphereFace在此基础上,引入angular margin,用m表示, θ y i ∈ [