【論文紹介】Towards Universal Representation Learning for Deep Face Recognition

# 紹介する論文
https://arxiv.org/abs/2002.11841

# 概要
Wild顔の認識は非常に困難です。従来の方法では、ターゲットドメインからの特別に注釈が付けられた変動データをトレーニングするか、またはラベル付けされていない変動データを導入してトレーニングデータから適応させます。代わりに、ターゲットドメインの知識を活用せずに、与えられたトレーニングデータでは見られない大きな変動に対処できるユニバーサル表現学習フレームワークを提案します。最初に、低解像度、遮蔽、頭の姿勢などのバリエーションとトレーニングデータを合成します。しかし、トレーニングのために拡張データを直接供給することは、新しく導入されたサンプルがほとんどハードなサンプルなので、うまく収束しません。そこで、特徴の埋め込みを複数のサブ埋め込みに分割し、トレーニング手順をスムーズにするために、各サブ埋め込みに異なる信頼値を関連付けることを提案します。サブ埋め込みは、それらの異なるパーティションでバリエーション分類損失とバリエーション敵対的損失を正則化することにより、さらに非相関になります。実験によると、この方法はLFWやMegaFaceなどの一般的な顔認識データセットで最高のパフォーマンスを達成し、TinyFaceやIJB-Sなどの極端なベンチマークでは大幅に優れています。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/17c2f95e-bbf7-3522-60eb-ec329b25e2c4.jpeg)

#提案手法
###・Confidence-aware Identification Loss
入力サンプル$x_i$はクラス$j\in${1,2,3,..,N}となり、サンプル$i$のfeature embeddingが$f_i$、第$j$番目クラスの特徴ベクトルが$w_j$です。確率的埋め込みネットワーク$\theta$は、各サンプル$x_i$を特徴空間のガウス分布$N(f_i,\sigma_i^2I)$として表します。$x_i$はクラス$j$のサンプルとなる確率は下記となります。

```math
p(x_i|y=j)∝p_{\theta}(w_j|x_i)\\
=\frac{1}{(2\pi\sigma_i^2)^\frac{D}{2}}exp(-\frac{{||f_i-w_j||}^2}{2\sigma_i^2})
```
その中、$D$は特徴次元です。さらに、サンプルを任意クラスに割り当てる事前分布を等しいと仮定すると、クラス$j$に属する$x_i$は下記となります。

```math
p(y=j|x_j)=\frac{p(x_i|y=j)p(y=i)}{\sum_{c=1}^{N}p(x_i|y=c)p(y=c)}\\
=\frac{exp(-\frac{{||f_i-w_j||}^2}{2\sigma_i^2})}{\sum_{c=1}^{N}exp(-\frac{{||f_i-w_j||}^2}{2\sigma_i^2})}
```
式を簡素化にするため、信頼値$s_i=\frac{1}{\sigma_i^2}$を定義します。L2正規化された単位球上で$f_i$と$w_j$の両方を制約すると、$\frac{{||f_i-w_j||}^2}{2\sigma_i^2}=s_i(1-w_j^Tf_i)$と下記の式が得られます。

```math
p(y=j|X_i)=\frac{exp(s_iw_j^Tf_i)}{\sum_{c=1}^{N}exp(s_iw_c^Tf_i)}
```
上記式は下記の図で表されています。クォリティーが異なるサンプルを学習して、もし全てのサンプルの信頼値が同じの場合、prototypeが全てのサンプルの中心になります（下図a）。それに対して、もしhighクォリティーサンプルの信頼値$s_i$が高くなると、prototypeがhighクォリティーサンプルに近づけるようになります（下図b）。
![2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/b526ade9-3875-e07b-a5eb-de4056f253f2.jpeg)
さらに、マージンベースのlossはクラス内の距離を小さくできるので、提案lossに組み込むと下記となります。

```math
L'_{idt}=-log\frac{exp(s_iw_{y_i}^Tf_i-m)}{exp(s_iw_{y_i}^Tf_i-m)+\sum_{j\neq y_i}exp(s_iw_j^Tf_i)}
```
###・Confidence-aware Sub-Embeddings
サンプル固有のゲーティング$s_i$を通じて学習した埋め込み$f_i$は、サンプルレベルの変動を処理できますが、$f_i$自体のエントリ間の相関は高いです。表現力を最大化し、コンパクトなフィーチャーサイズを実現するには、埋め込みのエントリを非相関化する必要があります。これにより、埋め込み$f_i$全体が分割されたサブ埋め込みにさらに分割され、それぞれにスカラー信頼値がさらに割り当てられます。
![3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/c73c0148-f0c0-c9fd-3c96-b3eeb1fc2b84.jpeg)

下記の式のように、埋め込み$f_i$全体を$K$個の等しい長さのサブ埋め込みに分割します。

```math
w_j=[w_j^{(1)T},w_j^{(2)T},...,w_j^{(K)T}],\\
f_i=[f_i^{(1)T},f_i^{(2)T},...,f_i^{(K)T}],\\
s_i=[s_i^{(1)},s_i^{(2)},...,s_i^{(K)}],
```
各グループのサブ埋め込み$f_i^{(k)}$はL2正規化されて、最終的なlossが下記となります。

```math
L_{idt}=-log\frac{exp(a_{i,y_i}-m)}{exp(a_{i,y_i}-m)+\sum_{j\neq y_i}exp(a_{i,j})}\\
a_{i,j}=\frac{1}{K}\sum_{k=1}^Ks_i^{(k)}w_j^{(k)T}f_i^{(k)}
```
ニューラルネットワークは、予測に対して「自信過剰」になる傾向があるので、ここでl2正則化を追加して、信頼度が恣意的に大きくなるのを抑制します。

```math
L_{reg}=\frac{1}{K}\sum_{k=1}^Ks_i^{(k)2}
```
###・Sub-Embeddings Decorrelation
複数のサブ埋め込みを単独で設定しても、異なるグループのfeatureが補足情報を学習しているとは限りません。下記の図が示されているように、サブ埋め込みは相関しています。つまり、$f_i$を等しい16グループに分割すると、すべてのサブ埋め込み間の平均相関は0.57になります。
![4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/aaaee3d8-9678-e076-ac75-7696f3112de7.jpeg)
異なる正則化でサブ埋め込みにペナルティを課す場合、それらの間の相関を減らすことができます。さまざまなサブ埋め込みをさまざまなバリエーションに関連付けることにより、他のバリエーションタイプの観点からバリエーション敵対的損失を実行しながら、すべてのサブ埋め込みのサブセットでバリエーション分類損失を実行します。複数のバリエーションがある場合、このような2つの正則化項は異なるサブセットに強制されるため、サブ埋め込みの非相関性が向上します。
###・Mining More Variations
拡張可能なバリエーションの数が制限されている（この方法では3つ）と、非相関の効果が制限されます。

無相関をさらに強化し、より一般化機能のためのより多くのバリエーションを導入するために、セマンティックな意味を持つより多くのバリエーションを探索することを目指します。 すべてのバリエーションが簡単にデータ拡張を実行できるわけではないことに注意してください。

```math
minL_{\theta_A}=-logp(l_A|x_A)-\frac{1}{N_A}\sum_c^{N_A}logp(y_A=c|x_A)\\
minL_{\theta_A}=-logp(y_A=y_{x_A}|x_A)
```
###・Uncertainty-Guided Probabilistic Aggregation
推論の指標を考慮すると、学習されたサブ埋め込みの平均を取るだけでは最適ではありません。これは、サブ埋め込みが異なると、バリエーションによって識別力が異なるためです。それらの重要性は、与えられた画像ペアによって異なります。 ペアワイズ類似度スコアの各埋め込みに関連する不確実性を適用することを検討します。

```math
score(x_i,x_j)==\frac{1}{2}\sum_{k=1}^K\frac{{||f_i-w_j||}^2}{\sigma_i^{(k)2}+\sigma_j^{(k)2}}\\
-\frac{D}{2K}\sum_{k=1}^Klog(\sigma_i^{(k)2}+\sigma_j^{(k)2})
```
つまり、入力画像$x_i$と$y_i$のスコアで同じ人物かどうかを判定します。
# 訓練
・Pythorch v1.1
・ArcFaceを用いてMS-Celeb-1Mで学習
・顔画像を110×110にクロッピングして、学習とテストの際に100×100に変換
・modified 100-layer ResNet
# 実験
8ベンチマークで評価しました。データセットは、バリエーションのレベルに基づいて、大きく3つのタイプに分類されます。
Type I: Limited Variation。
Type II: Mixed Quality。
Type III: Low Quality。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/e66fec80-62a8-88c8-d7a1-24c64d97654c.jpeg)

baselineモデルは、MS-Celeb-1M（0.6M画像）からランダムに選択されたサブセットでトレーニングされた18層のResNetです。比較的実験として、IJB-Aデータセットに同じタイプの拡張を適用して、対応するバリエーションのテストデータを合成します。下記の図では、baselineモデルは、グリッドを上段から下段へと下がるように新しいバリエーションを徐々に追加すると、パフォーマンスの低下を示しています。提案された方法は、新しいバリエーションを上から下に追加するときにパフォーマンスの向上を示します。これは、確信度表現表現学習の効果を強調し、さらにフレームワークトレーニングにバリエーションを追加できるようにします。
![2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/af9d1eef-9fed-6269-ba89-edab71076bec.jpeg)

下記の図のように、2D埋め込み空間に投影されたt-SNEを使用してfeatureを視覚化します。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/78fe0777-9b10-1824-bb48-52c0632c0e53.jpeg)

一般的な顔認識データセット、つまり、バリエーションが限られていて高品質なタイプIデータセットについて、この方法を最先端の方法と比較します。テスト画像は主に高品質であるため、より大きな変動に対処するように設計された方法の利点は限られています。下記の表に示すように、提案した方法は、ArcFaceよりもやや劣る一方で、ほとんどの方法よりも優れています。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/20bd35bb-265a-4698-6b63-37e55f51ea06.jpeg)

より困難なデータセットを評価する場合、これらの最先端の一般的な方法ではパフォーマンスの低下が発生します。これは、困難なデータセットが大きな変動を示し、高品質のトレーニングデータセットからのドメインギャップが大きくなるためです。下記の表は、IJB-A、IJB-C、IJB-Sの3つの挑戦的なベンチマークでのパフォーマンスを示しています。 提案されたモデルは、最新技術よりもstate-of-the-artsを達成します。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416370/31bce87b-ab18-9480-e9f4-9fc5533e38e6.jpeg)