顔認証入門 #6 顔認証のしくみ(前編)

f:id:takahashi51:20190323211007p:plain:w280

 #2~#5にかけて、顔認証を学ぶうえで必要となる専門用語について学んできましたね。自分で書いておいてなんですが、ぜんぜん面白い内容ではありません。逆にいえば、この辺の内容をやさしく教えてくれる人も誰もいません。なので、ちゃんと顔認証を学びたい人には必要な情報となっているはずです。

 #6からは、顔認証のしくみについて、前編と後編の2回に分けて解説していきます。前編の今回は、顔認証がどのような処理の流れで顔認証を行っているのか、その前処理について説明しましょう。特徴量の計算と照合スコアを計算するしくみは、次回の予定です。


f:id:takahashi51:20190413022738p:plain:w500

 今回は『真珠の耳飾りの少女』と『モナ・リザ』が同じ人物か否かを顔認証システムが判定するケースを考えましょう*1

 簡単に言えば、顔認証システムの前処理は『顔検出』『顔特徴点検出』『正規化』の3ステップを経て計算されます。本記事では、それぞれについて解説していきます。

顔検出

f:id:takahashi51:20190413022746p:plain:w500

 最初の処理は顔検出(face detection)です。スマホやデジカメで顔を撮影するとき、上の写真のように顔に枠が出てくることがありますね。このように、画像の中から顔を見つけ出す処理を顔検出と呼びます。顔検出は、顔のおおよその位置と大きさを知る役割があります。

 顔検出では、顔を矩形領域(枠)で表現することが多いです。この顔検出が失敗すると、顔認証の結果は認証失敗になってしまうので、顔検出の性能は顔認証システムの出来栄えに大きく影響します。

顔特徴点検出

f:id:takahashi51:20190413023345p:plain:w500

 二番目の処理は、顔特徴点検出(face alignment, facial landmark detection)です。顔検出で見つかった顔に対して、目や眉、鼻、口、輪郭などの器官点を見つける処理です。画像処理では、こういった点のことを特徴点と呼びます。顔特徴点検出は、詳細な顔の位置や大きさ、向き、表情などの多くの情報を得る役割があります。

 顔特徴点検出は、少ない場合で5点(両目、鼻、両口角)、多い場合で100点以上の特徴点を検出することができます。上の画像は、顔特徴点検出の結果をズームアップしたもので、83個の特徴点が検出されています*2

正規化


f:id:takahashi51:20190413022802p:plain


 三番目の処理は、顔画像の正規化(face normalization)です。正規化は、顔の大きさや向きが一定の条件となるように変換する役割があります。

 上の画像の例では、顔特徴点検出の結果をもとに顔の回転補正を行い、100×100画素の大きさとなるような処理を施しています。もっと高度な正規化では、斜め向きの顔を正面向きに変換したり、画像の色味やコントラストを補正したり、超解像によってキレイな写真に変換したりもできます。

まとめ

 本記事のまとめは以下の通りです。今回もおつかれさまでした。

・顔検出で、顔のおおよその位置と大きさを見つける
・顔特徴点検出で、顔の詳細な位置や大きさ、向き、表情を取得する
・正規化で、顔の大きさや向きが一定となるように変換する

*1:実在の人物を利用するのはプライバシー的によくありません。例を見せたい場合は、パブリック・ドメインの絵画や、マネキン、自分の顔を利用すると安全です。

*2:Face++を利用しました https://www.faceplusplus.com/face-detection/