最新AI論文をキャッチアップ

音声からよりリアルな顔の3Dアニメーションの生成が可能に!

音声からよりリアルな顔の3Dアニメーションの生成が可能に!

3D

3つの要点
✔️ 入力をspeech signalとexpression signalに分離する新たなaudio-driven facial animation手法を提案
✔️ 2つの入力を考慮した新たな損失関数であるcross-modality lossを作成
✔️ 既存手法と比較してよりもっともらしい顔上部のアニメーションの生成に成功

MeshTalk: 3D Face Animation from Speech using Cross-Modality Disentanglement
written by Alexander RichardMichale ZollhoferYandong WenFemando de la TorreYaser Sheikh
(Submitted on 16 Apr 2021)
Comments: ICCV 2021

Subjects: Computer Vision and Pattern Recognition (cs.CV)

code:  

本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。  

はじめに

audio-driven facial animationとは、発話音声とテンプレートの顔の3Dメッシュを入力とし、その内容を発言している時の顔全体の動きの3Dアニメーションを出力するタスクであり、コンピュータゲームやバーチャルアバターなど、様々な分野に利用できることから注目を集めている研究分野になります。

この分野では今日に至るまで様々なアプローチが開発されてきましたが、既存研究において未だ未解決の大きな課題として、瞬きや眉毛の動きなどの音声情報と非相関な顔の動きの生成が困難であるという点が挙げられてきました。

喋っている内容と話者がいつ瞬きをするかに相関がないというように、こうした顔上部の動きを学習することは困難であるため、これまでの研究ではもっともらしい顔上部の動きを生成することができずにいました。

本稿で紹介するMeshTalkは、入力をspeech signalとexpression signalの2つに分離することで、もっともらしい顔上部の動きを出力することを可能にし、既存研究と比較してよりリアルな顔全体の3Dアニメーションを生成する事に成功したモデルになります。

MeshTalkの概要

MeshTalkのネットワークアーキテクチャは下図のようになっています。

 このモデルでは、T個の発話音声のシーケンスであるspeech signalV個の頂点で表現されるT個の顔メッシュのシーケンスであるexpression signalアニメーション生成時の基盤になるtemplate meshの3つを入力に用いています。

Audio encoder

audio encoderでは、発話音声であるspeech signalを音声特徴量であるメルスペクトログラムに変換し、10msごとに1つの新しい特徴ベクトルを生成します。

ネットワークは1次元の畳み込みとなっており、各層間にはskip connectionを用いています。(下図参照)

Expression encoder

expression encoderは、T×V×3(次元)の入力メッシュ列をT×V・3に平坦化し、全結合層を用いて128次元にマッピングします。

また、アニメーションの入力メッシュに沿った時間情報を学習するために、単一のLSTM層を使用しており、最終的な出力はLSTM層の出力を128次元に線形射影(linear projection)したものになっています。

Fusion model

audio encoderとexpression encoderからの出力は、fusion modelにより3層の全結合層で連結されます。

最終的な出力サイズは、シーケンス長をT、latent classification headsをH、カテゴリ数をCとおくと、T×H×Cとなります。

Decoder

Decoderは、下図のように3つの全結合層fcを介してtemplate meshを128次元にマッピングし、その後、fusion modelで得たlatent embeddingと連結された後に全結合層により128次元にマッピングし直されます。

2つのLSTM層はlatent embeddingから生じる時間依存性をモデル化するために用いられ、各全結合層にはskip connectionを使用しています。

最終的な出力がV×3(次元)の空間に再投影され、学習後の顔アニメーションが生成されます。 

cross-modality loss

このモデルの既存研究との大きな違いは、発話音声のシーケンスであるspeech signalと顔の表情のシーケンスであるexpression signalの2つの特徴量を入力に使用している点です。

しかし、ここで既存の損失関数であるL2 reconstruction lossを用いると、expression signalがアニメーションの再構成に必要な全ての情報を既に含んでいるため、音声入力であるspeech signalが無視されてしまい、音声と唇の動きの同期がうまくいかないという問題が起きてしまいます。

この問題に対応するため、本研究ではcross-modality lossという新しい損失関数を提案しています。

入力された発話音声のシーケンスであるspeech signalをa1:T対応する顔メッシュのシーケンスであるexpression signalをx1:Tとおくと、出力される3Dアニメーションは以下のように表されます。

ここで、式中のx~1:Ta~1:Tはデータセットからランダムにサンプリングされた音声と表情のデータであるため、上の式は正しい音声入力とランダムな顔の表情が与えられた際の出力を、下の式は正しい顔の表情とランダムな音声入力が与えられた際の出力を表しています。

そして、cross-modality lossは次のように定義されます。

ここで、M(upper) は顔上部に高い重みを、口周辺に低い重みを割り当てるマスクであり、M(mouth)は口周辺に高い重みを、顔上部に低い重みを割り当てるマスクになります。

このcross-modality lossにより、音声入力に依存しない顔上部の正確な復元音声に伴う口周辺の正確な復元が可能となります。

また、顔の動きとは別に、瞬きに関しても音声入力からの影響がほとんどないため、学習時に目尻の動きに関するlossを追加しています。

よって、最終的に最適化される損失は、LxMod+Leyelidになります。

Perceptual Evaluation(知覚的評価)

本論文では、合計100人の参加者に、本アプローチと既存手法であるVOCAとground truthデータを用いて以下の条件下で調査を行いました。

  • 顔全体(full-face)、アゴから鼻にかけての領域のみ(lip sync)、鼻から顔上部の領域のみ(upper face)の3つ領域での比較を行う
  • それぞれの比較において、テストセットから話者が話した400組の短いクリップが評価されている
  • 参加者は、VOCAの方が良い(competitor)、同じくらい良い(equal)、本アプローチの方が良い(ours)の中から選択する

本調査の結果は下の表のようになりました。

 

このように、過半数以上の参加者が既存手法であるVOCAよりも本アプローチが優れていると回答しており、ground truthデータと比較した際にも、約半数が本アプローチが同等以上であると回答している事がわかりました。

Qualitative Examples(定性的な例)

続いて、本アプローチで生成されたアニメーションのサンプルを見てみましょう。

本アプローチにより、正確な音声と口の同期と、瞬きや眉を上げるなどの顔上部のモーションを持った非常にリアルな顔アニメーションの生成が出来ていることが確認できます。

また、口の動きは音声データの発話部分と一致していますが、眉を上げる、瞬きをするといった顔上部の動きは、シーケンスごとに個別に生成されているという点にも注目です。

まとめ

いかがだったでしょうか。今回は入力をspeech signalとexpression signalの2つに分離することで、もっともらしい顔上部の動きを出力することに成功したモデルであるMeshTalkについて解説しました。

本手法では既存手法と比較してよりリアルな顔アニメーションの生成が可能になりましたが、大規模な計算量によりラップトップのCPUやVRデバイスといった低コストなハードウェアではリアルタイムで実行できないことや、顔のメッシュの眉や目が髪の毛で隠されている場合には音声との同期が困難であるなどの制限があるため、今後の研究の動向に注目です。

今回紹介したMeshTalkのアーキテクチャや生成動画の詳細は本論文に載っていますので、興味がある方は参照してみてください。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする