アバター向けリアルタイム顔アニメーション


本記事では、これらの課題に対処すると同時に、将来的な多くの可能性を切り拓く、動画から顔アニメーションの制御値を推定するためのディープラーニングフレームワークについて解説します。本ブログ記事で説明するフレームワークは、SIGGRAPH 2021でも講演として発表されました。
顔アニメーション
3Dフェイスリグを制御・アニメーション化するには様々な方法があります。私たちが使用しているのは「Facial Action Coding System(FACS)」と呼ばれるもので、3Dフェイスメッシュを変形させるための一連の制御(顔の筋肉の位置に基づく)を定義しています。 FACSは40年以上の歴史を持つものの、その制御が直感的でリグ間の移植も容易であるため、現在も事実上の標準となっています。FACSリグが動作している様子の例を以下に示します。

手法
本手法の目的は、ディープラーニングに基づく手法を用いて、動画を入力として受け取り、各フレームごとにFACSのセットを出力することです。これを実現するために、顔検出とFACS回帰という2段階のアーキテクチャを採用しています。

顔検出
最高のパフォーマンスを実現するため、比較的よく知られているMTCNN顔検出アルゴリズムの高速版を実装しました。 オリジナルの MTCNN アルゴリズムは非常に正確かつ高速ですが、ユーザーが使用する多くのデバイスでリアルタイムの顔検出をサポートするには十分な速度ではありません。そこで、この問題を解決するために、特定のユースケースに合わせてアルゴリズムを調整しました。顔検出が行われた後は、後続のフレームにおいて MTCNN 実装は最終段階の O-Net のみを実行するようにし、その結果、平均で 10 倍の高速化を実現しました。 また、MTCNNによって予測された顔の特徴点(目、鼻、口角の位置)を、後続の回帰ステージに先立ち、顔のバウンディングボックスの位置合わせに利用しています。この位置合わせにより、入力画像を厳密にトリミングすることが可能となり、FACS回帰ネットワークの計算負荷を軽減しています。

FACS回帰
当社のFACS回帰アーキテクチャは、特徴抽出器として共有バックボーン(エンコーダーと呼ばれる)を使用し、ランドマークとFACS重みを共同学習させるマルチタスク構成を採用しています。
この構成により、合成アニメーションシーケンスから学習したFACS重みを、表情の微妙なニュアンスを捉えた実画像で拡張することが可能になります。 ランドマーク回帰器と共に学習されるFACS回帰サブネットワークは、因果畳み込みを採用しています。これらの畳み込みは、エンコーダに見られるような空間的特徴のみに作用する畳み込みとは異なり、時間経過に伴う特徴に対して作用します。これにより、モデルは顔アニメーションの時間的側面を学習できるようになり、ジッターなどの不整合に対する感度を低減できます。

トレーニング
まず、実画像と合成画像の両方を使用して、ランドマーク回帰のみを対象にモデルを学習させます。一定数の反復学習を行った後、時系列FACS回帰サブネットワークの重みを学習させるために、合成シーケンスの追加を開始します。これらの合成アニメーションシーケンスは、アーティストとエンジニアからなる当チームの学際的なチームによって作成されました。 あらゆる異なるアイデンティティ(顔メッシュ)に共通して使用される正規化されたリグを当チームのアーティストが設定し、FACS重みを含むアニメーションファイルを用いて自動的に動作させ、レンダリングを行いました。これらのアニメーションファイルは、顔の体操(calisthenics)動画シーケンス上で動作する古典的なコンピュータビジョンアルゴリズムを用いて生成され、体操動画には含まれていなかった極端な表情については、手作業でアニメーション化されたシーケンスで補完されています。
損失関数
深層学習ネットワークを学習させるため、ランドマークとFACS重みの回帰を行うにあたり、いくつかの異なる損失項を線形に組み合わせました:
- 位置損失。ランドマークについては回帰された位置のRMSE(Llmks)、FACS重みについてはMSE(Lfacs)を用います。
- 時間的損失。FACS重みについては、合成アニメーションシーケンスに対する時間的損失を用いてジッターを低減する。 [Cudeiro et al. 2019]に着想を得た速度損失(Lv)は、目標速度と予測速度間のMSEである。これは動的表情の全体的な滑らかさを促進する。さらに、FACS重みのジッターを低減するために加速度に対する正則化項(Lacc)を追加した(応答性を維持するため、その重みは低く設定されている)。
- 一貫性損失。我々は、[Honari et al. 2018]と同様に、アノテーションのない実画像を用いた教師なしの一貫性損失(Lc)を利用する。これにより、ランドマークの予測が様々な画像変換下で等変となるよう促進され、トレーニング画像の一部についてランドマークラベルを必要とせずに、フレーム間のランドマーク位置の一貫性が向上する。
性能
精度を低下させたりジッターを増大させたりすることなくエンコーダの性能を向上させるため、特徴マップのサイズを縮小するために、パディングなしの畳み込みを選択的に使用した。これにより、ストライド付き畳み込みよりも特徴マップのサイズをより細かく制御できるようになった。残差を維持するために、パディングなしの畳み込みの出力に特徴マップを加算する前に、特徴マップをスライスする。 さらに、AVXやNeon FP16などのベクトル命令セットを用いた効率的なメモリ使用を実現するため、特徴マップの深さを8の倍数に設定し、その結果、1.5倍の性能向上を達成した。
最終的なモデルのパラメータ数は110万で、実行には2,810万回の乗算積算演算を必要とします。参考までに、当アーキテクチャのベースとなっている標準的なMobilenet V2の実行には、3億回の乗算積算演算が必要です。 デバイス上でのモデル推論にはNCNNフレームワークを使用しており、動画1フレームあたりのシングルスレッド実行時間(顔検出を含む)を下表に示します。なお、実行時間が16msであれば、毎秒60フレーム(FPS)の処理が可能となります。

今後の展望
我々の合成データパイプラインにより、学習済みモデルの表現力と頑健性を反復的に向上させることができました。見逃された表情への対応力を高めるために合成シーケンスを追加し、多様な顔の特徴にわたるトレーニングのバランスも調整しました。アーキテクチャと損失関数の時間的定式化、慎重に最適化されたバックボーン、そして合成データから得られるエラーのないグラウンドトゥルースにより、最小限の計算コストで高品質なアニメーションを実現しています。 FACS重みサブネットワークで実施される時間的フィルタリングにより、ジッターを増加させることなく、バックボーンの層数とサイズを削減することが可能です。また、教師なしの一貫性損失を用いることで、大規模な実データセットを用いたトレーニングが可能となり、モデルの汎化能力と堅牢性が向上します。私たちは、より表現力豊かで、ジッターがなく、堅牢な結果を得るために、モデルのさらなる洗練と改善に取り組んでいます。
リアルタイム顔追跡や機械学習の最前線において、同様の課題に取り組むことにご興味をお持ちの方は、当チームの求人情報をご覧ください。


