顔認識の基礎
太古の昔から、人間の顔は識別のための最も簡単な基準として機能してきました。したがって、それが最も便利な生体認証技術であることが判明するのは当然のことです。音声、指紋、手の形状、掌紋などの他の生体認証方法とは異なり、顔の分析には、問題のオブジェクトからの積極的な協力は必要ありません。顔認識は、写真、ビデオ、またはライブキャプチャから実行できます。
顔認識は、写真やビデオで人物を識別または検証するプロセスに与えられる広義の用語です。この方法には、検出、位置合わせ、特徴抽出、および認識が含まれます。
いくつかの実際的な課題がありますが、顔認識は、ヘルスケア、法執行機関、鉄道予約、セキュリティ、ホームオートメーション、オフィスなどのさまざまな分野で広く使用されています。
この投稿では、次のことがわかります。
- 顔認識とは何ですか?
- 顔認識アルゴリズムの大まかな分類
- 顔認識システムのさまざまな段階
- 顔認識ビルディングブロックの概要
- 顔認識SDKの概要
顔認識とは何ですか?
顔認識は、ソフトウェアが深層学習アルゴリズムを使用して個人の顔の特徴を分析し、データを保存する生体認証技術です。次に、ソフトウェアは、写真、ビデオ、またはライブキャプチャからのさまざまな顔をデータベースに保存されている顔と比較し、IDを検証します。通常、ソフトウェアは、個人の顔の約80の異なる節点を識別します。節点は、個人の顔の変数を定義するためのエンドポイントとして機能します。変数には、唇の形、目の形、鼻の長さと幅、目のソケットの深さが含まれます。
他の生体認証技術と比較した顔認識の人気は、通常、より正確で邪魔にならない傾向があるという事実に由来しています。
顔認識アルゴリズムの分類 顔認識は、データベースに登録済みの顔を認識する手法です。顔認識システムは、2つのタスクに広く関与しています– 検証 および 識別 。
検証は、「彼は彼が主張する人物ですか?」という質問に答えることを目的としています。個人が特定の人物であると主張する場合、検証システムはデータベースでそのプロファイルを見つけます。人物の顔をデータベースに存在するプロファイルの顔と比較して、一致するかどうかを確認します。システムは、リンクされたプロファイルにすでに存在する特定の顔に対して個人の顔を照合する必要があるため、これは1対1の照合システムです。したがって、検証は識別よりも迅速で正確です。
顔識別では、システムはデータベースに存在するすべての顔に対して入力顔をチェックしようとします。これは1対nのマッチングシステムです。
顔認識システムのさまざまな段階
顔認識システムの2つの段階について話しましょう: 登録 および 認識 。
最初の段階または登録段階では、既知の顔のセットが登録されます。次に、特徴抽出器は、登録された顔ごとに一意の特徴ベクトルを生成します。特徴ベクトルは、各顔の固有の顔の特徴に基づいて生成されます。抽出された特徴ベクトルは、顔ごとに一意であり、登録されたデータベースの一部になり、将来の参照に使用できます。
認識段階では、入力画像が特徴抽出器に提供され、顔認識が実行されます。ここでも、特徴抽出器は入力された顔画像に固有の特徴ベクトルを生成します。次に、この特徴ベクトルは、データベースですでに利用可能な特徴ベクトルと比較されます。 「特徴ベースの分類」ブロックは、入力された顔の顔の特徴とデータベースに登録された顔との間の距離を比較します。登録された顔が一致基準を満たすと、機能ベースの分類により、データベースで見つかった一致する顔IDが返されます。
顔認識システムの構成要素
顔認識システムの主なコンポーネントは、顔検出、ランドマーク検出、活気検出、顔認識モジュール(顔認識、顔識別/顔検証)です。
開始時に、ビデオストリームからの画像またはフレームが顔検出モジュールに送信され、そこで入力画像から顔が検出されます。出力として、検出された面のバウンディングボックス座標を送信します。ここでの落とし穴は、顔検出器が画像の顔をローカライズして各顔の境界ボックスを作成したとしても、顔の適切な位置合わせを保証するものではなく、顔にバインドされたボックスがジッターの影響を受けることです。したがって、有効な顔ベクトルを取得するには、顔の前処理段階が必要です。この段階は、システムの顔検出機能の向上に役立ちます。
顔の前処理は、目、鼻、唇、あご、顎などの顔上の参照ポイントの位置(基準ランドマークポイントとも呼ばれます)を識別するランドマーク検出ブロックで実行されます。次に、これらの検出された顔のランドマークは、顔の空間的変化に対して補正されます。これは、面の幾何学的構造を識別し、平行移動スケーリング回転などのさまざまな変換に基づいて標準的な位置合わせを取得することによって行われます。これにより、正規化された正準座標を持つ顔のタイトなバウンディングボックスが出力されます。
位置合わせされた顔を顔認識モジュールに送信する前に、顔のなりすましをチェックして、顔が画像またはビデオのライブフィードから取得され、不正アクセスを取得するためのなりすましではないことを確認する必要があります。活気検出器がこのチェックを行います。
次に、画像は次のブロック、つまり顔認識ブロックに送信されます。このブロックは、顔認識が正常に完了する前に一連の処理タスクを実行します。最初のステップは面処理です。これは、入力面のクラス内変動を処理するために必要です。入力された顔画像に存在するさまざまなポーズ、表情、照明の変化、オクルージョンなどのバリエーションによって顔認識モジュールが気を散らされることを望まないため、これは重要なステップです。入力面のクラス内変動が解決された後、次の重要な処理ステップは特徴抽出です。特徴抽出器の機能については、すでに上で説明しました。
顔認識モジュールの最後のステップは、顔照合ステップです。このステップでは、最後のステップで取得された特徴ベクトルとデータベースに登録されている顔ベクトルが比較されます。このステップでは、類似性が計算され、類似性スコアが生成されます。これは、要件に応じて、顔の識別または顔の検証のいずれかにさらに使用されます。
顔認識SDKの例
PathPartnerのライセンス可能な顔認識SDKソフトウェアソリューションを使用して、正確な顔検出および顔認識システムを実装する方法を示します。 SDKは、機械学習とコンピュータービジョンのアルゴリズムで構成されており、顔認識の6つの重要なタスクを実行できます。
SDKには2つのバリエーションがあります:
- モデルサイズが10MBと小さい複雑さの低いバリアントで、メモリと処理能力が低いエンドデバイスに適しています。
- フルサービスのエッジデバイスに適したモデルサイズ90MBの複雑度の高いバリアント。
このアルゴリズムは、Texas Instruments、Qualcomm、Intel、Arm、NXPのさまざまな組み込みプラットフォームで最適化されており、クラウドサーバープラットフォームでさらに機能します。
CNNベースの顔認識システムの開発
CNNベースのアプローチは、オクルージョンやさまざまな照明条件などの課題に対処するための労力を軽減するために、非CNNベースのアプローチよりも優先されます。認識プロセスには、次の手順が含まれます。
データ収集
公開されているデータセットは、顔認識に重要なすべての評価パラメータを網羅しているわけではありません。したがって、これには、顔の分析に使用できるさまざまなバリエーションをカバーする、多数の標準および社内データセットの詳細なベンチマークが必要です。このSDKでは、ポーズ、イルミネーション、表現、オクルージョン、性別、背景、民族、年齢、目、外観のバリエーションがサポートされています。
深層学習モデルの設計
モデルの複雑さは、エンドユーザーアプリケーションによって異なります。このSDKは、ドライバーモニタリングシステム(DMS)とスマートアテンダントシステムに実装されています。
ドライバー監視システム:ドライバーの注意力と集中力をリアルタイムで評価するには、エッジコンピューティングが必要です。したがって、堅牢で複雑度の低いシステムが必要です。ここでは、顔検出とランドマーク回帰に機械学習モデルを使用し、推定と分類に浅いCNNモデルと深いCNNモデルを使用しています。
トレーニングと最適化
モジュールは、最初に準備されたデータセットで事前にトレーニングされています。このソリューションは、FDDB、LFWなどのさまざまなオープンソースデータセット、および社内で開発されたカスタムデータセットでテストされています。
さまざまな課題の克服
- 照明の変化 –照明条件の変動によって生じる問題を克服するために、2つのアプローチが採用されています。 1つは、ガントベースのアプローチを使用したRGBからNIRのような画像への変換です。もう1つは、RGBデータを使用してモデルをトレーニングし、入力でNIR画像を使用してモデルを微調整することです。
- ポーズと表情のバリエーション –顔画像が正面以外のビューから利用できる場合、顔画像の標準ビューは、利用可能な1つ以上の画像から取得する必要があります。これは、ランドマークポイントに基づいて頭の角度に対するポーズの変化を推定し、傾斜、ストレッチ、ミラーリングなどの操作を使用して正面のコースを取得することで実現されます。これにより、顔認識システムがポーズ不変の表現を出力できるようになり、顔認識の精度が大幅に向上します。表情のばらつきによる影響に対抗するため、前処理段階で顔合わせを行います。
- オクルージョン –現在、SDKはマスクされた顔を検出するようにトレーニングされています。この場合、モデルは目と額の周りからのデータのみを処理するようにトレーニングされています。ただし、このアプローチでは、限られた数の人がシステムに登録されている場合、オフィスの設定などの制御されていない環境で最良の結果が得られます。
- 外観のバリエーション –髪型、老化、化粧品の使用の違いは、個人の外見に大きな違いを引き起こす可能性があります。したがって、顔認識の精度が大幅に低下します。この問題に対処するために、SDKは外観の変更に対して堅牢な表現とマッチングのスキームを使用しています。
結論
今日、顔認識はすべての生体認証測定の中で最も自然であると考えられています。ディープラーニングは、開発中のほとんどの顔認識アルゴリズムの中心的なコンポーネントになっています。顔認識アルゴリズムは飛躍的に進歩しています。最近のNISTレポートによると、過去5年間(2013〜 2018年)に認識精度が大幅に向上し、2010〜2013年の期間に達成された改善を上回っています。
いくつかの実際的な課題にもかかわらず、顔認識技術は、小売、自動車、銀行、ヘルスケア、マーケティングなど、さまざまな業界で広く使用されています。顔認識アルゴリズムは、人物の認識精度を向上させるだけでなく、顔の感情や行動を検出する範囲を拡大します。
埋め込み