ArcFace(建议大家去看论文的第一版)是现在最常用的人脸识别算法,它从softmax、SphereFace和CosFace发展过来,这里就详述一下arcface算法和其发展过程。
ArcFace发展过程
随着深度学习人脸识别的发展,现在人脸识别的主要思想是在网络学习的过程中增大类间差距(inter-class)的同时减小类内差距(intra-class)。
Softmax
Softmax是最常用的分类损失函数:
L = − 1 N ∑ i = 1 N log ( e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j ) (1) L = - \frac1N \sum_{i=1}^N\log(\frac{e^{W_{y_i}^Tx_i + b_{y_i}}}{\sum_{j=1}^ne^{W_j^Tx_i + b_j}})\tag{1} L=−N1i=1∑Nlog(∑j=1neWjTxi+bjeWyiTxi+byi)(1)
其中 x ∈ R d x\in R^d x∈Rd表示第i个样本中真值为yi的深度特征,在常见的人脸识别算法中,x的特征维度一般是512维; W j ∈ R d W_j \in R^d Wj∈Rd 是权重 W ∈ R d × n W \in R^{d \times n} W∈Rd×n(通常为FC层)第j个列向量, b j ∈ R n b_j \in R^n bj∈Rn是偏置项;batch size和分类数目分别是N和n;对于第i个类来说,其feature embedding(嵌入特征)即为 W i T x + b i W_i^Tx + b_i WiTx+bi
softmax损失经常运用在较早的人脸识别中,但是它并没有显式地优化feature embeding从而使类间距增大和类内距减小,使得人脸识别结果并不理想。
SphereFace
SphereFace是首个将人脸识别的特征空间转换到超球面角度特征空间的算法。对于(1)式中的feature embedding( W i T x + b i W_i^Tx + b_i WiTx+bi),由向量的乘法可以转换成 ∣ ∣ W i T ∣ ∣ ∣ ∣ x ∣ ∣ cos ( θ i ) + b i ||W_i^T||||x||\cos(\theta_i) + b_i ∣∣WiT∣∣∣∣x∣∣cos(θi)+bi,其中 θ i \theta_i