ArcFace: Additive Angular Margin Loss for Deep Face Recognition

1. どんなもの?

Metric Learningの論文.分類をして,各クラス内の分散を小さく,クラス間の分散を大きくする系のMetric Learining.

2. 先行研究と比べてどこがすごい?

  • クラス分類モデルのSoftmaxを少し改良するだけで適用できる
  • ArcFaceと先行研究のSpehereFace・CosFaseのLoss関数は似ていて,それを一般化している

3. 技術や手法の"キモ"はどこ?

Architecture

全体的な流れとしては, Base Block(VGGとかResNetとか)から特徴ベクトルを出力

\[ x' = f(x) \]

出力された特徴ベクトルをL2正則化

\[ x'' = \frac{x'}{|x'|^2} \]

全結合層の重みをL2正則化

\[ w' = \frac{w}{|w|^2} \]

正則化された特徴ベクトルと重みを内積(これがcosの値)

\[ cos\theta = x'' \cdot w' \]

これにAdditive Angular Margin Penaltyを適用する.

Additive Angular Margin Penalty

Additive Angular Margin Penaltyは正解ラベルに対応する出力の値に対して,Marginを加えることで,クラス内分散を小さくするような学習を行う. イメージとしては,正解ラベルにのみ厳しい罰則を与えてよりDiscriminativeにする感じ.

正解クラス\(j\)の出力に対して,Marginを加算する

\[ \theta_j' = \{ \begin{array}{ll} arccos(cos\theta_i) + m & i=j \\ arccos(cos\theta_i) & otherwise \end{array} \]

各要素を定数倍する(温度パラメータ)

\[ logit = s cos(\theta_j') \]

softmax関数にかける

\[ y = softmax(logit) \]

この一連の流れを組み込んだLoss関数は

\[ L_{3}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s\left(\cos \left(\theta_{y_{i}}+m\right)\right)}}{e^{s\left(\cos \left(\theta_{y_{i}}+m\right)\right)}+\sum_{j=1, j \neq y_{i}}^{n} e^{s \cos \theta_{j}}} \]

ArcFace・SpehereFace・CosFase の一般化

\(m_1\)がSpehereFace,\(m_2\)がArcFace,\(m_3\)がCosFace.

\[ L_{4}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s\left(\cos \left(m_{1} \theta_{y_{i}}+m_{2}\right)-m_{3}\right)}}{e^{s\left(\cos \left(m_{1} \theta_{y_{i}}+m_{2}\right)-m_{3}\right)}+\sum_{j=1, j \neq y_{i}}^{n} e^{s \cos \theta_{j}}} \]

それぞれの識別境界の違いは下図になるらしい.

4. どうやって有効だと検証した?

顔認識データセットであるLFW,CFP-FP,AgeDB30で実験. 比較手法がどれも精度が優秀なので,あまり有効さはわからない.

5. 議論はあるか?

  • Out of dataset のサンプルが来た時にどれくらい精度がでるか?

6. 次に読むべき論文はある?

Avatar
中塚 俊介
R&D Engineer

My research interests are in computer vision, especially in anomaly detection and XAI.

comments powered by Disqus