この記事は Google Maps Platform エンジニアリング マネージャー Stas Kuvshinov と Google Maps Platform UX デザイナー Chris Raykovich とによる Google Cloud Blog の記事 "Introducing the latest in cloud-based maps styling" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
...

この記事は Google Maps Platform エンジニアリング マネージャー Stas Kuvshinov と Google Maps Platform UX デザイナー Chris Raykovich とによる Google Cloud Blog の記事 "Introducing the latest in cloud-based maps styling" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

このたび、Cloud ベースのマップスタイル設定に関する新しい試験運用版の提供を開始しました。これは、Maps JavaScript API 向けのもので、これまで以上に地図の外観を詳細に調整できるようになります。より多くの重要なコンテンツにターゲットを当てて、地理空間のユースケースを微調整するためのオプションが増えました。ラベルの公開設定、領域の塗りつぶしの色、外形線の色や太さの設定など、スタイル設定可能な要素をより細かく調整できるようになるため、ユーザー独自のデザインをマップのスタイルにより適切に反映できるようになります。

拡張された地図上の対象物とスポット

これらの改善を支えるのが、100 近い個別のマップ要素をサポートする、カスタマイズ可能な地図上の対象物の新しいインベントリです。現在の一般提供バージョンの Cloud ベースのマップスタイル設定と比較して、対象物は 2 倍、スポットのカテゴリは 4 倍になりました。そのため、2 億以上の企業や場所をカバーする Google のスポットデータを使用してマップを構築し、マップに表示するデータをより詳細にフィルタおよびカスタマイズできます。また、以前はアクセスできなかった新しい地図作成の詳細情報を使用することで、地図のスタイルの外観をより細かく調整できるようになります。たとえば、保留地、農作物、水面の種類などを異なる方法でスタイル設定できるようになりました。さらに、観光スポット、レクリエーション エリア、緊急サービス、小売店などのスポットのカテゴリに適用されるラベル間で、さまざまな設定もできます。

拡張された地図上の対象物タイプのリスト


スタイラーの改良

分類方法の拡張に加えて、ジオメトリやラベルなど、さまざまな地図作成要素に関する新しいスタイル設定機能をリリースします。これらの新しいカスタム プロパティはすべて、柔軟性をさらに高めるように設計されており、これにより、ブランドやアプリケーション固有のニーズを反映したカスタム スタイルを作成できます。


マップ要素の色とラベルのカスタマイズの例


ご利用方法

Cloud ベースのマップスタイル設定は、Maps JavaScript API 向けの Dynamic Maps に含まれています。デベロッパーは、Google Cloud コンソールで JavaScript Vector Map 構成の MapID と新しい地図のスタイルを作成することで、Dynamic Maps の Cloud ベースのマップのスタイル設定機能を使用できます。

これらの試験運用版のスタイル設定機能を試すには、新しい地図のスタイルの作成時に、試験運用版のオプションを選択します。

「新しい地図のスタイル」の作成時に試験運用版を有効にする例

試験運用版の地図のスタイルを使用するには、JavaScript Maps API バージョン 3.47 以降(ベクターベースの地図の場合)、または 3.49 以降(ラスターベースの地図の場合)をウェブアプリで使用する必要があります。試験運用版のほとんどの機能を使用するには、JavaScript Maps API Beta チャンネルをご検討ください。この試験運用フェーズの期間で、カスタマイズ可能な地図上の対象物と関連するスタイラーのリストを拡張し、あらゆるズームレベルにおいてユーザビリティの向上とスタイル設定の強化を実現します。

Google Maps Platform の新しい Cloud ベースのマップのスタイル設定により、これまで以上に魅力的で有益な地図を作成できるようになると確信しています。ご利用とご感想をお待ちしております。

Google Maps Platform に関する詳しい情報はこちらをご覧ください。ご質問やフィードバックはページ右上の「お問い合わせ」より承っております。


この記事は Bob Hancock による Google Ads Developer Blog の記事 "Image and Location Auto-migration August 2023" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 ...
この記事は Bob Hancock による Google Ads Developer Blog の記事 "Image and Location Auto-migration August 2023" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

変更事項

2023 年 8 月 2 日より、画像表示オプションと住所表示オプションのアセットへの自動移行を開始しました。自動移行は、2023 年 9 月 30 日に終了する予定です。

アセットへ移行後、画像表示オプションと住所表示オプションは変更できなくなります。提供されるエンティティは、画像アセットと住所アセットになります。表示オプションの指標は、2024 年のある時点まで利用できます。

変更の理由

表示オプションがアセットに移行されます。

何をする必要がありますか?

v12 は 2023 年 9 月末で提供終了となるため、v13 以降の Google Ads API にアップグレードしてください。v14 へのアップグレードを推奨しています。

自動移行では、フィード ID とアセット ID との対応付けは保持されません。フィード ID とアセット ID の対応付けを記録しておきたい場合は、フィードに基づいて新しい画像アセットや住所アセットを作成し、ID の対応付けをローカルに保存してください。

自動移行をオプトアウトすることはできますか?

いいえ。自動移行の最初のバッチではオプトアウトを提供しましたが、今回の自動移行はオプトアウトできません。


移行はどのように行われますか?

移行はアカウント レベルで行われます。アカウントの移行は数分で行われますが、その間は表示オプションとアセットの両方で、画像と住所が変更できなくなります。移行が完了すると、アセットにアクセスできるようになります。

画像と住所の移行は同期しません。ほとんどの場合、アカウントごとに別々のタイミングで移行されます。


どうすればアカウントが移行されたことがわかりますか?

移行のステータスを追跡するには、v13 以降の Customer リソースで提供される次のフィールドを使います。

  • bool image_asset_auto_migration_done
  • string image_asset_auto_migration_done_date_time
  • bool location_asset_auto_migration_done
  • string location_asset_auto_migration_done_date_time


v12 を使っている方は、UI で確認できます。アカウントが移行されると、アラートが表示されます。

自動移行されると何が起きますか?


移行されたアカウントでは、フィードベースのエンティティに対する変更呼び出しが拒否されます。

質問などございましたら、フォーラムからご連絡ください。


Posted by Thanet Knack Praneenararat - Ads Developer Relations Team

Google Cloud は、日本時間 11 月 15 日(水)~ 16 日(木)の 2 日間にわたり、旗艦イベント Google Cloud Next Tokyo '23 を東京ビッグサイトにて開催します。今日は、Expo と Innovators Hive についてご紹介します。実際に体験したいと思ったら、ぜひこちらから事前登録をしておきましょう。


☁︎ Innovators Hive

Google Cloud の最新技術が体験できる、デベロッパーやエンジニアのためのエリアです。

Google Cloud のデモに触れたり、学習プログラムや認定資格の最新情報を入手できます。ぜひ会場で Google Cloud を共に学び、デベロッパー コミュニティと繋がりましょう。

Google Cloud は、日本時間 11 月 15 日(水)~ 16 日(木)の 2 日間にわたり、旗艦イベント Google Cloud Next Tokyo '23 を東京ビッグサイトにて開催します。今日は、Expo と Innovators Hive についてご紹介します。実際に体験したいと思ったら、ぜひこちらから事前登録をしておきましょう。


☁︎ Innovators Hive

Google Cloud の最新技術が体験できる、デベロッパーやエンジニアのためのエリアです。

Google Cloud のデモに触れたり、学習プログラムや認定資格の最新情報を入手できます。ぜひ会場で Google Cloud を共に学び、デベロッパー コミュニティと繋がりましょう。

┗ ペルソナゾーン

┗ ハンズオン セッション

┗ ラーニング & 認定資格ブース

┗ コミュニティ ゾーン

┗ Champion Innovators ラウンジ 

┗ Google Cloud Certified ラウンジ

Innovators Hive のプログラム詳細はこちら


☁︎ Expo

Google Cloud の最新プロダクトやソリューション、パートナー、お客様の事例やデモを、エキスパートと交流しながら体験できるエリアです。ブースでは、Google Cloud を活用したソリューションやサービスをご覧いただけます。

┗ Google Cloud ブース

┗ AI Innovation

┗ スポンサーブース

┗ Mini TAP

┗ オープン ステージ

┗ Ask the Speaker

Expo の展示カテゴリ詳細はこちら


☁︎開催概要

名称 : Google Cloud Next Tokyo '23(略称 Next Tokyo '23)

日時 : 日本時間 2023 年 11 月 15 日(水) ~ 16 日(木)

会場 : 東京ビッグサイト(東京国際展示場)

対象 : 開発者から CEO まで、クラウド テクノロジーを使ったビジネス課題の解決を探求する、すべての方

ハッシュタグ : #googlecloudnext


- お問い合わせ -

Google Cloud Next Tokyo 運営事務局

E-mail: gc-nexttokyo-info@google.com


この記事は Thanet Knack Praneenararat による XXX Blog の記事 "Announcing v14 of the Google Ads API" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。 ...
この記事は Thanet Knack Praneenararat による XXX Blog の記事 "Announcing v14 of the Google Ads API" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

この度、Google Ads API の v14 リリースをお知らせします。v14 の一部の機能を使うには、クライアント ライブラリとクライアントのコードをアップグレードする必要があります。更新版のクライアント ライブラリとコードサンプルは、来週(元記事公開時)公開されます。


主な機能は以下のとおりです。

  • KeywordPlanIdeaService.GenerateKeywordForecastMetrics を追加し、KeywordPlanService で削除された複数のメソッドの代替としました。この新しいメソッドでは、最初にキーワード プランを作成する必要はありません。

さらに詳しく知りたい方へ

以下のリソースが役立ちます。

ご質問やさらにサポートが必要なことがありましたら、フォーラムからご連絡ください。

Google Cloud は、日本時間 11 月 15 日(水)~ 16 日(木)の 2 日間にわたり、旗艦イベント Google Cloud Next Tokyo '23 を東京ビッグサイトにて開催します。今日は、プログラムのご紹介をします。気になるものがあれば、ぜひこちらから事前登録をしておきましょう。

☁︎ 基調講演

プロダクト アップデートを含む、最新のソリューションを紹介します。また、Google Cloud を導入済みの企業のビジネス リーダーから、そのビジョンと取り組みについてお聞きします。

☁︎ ブレイクアウト セッション

9 つのジャンルに分けて、アメリカの NEXT で発表された製品の最新情報や、お客様によるクラウド活用事例のセッションをライブでお届けします。スピーカーに直接質問できるコーナーも用意しますので、ぜひ現地でご聴講ください。

Google Cloud は、日本時間 11 月 15 日(水)~ 16 日(木)の 2 日間にわたり、旗艦イベント Google Cloud Next Tokyo '23 を東京ビッグサイトにて開催します。今日は、プログラムのご紹介をします。気になるものがあれば、ぜひこちらから事前登録をしておきましょう。

☁︎ 基調講演

プロダクト アップデートを含む、最新のソリューションを紹介します。また、Google Cloud を導入済みの企業のビジネス リーダーから、そのビジョンと取り組みについてお聞きします。

☁︎ ブレイクアウト セッション

9 つのジャンルに分けて、アメリカの NEXT で発表された製品の最新情報や、お客様によるクラウド活用事例のセッションをライブでお届けします。スピーカーに直接質問できるコーナーも用意しますので、ぜひ現地でご聴講ください。

☁︎ ハンズオン セッション

Google Cloud の魅力を、実際のハンズオンを通して探求しましょう。AI、データ分析、インフラ構築、アプリ開発、セキュリティまで、すべてを学べるチャンスです!皆さまの参加をお待ちしております。

☁︎ Expo

Google Cloud の最新製品やソリューション、パートナー、お客様の事例やデモを、エキスパートと交流しながら体験できるエリアです。ブースでは、Google Cloud を活用したソリューションやサービスをご覧いただけます。

☁︎ Innovators Hive

デベロッパーやエンジニアのためのエリアです。Google Cloud のデモを体験したり、学習プログラムや認定資格の最新情報を入手できます。ぜひ会場で Google Cloud を共に学び、デベロッパー コミュニティと繋がりましょう。


☁︎開催概要

名称 : Google Cloud Next Tokyo '23(略称 Next Tokyo '23)

日時 : 日本時間 2023 年 11 月 15 日(水) ~ 16 日(木)

会場 : 東京ビッグサイト(東京国際展示場)

対象 : 開発者から CEO まで、クラウド テクノロジーを使ったビジネス課題の解決を探求する、すべての方

ハッシュタグ : #googlecloudnext


- お問い合わせ -

Google Cloud Next Tokyo 運営事務局

E-mail: gc-nexttokyo-info@google.com



45 年前、日本で開発され世界中にブームを巻き起こしたタイトーの「スペースインベーダー」。本日、現実世界を遊び場に変える新しい没入型の AR(拡張現実)モバイルゲーム「スペースインベーダー ワールドディフェンス」が新たに誕生しました。


「スペースインベーダー ワールドディフェンス」は、スマートフォンでかざして見える建物や屋上から出現するスペースインベーダーを、世界中のプレイヤーと協力して倒す Android , iOS のモバイル  3D ゲームです。そしてこのゲームには、Google の ARCore Geospatial API の AR 技術である Streetscape Geometry API が搭載されています。

45 年前、日本で開発され世界中にブームを巻き起こしたタイトーの「スペースインベーダー」。本日、現実世界を遊び場に変える新しい没入型の AR(拡張現実)モバイルゲーム「スペースインベーダー ワールドディフェンス」が新たに誕生しました。


「スペースインベーダー ワールドディフェンス」は、スマートフォンでかざして見える建物や屋上から出現するスペースインベーダーを、世界中のプレイヤーと協力して倒す Android , iOS のモバイル  3D ゲームです。そしてこのゲームには、Google の ARCore Geospatial API の AR 技術である Streetscape Geometry API が搭載されています。

拡張現実で 3D スペースインベーダーの侵略からロンドンを守る女性プレイヤー





Google Streetscape Geometry API は、ユーザーの現在地から半径 100m 以内にある建物の 3D モデルデータを取得することができ、AR オブジェクトが隠れて見えるようにしたり(=オクルージョン表現)、現実空間の建物に反射するような表現、さらには特定の建物に AR オブジェクトを貼り付けるといった表現ができる機能で、現実空間に溶け込んだ没入感の高い AR コンテンツ開発を実現します。

 


スマートフォンを片手に近所を探索し、新しいスペースインベーダーを探しだし、倒してポイントを獲得します。特別なパワーアップ アイテムをみつけたり、最高スコアを目指して(自分の位置から近くにいる)友達と競い合ったり、ゲーム画面のスクリーンショットを撮って SNS でスコアを共有できます。





左: SPACE INVADERS: World Defense の AR ゲームプレイで、都市の建物の周囲に 3D インベーダーが出現する様子

中央: スマートフォンの 3D ゲームプレイで、パワーアップ アイテムを持つ特別なスペースインベーダーを狙うスペースシップ

右: ゲームで達成したランクとスコアと一緒に、世界防衛チームのパイロットとして AR で自撮りする日本人男性


 

本ゲームは、ARCore とGeospatial API により、プレイヤーの周囲だけでなく、近くの建物、橋、その他の建築要素などを使用して、現実世界の AR と画面上の 3D 空間を融合します。これにより、現実世界の場所、時間、天気などに適応した、より没入感のある魅力的なゲームプレイをお楽しみいただけます。


拡張現実(AR)は、現実世界とデジタル世界を融合させ、ゲーム以外にも、ショッピング、学習、遊びやコンテンツなど、ユーザーに新しい体験を提案しています。ブランドやクリエイターは、AR を使って、まったく新しい次元で世界を体験する機会を作りだすことができます。先日発表した Geospatial Creator により、開発者、クリエイター、アニメーターは、コーディングなしで、Unity や Adobe Aero などの使い慣れたツールを使って、没入感のある位置情報ベースの AR エクスペリエンスを簡単に作成し公開できるようになります。





左: 現実世界に 3D スペースインベーダーが AR で表示され、プレイヤーがカメラで捉えて倒す様子

中央: 都市の上空に出現した黒いポータルが周囲の建物を覆い隠し、現実世界の AR 環境から周囲の建物を反映した 3D ゲームプレイへとゲーム画面が切り替わる様子

右: 3D ゲームプレイで雷の中スペースシップが移動する様子。ゲームプレイ環境が現在の天候やプレイヤーの位置条件に適応しています

 



AndroidiOS で「スペースインベーダー ワールドディフェンス」をダウンロードし、エリート地球防衛軍に参加して、あなたの地域の最高スコアを目指しましょう。




Reviewed by Mari Sakai - Communications Manager and Mari Kawanishi - Developer Marketing Manager, Google Play


KDDI はバーチャル ヒューマン『メタコ』にテキスト読み上げ機能とクラウド レンダリング技術を統合


VTuber(バーチャル YouTuber)は、コンピュータ グラフィックスによって生成されたバーチャル アバターを使用するオンライン エンターテイナーです。このデジタル トレンドは 2010 年代半ばに日本で始まり、オンラインで国際的に活動する現象が起こりました。ほとんどの VTuber は、アバターのデザインを使用した YouTuber またはライブ配信者で、英語と日本語の両方を話します。


KDDI は、4,000 万人以上の顧客を持つ日本の通信事業者です。5G ネットワーク上に構築されたさまざまなテクノロジーの実験を通じて、VTuber のさらなる進化を支援したいと考えていましたが、正確な動きや人間らしい表情をリアルタイムで表現することは困難な課題でした。


リアルタイムでバーチャル ヒューマンを生成する
5 月の Google I/O 2023 で発表された MediaPipe のフェイス ランドマーカー (英語) ソリューションは、顔のランドマークを検出し、ブレンドシェイプ スコアを出力して、ユーザーの行動に即した 3D の顔モデルをレンダリングするものです。KDDI は、Google パートナー イノベーション チームと共同で MediaPipe フェイス ランドマーカー ソリューションを使用してテストを実施し、バーチャル ヒューマンに現実感をもたらすことに成功しました。


技術実装

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

    def mp_callback(self, mp_result, output_image, timestamp_ms: int):

        if len(mp_result.face_landmarks) >= 1 and len(

                mp_result.face_blendshapes) >= 1:

            self.landmarks = mp_result.face_landmarks[0]

            self.blendshapes = [b.score for b in mp_result.face_blendshapes[0]]

    def update(self, frame):

        t_ms = int(time.time() * 1000)

        if t_ms <= self.latest_time_ms:

            return

        frame_mp = mp.Image(image_format=mp.ImageFormat.SRGB, data=frame)

        self.model.detect_async(frame_mp, t_ms)

        self.latest_time_ms = t_ms

    def get_results(self):

        return self.landmarks, self.blendshapes


Firebase Realtime Database に、52 個のブレンドシェイプに関する float 値のコレクションが格納されます。各行は、順番にリストされたブレンドシェイプに対応しています。 

_neutral, 

browDownLeft, 

browDownRight, 

browInnerUp,

browOuterUpLeft,

...


これらのブレンドシェイプ値は、カメラが起動して FaceMesh モデルが実行されている間、リアルタイムで継続的に更新されます。データベースは各フレームで最新のブレンドシェイプ値を反映し、FaceMesh モデルによって検出された顔の表情の動的な変化をキャプチャします。


ブレンドシェイプ データを抽出したら、次のステップではそのデータを Firebase Realtime Database に送信します。この高度なデータベース システムを活用することで、リアルタイム データがシームレスにクライアントに転送され、サーバーのスケーラビリティに関する懸念が解消されます。そのため KDDI は、ユーザー エクスペリエンスを効率化することに集中できます。


import concurrent.futures

import time


import cv2

import firebase_admin

import mediapipe as mp

import numpy as np

from firebase_admin import credentials, db


pool = concurrent.futures.ThreadPoolExecutor(max_workers=4)


cred = credentials.Certificate('your-certificate.json')

firebase_admin.initialize_app(

    cred, {

        'databaseURL': 'https://your-project.firebasedatabase.app/'

    })

ref = db.reference('projects/1234/blendshapes')


def main():

    facemesh_detector = FaceMeshDetector()

    cap = cv2.VideoCapture(0)


 while True:

        ret, frame = cap.read()


        facemesh_detector.update(frame)

        landmarks, blendshapes = facemesh_detector.get_results()

        if (landmarks is None) or (blendshapes is None):

            continue


        blendshapes_dict = {k: v for k, v in enumerate(blendshapes)}

        exe = pool.submit(ref.set, blendshapes_dict)


        cv2.imshow('frame', frame)

        if cv2.waitKey(1) & 0xFF == ord('q'):

            break


    cap.release()

    cv2.destroyAllWindows()

    exit()




さらに、デベロッパーは、ブレンドシェイプ データを Firebase Realtime Database から Google Cloud の Immersive Stream for XR インスタンスにリアルタイムでシームレスに送信します。Google Cloud の Immersive Stream for XR は、クラウド側で Unreal Engine プロジェクトを実行し、写真のようにリアルで没入感のある 3D や拡張現実(AR)エクスペリエンスをリアルタイムでスマートフォンやブラウザにストリーミングしてレンダリングするマネージド サービスです。


この統合により KDDI は、キャラクターのフェイシャル アニメーションを最小限のレイテンシでリアルタイムにストリーミングし、没入型のユーザー エクスペリエンスを確実に提供できるようになりました。



Immersive Stream for XR によって実行される Unreal Engine 側では、Firebase C++ SDK を使用して Firebase からデータをシームレスに受信します。データベース リスナーを確立することにより、Firebase Realtime Database のテーブルで更新が発生したらすぐにブレンドシェイプ値を取得できます。この統合により、最新のブレンドシェイプ データにリアルタイムでアクセスできるようになるため、Unreal Engine プロジェクトにおいて動的で応答性の高いフェイシャル アニメーションを実現できます。



Firebase SDK からブレンドシェイプ値を取得したら、アニメーション ブループリントの『Modify Curve』ノードを使用して、Unreal Engine でフェイシャル アニメーションを実施します。各ブレンドシェイプ値はフレームごとにキャラクターに割り当てられるため、キャラクターの表情をリアルタイムで正確に制御できます。



Unreal Engine にリアルタイム データベース リスナーを効果的に実装するには、代替のシングルトン パターンとして GameInstance サブシステムを利用します。これにより、データベース接続、認証、バックグラウンドでの継続的なデータ受信の処理を担う専用の BlendshapesReceiver インスタンスを作成できます。


GameInstance サブシステムを利用すると、BlendshapesReceiver インスタンスを作成して、ゲーム セッションの存続期間全体で維持できます。これにより、受信したブレンドシェイプ データを使用してアニメーション ブループリントがフェイシャル アニメーションを読み取って実施している間、永続的なデータベース接続が確保されます。


KDDI は、MediaPipe を実行するローカル PC 1 台だけで、実際のパフォーマーの表情と動きをキャプチャし、質の高い 3D リターゲット アニメーションをリアルタイムで作成することに成功しました。



KDDI は、株式会社アダストリアなどのメタバースのアニメ ファッションのデベロッパーと提携しています。

はじめに

詳細については、Google I/O 2023 の次のセッションをご覧ください (動画/英語 日本語の自動字幕あり) : MediaPipe を使った簡単なオンデバイス機械学習機械学習と MediaPipe でウェブアプリを強化する機械学習の新機能。また、developers.google.com/mediapipe (英語) で公式ドキュメントをご確認ください。

次のステップ
この MediaPipe 統合は、誰もがクリエイターになりうるエコシステムを構築し、現実と仮想を軽やかに行き来する新世代のユーザーに寄り添うための KDDI の取り組みの一例です。KDDI の αU は、メタバース、ライブ配信、バーチャル ショッピングなど Web3 時代のサービスを提供します。


Reviewed by Bryan Tanaka - Program Manager, Google Partner Innovation

この記事は KDDI Alpha-U の XR 開発チームによる Google Developers Blog のゲスト記事 " MediaPipe: Enhancing Virtual Humans to be more realistic" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

以下の記事に記載されている情報、用途、およびアプリケーションは、すべてゲスト著者の KDDI に帰属するものであることをご了承ください。

KDDI はバーチャル ヒューマン『メタコ』にテキスト読み上げ機能とクラウド レンダリング技術を統合


VTuber(バーチャル YouTuber)は、コンピュータ グラフィックスによって生成されたバーチャル アバターを使用するオンライン エンターテイナーです。このデジタル トレンドは 2010 年代半ばに日本で始まり、オンラインで国際的に活動する現象が起こりました。ほとんどの VTuber は、アバターのデザインを使用した YouTuber またはライブ配信者で、英語と日本語の両方を話します。


KDDI は、4,000 万人以上の顧客を持つ日本の通信事業者です。5G ネットワーク上に構築されたさまざまなテクノロジーの実験を通じて、VTuber のさらなる進化を支援したいと考えていましたが、正確な動きや人間らしい表情をリアルタイムで表現することは困難な課題でした。


リアルタイムでバーチャル ヒューマンを生成する
5 月の Google I/O 2023 で発表された MediaPipe のフェイス ランドマーカー (英語) ソリューションは、顔のランドマークを検出し、ブレンドシェイプ スコアを出力して、ユーザーの行動に即した 3D の顔モデルをレンダリングするものです。KDDI は、Google パートナー イノベーション チームと共同で MediaPipe フェイス ランドマーカー ソリューションを使用してテストを実施し、バーチャル ヒューマンに現実感をもたらすことに成功しました。


技術実装

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

    def mp_callback(self, mp_result, output_image, timestamp_ms: int):

        if len(mp_result.face_landmarks) >= 1 and len(

                mp_result.face_blendshapes) >= 1:

            self.landmarks = mp_result.face_landmarks[0]

            self.blendshapes = [b.score for b in mp_result.face_blendshapes[0]]

    def update(self, frame):

        t_ms = int(time.time() * 1000)

        if t_ms <= self.latest_time_ms:

            return

        frame_mp = mp.Image(image_format=mp.ImageFormat.SRGB, data=frame)

        self.model.detect_async(frame_mp, t_ms)

        self.latest_time_ms = t_ms

    def get_results(self):

        return self.landmarks, self.blendshapes


Firebase Realtime Database に、52 個のブレンドシェイプに関する float 値のコレクションが格納されます。各行は、順番にリストされたブレンドシェイプに対応しています。 

_neutral, 

browDownLeft, 

browDownRight, 

browInnerUp,

browOuterUpLeft,

...


これらのブレンドシェイプ値は、カメラが起動して FaceMesh モデルが実行されている間、リアルタイムで継続的に更新されます。データベースは各フレームで最新のブレンドシェイプ値を反映し、FaceMesh モデルによって検出された顔の表情の動的な変化をキャプチャします。


ブレンドシェイプ データを抽出したら、次のステップではそのデータを Firebase Realtime Database に送信します。この高度なデータベース システムを活用することで、リアルタイム データがシームレスにクライアントに転送され、サーバーのスケーラビリティに関する懸念が解消されます。そのため KDDI は、ユーザー エクスペリエンスを効率化することに集中できます。


import concurrent.futures

import time


import cv2

import firebase_admin

import mediapipe as mp

import numpy as np

from firebase_admin import credentials, db


pool = concurrent.futures.ThreadPoolExecutor(max_workers=4)


cred = credentials.Certificate('your-certificate.json')

firebase_admin.initialize_app(

    cred, {

        'databaseURL': 'https://your-project.firebasedatabase.app/'

    })

ref = db.reference('projects/1234/blendshapes')


def main():

    facemesh_detector = FaceMeshDetector()

    cap = cv2.VideoCapture(0)


 while True:

        ret, frame = cap.read()


        facemesh_detector.update(frame)

        landmarks, blendshapes = facemesh_detector.get_results()

        if (landmarks is None) or (blendshapes is None):

            continue


        blendshapes_dict = {k: v for k, v in enumerate(blendshapes)}

        exe = pool.submit(ref.set, blendshapes_dict)


        cv2.imshow('frame', frame)

        if cv2.waitKey(1) & 0xFF == ord('q'):

            break


    cap.release()

    cv2.destroyAllWindows()

    exit()




さらに、デベロッパーは、ブレンドシェイプ データを Firebase Realtime Database から Google Cloud の Immersive Stream for XR インスタンスにリアルタイムでシームレスに送信します。Google Cloud の Immersive Stream for XR は、クラウド側で Unreal Engine プロジェクトを実行し、写真のようにリアルで没入感のある 3D や拡張現実(AR)エクスペリエンスをリアルタイムでスマートフォンやブラウザにストリーミングしてレンダリングするマネージド サービスです。


この統合により KDDI は、キャラクターのフェイシャル アニメーションを最小限のレイテンシでリアルタイムにストリーミングし、没入型のユーザー エクスペリエンスを確実に提供できるようになりました。



Immersive Stream for XR によって実行される Unreal Engine 側では、Firebase C++ SDK を使用して Firebase からデータをシームレスに受信します。データベース リスナーを確立することにより、Firebase Realtime Database のテーブルで更新が発生したらすぐにブレンドシェイプ値を取得できます。この統合により、最新のブレンドシェイプ データにリアルタイムでアクセスできるようになるため、Unreal Engine プロジェクトにおいて動的で応答性の高いフェイシャル アニメーションを実現できます。



Firebase SDK からブレンドシェイプ値を取得したら、アニメーション ブループリントの『Modify Curve』ノードを使用して、Unreal Engine でフェイシャル アニメーションを実施します。各ブレンドシェイプ値はフレームごとにキャラクターに割り当てられるため、キャラクターの表情をリアルタイムで正確に制御できます。



Unreal Engine にリアルタイム データベース リスナーを効果的に実装するには、代替のシングルトン パターンとして GameInstance サブシステムを利用します。これにより、データベース接続、認証、バックグラウンドでの継続的なデータ受信の処理を担う専用の BlendshapesReceiver インスタンスを作成できます。


GameInstance サブシステムを利用すると、BlendshapesReceiver インスタンスを作成して、ゲーム セッションの存続期間全体で維持できます。これにより、受信したブレンドシェイプ データを使用してアニメーション ブループリントがフェイシャル アニメーションを読み取って実施している間、永続的なデータベース接続が確保されます。


KDDI は、MediaPipe を実行するローカル PC 1 台だけで、実際のパフォーマーの表情と動きをキャプチャし、質の高い 3D リターゲット アニメーションをリアルタイムで作成することに成功しました。



KDDI は、株式会社アダストリアなどのメタバースのアニメ ファッションのデベロッパーと提携しています。

はじめに

詳細については、Google I/O 2023 の次のセッションをご覧ください (動画/英語 日本語の自動字幕あり) : MediaPipe を使った簡単なオンデバイス機械学習機械学習と MediaPipe でウェブアプリを強化する機械学習の新機能。また、developers.google.com/mediapipe (英語) で公式ドキュメントをご確認ください。

次のステップ
この MediaPipe 統合は、誰もがクリエイターになりうるエコシステムを構築し、現実と仮想を軽やかに行き来する新世代のユーザーに寄り添うための KDDI の取り組みの一例です。KDDI の αU は、メタバース、ライブ配信、バーチャル ショッピングなど Web3 時代のサービスを提供します。


Reviewed by Bryan Tanaka - Program Manager, Google Partner Innovation