顔認識

顔認識とは

顔認識とはコンピュータビジョンの技術のひとつで、静止画または動画から人の顔を識別する技術の総称です。顔認識は顔の特徴抽出を行いデータベースと比較し、最も一致度が高い対象を探索することで実現されます。1960年代から顔認識の研究は始まりましたが、近年のカメラの感度や解像度の改善と、コンピューターの性能向上が、顔認識の普及を後押ししています。2000年代からは、生体認証システム、セキュリティシステム、監視システム、静止画と動画のインデックスシステムなど様々な分野での実用化が進んでいます。さらに、2010年代からは機械学習ディープラーニングの急速な発展により認識精度が大幅に向上しています。顔認識は現代において必要不可欠な認証技術の一つとなっています。

複数人の顔の検出と顔認識

顔認識の適用例

顔認識は、下記のようなセキュリティ分野からスマートフォンアプリのようなカジュアルな分野まで幅広く実用化されています。顔認識技術には指紋、光彩、音声などによる認証と異なり、群衆など対象者が不特定多数の場合にも適用できるというメリットがあります。この顔認識技術の特徴から、異常行動の検出や購買行動の予測、年齢ごとに任意の広告を表示するデジタルサイネージなど、個人を特定しない範囲でのアプリケーションへの応用も進んでいます。

  • 犯罪者監視: 空港やテーマパークなど不特定多数が集まる場所での犯罪者、テロリストの検知に顔認識技術は活用されています。
  • 犯罪抑止: 商業施設などでの監視カメラの動画を利用して顔認識を行い、万引きなどの犯罪抑止に役立てられています。
  • 入国審査: 自動入国審査システムに顔認識技術を導入し、パスポート保持者の本人確認を行う国もあります。
  • 入退管理: オフィスや学校の入退の管理に顔認識を使い、セキュリティ強化と入退の高速化に役立てられています。
  • 購買予測: 店内の客の購買行動の予測やデジタルサイネージへの広告配信の最適化に活用されています。
  • デジタルカメラ: 顔認識により被写体にピントを合わせることで、写真撮影をアシストします。
  • スマホアプリ: SNSを中心として顔認識を行い、簡単に写真をデコレーションできるアプリが広まっています。
  • 決済承認: スマートフォンの指紋認証の代わりに、顔認証によってロック画面解除や購買決済の高速化に用いられています。
  • 運転者認証: 特定のドライバーだけを認証し、車の盗難を防止するようなセキュリティシステム開発への応用が進んでいます。

顔認識技術の進歩

顔認識技術はカメラの解像度や感度の改善とコンピューターの演算性能の飛躍的な向上によって、スマートフォンでも十分実用的に扱えるようになってきています。従来、ウェブカメラを使った静止画ベースの単純な手法がよく使われていましたが、現在では目や鼻、口など、個人を特定するのにより重要なランドマークをベースにした顔認識技術も開発が進んでいます。

目や鼻、口などの顔のランドマークをベースとした顔認識

動画による顔追従もコンピューターの正常向上により実用的となり、広く活用されています。人が重なっていたり、一部隠れていたりするような場合にも運動予測モデル(状態推定フィルタ)を使って、より精度よく堅牢に追従ができます。

動画による顔追従の様子

さらに、顔の奥行情報を使った3次元による顔認識システムも実用化されています。奥行情報から顔の立体情報を復元し、あらかじめ測定しておいたテンプレートの3次元モデルとマッチングをかけることで、認識精度を高めることができます。この手法のメリットは画像の明るさに依存しないため、周囲の環境光が大きく変化するシーンでも活用できること、かつ、3次元的な特徴を使うため顔の位置や向きに対しても堅牢であることが挙げられます。

一方で奥行情報の取得には複眼視(ステレオビジョン)や赤外線や可視光による構造化照明(ストラクチャードライト)などの装置が必要となります。その結果、画像認識システム自体の小型化が難しく、コストが高くなる傾向にあります。

その他にも、赤外線カメラによる温度画像をベースに識別する方法も提案されています。

カメラやコンピューターの高性能化と、画像処理アルゴリズムの進歩によって顔認識技術はより身近なものになり、現在もその進歩を続けています。

顔認識の仕組みと処理フロー

顔認識はコンピュータビジョンを活用して下記の流れで行います。はじめに学習用画像を使って分類器を設計します。次に設計した分類器を使って顔を認識します。

1. 学習用画像の準備と事前学習による分類器設計

カメラで学習用画像を蓄積し、タグ付け(ラベリング)を行っていきます。これによって顔認識のための教師データを作成していきます。次に特徴量を抽出し、分類器を設計していきます。

顔認識のための教師データ作成

2. ウェブカメラなどから画像を取得

カメラデバイスから画像を取得します。カメラの露光時間を調整し、明るさを均一にします。また、鮮明な画像を取得するためにピントを合わせるに調整します。

カメラデバイスからの画像取得

3. 画像全体から顔検出

顔検出のアルゴリズムを使って画像全体から顔の部分を検出します。この時点では検出された顔が誰なのかはまだ判断されていません。

画像から顔のみを検出

4. 検出した顔の位置合わせと切り出し

検出した顔の位置を切り出し、特定の大きさにリサイズします。これによって遠くから近くまで同じアルゴリズムを使った顔認識を行うことができます。

検出した顔の調整

5. 検出した顔の範囲から特徴量抽出

顔の範囲から特徴量を抽出していきます。たとえば、勾配方向ヒストグラムなど顔認識に有効な画像特徴量のアルゴリズムを用います。

特徴量抽出

6. 抽出した特徴量とデータベースの特徴量を比較

抽出した画像特徴量とデータベース上の画像特徴量を比較します。一般的に機械学習の分類器を用います。下記はSVM(サポートベクターマシン)を使って一致する対象者を見つけています。

SVM(サポートベクターマシン)を使った分類

7. 特徴量の類似度から既存の人物か、新しい人物かを判定

分類器のスコアによって類似度を測ることができます。あるしきい値よりも類似度が低い場合はデータベースに存在しない新しい人物であるとみなすことができます。

特徴量から判定

8. 新しい人物の場合にはデータベースに特徴量を追加

新しい人物と判定された場合には学習用画像(教師データ)に追加し、特徴抽出と分類器学習によってデータベースを再生成します。

以上が顔認識の大まかなフローとなります。顔認識では顔の特徴量をどのように抽出するかが精度に大きく影響します。

顔認識のアルゴリズム

顔認識に一般的に使われているアルゴリズムとして下記のものが挙げられます

  • テンプレートマッチング
  • コーナー特徴量や局所特徴量(Harris, BRISK, FREAK, KAZE) ベースの手法
  • 固有顔(Eigenface)などの主成分分析(PCA)モデル
  • 勾配方向ヒストグラム(Histogram of oriented gradients; HoG)
  • ダイナミック リンク マッチングなどのニューラルネットワークモデル
  • SVMや決定木といった教師あり学習
  • アンサンブル学習
  • ブースティング学習アルゴリズム
  • ディープニューラルネットワーク/深層学習
  • 顔のランドマークモデルによる最適化や回帰

要求される認識精度や認識速度を満たす顔認識アルゴリズムを構築するためには試行錯誤がかかせません。さまざまな特徴抽出や分類器アルゴリズムを繰り返し試しながら最適な顔認識アルゴリズムを探索する必要があります。

MATLABによる顔認識

MATLAB®Computer Vision System Toolbox™は顔のラベリングや顔検出、顔認識まで強力にサポートするGUIのアプリケーションや関数を多数提供しています。また、機械学習についてはStatistics and Machine Learning Toolbox™を活用することで任意の分類器をGUI上で手軽に探索していただけます。さらにディープラーニングのような高度な認識アルゴリズムもDeep Learning Toolbox™を活用することで、環境構築の手間なしにすぐに始めることができます。

MATLABで始めるディープラーニング