🐶

【論文5分まとめ】ArcFace

2021/12/24に公開約2,500字

概要

顔認識のための高い識別性を持つ損失関数Additive Angular Margin Loss(ArcFace, ArcMargin Loss)を提案。 超球面上の明確な幾何的解釈が可能であり、訓練も安定する。

書誌情報

  • Deng, Jiankang, et al. "ArcFace: Additive Angular Margin Loss for Deep Face Recognition. In 2019 IEEE." CVF Conference on Computer Vision and Pattern Recognition (CVPR). 2018.
  • https://arxiv.org/abs/1801.07698

ポイント

Additive Angular Margin Loss

画像分類における通常のSoftmax損失は以下のように書くことができる。W_jは全結合層の重みW \in \mathbb{R}^{d \times n}j列目を表す。また、y_iは正解ラベルで、nはクラス数、Nはバッチサイズを表す。

L_{1}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{W_{y_{i}}^{T} x_{i}+b_{y_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T} x_{i}+b_{j}}}

これに対し、本研究が提案しているArcFaceは以下のように書ける。

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}}}

Softmax損失との違いは、以下の2点である。

  • W_{j}^{T} x_{i}+b_{j}の代わりにs \cos \theta_{j}が使用されている
  • j=y_iに関してのみ s\cos (\theta_{y_{i}}+m)のようにマージンmが使用されている

算出過程は以下の図のとおりである。W \in \mathbb{R}^{d \times n}は、各クラスの中心と解釈できる行列である。画像から得られる特徴量\boldsymbol{x}_iが対応するクラスのベクトルに一番近づくようにしたい。それぞれを正規化したうえでその角度\theta_{y_i}をとり、マージンmを加えて\cosをとり、スケールsをかけ、softmaxを適用する。\cos\theta_jは特徴量がクラスの中心にどれだけ近いかを表すコサイン類似度であり、そこから少し角度がズレたとしても、大きい値になっていることを期待するためにマージンmが加えられる。

マージンの存在により、クラス内のサンプルがその範囲内に収まるように促す効果が生まれる。また、適切なクラスから少し離れたとしてもそのクラスに分類されるように訓練が進むため、クラス間の識別性を上げるように訓練が進む。
8クラスという少ないクラスで、softmaxおよびArcFaceを用いた訓練してみて結果を確認すると、ArcFaceの効果がよくわかる。

Softmaxの他に、SphereFace、CosFaceといった既存の顔認識手法で使われている損失関数について、2値分類の場合にどのような決定境界が現れるのかを模式的に表したのが以下の図である。ArcFaceは、超球上でマージンをとって分割するということがわかる。

SphereFace, ArcFace, CosFaceのマージンをm_1, m_2, m_3とすると、これらの損失は以下のように一般化することができる。もっとも、論文中での実験では、シンプルにArcFaceのみを使用した場合に最も精度が高いという結果が得られている。

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}}}

また、クラス内の差異を小さくし、クラス間の差異を大きくするためのいくつかの手法も追加で試しているが、こちらの場合もシンプルにArcFaceのみを使用した場合に最も高精度になったという実験結果が得られている。

実験

省略

Discussion

ログインするとコメントできます