概要
顔認識の4つのデータセットでSoTAを更新したAdaFaceは、訓練サンプルの品質を反映できる適応的なマージン損失関数を提案している。
顔認識は、監視カメラなどの映像に映った顔が誰であるかを特定するタスクである。監視カメラなどの低解像度の画像などが訓練サンプルに含まれており、そのようなサンプルは訓練中にハードサンプルとなる。一方で、サングラスやマスクを使用している顔画像、あるいは特殊なアングルから撮影された顔画像もハードサンプルとなりうる。しかし、高解像度のハードサンプルと、低解像度のハードサンプルは、その難しさの質が異なっている。
下図に示すように、低品質(低解像度)なハードサンプルの中にはそもそも認識が不可能というレベルのものも存在するが、高品質(高解像度)なハードサンプルは顔認識器ができれば正しく認識できるように訓練したいものである。
顔認識手法では、近年、より識別的な特徴表現を獲得するためのマージンベースの損失関数が提案されている。例えば、CosFaceのようなadditiveマージンや、ArcFaceのようなangularマージンが挙げられる。本研究はこれらの損失関数を一般化し、ハードサンプルの品質という観点を導入し、低品質なハードサンプルの勾配の影響を適応的に小さくできる方法を提案している。
書誌情報
- Kim, Minchul, Anil K. Jain, and Xiaoming Liu. "AdaFace: Quality Adaptive Margin for Face Recognition." arXiv preprint arXiv:2204.00964 (2022).
- CVPR2022 Oral
- 公式実装
ポイント
Recap: 顔認識モデルの損失関数
近年の顔認識モデルで用いられるマージンベースの損失関数は、識別境界のマージンの外側に各クラスの特徴量が収まるように訓練が促進される。これにより特徴量のクラス内分散が小さくなり、識別的な特徴表現を獲得できるようになる。マージンベースの損失関数は、一般的に以下のように表現される。
\mathcal{L}=-\log \frac{\exp \left(f\left(\theta_{y_{i}}, m\right)\right)}{\exp \left(f\left(\theta_{y_{i}}, m\right)\right)+\sum_{j \neq y_{i}}^{n} \exp \left(s \cos \theta_{j}\right)}
nはクラス数、y_iはサンプルiの真のラベル、jはクラスのインデックスを表す。\theta_jは、j番目のクラスの重みベクトルと特徴ベクトルの間の角度である。この角度は、0に近ければ近いほど、その特徴ベクトルがj番目のクラスであると予測されやすくなることを表す。
代表的なマージンベースの手法における、f\left(\theta_{j}, m\right)の形は以下の通りである
\begin{gathered} f\left(\theta_{j}, m\right)_{\text {SphereFace }}= \begin{cases}s \cos \left(m \theta_{j}\right) & j=y_{i} \\ s \cos \theta_{j} & j \neq y_{i}\end{cases} \\ f\left(\theta_{j}, m\right)_{\text {CosFace }}= \begin{cases}s\left(\cos \theta_{j}-m\right) & j=y_{i} \\ s \cos \theta_{j} & j \neq y_{i}\end{cases} \\ f\left(\theta_{j}, m\right)_{\text {ArcFace }}= \begin{cases}s \cos \left(\theta_{j}+m\right) & j=y_{i} \\ s \cos \theta_{j} & j \neq y_{i}\end{cases} \end{gathered}
CosFaceはマージンmが\cos{\theta_j}に対して付与され、ArcFaceは\theta_jに対して与えられるので、CosFaseをadditiveマージン、ArcFaceをangularマージンと呼ぶ。また、Cosineは-1から1の間の値しか取れないので、大きさを強調するためのスケールパラメータsが使用される。
本筋からは外れるが、m,sは繊細なハイパーパラメータであることが、先行研究によって明らかになっており、P2SGradという手法では、m,sに頼らずに直接勾配を修正することを提案している。
また、変わり種として、訓練の段階に応じて徐々に厳しいマージンを課していくというカリキュラム学習を採用する手法もある。
f\left(\theta_{j}, m\right)_{\text {Curricular }}= \begin{cases}s \cos \left(\theta_{j}+m\right) & j=y_{i} \\ N\left(t, \cos \theta_{j}\right) & j \neq y_{i}\end{cases}
N\left(t, \cos \theta_{j}\right)= \begin{cases}\cos \left(\theta_{j}\right) & s \cos \left(\theta_{y_{i}}+m\right) \geq \cos \theta_{j} \\ \cos \left(\theta_{j}\right)\left(t+\cos \theta_{j}\right) & s \cos \left(\theta_{y_{i}}+m\right)<\cos \theta_{j}\end{cases}
上式でtは訓練のステップを表しており、訓練が進むにつれてマージンが大きくなり、より各クラスの特徴量が識別的になることを促される。
画像の品質と特徴量のノルム
AdaFaceでは、画像の品質をもとに、勾配のスケール(後述)をコントロールするという適応的な損失を提案している。例えば、低品質のハードサンプルは、訓練にあまり影響を及ばしてほしくないので、勾配のスケールを小さくする、という形である。
ここで、画像の品質とは、Image Quality Assesment(IQA)系の手法によって測定されるような、人がぱっと見て納得できるような品質を指している。しかし、一般にIQAの手法は訓練中に処理するには高コストである。
そのため、本研究では、画像の品質の代理指標として特徴量の(正規化された)ノルムを使用することを提案している。
下図(a)(b)は、MS1MV2というデータセットを用いて顔認識モデルを訓練し、その時の特徴量のノルムとIQAスコアの一種である1-BRISQUEとの相関係数の訓練中の推移、および最終エポックでの散布図を表している。比較対象として、(a)(c)では、訓練途中のモデルが出力した真のクラスに対する確率を1から引いたもの(1 - P_{y_i})と1-BRISQUEとの相関係数の推移、および散布図が掲載されている。
ここから、以下のことが導ける。
- 画像の品質と、予測の難しさ(1 - P_{y_i})の間には相関関係は認められるものの、そこまで大きいものではない。これは、高品質だが、分類が難しいというサンプルの存在を示唆している。
- 一方で、画像の品質と特徴量のノルムの間には最終的には0.5以上の相関があることがわかる。また、訓練のどのタイミングでも、特徴量のノルムの方が予測の難しさよりも一貫して画像の品質との相関が高いことがわかる。
以上から、特徴量のノルムを、画像の品質の代理指標として使用できそうだ、ということが確認できた。
ところで、特徴量のノルムは、モデルによって大きくも小さくもなり得る。そのため、実際には何らかの方法で正規化を行う必要がある。本研究では、ミニバッチ内の統計量の指数移動平均である\sigma_z, \mu_zを用いている。\lfloor\cdot\rceilは最小値と最大値によるClippingを表す。特徴量のノルム\widehat{\left\|\boldsymbol{z}_{i}\right\|}は以下のように定義される。
\widehat{\left\|\boldsymbol{z}_{i}\right\|}=\left\lfloor\left.\frac{\left\|\boldsymbol{z}_{i}\right\|-\mu_{z}}{\sigma_{z} / h}\right\rceil_{-1} ^{1}\right.
Gradient Scale Term
ここからは、顔認識モデルの損失関数において、Gradient Scale Term(GTS)という勾配のスケーリング項が重要な役割を果たすことを示す。
通常、一般的な分類モデルにおける損失関数は以下のようなCrossEntropy損失が用いられる。ここで、\boldsymbol{z}_iはi番目のサンプルの特徴量を表し、\boldsymbol{W}_jはj番目のクラスに関する線形変換である。
\mathcal{L}_{C E}\left(\boldsymbol{x}_{i}\right)=-\log \frac{\exp \left(\boldsymbol{W}_{y_{i}} \boldsymbol{z}_{i}+b_{y_{i}}\right)}{\sum_{j=1}^{C} \exp \left(\boldsymbol{W}_{j} \boldsymbol{z}_{j}+b_{j}\right)}
顔画像の同一性の判定のためには、しばしば2枚の画像p, qからそれぞれ得られた特徴量\boldsymbol{z}_{p},\boldsymbol{z}_{q}の間のコサイン類似度が用いられる。
\frac{\boldsymbol{z}_{p} \cdot \boldsymbol{z}_{q}}{\left\|\boldsymbol{z}_{p}\right\|\left\|\boldsymbol{z}_{q}\right\|}
angularベースの手法では、直接的にコサイン類似度を最適化することを目指し、\boldsymbol{z}_iと\boldsymbol{W}_jの間の角度\theta_jを用いて、標準的な損失関数を以下のように書き直す。
\mathcal{L}_{C E}\left(\boldsymbol{x}_{i}\right)=-\log \frac{\exp \left(s \cdot \cos \theta_{y_{i}}\right)}{\sum_{j=1}^{C} \exp \left(s \cos \theta_{j}\right)}
ここにマージンを導入すると、損失関数は以下のようになる。先に示した通り、さまざまなマージン関数f\left(\theta_{y_{i}}, m\right)が考案されている。
\mathcal{L}_{C E}\left(\boldsymbol{x}_{i}\right)=-\log \frac{\exp \left(f\left(\theta_{y_{i}}, m\right)\right)}{\exp \left(f\left(\theta_{y_{i}}, m\right)\right)+\sum_{j \neq y_{i}}^{n} \exp \left(s \cos \theta_{j}\right)}
以下、マージン関数は\theta_{y_i}の関数ではなく\cos{\theta_{y_i}}の関数であるととらえて、f\left(\cos \theta_{y_{i}}\right)と記載する。
\boldsymbol{x}_i, \boldsymbol{W}_jに関する勾配は、以下のように求められる。
\frac{\partial \mathcal{L}_{\mathrm{CE}}}{\partial \boldsymbol{W}_{j}}=\left(P_{j}^{(i)}-\mathbb{1}\left(y_{i}=j\right)\right) \frac{\partial f\left(\cos \theta_{j}\right)}{\partial \cos \theta_{j}} \frac{\partial \cos \theta_{j}}{\partial \boldsymbol{W}_{j}}
\frac{\partial \mathcal{L}_{\mathrm{CE}}}{\partial \boldsymbol{x}_{i}}=\sum_{k=1}^{C}\left(P_{k}^{(i)}-\mathbb{1}\left(y_{i}=k\right)\right) \frac{\partial f\left(\cos \theta_{k}\right)}{\partial \cos \theta_{k}} \frac{\partial \cos \theta_{k}}{\partial \boldsymbol{x}_{i}}
ここで、P^{(i)}_jは、サンプルiが正しいクラスy_iへと分類される確率を表す。
P_{j}^{(i)}=\frac{\exp \left(f\left(\cos \theta_{y_{i}}\right)\right)}{\exp \left(f\left(\cos \theta_{y_{i}}\right)\right)+\sum_{j \neq y_{i}}^{n} \exp \left(s \cos \theta_{j}\right)}
この2つの勾配をスケールさせているスカラー項を、Gradient Scale Term (GST) と呼ぶことにし、以下のように定義する。
g:=\left(P_{j}^{(i)}-\mathbb{1}\left(y_{i}=j\right)\right) \frac{\partial f\left(\cos \theta_{j}\right)}{\partial \cos \theta_{j}}
\frac{\partial \cos \theta_{j}}{\partial \boldsymbol{W}_{j}}と\frac{\partial \cos \theta_{k}}{\partial \boldsymbol{x}_{i}}はmの影響を受けない項である一方、GSTはmによって変化する項である。
GSTは、勾配の大きさに影響を与えるスカラー項であり、特定のサンプルの勾配を強調する働きを持つ。例えば普通のSoftmaxやCosFaceのような場合だと、以下のような形になる。予測結果が大きく外れているサンプルに関しては、\left(P_{y_{i}}^{(i)}-1\right)の絶対値が大きくなり、勾配が強調される形となる。
g_{\text {softmax }}=\left(P_{y_{i}}^{(i)}-1\right) s
g_{\text {CosFace }}=\left(P_{y_{i}}^{(i)}-1\right) s
一方、ArcFaceだと、GSTは以下のような形になる。2つ目の項まではsoftmaxやCosFaceと同様だが、マージンmによってコントロールされる第3項がついてくる。
g_{\text {ArcFace }}=\left(P_{j}^{(i)}-1\right) s\left(\cos (m)+\frac{\cos \theta_{y_{i}} \sin (m)}{\sqrt{1-\cos ^{2} \theta_{y_{i}}}}\right)
さまざまなマージン関数に対して、真のラベルのベクトル\boldsymbol{W}_{y_i}と異なるラベルのベクトル\boldsymbol{W}_jの間で、GSTがどのような大きさになるのかを表しているのが以下の図である。なお、原点からの距離は特徴量のノルムを表している。
- 1番左のCosFaceでは、マージンmの働きによって決定境界がB_0からB_1へと移動する。B_0はsoftmaxの時の決定境界である。値の推移が詰まっていてやや見づらいが、決定境界B_1付近では、GSTが大きい値から小さい値へと急速に推移している。CosFaceでは、決定境界を境としてGSTがガラリと変わることがわかる。CosFaceのようなadditiveマージンでは、決定境界を制御していると言える。
- 2番目のArcFaceのGSTを見てみる。m=0.5の時、決定境界B_1の内側(\boldsymbol{W}_{y_i})に近い側ではGSTは小さい(ほぼ0)が、決定境界を超えた途端大きな値になり、遠く離れるに従ってやや小さい値になっていく。これにより、あまりにも難しいサンプルに関しては、勾配を強調しない、という気持ちになっている。ArcFaceのようなangularマージンでは、GSTの濃淡を制御していると言える。なお、3番目のm=-0.5の時は、逆の効果を持たせることができ、難しいサンプルほど勾配を強調し、それほど難しくないサンプルではそこそこ勾配を強調するという形にすることもでき、mが負の値の時に、勾配の濃淡が逆転するということがわかる。
- 4番目のCurricularFaceでは、決定境界が徐々に真のラベルの方へと推移していき、最初は難しいサンプルもそこそこ強調するが、訓練がある程度進んだら難しいサンプルはあまり強調しない、という動作を実現する。
- 5番目のMagFaceはArcFaceの拡張であり、特徴量のノルムが大きい時に強調する、という処理を加えている。これにより、決定境界B_1はそれまでのような特定の角度を表す直線ではなくなり、ノルムによって湾曲することになる。この図には、白抜きの○と△、黒い○と△が記載されている。白抜きはノルムが小さいことを、黒はノルムが大きいことを表しており、○は比較的決定境界に近い簡単なサンプルを、△は間違いのクラスに近いハードサンプルを表している。MagFaceは、ノルムの大きさによって多少GSTの大きさが変化するものの、簡単なサンプルほど強調し、ハードサンプルは強調しないという傾向が特徴量のノルムによって変化するわけではない。
AdaFace
いよいよ、提案手法であるAdaFaceを導入する。先ほどのGSTの図を再掲する。
AdaFaceのGSTにおいて実現したい特徴は、以下の通りである。
- 小さいノルムでは、簡単なサンプルの勾配を強調し、ハードサンプルの勾配は強調しない
- 大きいノルムでは、簡単なサンプルの勾配は強調せず、ハードサンプルの勾配は強調する
このようなGSTは、以下のようなマージン関数によって実現できる。g_{\text {angle}}はangularマージンを、g_{\text{add}}はadditiveマージンを表し、さらにそれらが特徴量のノルム\widehat{\left\|\boldsymbol{z}_{i}\right\|}によって適応的な値を取るような形になっている。
f\left(\theta_{j}, m\right)_{\text {AdaFace }}=\left\{\begin{array}{ll} s \cos \left(\theta_{j}+g_{\text {angle }}\right)-g_{\text {add }} & j=y_{i} \\ s \cos \theta_{j} & j \neq y_{i} \end{array}\right.
g_{\text {angle }}=-m \cdot \widehat{\left\|\boldsymbol{z}_{i}\right\|}, \quad g_{\text {add }}=m \cdot \widehat{\left\|\boldsymbol{z}_{i}\right\|}+m
この形は、\left\|\boldsymbol{z}_{i}\right\|=-1, 0の時、それぞぞれArcFace, CosFaceに対応する(なお、\left\|\boldsymbol{z}_{i}\right\|=1の場合はArgFaceの負のangularマージンにし、かつ2mのadditiveマージンにした時の形になる)。そのため、AdaFaceはArcFaceとCosFaceの一般化と言える。
このようなマージン関数の気持ちを整理しておく。g_{\text {angle}}は特徴量のノルムの符号が変わるタイミングで符号が反転する。これにより、ArcFaceでのマージンの符号が変わった時と同様に、決定境界の外側でのGSTの濃淡が真逆に変化するので、上に示した2つの特徴の達成に直接的に貢献する。
一方、g_{\text{add}}は、特徴量のノルムが大きいときはより厳しい決定境界に、特徴量のノルムが小さいときはゆるい決定境界にするという動作を実現する。これは、高品質のサンプルでは識別的な特徴量を得たいが、低品質のサンプルのでは識別的な特徴量が得られなくてもしょうがないよね、という気持ちを反映することができる。
参考までに、このマージン関数を採用した時のGSTは以下のようになる。
\left(P_{y_{i}}^{(i)}-1\right) s\left(\cos \left(g_{\text {angle }}\right)+\frac{\cos \theta_{y_{i}} \sin \left(g_{\text {angle }}\right)}{\sqrt{1-\cos ^{2} \theta_{y_{i}}}}\right)
実験に関しては省略
Discussion