この記事は 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