高度な顔認識のためのDeepFace
高度な顔認識のDeepFace
顔認識は、AIと機械学習の分野で数年間注目されており、顔認識の広範な文化的・社会的な影響は遠大です。ただし、現在の人間の視覚システムと機械との間には性能の差があり、顔認識の応用範囲が制限されています。
性能差によるバッファを克服し、人間レベルの精度を実現するために、MetaはDeepFaceという顔認識フレームワークを導入しました。 DeepFaceモデルは、評価基準の構築に使用されるデータセットとは異なる大規模な顔データセットでトレーニングされており、最小の適応で既存のフレームワークを上回る可能性があります。さらに、DeepFaceフレームワークは、数千の顔の外観特徴を生成する他のシステムと比較して、コンパクトな顔の表現を生成します。
提案されたDeepFaceフレームワークは、画像、ビデオ、グラフィックスなど、さまざまな形式のデータで構成される大規模なデータセットを使用してDeep Learningを使用してトレーニングします。 DeepFaceネットワークアーキテクチャは、アラインメントが完了すると、各顔の領域の位置がピクセルレベルで固定されると仮定しています。そのため、他のフレームワークで行われるような複数の畳み込み層を使用せずに、生のピクセルRGB値を使用することが可能です。
現代の顔認識フレームワークの従来のパイプラインは、検出、アラインメント、表現、および分類の4つのステージで構成されています。 DeepFaceフレームワークは、分割された変換を適用するために明示的な3D顔モデリングを使用し、9層の深層ニューラルネットワークを使用して顔の表現を導出します。 DeepFaceフレームワークは、以下の貢献を行おうとします。
- 大規模なデータセットを活用して一般的なデータセットにも適用できる顔の表現を作成するための効果的なDNNまたはDeep Neural Networkアーキテクチャを開発する
- 効果的な顔のアラインメントシステムを開発するために明示的な3Dモデリングを使用する
DeepFaceモデルの動作の理解
顔のアラインメント
顔のアラインメントは、画像を目の角度に合わせて回転させる技術です。顔のアラインメントは、顔認識の前処理のために使用される一般的な手法であり、顔のアラインメントされたデータセットは、正規化された入力を提供することにより、認識アルゴリズムの精度を向上させます。ただし、非制約環境での顔のアラインメントは、非弾性の表現、体のポーズなど、複数の要因のために困難なタスクになる場合があります。顔のアラインメントには、顔の分析的な3Dモデルの使用や外部データセットからの特徴点の検索など、洗練されたアラインメント技術が使用されることがあります。
アラインメントは、非制約の顔の検証と認識に対処するための最も一般的な方法ですが、現時点では完璧な解決策はありません。 3Dモデルも使用されていますが、特に非制約環境で作業する場合、その人気は過去数年間で大幅に低下しています。ただし、人間の顔は3Dオブジェクトであるため、正しく使用される場合には適切なアプローチである可能性があります。 DeepFaceモデルは、特徴点を使用して顔の分析的な3Dモデリングを作成するシステムを使用します。この3Dモデリングは、3D正面モードに顔のクロップを変形するために使用されます。
さらに、ほとんどのアラインメント手法と同様に、DeepFaceのアラインメントも特徴点検出器を使用してアラインメントプロセスを指示します。 DeepFaceモデルは、単純なポイント検出器を使用しますが、出力を改善するために複数の反復で適用します。 Support Vector RegressorまたはSVRは、各反復で画像記述子から特徴点を抽出するために使用されます。 DeepFaceの画像記述子は、LBPヒストグラムに基づいていますが、他の特徴も考慮されます。
2Dアラインメント
DeepFaceモデルは、検出クロップ内の目の中央、口の位置、および鼻の先端に6つの特徴点を検出することで、アラインメントプロセスを開始します。これらの特徴点は、画像を6つのアンカーロケーションに回転、スケール、および移動させ、変更が見えなくなるまで変形された画像で反復的に処理されます。集約された変換により、2Dアラインメントされたクロップが生成されます。このアラインメント方法は、LFW-aで使用されている方法と非常に似ており、モデルの精度向上を試みるために数年間使用されています。
3Dアラインメント
DeepFaceフレームワークは、平面外回転を持つ顔をアラインするために、一般的な3D形状モデルを使用し、2Dアラインメントされたクロップに対して3D形状の画像平面内で使用できる3Dカメラを登録します。結果として、モデルは3Dアラインメントされたクロップのバージョンを生成し、2Dアラインメントされたクロップ内の追加の67の特徴点を2番目のSVRまたはSupport Vector Regressorを使用して局所化します。
モデルは、3D形状上に67個のアンカーポイントを手動で配置し、3D参照と対応する基準点との完全な対応を実現します。次のステップでは、既知の共分散行列を持つ線形システムに対して一般化最小二乗解を使用して、3Dから2Dへのアフィンカメラを追加し、特定の損失を最小化します。
フロンタリゼーション
非剛体変形と完全な透視投影はモデル化されていないため、適合した3Dから2Dへのカメラは近似値としてのみ機能します。DeepFaceモデルでは、重要な識別要素が最終的なワープに損傷するのを減らすために、対応する残差を各基準点のx-y成分に追加します。このようなリラクゼーションにより、2Dイメージを歪ませずにアイデンティティをワープする目的で、重要な識別要素を失うことなく、顔を3Dで同じ形状にワープすることが可能になります。
最後に、モデルは67個の基準点から派生したデロネ三角形によって指示される分割アフィン変換を使用してフロンタリゼーションを達成します。
- 6つの基準点を検出した顔。
- 2Dに整列したcorp。
- 2Dに整列したcorp上の67個の基準点。
- 参照3D形状を2Dに整列したcorpイメージ。
- 3D-2Dカメラに対する三角形の可視性。
- 3Dモデルによって誘導された67個の基準点。
- 最終的なcorpの3Dに整列したバージョン。
- 3Dモデルによって生成された新しいビュー。
表現
トレーニングデータの量が増えるにつれて、学習ベースの手法がエンジニアリングされた特徴量と比較して効率的かつ正確であることが証明されています。学習ベースの手法は特定のタスクに対して特徴量を発見し最適化できるため、主にエンジニアリングされた特徴量よりも優れています。
DNNアーキテクチャとトレーニング
DeepFace DNNは、顔画像のアイデンティティを分類する多クラスの顔認識タスクでトレーニングされています。
上記の図はDeepFaceモデルの全体的なアーキテクチャを表しています。モデルには、32個の11x11x3のフィルタを持つ畳み込み層(C1)があり、サイズが152×152ピクセルの3Dに整列した3チャンネルのRGBイメージを入力とし、32個の特徴マップを生成します。これらの特徴マップは、各チャンネルごとに3×3の空間近傍の最大値を取るMax Pooling層またはM2に供給されます。それに続くのは、サイズが9x9x16の16個のフィルタからなる別の畳み込み層(C3)です。これらの層の主な目的は、テクスチャやシンプルなエッジなどの低レベルの特徴を抽出することです。Max Pooling層を使用する利点は、畳み込み層が生成する出力を局所的な移動に対してより頑健にすることであり、整列した顔画像に適用されると、ネットワークを小規模なスケールの登録エラーに対してより頑健にします。
複数のレベルのプーリングは、特定の状況でネットワークをより頑健にする一方で、マイクロテクスチャや詳細な顔の構造の正確な位置情報を失う原因となります。ネットワークが情報を失わないようにするために、DeepFaceモデルでは最初の畳み込み層のみでmax pooling層を使用します。これらの層は、モデルによってフロントエンドの適応的な前処理ステップとして解釈されます。これらの層は、ほとんどの計算を行いますが、独自の制限されたパラメータしか持たず、入力を一連のローカル特徴に展開するだけです。
次のL4、L5、L6の層はローカルに接続されており、畳み込み層のように、特徴マップ内の各場所がユニークなフィルタセットを学習します。整列した画像の異なる領域には異なる局所統計があり、空間的な定常性の仮定を保持することはできません。例えば、眉毛と目の間の領域は、口と鼻の間の領域と比較してより高い識別能力を持っています。ローカル層の使用により、トレーニング対象のパラメータ数が影響を受けますが、特徴抽出中の計算負荷には影響しません。
DeepFaceモデルでは、大量の正確なトレーニングデータがあるため、最初の段階で3つの層を使用しています。ローカルに接続された層の使用は、各出力ユニットが大きなパッチの入力データに影響を受けることができるため、さらに正当化されます。
最後に、トップのレイヤーはすべての出力ユニットがすべての入力に接続されるように完全に接続されます。これにより、2つのレイヤーは口の位置と形状、目の位置と形状など、顔の画像の異なる部分でキャプチャされた特徴の相関関係を捉えることができます。最初の完全に接続されたレイヤー(F7)の出力は、ネットワークによってその生の顔表現特徴ベクトルとして使用されます。モデルは、最後の完全に接続されたレイヤー(F8)の出力をK-way softmaxにフィードし、クラスラベルの分布を生成します。
データセット
DeepFaceモデルは、Social Face Classification(SFC)データセットとの組み合わせを使用しています。さらに、DeepFaceモデルはLFWデータセットとYTFデータセットも使用しています。
SFCデータセット
SFCデータセットは、Facebookの写真のコレクションから学習され、4,030人の4.4百万枚のラベル付き画像で構成されています。各人物は800から1200の顔を持っています。SFCデータセットの顔画像の最新5%はテスト目的で使用されません。
LFWデータセット
LFWデータセットには、5,000人以上の有名人の13,323枚の写真が含まれており、10の分割で6,000の顔ペアに分かれています。
YTFデータセット
YTFデータセットには、1,595人の被写体の3,425のビデオが含まれており、これはLFWデータセットの一部です。
結果
フロントライゼーションなしで2Dアライメントのみを使用した場合、モデルは約94.3%の精度スコアを達成します。モデルが顔検出の中央コープを使用し、アライメントを使用しない場合、モデルは顔領域の一部が中央コープから外れる可能性があるため、87.9%の精度スコアを返します。モデルの顔表現の識別能力を単独で評価するために、モデルは正規化された特徴の内積を比較する非監督学習の設定に従います。これにより、モデルの平均精度が95.92%に向上します。
上記のモデルは、DeepFaceモデルのパフォーマンスを他の最先端の顔認識モデルと比較したものです。
上記の写真は、データセット上のROC曲線を示しています。
結論
理想的には、顔分類器は人間の精度で顔を認識し、画像の品質、姿勢、表情、照明に関係なく高い精度を返すことができるでしょう。さらに、理想的な顔認識フレームワークは、少ないか全く修正せずにさまざまなアプリケーションに適用できるようになるでしょう。DeepFaceは現在最も先進的で効率的な顔認識フレームワークの一つですが、完璧ではありませんし、特定の状況では正確な結果を提供することができないかもしれません。ただし、DeepFaceフレームワークは顔認識業界における重要なマイルストーンであり、強力なメトリック学習技術を利用してパフォーマンスのギャップを埋めることができます。さらに、時間の経過とともにさらに効率的になるでしょう。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles