Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ArcFaceの仕組み

Eae3142b0987e2df6468ce085da3c7b7?s=47 Inoichan
September 06, 2019

 ArcFaceの仕組み

角度を用いた距離学習を説明してます。
基本的な理論の部分はSphereFaceで説明しています。
最終的にArcFaceの仕組みを理解できるようにするのが目標です。

ArcFaceについては優れた紹介記事がすでにありますが、角度による距離学習がどういったものか、marginを与えるとなぜうまくいくのかを基礎から説明しています。少しでも理解のお役に立てますと幸いです!

間違っている部分があったら、教えていただけますと非常に嬉しいですm(_ _)m

Eae3142b0987e2df6468ce085da3c7b7?s=128

Inoichan

September 06, 2019
Tweet

Transcript

  1. ArcFaceの仕組み ~角度による距離学習を理解する~ Inoue Yuichi

  2. 自己紹介 • RISTでインターンやらせてもらってます。 • 京都大学薬学研究科 博士課程1回生 • 最近コンペに出てます。 Fintech DC 1st,

    FUJIFILMコンペ 特別賞, AI RUSH 14th, Kaggle GANコンペ 60th (銅メダル) • Twitter (@inoichan)
  3. 本日の内容 • 角度による距離学習を理解する。 • Angular Marginを理解する。 • 発表タイトルは「ArcFace」なのですが、 理論部分はほぼ「SphereFace」で説明します。 今日はしないお話

    • どのくらい顔を判断できるか。 (直接, 論文を見てみてくださいm(_ _)m)
  4. 断りのない限り、図は下記からの引用です。 ArcFace: Additive Angular Margin Loss for Deep Face Recognition

  5. ArcFaceとは... • 距離学習の「角度 Version」 • 良い感じの「Margin」 • オープンなデータセットに使える

  6. Softmaxの直前の層の捉え方を工夫し、角度でデータ間の類似 度を判定して学習できるようにした。そのときに、同じクラスはより 近く、違うクラスはより遠くなるようにマージンを工夫した。 なぜこれがうまくいくのか??? ArcFaceとは...

  7. ArcFaceとは... 内積の公式

  8. 距離学習(Metrics Learning)とは? データ間の「距離」を測ることで、そのデータ同士が同じか違うか を判断する方法。似ているデータは距離が近いし、違うデータは 距離が遠いと考える。 参考URL copypasteの日記 : Metric Learning

    入門
  9. ・Siamese Net (contrastive loss) - 2種類のInput - 同じラベルの時は近く、 違うラベルの時は遠く学習 -

    ユークリッド距離 (参考) Siamese Neural Networks for One-shot Image Recognition Dimensionality Reduction by Learning an Invariant Mapping Trains a Siamese MLP on pairs of digits from the MNIST dataset. (引用) A Deep Siamese Neural Network Learns the Human-Perceived Similarity Structure of Facial Expressions Without Explicit Categories
  10. ・Triplet Network - 3種類のInput - 同じラベルとは近く、違うラベルとは遠くなる ように同時に学習 - ユークリッド距離 良い感じにペア選ぶの難しい!

    (引用) DEEP METRIC LEARNING USING TRIPLET NETWORK (参考) Deep Metric Learning の定番⁈ Triplet Lossを徹底解説
  11. ・Center Loss - 2種類のloss - 同じクラスのデータがコンパクトにな るように学習 - ユークリッド距離 (引用)

    A Discriminative Feature Learning Approach for Deep Face Recognition (参考) Center lossを読んでみた_20170618@abeja
  12. ・Center Loss - 2種類のloss - 同じクラスのデータがコンパクトにな るように学習 (引用) A Discriminative

    Feature Learning Approach for Deep Face Recognition (参考) Center lossを読んでみた_20170618@abeja ユークリッド距離で考えるの、本当 に適しているのか?
  13. ・SphereFace:角度による距離学習 - Softmax Lossによって学習された特徴量は、本質的には角度に よって分布している。 Center Lossのようにユークリッド距離を元に した方法は適さない。 (引用) SphereFace:

    Deep Hypersphere Embedding for Face Recognition
  14. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition それぞれのクラスの確率

    Decision boundary (決定境界) (p1 = p2 となるところ) 決定境界 この決定境界よりも自分のクラスの方に近 づくように学習は進んでいく。
  15. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition このように置くと...

    θはxとWの間の角度!!!
  16. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition 角度によって決定境界が決まる!

    θはxとWの間の角度!!!
  17. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition 決定境界はW1とW2の二等分線

    角度によって決定境界が決まる!
  18. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition

  19. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition 良い感じにMarginを与える!!!

  20. 手書き、ご了承ください。

  21. ・SphereFace 通常のSoftmax loss

  22. ・SphereFace クラス1の「x」が正しく分類されるために は、決定境界より左側に位置するように学 習がされなければならない。 決定境界

  23. ・SphereFace 「x」と「W1」の間の角「θ」に1以上のマー ジン「m」を掛ける。すると、「 x」と「W1」の 間の角は本来より大きく見積もられる。

  24. ・SphereFace 決定境界が本来よりも左側に来る。

  25. ・SphereFace クラス1の「x」はより「W1」の近くに位置 するように、「W2」からは遠くに位置する ように学習される。

  26. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition その結果、同じクラス内の角度の幅が狭くなり、クラ

    ス間の角度が大きくなる。
  27. ・SphereFace (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition

  28. ・SphereFaceの推論 (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition 推論するときは、各クラスの訓練データから抽出した特徴量ベクトルの重心と、テ

    ストデータの特徴量ベクトルを Cosine類似度で測る。値が 1に近ければ、そのクラ スとなす角が小さい、すなわち距離が近いということになる。 黄緑クラスの訓練 データから抽出した 特徴量ベクトルの重 心 テストデータの特 徴量ベクトル この2つのベクトルがな す角がどれくらい小さい かを、Cosine類似度で 求める!
  29. ・SphereFaceのまとめ (引用) SphereFace: Deep Hypersphere Embedding for Face Recognition

  30. ・CosFace (引用) CosFace: Large Margin Cosine Loss for Deep Face

    Recognition L2-normalizationすることで、xも Wも同じ超球面上にくる。(2次元 だったら単位円上のベクトルにな る。)
  31. ・CosFace (引用) CosFace: Large Margin Cosine Loss for Deep Face

    Recognition s:softmaxの温度パラメータ 本来は少しでも決定境界よ り自分のクラス側にきたら、 cosθ1はcosθ2より大きくな る。 cosθ1からmarginを引くことで (cosθ1 - m)、xはよりW1に近づか ないとcosθ2より大きくならな い!!
  32. ・ArcFace CosFaceと同じようにxとWをL2-normalizationしている。

  33. ・ArcFace マージンの捉え方は SphereFaceに近い!定 数を自分のクラスの θに足す。

  34. ・ArcFace マージンの捉え方は SphereFaceに近い!定 数を自分のクラスの θに足す。

  35. まとめ • CNNなどで特徴抽出してきたベクトルを超球面上の点にス ケールして、角度でクラスを分類するという解釈をした。 • 学習時に適切なMarginを与えることで、うまく同じクラスの データはより近くなり、異なるクラスのデータはより遠くなるよう に学習することができた。

  36. Thank you!!!

  37. 実装するのに参考にしたもの • [Keras]MobileNetV2+ArcFaceを使ってペットボトルを分類してみた! • https://github.com/4uiiurz1/keras-arcface • 「Human Protein Atlas Image

    Classification」のbestfittingの1st place solution Appendix
  38. ArcFaceのとてもわかりやすいサイト モダンな深層距離学習 (deep metric learning) 手法: SphereFace, CosFace, ArcFace たぶん、このサイトはArcFaceに少しでも興味持った人は一度は見ているはず!

    Softmaxの温度パラメータについてもわかりやすく説明してくれている!!! Appendix
  39. ・マージンによる分類のされ方の違い Appendix SphereFaceでは2つのクラスの角度が近い時、うまく距離を開けることができないが、 CosFace, ArcFaceはその場合でもうまく距離を確保することができる。

  40. ・SphereFace, CosFace, ArcFaceを同時に使う Appendix