Upgrade to Pro — share decks privately, control downloads, hide ads and more …

REALITYアバターの個性を引き出す!MediaPipeによる高品質フェイストラッキング実装術

gree_tech
October 12, 2023

 REALITYアバターの個性を引き出す!MediaPipeによる高品質フェイストラッキング実装術

GREE Tech Conference 2023で発表された資料です。
https://techcon.gree.jp/2023/session/TrackC-6

gree_tech

October 12, 2023
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. 自己紹介 池谷 駿弥 / IKEP ソフトウェアエンジニア • 所属 ◦ REALITY株式会社

    Platform & Avatar事業本部 • 経歴 ◦ 2022/04、グリー株式会社に新卒入社 & REALITYへ配属 ◦ 2022/04〜2022/09、サーバエンジニア ◦ 2022/10月〜、Unityエンジニア • 主な担当領域 ◦ Unityを用いたアバター機能の開発 ◦ アバターアセット運用 ▪ アバターアイテム制作効率化 ▪ エンジニアリングサポート 2
  2. 2022年1月時点 月間ユーザー数 ユーザー分布 2020 Q3 2021 Q3 Q4 Q1 Q2

    Q4 2022 Q1 日 本 1 5 % 日本 海外 日本 北米 アジア 太平洋 欧州 他 2022 2020 配信地域 63の国と地域 8割 海外比率 アプリ「REALITY」
  3. REALITYのフェイストラッキング処理 1. 機種に応じた最適なフェイストラッキングシステムが動作 2. 顔の位置・向き、表情パラメータから、表情 /姿勢を計算/適用 ◦ GREE Tech Conference

    2020で発表された資料があるので、よけ ればご覧ください ▪ バーチャルライブ配信アプリ REALITYの3Dアバターシステムの 全容について 11 フェイストラッキング システム 顔の位置 顔の向き 表情パラメータ アバターに適用 計算 入力 カメラ画像 機種に応じて最適な手法を使い分け 共通処理でREALITY固有の アバターの動かし方を行う
  4. 複数のフェイストラッキングシステム • 複数のフェイストラッキング手法から機種に応じて最適な手法を採用 • Facemojiを利用した手法を別手法に置き換える必要があり、代替手法を 新規開発 12 OS フェイストラッキングライブラリ 対象ユーザ

    iOS ARKit Face Tracking ARKit対応機種(iPhone X以降の全機種) Facemoji ARKit非対応機種 Android Facemoji NEXT REALITYの「新フェイストラッキング方式」がオンのユーザ Firebase ML Kit Face Detection • Facemojiが対応していない一部機種のデフォルト設定 • NEXT REALITYの「新フェイストラッキング方式」を オフにしたユーザ 2023年1月現在まで
  5. ライブラリとしてMediaPipeを採用 • MediaPipe ◦ Googleがオープンソースで開発 ◦ 機械学習を使い映像から様々な情報を推論可能 ◦ 顔の特徴点を推論可能な MediaPipe

    Face Meshが存在 • 採用理由 ◦ 推論精度が、Facemojiと同等以上であり十分に利用可能 ◦ iOS, Androidの両OSに対応している ◦ コンピュータビジョン分野でも知名度が高く、オープンソースの動きも活発であるため、 継続性や保守性が高い ◦ MediaPipe(*)は機械学習のための低レベルライブラリであるため、カスタマイズ性が高い ◦ MediaPipe Face Mesh以外にもPoseやHandも存在し、REALITYでの今後の利用の幅も 期待できる 14 *現在は、MeidaPipe SolutionsとMediaPipe Frameworkが存在。当時はMediaPipe Frameworkのみだった。
  6. ビルドと組み込みで陥った事例と工夫(1) 20 Unity as a Library (UaaL) ならではの問題 • REALITYのUnity部分はUaaL構成により、iOS/Androidの1ライブラリとして開発されている

    • Unity部分にビルドしたMediaPipeライブラリを組み込んでビルド => ライブラリロードエラー => ビルドしたMediaPipeライブラリもiOS/Androidのライブラリとして組み込む ことで解決 Unityライブラリ MediaPipe ライブラリ … … MediaPipe ライブラリ … … Unityライブラリ
  7. 推論グラフの実装と工夫 MediaPipe FaceMeshの既存実装をベースに一部カス タマイズすることで、 画像処理をUnityレイヤーの実装 から排除 • スマホ端末のカメラ回転角度で取得した カメラ画像を逆回転し、 端末ごとのカメラ回転角度

    の差異を吸収 • アバターを鏡のように動かすため、画像の左右反 転を行い、右目を左目のように認識させる =>「推論結果の左目をアバターの左目に適用」の ように直感的な実装が可能に • UnityとMediaPipe画像でy軸が逆向きのため、 画像の上下反転処理を追加 24 カメラ画像 Unity 推論情報の取得 Unity MediaPipe
  8. 負荷検証 • MediaPipeの推論が可能で、簡易的にアバターを動かせる状態で端末負荷の検証を実施 • iOS, Androidそれぞれの低スペック、通常スペック、ハイスペックと、複数台の機種で検証 • iOS, AndroidのCPU/GPU負荷を調査 ◦

    iOSでは、MediaPipe製とFacemoji製を比較 ◦ Androidでは、MediaPipe製、Facemoji製、Firebase ML Kit Face Detection製を比較 • REALITYにおいて負荷がかかるであろう状態ごとに負荷計測 (下表) 25 Unity動作 アバター表示 フェイストラッキン グ動作 アバター以外の 3D表示 ①ホーム画面 × × × × ②1人配信視聴 ◦ 1 × × ③アバターホーム ◦ 1 ◦ × ④1人配信 ◦ 1 ◦ × ⑤4人コラボ配信 ◦ 4 ◦ × ⑥4人コラボ配信 + ギフト表示 ◦ 4 ◦ ◦
  9. 目の上下幅で計算で目を瞬きさせる アバター表情への変換の例 29 • スマホと顔が 近い / 遠い • 目が

    ぱっちり / そうでない • メガネを かけている / かけていない • etc… 個人差はどうする?
  10. スマホと顔が 近い / 遠い 個人差をどう吸収する? 30 「目の開き具合 = 目の上下幅 /

    目の左右幅」のように、 基準を設けてあげれば比率は一定であるため差分を吸収できる! 顔が近い => 基準幅も大きくなる 顔が遠い => 基準幅も小さくなる
  11. • ユーザごとに目の全開 /全閉の閾値を設ける • 「閾値幅に対する目の開き具合」により個人差を吸収 ◦ 制御工学で言うところのヒステリシス制御や、オートゲインコ ントロールなどの概念を利用 目が ぱっちり

    / そうでない 個人差をどう吸収する? 31 全閉 全開 時間 ユーザの 目の開き具合 全閉 全開 時間 ユーザの 目の開き具合 ユーザごとに 閾値幅を設ける 目ぱっちり 目細い
  12. MediaPipe Holisticを利用 • Face, Pose, Handの推論を同時に可能なHolisticを利用 • フェイストラッキングシステムの開発と同様に、 ◦ MediaPipe

    Holisticを加えて、ライブラリをビルド ◦ REALITYにMediaPipeライブラリを組み込み ◦ 推論処理の実装 38
  13. 49