流程分析

关于arcface人脸识别算法流程,首先引入论文的一个图:

 

(1)输入xi为1*d的向量,对该向量执行L2正则化得到 \frac{x_i}{\left \| x_i \right \|}

(2)向量W是d*n的矩阵,n表示分类的类别数,对每一列(Wj)执行L2正则化,得到\frac{W_j}{\left \| W_j \right \|}

(3)\frac{x_i}{\left \| x_i \right \|} 和 \frac{W_j}{\left \| W_j \right \|} 进行矩阵相乘得到全连接输出\cos (\theta _j),严格上讲是  \frac{x_i}{\left \| x_i \right \|} * \frac{W_j}{\left \| W_j \right \|}*\cos (\theta _j),前面两项都为1,所以就是\cos (\theta _j)j \in [1...n]

(4)对输出中对应真实标签的值\cos (\theta _{y_i})执行反余弦操作就得到 \theta _{y_i}y_i 表示真实的标签。

(5)因为SphereFace、ArcFace和CosFace中都有m参数,所以这里分别用m1、m2和m3表示,因此这3个算法整合在一起就是\cos (m_1\theta _{y_i} + m_2) - m_3

(6)对得到的feature乘以一个scale参数来放大,得到输出 s * \cos (\theta _j)

(7)再对(6)的结果输送到softmax函数(以e为底)

(8)最后得到预测输出的概率

 

代码理解

TODO

 


References:

[1] ArcFace: Additive Angular Margin Loss for Deep Face Recognition

[2] ArcFace算法笔记

[3] InsightFace及其mxnet代码

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐