FaceAlignment : 顔のキーポイントを認識する機械学習モデル
ailia SDKで使用できる機械学習モデルである「FaceAlignment」のご紹介です。エッジ向け推論フレームワークであるailia SDKとailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。
FaceAlignmentの概要
FaceAlignmentは顔画像を入力とし、68のキーポイントを出力します。入力解像度は(1,3,256,256)で、モデルの出力は(1,68,64,64)のヒートマップになります。68の各キーポイントに対して、(64,64)解像度の確信度が出力されます。入力画像はBGR順で(0–1.0)に正規化されています。
FaceAlignmentの実行結果
今回使用する入力画像は下記になります。

FaceAlignmentは顔の領域に対して処理を行うため、顔の領域を切り出したあと、認識処理を行います。

入力する顔画像
FaceAlignmentは横顔でも高精度に2Dのキーポイントを抽出することができます。

FaceAlignmentの出力(2D)
また、3Dモードを使用することで3Dのキーポイントを抽出することができます。

FaceAlignmentの出力(3D)
モデルの出力は下記のようなヒートマップになります。

FaceAlignmentnのモデルの出力
各ヒートマップ画像の最大値を検出することで、キーポイントの座標に変換しています。
3Dのキーポイントの計算では、最初に2Dのキーポイントのヒートマップを計算します。その後、入力画像の3チャンネルと2Dのキーポイントのヒートマップの68チャンネルをConcatした(71,256,256)をデプス推定モデルに入力します。デプス推定モデルの出力は(1,68)のZ値となります。
68のキーポイントの割り当てはMulti-PIEのフォーマットに準拠しています。

The 68 Multi-PIE landmarks scheme and the landmarks selected for our method marked by the circles.(出典:https://www.researchgate.net/publication/311741971_Automatic_cheek_detection_in_digital_images)
FaceAlignmentのアーキテクチャ
FaceAlignmentはThe Face Alignment Network (FAN)を使用しており、構造としてはHG(Hourglass)をスタックしたものになります。

出典:https://www.adrianbulat.com/downloads/FaceAlignment/FaceAlignment.pdf
ailia SDKからFaceAlignmentを使用する
ailia SDKで使用するサンプルは下記になります。
下記のコマンドで任意の画像に対して顔の2Dキーポイントを取得可能です。
python3 face_alignment.py -i input.png -s output.png
下記のコマンドで任意の画像に対して顔の3Dキーポイントを取得可能です。
python3 face_alignment.py -i input.png -s output.png — active-3d
アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。
ailia Tech BLOG