オラクルと一緒にXRを開発しよう、エピソード6 AIサマライザー+ジェネレーター

'Let's develop XR with Oracle, Episode 6 AI summarizer + generator

このシリーズの第6回目では、ユーザーの周囲からの任意の視覚と音声の入力を受け取り、さまざまなAIで処理し、要約の出力や生成AIの結果などを返すミックスドリアリティアプリの完全なソースを説明します。

これはOracleを使用してXRアプリケーションとエクスペリエンスを開発するシリーズの6回目であり、ユーザーの周囲からの視覚と音声の入力を受け取り、さまざまなAIで処理し、要約の出力や生成AIの結果などを返すことに焦点を当てています。以下に最初の5つの記事へのリンクを掲載しています。

  • Oracleを使用したXRの開発、エピソード1:Spatial、AI/ML、Kubernetes、およびOpenTelemetryの開発
  • Oracleを使用したXRの開発、エピソード2:プロパティグラフとデータの可視化
  • Oracleを使用したXRの開発、エピソード3:コンピュータビジョンAIとML
  • Oracleを使用したXRの開発、エピソード4:デジタルツインとオブザーバビリティ
  • Oracleを使用したXRの開発、エピソード5:ヘルスケア、ビジョンAI、トレーニング/コラボレーション、メッセージング

前の投稿と同様に、Magic Leap 2、HoloLens 2、Oculus、iPhoneとAndroid、PCを使用して開発されたアプリケーションを具体的に紹介し、UnityプラットフォームとOpenXR(マルチプラットフォームサポート)、Apple Swift、WebXRを使用して記述します。

ブログ全体を通じて、対応するデモビデオへの参照を以下に示します。

拡張現実(XR)とコンテキストと状況の認識を備えたAIを日常生活で使用する

XRの概要については、このシリーズの最初の記事(上記のリンク)を参照してください。この記事では、ミックスドリアリティ/拡張現実のユースケースとAIに焦点を当てていますが、VRでもAIが使用される素晴らしい例はたくさんあり、今後のブログでそれらを探求します。これらのアプリケーションの開発に使用される組み合わせは、強力で完璧なものです。Unity、Cohere、その他のOracle AIサービス、およびソリューションの中心にあるOracleデータベースです。

完璧なXR AIフルスタックソリューション:Unity、Kubernetes、Oracle AI、Cohere、およびOracleデータベース

アプリケーションのアーキテクチャは、Unityがフロントエンドを作成し、Java Spring Bootや他のマイクロサービスがKubernetesで実行され、さまざまなAIサービスやOracleデータベースに呼び出され、ベクトルや空間などの情報を格納します。

以下にいくつかの例を示します。各例は、XRヘッドセットの音声認識システムを介して音声コマンドによってトリガされます。

「これを説明してください…」

このコマンドに対応して、Unityクライアントサイドアプリはヘッドセットを被った人の視点から写真を撮影し、写真をKubernetesで実行されるサーバーサイドのSpring Bootアプリに送信します(KubernetesやSpring Bootは必須ではありませんし、これはPython、Javascript、.NETなどの言語、およびデータベース内で直接実行される言語でも実現できます)。サーバーサイドのアプリはOracle Vision AIサービスを呼び出して、写真のテキストを検出して返します。テキストは任意の角度などであっても正しく解釈されます。サーバーサイドのアプリはこのテキストを取得してCohere(またはHugging FaceまたはOpenAI)に渡し、テキストと音声で健康報告書の説明、簡単な言葉での説明、結果/健康の改善方法の提案を取得します。画像、コンテンツ、および要約はデータベースに保存され、基本的な高度なテキスト検索から画像解析、Oracle Machine Learning AIなどのさらなる分析が行えます。

このユースケースは、専門の医療従事者に頼らずに一般の人でも複雑な医療情報と健康検査結果を簡単かつ迅速に解釈し、修正措置を講じることができることを示しています。

「これを要約してください…」

この例は「これを説明してください」の例と非常に似ており、そのようなコマンド機能の多目的性を示しています。この場合、コンテンツはx(例:3)文以下のテキストと音声で要約されます。

このユースケースは、大量の情報を迅速に消化する方法を示しています。

「Summariesからすべてを選択…」

このコマンドに対して、Unityのクライアント側アプリはサーバーサイドを呼び出してOracleデータベースをクエリし、過去の記録されたコマンドの画像やテキストなどのさまざまな情報を返します。

このユースケースは明らかにこのシナリオを超えています。それは実際にはどこからでもデータベースをクエリし、Oracleデータベースが提供するすべての複雑な機能を使用する能力です。クエリはテキスト、音声、画像、音声からテキストへのSQL、状況や環境情報やセンサーなどに基づいて行うことができ、高度な分析クエリなども含まれます。

「[YouTubeビデオ]の転記…」

これに対して、「音声の転記」とは異なり、このコマンドに対して、アプリはユーザーのビューにYouTubeのURLがあるかどうかをチェックし、もしあればAPIを使用してビデオの転記を取得します。前述のように、さらに「転記と要約」することもできます。

このユースケースは、大量の情報を迅速に消費し、ビジョンや聴覚障害を持つ人々にとって有利な理由や目的に応じて、ビデオや音声など、さまざまな入力ソースから取得できることを示しています。

「[…の]イメージを生成する ストップ イメージを生成する」

これに対して、Unityアプリはユーザーの音声を録音し、「イメージの生成を停止」と言われるまで停止します。音声はサーバーサイドアプリケーションに送信され、それから転記され、転記の末尾の「イメージの生成を停止」が削除され、テキストの説明がStable Diffusion(またはDALL-Eなど)に送信され、イメージが作成されます。それからアプリケーションとヘッドセットにイメージが表示されます。

これはもちろん非常に単純な例ですし、この機能は2Dに限らず、3Dのイメージ、音声などにも制限されません。これにより、クイックなストーリーボード作成、コラボレーション、トレーニング、AEC(建築、エンジニアリング、建設)、ゲームなどに対して、動的にイメージを生成して追加し、ビジュアルコンテキストを提供する能力が示されます。これはUSD(Universal Scene Description)やNVidiaのOmniverseプラットフォームといったテクノロジーとも組み合わせて、非常に魅力的なコラボレーション体験を提供することもできます。

「これについてディストピアの物語を語り、感情を伝える…」

これに対しても、Unityのクライアント側アプリはユーザーの視点から写真を撮り、サーバーサイドコンポーネントに送信します。この時はOracle Vision AIを使用してユーザーの視界に存在するすべてのオブジェクトを識別します。そしてこれらのオブジェクトをCohere(または他のAI)に送り、コンテンツから特定のスタイルの物語を生成するように要求します。この物語はさらにOracleのAI Sentiment Analysisサービスを使用して分析され、物語と感情分析はテキストと音声でユーザーに送られます。

このユースケースは、ムードや興味深いオブジェクトのセットを中心に物語を創造する可能性だけでなく、軍事や警察、健康と安全、社会など、さまざまなシナリオでの状況分析にも利用できることを示しています。

この記事の冒頭にリンクされたこのシリーズの第3ブログでは、他の2つの例が紹介されています。

「オブジェクトの識別…」

これに対しても、Unityのクライアント側アプリはユーザーの視点から写真を撮り、サーバーサイドコンポーネントに送信します。この時はOracle Vision AI/Object Detectionを使用してオブジェクトとその相対座標を検出します。これらはUnityのクライアント側アプリに送られ、これらの座標を通してレイキャストを投影し、部屋の中にあるオブジェクトの空間的な位置に識別ラベル付きの境界ボックスを描画し、またそれらが位置する空間座標からオブジェクト名を音声で伝えます。

このコマンドや他のコマンド/機能におけるユースケースに関して、視覚障害の支援、アルツハイマー病、未知の難解なアイテムの識別、脅威や興味などの分析など、XRデバイスが周囲の状況についてのコンテキストに基づいた音声と視覚のフィードバックを提供することで、潜在的な利点を想像することは難しくありません。

「会話を開始する…」

これに対しても、Unityのクライアント側アプリはユーザーの視点から写真を撮り、サーバーサイドコンポーネントに送信します。この時はOracle Vision AI/Document AIを使用してテキストを取得し(さまざまな書籍のタイトル)、ランダムにタイトルを選び、そのテキストをいくつかの(当時はGPT-3が最新でした)会話モデルに送信し、さまざまな会話応答をフィードバックします。これらの応答、またはさまざまなモデルからの情報は、ユーザーに提供されます。

そのような機能が提供する状況認識のユースケースはまたたくさんありますが、良い会話を始める能力は非常に強力です。

ソースコード、OpenXR、およびその他の開発詳細

このアプリケーションに関連するプログラムとコンポーネントのキースニペットをこのブログで説明します。 UnityフロントエンドとJavaバックエンドの完全なソースコードはGitHubで見つけることができます。 このリポジトリは他の機能、異なる言語、フレームワークなどの例と共に成長し続けます。 また、近日開催予定の「Oracleと一緒にXRを開発する」ワークショップのコードもここにあります。 これらの具体的な例では、UnityとJavaの基本的な理解が必要です。 また、使用しているXRヘッドセットの詳細も必要です。

このアプリケーションは、Hololens 2(このブログの写真とビデオに表示されている)とMagic Leap 2でテストされています。 UnityアプリケーションはMRTK 3(ミックスドリアリティツールキット)を使用してコーディングされており、OpenXR標準に準拠しています。 Magic Leapは最近、Microsoftによって形成され、QualcommをメンバーとするMRTKステアリング委員会に加わりました。 OpenXRのこの広範な採用により、それに基づいて書かれたアプリケーションはより移植性があります。ただし、Appleはメンバーではなく、ソフトウェアとさまざまなハードウェアが連携する必要がある他の技術と同様に、この標準でも、コードは特定のネイティブ機能に対するアダプタを持つ必要があります。特にアプローチと機能が製品間で大きく異なるXRスペースでは。

たとえば、説明されているアプリケーションは実際にはかなりシンプルです(1 / inputは通常、デバイス固有のセットアップを持っていますが、2、3、および大部分の4はそのまま移植可能です):

  1. XRデバイスから入力(写真、ビデオ、オーディオなど)を取得します。
  2. 入力をサーバーに送信します(AI、データベースなどの処理)。
  3. サーバーサイドから応答を受け取ります。
  4. 応答の内容を出力として表示します(テキスト、写真、ビデオ、音声など)。

上記の順序リストで関与する「コードなし」とコードを見てみましょう。

UnityシーンにMRTKオブジェクトを追加します。 このオブジェクトには、Experience Settings、Camera、Input、Boundary、Teleport、Spatial Awarenessなどの設定を含むプロファイルが含まれています。 Inputの下には、コントローラ、ジェスチャなどのさまざまな設定があります。 ここでは、「Explain this」、「Generate image」などのキーワードを指定します。

次に、シーンにMicrosoft.MixedReality.Toolkit.Input.SpeechInputHandlerコンポーネントを追加します。 このコンポーネントは、定義したキーワードをアクションにマッピングします。 たとえば、ここでは、ExplainThisメソッドがTakePicAndProcessAIスクリプト/クラスを持つオブジェクトの一部として、ユーザーが「Explain this」と言ったときに呼び出されることがわかります。

TakePicAndProcessAIのC#ソースを詳しく見てみると、次のようなExplainThisが表示されます(一時的に)ローカルに保存するためのロジックと設定が含まれています。 OnCapturedPhotoToDiskコールバックもあります。

次に、OnCapturedPhotoToDiskは、ピクチャ/イメージをテクスチャにロードし、ユーザーの前に表示し、ProcessAIサブルーチンを呼び出します。 このProcessAIサブルーチンには、それに提供されたパラメータに基づいて動的なコードがありますが、サーバーサイドにネットワークコールを行い、データをやりとりします。 見返りのAIコンテンツをテキストフィールドに表示します(または2Dまたは3Dオブジェクト、場合によっては)、ユーザーが見るためにテキストを音声に変換しますなど。

サーバーサイドでは、Unityアプリから送信された画像を処理し、Vision AIから取得したテキストを抽出するために、次のような簡単なロジックがあります:

および次のようなCohere(またはHugging FaceまたはOpenAI)を使用してVision AIから取得したテキストを要約するための次のロジック:

さらに、Oracleデータベースのストレージ、検索などを処理するための次のロジックもあります。

再度言いますが、このサーバーサイドのロジックはOCIサービス、Cohereサービス、およびOracleデータベースがすべてサポートしているため、どの言語でも実装可能です。

追加の考察

AIとXRが一緒に使用され、Oracleによって容易になる方法と例をいくつか紹介しました。このトピックや他のOracle Cloudとデータベースを使用したXRの分野について、さらにブログを発信することを楽しみにしています。これには、OracleデータベースのSpatialコンポーネントでの新しい高度な機能(.OBJメッシュ、ポイントクラウドなど)の使用や、リアルタイムでUnityと連携して実行時に動作する処理や、Oracleデータベース自体内で共有されるサーバーサイド言語の実行能力などが含まれます。また、「Oracleと一緒にXRを開発する」ワークショップも近々公開される予定です。

XRとOracleのクラウドやデータベースに関する詳細な情報や、マイクロサービス、観測可能性、トランザクション処理などのモダンなアプリ開発のさまざまなトピックについては、私の他の出版物をご覧ください。最後に、新しいブログやビデオの提案や質問がある場合は、お気軽にご連絡ください。提案には非常にオープンです。お読みいただき、ありがとうございました。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more