johshisha/paper_reading

2018_ArcFace: Additive Angular Margin Loss for Deep Face Recognition

Opened this issue · 3 comments

論文

ArcFace: Additive Angular Margin Loss for Deep Face Recognition
https://arxiv.org/pdf/1801.07698.pdf
2018/01/23

動機

レシピの画像検索について発表したときに,Face Recognitionで似たような手法(Triplet Loss)を利用しており,別の手法も提案されていることを教えてもらった
Face Recognitionではペアの作り方の組み合わせ数が膨大になる問題に対処するために,Softmax Lossでできるような手法が提案されているとのこと.その例として上がっていた,ArcFaceを読んでみた.

概要

大規模顔認識のタスクで,超球面上の幾何学的な距離とマージンを考慮することで,分類タスクの枠組みで学習可能でより分類性の高い特徴量を得ることができる手法(ArcFace)を提案した.

10以上の顔認識ベンチマークでSOTA
実装も簡単で,コードも公開されている. https://github.com/deepinsight/insightface

提案内容としては, 図を見るとわかりやすい.
モデルからの特徴量とFCの重みをそれぞれ正規化し,掛け合わせて cosθ_i を得る.(次元数は予測クラス数と同じ)
次に.正解ラベルに対応する次元に対してのみ, cos(θ+m)としてマージンを与える.
その後,s倍して,softmaxにかける.

正解の次元に対してのみマージンを与えることで,不正解のクラスを m 以上遠く(?)に配置せねばならず,クラス間の分離度が上がる.

2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(3___11ページ)

2つの研究方針

  • Softmax Loss base

    • クラス数が多いとパラメータ数が多くなる
    • open-setなデータに弱い
  • Triplet Loss base

    • 大規模データセットになると,Tripletの組み合わせが膨大になり,イテレーション数が多くなる.
    • Tripletを選ぶ際に工夫が必要(適度な難しさのサンプルを選ぶ)だが,これが難しい

ArcFaceの特徴

  • Engaging
    幾何学的な距離マージンを直接最適化するので,直感的にわかりやすい

  • Effective
    大規模データセットを含む,10の顔認識ベンチマークでSOTA

  • Easy
    数行のコードで実装できる.他のロス関数と組み合わせることなく,安定した学習が可能.
    2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(3___11ページ)

  • Efficient
    追加の計算コストが微々たるもので効率的.

ArcFaceの式

2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(3___11ページ)

正解クラスに対応する要素にだけマージンmを与えることで,不正解のクラスを m 以上の差をつけて予測しないと正しく分類されなくなるので,クラス間の分離度があがる

ArcFaceの効果を視覚的に見るために,Toy Exampleを解いて可視化する
8クラス,各1500サンプルの顔認識用データセットで学習し,特徴量を2次元にしてプロットする.

Softmaxの方はクラス間の境界が曖昧だが,ArcFaceのほうははっきりと分離されていることがわかる
2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(3___11ページ)

SphereFace, CosFaceとの比較

2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(4___11ページ)

この式で3つの手法を表せる
m1がSphereFace,m2がArcFace,m3がCosFaceに関するパラメータ.

マージンのとり方は以下のようになっている.
微妙な違いだが,バタフライ効果的に影響するらしい.
特に,SphereFaceは学習が不安定らしく,学習序盤はペナルティを弱めにするなどの工夫が必要らしい.
2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(4___11ページ)

その他のロス

実験でいくつかのロスと比較する

ややこしいが,概念図

  • intra loss
    クラス内のばらつきを抑える.正解ラベルとのなす角θ_{y_i}の平均値を足すこと実現.(なす角が小さくなる=W_jがクラスの中心みなして,中心に集約される)
  • inter loss
    クラス間のマージンを大きくする.正解クラスと,その他クラスとのなす角 arccos(W_{y_i}, W_j) を引くことで実現.(なす角が大きくなる=クラス間で差が大きくなる)
  • triplet loss
    3つのサンプル間の関係を学習.特徴量は正規化したあとのものを扱う.
    arccos(x^pos, x) + m <= arccos(x^neg, x)

2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(1___11ページ)

実験

顔認識の実験の詳細はあまり興味ないので詳しくは見ない

Experimental Settings

前処理は,関連研究に沿って,five facial pointsを利用して112x112にクロッピングし正規化する?
ResNet-50, -100を利用
最後の畳み込み層のあとに,BN->Dropout->FC->BNをして512-Dの特徴を得る

parameter

スケーリング用の s = 64
マージン m = 0.5 (思ってたより小さい,θが角度なはず) ラジアンだったら25度くらいだからそれっぽい
MXNetで実装
batch size = 512
P40 x 4
learning rate: start = 0.1, divided by 10 at N iterations (Nはデータセットによって違う)
momentum = 0.9
weight decay = 5e^{-4}

Dataset

2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(5___11ページ)

結果

(読んだけど背景知識がなさすぎてタスク設計がよくわからなかったのであってるか不安)
学習したモデルを使って予測するときは,512-Dの特徴量を取得し,それを利用する.
予測する対象のデータセットが,学習サンプルとテストサンプルを持っていて,学習サンプルを利用して各クラスの中心点を計算する.
その中心点を利用して,テストサンプルに対して分類を行う(?)

CASIAデータセットを使って学習して,他のデータセットに対して予測した結果
(CM1, CM2は上述の式4のm1, m2, m3を表に書いてあるパラメータで設定したもの)

ArcFaceが一番良い.
他の手法もそこそこよいので,めちゃくちゃ違うわけではなさそうだが,
3つのデータセットで一貫してよいのはすごい

2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(6___11ページ)

他の実験でもSOTAを出している

(雑)

Appendix

Parallel Acceleration

  • Can we apply ArcFace on large-scale identities?
    Yes, millions of identities are not a problem.

Even for one million identities trained on 81080ti (11GB), our implementation (ResNet 50, batch size 864, feature dimension 512 and float point 32) can still run at 800 samples per second.

Feature Space Analysis

  • Is the 512-d hypersphere space large enough to hold large-scale identities?
    Theoretically, Yes.

The high-dimensional space is so large that E[θ(Wj)] decreases slowly when the class number increases exponentially.

2018_ArcFace-_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_pdf(10___11ページ)