359 測定値
359 測定値

AI が顔をより正確に認識するには、なぜ (少し) 負ける必要があるのか

Eva Vanski13m2025/03/13
Read on Terminal Reader

長すぎる; 読むには

顔認識(FR)は、金融分野、セキュリティ、ビデオ監視、スマートホームサービス、多要素認証などで広く使用されています。この記事では、最近の研究動向について詳しく説明します。
featured image - AI が顔をより正確に認識するには、なぜ (少し) 負ける必要があるのか
Eva Vanski HackerNoon profile picture
0-item

近年、顔認識は大きく進歩しました。このレビューでは、損失関数の進化に焦点を当て、主要なタスク、モデル、および解決方法の概要を説明します。


簡単に言えば、顔認識とは、写真、ビデオ、またはリアルタイム映像を使用して人物の身元を識別または確認する方法です。このレビューでは、単一のデジタル画像またはビデオ フレームに基づく識別について説明します。

顔認識とその実装

顔認識(FR) の用途は多岐にわたります。金融分野、サイバーセキュリティ、ビデオ監視、スマートホーム サービス、多要素認証などで使用されています。


これらの実用的な用途以外にも、FR モデルは現代の生成モデルでも重要な役割を果たしています。GFPGAN や CodeFormer などの顔復元モデル、SimSwap や FaceShifter などの顔スワッピング ツール、pSp や HyperStyle などの画像間 GAN ベースのモデル、さらにはアイデンティティ保存のためのトランスフォーマー ベースおよび安定拡散モデルでの識別情報の損失によく使用されます。


ArcFace (2018–2019) は最も広く使用されている識別損失関数ですが、CosFace (2018) と FaceNet はあまり使用されていません。

このレビューでは、ArcFace 以降、特に近年の FR の状況がどのように変化したかに焦点を当てます。

顔認識パイプラインの概要

顔認識には、顔検出、切り取り、位置合わせなどの前処理が必要です。前処理は、トレーニング データとテスト データの両方で同じである必要があり、通常は FFHQ のような位置合わせ (Flickr-Faces-HQ データセット) を使用します。通常、これには、顔境界ボックス検出器と顔ランドマーク検出器の 2 つの別個の追加検出器が使用されます。メイン モデルと一緒にトレーニングされる位置合わせを備えたエンドツーエンド モデルがありますが、レビューのこの部分では考慮しません。ここでは、トレーニング データセットとテスト データセットが均一に切り取られ、位置合わせされていると想定します。したがって、モデルには切り取られ、位置合わせされた入力が供給されます。


典型的なFR前処理パイプライン

FR タスクのトレーニング データセットには、各 ID (人物) ごとに複数の画像があります。モデルのタスクは、同じ人物の写真と別の人物の写真を区別することを学習することです。


モデルは通常、次の 2 つのコンポーネントで構成されます。


  • バックボーン。バックボーンは特徴抽出器とも呼ばれ、前処理された顔写真を入力として受け取り、埋め込みの特徴ベクトルを出力します。典型的なバックボーンは、ResNet、VGGNet、ResFace、SE-ResNet などの畳み込みニューラル ネットワーク (CNN) です。また、VisionTransformer や Feature Pyramid Network モデル、またはそれらのより複雑なバリエーションである場合もあります。このレビューの部分では、モデルのバックボーンについて詳しく説明しません。


  • 損失関数。トレーニング段階では、損失関数を適用してバックボーン トレーニングを監視します。トレーニングの目標は、同じ人物の異なる写真に対しては近い埋め込みを、異なる人物の顔に対しては遠い埋め込みを生成するモデルを取得することです。ここでは、たとえばコサイン距離や L2 距離を使用して、埋め込みベクトル間の距離を測定することについて説明します。

損失関数の種類

ペアベースの損失

最初のカテゴリは「ペアベースの損失」と呼ばれ、コントラスト損失、トリプレット損失、N ペア損失など、「メトリック学習ベースの方法」と呼ばれることもあります。


これらの方法では、モデルのトレーニング前に正と負のサンプル ペアを結合するか、トレーニング中にサンプル ペアをオンラインで動的に結合します。どちらのモードでも、サンプル単位で意味のある顔の表現を抽出できますが、データ サイズが指数関数的に増加します。


トリプレット損失を使用したトレーニング スキームは次のようになります。同じラベルを持つ 2 つの例は、埋め込み空間内で埋め込みが近くなります。異なるラベルを持つ 2 つの例は、埋め込みが遠く離れます。


トリプレット損失スキーム


データセットのサイズに伴って可能なペアの数が急増すると、通常は経験的かつ計算的に複雑なペア選択戦略を探す必要が生じます。

分類に基づく損失

もう 1 つのカテゴリは「分類ベースの損失」または「プロトタイプ学習ベースの方法」と呼ばれるもので、Softmax 損失、CosFace、ArcFace、NormFace などがあります。これらは、クラス プロキシまたはクラス センターとも呼ばれるプロトタイプを使用して、クラスに関する一般化された情報を処理します。プロトタイプは学習可能なパラメーターであり、モデルのトレーニング中に更新されます。現在、分類ベースの損失は主に顔認識モデルに使用されています。

分類に基づく損失の履歴

FR タスクを分類として考えると、ソフトマックス損失 (別名、カテゴリ クロスエントロピー損失) を使用できます。本質的に、ソフトマックス損失は、ソフトマックス活性化関数 + クロスエントロピー損失です。

損失スキーム

式を思い出してみましょう。最初の式は Softmax 活性化、2 番目の式は Cross-Entropy 損失です。


Softmax activation, and Cross-Entropy loss





組み合わせて取得:

Softmax loss









損失関数は最後の完全接続層の結果を受け取ります。ここで、𝒙𝒊は𝑖番目のトレーニング画像の埋め込み特徴を示し、𝑦𝑖は𝒙𝒊のラベル、𝑾は最後の完全接続層の重みを示します。


これは機能しますが、問題があります。クラス間の境界が曖昧になります。2018 年に ArcFace モデルの登場により、FR に新たな一歩が踏み出されました。基礎はソフトマックス損失のままですが、ベクトル間の角度を考慮することに移ります。コサイン類似度の式を思い出してみましょう。







ソフトマックス損失式に代入してみましょう





次に、クラス内角度が小さくなり、クラス間角度が大きくなるようにマージンが追加されます。これにより、ソフトマックス損失のぼやけた境界の代わりに、クラス間にギャップが生じます。


同様の方法: cos(θ + m) を cos θ − m に置き換えると、CosFace 損失が得られます。

Softmax ベースの方法では、プロトタイプは最後の線形層の係数行列に格納されるものと見なされます。つまり、Pi = Wi であり、プロトタイプはバックプロパゲーションでその勾配を使用して更新されます (これが「プロトタイプ学習ベースの方法」という名前が付けられた理由です)。

ここから、FR の最新の損失関数の歴史が始まります。長年にわたり、多くの修正と改良が行われてきましたが、上記の式は、以降の資料を理解するのに十分です。

サブセンターアークフェース

2020 年に登場した改善点の 1 つは、サブセンター ArcFace と呼ばれ、ノイズの多いデータセット向けに設計されています。クラス内コンパクトネス制約は、ノイズの多いデータでオーバーフィッティングにつながります。サブセンター ArcFace はサブクラスを導入します。トレーニング バッチ内のサンプルは、すべてのサブセンターではなく、正のサブセンターの 1 つに近い必要があります。これにより、データ内のノイズの影響が軽減されます。












ArcFace モデルと Sub-center ArcFace モデルの両方には、トレーニング用のコードと事前トレーニング済みの重みを含む実装が insightface ライブラリ内に含まれています。


Insightface には、iresnet (34、50、100、200、2060)、mobilefacenet、vit (VisionTransformer) という異なるバックボーンを持つ ArcFace の実装があります。


さまざまなバックボーンの検討はこの記事の範囲外なので、検討中の各損失で使用されたバックボーンの名前のみを示します。ほとんどの場合、損失の作成者は最適なバックボーンを選択しようとはせず、単に人気のあるバックボーンの 1 つ、または比較したいモデルで使用されたバックボーンを使用しました。

トレーニングにはデータセット MS1M、Glint360K、WebFace42M が使用されました。

柔軟なマージン

顔認識方法の主な課題は、データ ノイズです。プロトタイプ学習ベースの方法は、ノイズによって生じるプロトタイプ バイアスの影響を受けます。オーバーフィッティングとアンダーフィッティングのバランスをとる 1 つの方法は、ソフトマックス ベースの損失の主なパラメーターであるマージンを調整することです。

アダコス

L2-softmax、CosFace、ArcFace などのコサインベースのソフトマックス損失のスケールと角度マージンを調整する最初の方法の 1 つです。

ネットワークが最適化されるにつれて学習速度が遅くなるという経験的原理を実装します。この記事では、対応するクラスのミニバッチ内のすべての角度の中央値に等しい調整変数を導入します。これは、現在のモデル最適化の度合いを大まかに表します。中央値の角度が大きい場合、グリッド パラメーターは最適から遠く離れており、より大きなスケールとマージンが適用されます。逆の場合も同様です。

2019年、 pytorch 実装(ただし、事前にトレーニングされた重みはありません)

 Changing process of angles in each mini-batchwhen training














CASIA-WebFace および MS1M データセットでトレーニングされ、入力解像度は 144 × 144 です。LFW、MegaFace、IJB-C データセットでテストされ、L2-softmax、CosFace、ArcFace の損失と比較されています。


過去数年間で、Dyn-ArcFace(2022)、MagFace(2021)、ElasticFace(2021)など、FRに適応マージンを適用するためのいくつかの画期的な方法が登場しましたが、私たちはこの分野における最新の研究の1つであるX2-Softmax(2023)に焦点を当てます。


X2-ソフトマックス


AdaCos と比較すると、X2-Softmax はクラスの不均一な分布を考慮しようとします。一部のクラス間では適切な固定マージンは、他のクラス間で収束するには大きすぎる場合があり、他のクラス間で顔の特徴のクラス内コンパクト性を大幅に促進するには小さすぎる場合があります。

2023年、 pytorch 実装

角度が大きいクラスの場合、コンパクト性を高めるために大きなマージンが必要であり、角度が小さいクラスの場合、コンパクト性を高めるために小さなマージンが必要です。

ソフトマックスベースの損失の一般的な式を思い出してみましょう。







ここで、ArcFace や CosFace などの損失の場合、ロジット関数 f(θ) のみが異なります。X2-Softmax 損失関数の場合は次のようになります。






従来のソフトマックスベースの損失ではコサインが使用されますが、コサインはテイラー級数に展開されると二乗関数になるため、X2-Softmax では二乗関数が選択されます。x の高次項を破棄し、定数項と二次項を保持することで、モデルの過剰適合を回避できます。


ここで、a、h、k はハイパーパラメータです。h と k はロジット関数曲線の頂点の位置を決定し、a は曲線の開き方向とクラスタリング度を決定します。


X2-Softmaxでは、重み間の角度θが増加すると、角度マージン∆θも同時に単調に増加します。

類似度の高い 2 つのクラスの場合、小さいマージンによってモデルの収束が促進されます。類似度の低い 2 つのクラスの場合、顔の特徴のクラス間分離を強化するために、より大きなマージンが割り当てられます。


トレーニングには、Resnet50 バックボーンを選択しました。モデルは、93,000 の ID と 510 万の顔画像を含む MS1Mv3 データセット (RetinaFace で前処理され、ノイズの多い画像が除去された MS-Celeb-1M に基づく) でトレーニングされました。

SFace: 堅牢な顔認識のためのシグモイド制約超球面損失

柔軟なマージンを持つ損失のほとんどは、ソフトマックスベースの損失の範囲内にとどまりますが、例外もあります。SFace はソフトマックスベースの損失を放棄しますが、クラス内およびクラス間の距離を最適化するという考え方を保持します。このモデルは、2 つのシグモイド曲線によって制御される超球面多様体にクラス内およびクラス間の制約を課します。曲線は、ターゲット クラスまたは外部クラスの重心に近づくにつれて係数が変化する速度を制御することによって勾配を変換します。

2022年、 pytorch 実装(事前トレーニング済みの重みもダウンロード可能です)

直接的なマージン最適化方法と比較すると、オーバーフィッティングとアンダーフィッティングの間のより細かいバランスが提供され、個々のノイズの多いサンプルが最終的な損失に与える影響が少なくなります。


顔の埋め込みを制限して超球面多様体上で識別可能にするというアイデアは、例えば Sphereface (顔認識のための深層超球面埋め込み、2017) ですでに見られました。


目的はクラス内距離を減少させ、クラス間距離を増加させることであり、シグモイド制約超球損失は次のように定式化できる。






ここで、𝜃𝑦𝑖は、𝑖番目のトレーニング画像の埋め込み特徴と対応するプロトタイプ間の角度距離です。𝜃jは、外部プロトタイプまでの角度距離です。






関数𝑟𝑖𝑛𝑡𝑟と𝑟𝑖𝑛𝑡𝑒𝑟は、それぞれクラス内およびクラス間の目的を再スケーリングし、最適化の次数を制御するように設計されています。[·]𝑏はブロック勾配演算子であり、勾配の計算に入力の寄与が考慮されないようにします。

勾配再スケール関数としてシグモイド関数が選択されます。

著者らは勾配再スケール関数としてシグモイド関数を選択しました。










𝑠 は勾配の初期スケールとしての2つのシグモイド曲線の上漸近線であり、𝑘 はシグモイド曲線の傾きを制御します。ハイパーパラメータ 𝑎 と 𝑏 は2つのシグモイド曲線の水平切片を決定し、実際には移動速度を抑制するための柔軟な間隔を制御します。


ソフトマックスベースの損失関数と比較すると、SFace のクラス内距離とクラス間距離は両方とも設計された程度に制限できるため、適度に最適化できます。これがまさに SFace の利点です。

トレーニングには、著者らは ResNet バックボーン (Arcface の場合と同じ) を選択しました。


このモデルは、CASIA-WebFace、VGGFace2、MS-Celeb-1M データセットでトレーニングされました。

配布物としてのプロトタイプ

ノイズの多いデータを処理する別の方法は、1 つの ID (1 人の人物に属するすべての顔) の埋め込みが空間内の点ではなく、期待値、分散があり、外れ値を持つ可能性のある分布であると考えることです。

VPL (変分プロトタイプ学習)

顔認識では、ペアベースの損失はトレーニングの複雑さのために放棄されましたが、平均化されたプロトタイプで作業すると、一部の情報が失われます。プロトタイプベースのアプローチでは、プロトタイプの外れ値の影響により、トレーニングが局所的最小値で停止したり、過剰適合したりする可能性があります。

VPL – 各クラスを潜在空間内の点ではなく分布として表します。













VPL は、トレーニング セットの例と、クラスごとの分布からサンプリングされた変分プロトタイプのセットの間の類似性を最適化します。

プロトタイプの分布はMに保存され、∆tステップで減少します。著者らは、ResNet50、ResNet100、MXNetバックボーンを使用して損失をトレーニングし、テスト用の最終手段としてMXNetを選択しました。トレーニングにはMS1Mデータセットが使用され、顔クロップの入力サイズは112×112です。

UniTSFace (2023) や UNPG (Unified Negative Pair Generation toward Well-discriminative Feature Space for Face Recognition、2022) など、プロトタイプベースの手法をペアベースの損失 (またはサンプルツーサンプルベースのモデルとも呼ばれる) の利点で補完するというテーマを継続するアプローチがいくつかあります。この記事では、最新の損失の 1 つである EPL に焦点を当てます。

EPL: 深層顔認識のための経験的プロトタイプ学習

マージンベースのソフトマックス損失では、損失はプロトタイプ(クラスの中心)と比較して計算されます。トレーニングプロセス中に、1つのクラスのすべてのサンプルが共通の中心に引き寄せられます。これはトレーニングプロセス中の平均と見なされ、プロトタイプの中心から逸脱する可能性のあるサンプルの外れ値によって大きく影響されます。ソフトマックスベースの方法では、プロトタイプは最後の線形層の係数行列に格納されていると見なされます。つまり、Pi = Wi、プロトタイプはバックプロパゲーションでその勾配を使用して更新され、損失関数はサンプルの特徴と対応するプロトタイプの類似性を最大化します。

2024年、 pytorch 実装(事前トレーニング済みの重みもダウンロード可能です)


EPL ではプロトタイプが生成および更新されます。

  • トレーニング開始時にランダムに
  • モデルのトレーニング中、各例(X)はその特徴x = E(X)を通じて対応する経験的プロトタイプPi(e)を更新します。ここで、Eは顔エンコーダです。








ここで、「α」は特徴xとそのプロトタイプを使用して生成された適応更新係数、「σ」は更新係数を適切な範囲に調整するための活性化関数であり、s(·, ·)は類似度関数であり、通常は余弦関数として取られます。


経験的プロトタイプは、隣接クラスの外れ値の影響を避けるために、「肯定的な」例のみを使用して更新されます。


トレーニング プロセス:エンコーダーは特徴を抽出し、適応係数 α を計算して経験的プロトタイプを更新し、特徴とプロトタイプの類似性を使用してエンコーダー トレーニングの損失を計算します。

プロトタイプ学習と経験的プロトタイプ学習の両方の機能を総合的に活用するために、EPL はそれらを合計として組み合わせ、明確なマージンを導入します。トレーニングには ResNet バックボーンが使用され、トレーニング データセットには CASIA-WebFace が使用されました。モデルは、MRF、IJB-C、LFW、CFP-FP、AgeDB、および MegaFace データセットでテストされました。

トランスフォーマー-ArcFace

上記から明らかなように、ほとんどの場合、損失修正はノイズの多いデータと過剰適合の問題を解決するために使用され、バックボーンはモデルの「複雑さ」に責任を負いますが、例外もあります。


この記事では、標準メトリック損失とトランスフォーマー損失(加法損失としてのトランスフォーマー ネットワーク)を組み合わせたトランスフォーマー メトリック損失を紹介します。トランスフォーマー ネットワークは、連続した空間関係を保持する強みがあり、損失関数の識別力を高め、より複雑なケース(たとえば、年齢不変の FR)にモデルを適用できます。

このモデルの特徴は、たとえば Face Transformer モデルで通常使用されるような、トランスフォーマーがバックボーンとして使用されないことです。代わりに、最後の畳み込み層からの特徴が 2 つの損失ブランチに送信されます。最初のブランチは通常の平坦化層で、その後にメトリック損失が続きます (この場合は ArcFace ですが、分類ベースの損失であればどれでもかまいません)。


ブランチ 2 では、サイズ H × W × D の出力を取得し、サイズ 1 × 1 × D の S ベクトルに変換します。このシーケンスは、標準のトランスフォーマー エンコーダーのパッチからの埋め込みシーケンスとして表示できます。トランスフォーマー エンコーダー レイヤーの後には、アクティベーションやドロップアウトの追加設定なしで線形レイヤーが適用されます。その後、クロス エントロピー関数によって、出力確率分布 (ターゲット N クラス) の損失が評価されます。損失「ブランチ 1」と「ブランチ 2」は、加重合計によって結合されます。

検証 (テスト) 段階では、2 番目のブランチが切り取られ、標準の最初のブランチからの埋め込みのみが使用されます。テスト用には、MS1M-arcface と WebFace4M (WebFace 260M のサブセット) を使用します。


結論

このレビューでは、顔認識システムの 1 つの領域である損失関数に焦点を当てました。これにより、この領域における新しい方向性と最近の記事の概要を把握することができました。これらの領域はすべて、毎年発展し続けています。

以下のトピックはレビューのこの部分では省略されました。

  • FRモデルのバックボーン
  • 遮蔽を考慮した、メイク/年齢/照明/ポーズに依存しない顔認識などの特殊なケース向けの FR モデル
  • 3D / ダイナミックFR
  • FR データセットのレビュー これらは次の部分で検討されます。


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks