人脸识别-SphereFace

来源:互联网 发布:led编辑软件 编辑:程序博客网 时间:2024/05/16 01:38

简介

文章来源CVPR2017。核心思想是修改SoftmaxLoss来增大类间角度距离。
文章地址:https://arxiv.org/abs/1704.08063
代码地址:https://github.com/wy1iu/sphereface

SoftmaxLoss

首先回忆一下softmax。对于二分类的情况,softmaxloss产生的后验概率为:
这里写图片描述
由最大似然原则,使用如下公式作为loss函数,即softmaxloss.因此softmaxloss主要分为两步,softmax和logloss,softmaxloss定义如下:
这里写图片描述
将上述公式展开得到:
这里写图片描述

Modified SoftmaxLoss

将上述公式的权值的模进行归一化,即
这里写图片描述 b=0
得到Modified SoftmaxLoss。
这里写图片描述
通过2D特征显示如下:
这里写图片描述

A-SoftmaxLoss

和Large-Margin文章类似,作者的目的使类间的角度大,因此使用超参m来控制分类边界。
这里写图片描述
而使用余弦角度是有限制的,范围为这里写图片描述为了去掉这个限制条件,重先定义:
这里写图片描述
只要满足单调递减的限制。
这里写图片描述
这里写图片描述

实验

作者使用 CASIA-WebFace 作为训练集,预处理方式使用MTCNN截取人脸,并做相似变换,每个通道减去127.5并处以128。
结果如下:
这里写图片描述

参数

超参较多,而且以来数据集,因此实验需要大量的调参:

margin_inner_product_param {    num_output: 10572    type: QUADRUPLE    weight_filler {      type: "xavier"    }    base: 1000    gamma: 0.12    power: 1    lambda_min: 5    iteration: 0  }

labmda变量源码设置如下:

lambda_ = base_ * pow(((Dtype)1. + gamma_ * iter_), -power_);lambda_ = std::max(lambda_, lambda_min_);