3.3 ArcFace 人脸识别算法
ArcFace(InsightFace)人脸识别算法具有准确度高、效率高、通用、简单易实现和易应用的显著优点,ArcFace 损失函数的核心算法通过如下算法中的几行程序就能完成。
ArcFace 人脸识别算法的关键步骤:
原始的Softmax 损失函数是在欧几里得空间中分开的,它映射到欧几里得空间是不同的区域空间,决策面是一个在欧几里得空间的平面,可以分隔不同的类别(Euclidean Margin Loss)。ArcFace(Additive Angular Margin)、SphereFace 和CosFace(Additive Cosine Margin)本质上都是对Softmax 损失函数的改进[22],本质上是基于角和余弦边界的损失函数:它们将距离的计算从欧几里得空间转变为测地距离(Geodesic Distance),通过角度空间度量两个向量之间的距离。ArcFace 的思想和SphereFace及CosFace 有很多的共同点和相似之处,主要区别在于:ArcFace 直接在角度空间(Angular Space)最大化分类界限,而CosFace 在余弦空间最大化分类界限[23],如图3-7所示。CosFace 中的坐标轴是cosθ1 和cosθ2,Class1那条线相当于将过原点的斜率为1的线向上平移m。ArcFace 中的坐标轴是θ1 和θ2,Class1这条线相当于将过原点的斜率为1的线向上平移m(注意,虽然都是平移m,但是ArcFace 的坐标轴和CosFace 不同,因此平移的量不一样)[23]。CosFace 的分类界限s(cosθ2-m-cosθ1)=0,而ArcFace 的分类界限s(cos(θ2+m)-cosθ1)=0[23],由此可见两者之间的差别主要是ArcFace 角度边缘m 置于cos(θ)函数内部,直接最大化角(弧)空间中的决策边界。尽管ArcFace 与SphereFace、CosFace 相似,但由于角度与测地距离具有精确的对应关系,ArcFace 提出的加性角度间隔具有较好的几何属性(具有更好的几何解释)[24]。
图3-7 不同损失函数的决策边界[20]
如图3-8所示为基于ArcFace 损失函数的人脸识别过程。为了更好地理解ArcFace 损失函数,建议读者先通过文献[25-26]了解SphereFace和CosFace 损失函数。GitHub 上的ArcFace 人脸识别算法的开源实现[27],亦有助于深入理解该算法。
图3-8 基于ArcFace 损失函数的人脸识别过程[20]