Firebase MediaPipe: バーチャルヒューマンをよりリアルにする
2023年7月10日、KDDIのXR開発チームが、GoogleのMediaPipeを活用してバーチャルヒューマンをリアルに表現するプロジェクトについて紹介しました。バーチャルヒューマンとは、仮想世界で生きるデジタルキャラクターのことです。特にVTuber(バーチャルYouTuber)は、コンピュータグラフィックスで生成されたアバターを使用してオンラインでエンターテインメントを提供するトレンドです。これは2010年代半ばに日本で始まり、今では国際的な現象となっています。
KDDIと5Gの力を活かした取り組み
KDDIは、顧客数が4,000万人を超える日本の大手通信事業者で、5Gネットワーク上で様々な技術を実験したいと考えていました。しかし、リアルタイムでの正確な動きや人間らしい顔の表情を再現するのは容易ではありませんでした。
リアルタイムでのバーチャルヒューマン作成の実現
2023年5月に開催されたGoogle I/Oで発表されたMediaPipe Face Landmarkerソリューションは、顔のランドマークを検出し、ユーザーに合わせた3D顔モデルを生成するためのブレンドシェイプスコアを出力します。これにより、KDDIとGoogleパートナーイノベーションチームは、アバターにリアリズムをもたらすことに成功しました。
テクニカル実装の流れ
KDDIの開発者は、“`mediapipe“`という強力で効率的なPythonパッケージを使用して、パフォーマーの顔の特徴をリアルタイムで検出し、52種類のブレンドシェイプを抽出しました。このプロセスには、顔のランドマークやブレンドシェイプを取得するためのコードが含まれています。以下はその一部です:
import mediapipe as mp
from mediapipe.tasks import python as mp_python
MP_TASK_FILE = "face_landmarker_with_blendshapes.task"
class FaceMeshDetector:
def __init__(self):
with open(MP_TASK_FILE, mode="rb") as f:
f_buffer = f.read()
base_options = mp_python.BaseOptions(model_asset_buffer=f_buffer)
options = mp_python.vision.FaceLandmarkerOptions(
base_options=base_options,
output_face_blendshapes=True,
output_facial_transformation_matrixes=True,
running_mode=mp.tasks.vision.RunningMode.LIVE_STREAM,
num_faces=1,
result_callback=self.mp_callback)
self.model = mp_python.vision.FaceLandmarker.create_from_options(options)
self.landmarks = None
self.blendshapes = None
self.latest_time_ms = 0
このようにして、KDDIはパフォーマンスの顔の表情を検出し、リアルタイムでブレンドシェイプのデータをFirebase Realtime Databaseに保存しました。このデータは、ユーザーの顔の動きや表情の変化を正確に反映するものです。
Firebaseによるデータ伝送の利点
Firebase Realtime Databaseは、52種類のブレンドシェイプの浮動小数点値を格納します。これにより、各ブレンドシェイプがリアルタイムで更新され、ユーザー体験を一層滑らかにすることができます。KDDIは、サーバーのスケーラビリティについて心配することなく、この先進的なデータベースシステムを活用できました。
Google CloudとUnreal Engineの連携
次に、KDDIはFirebase Realtime DatabaseからGoogle CloudのImmersive Stream for XRにブレンドシェイプデータをリアルタイムで伝送しました。このサービスは、リアルタイムでフォトリアリスティックな3Dおよび拡張現実(AR)体験を提供します。これにより、KDDIはキャラクターの顔のアニメーションをドライブし、最小限の遅延で安全かつリアルタイムでストリーミングすることが可能になりました。
Unreal Engineでの顔アニメーションの実装
Unreal Engine側では、Firebase C++ SDKを使用してデータの受信をスムーズに行います。データベースリスナーを設定することで、Firebase Realtime Databaseのテーブルが更新されるとすぐにブレンドシェイプ値を取得できます。この統合により、最新のブレンドシェイプデータにリアルタイムでアクセスでき、ダイナミックでレスポンシブな顔アニメーションが実現されます。
まとめと今後の展望
KDDIはこのMediaPipeとの統合を通じて、現実と仮想の境界をなくす方向へ進んでいます。例えば、ユーザーはライブ音楽パフォーマンスに参加したり、アートを楽しんだり、友人とカジュアルに会話をしたり、買い物をしたりと、いつでもどこでもこれらの体験を楽しむことができるのです。今後、KDDIのαUは、メタバースやライブストリーミング、バーチャルショッピングといったWeb3時代のサービスを提供し、誰もがクリエイターになれるエコシステムを作り上げます。
さらに詳細な情報や実装方法を知りたい方は、Google I/O 2023のセッションを視聴することをお勧めします。これにより、MediaPipeを使ったデバイス上での機械学習やウェブアプリのスーパーチャージに関して多くの知識を得られるでしょう。