データ取り込みストリームを作成してアプリに処理ノードを追加したら、処理されたデータを送信する場所を選択する必要があります。ライブ配信アプリの出力を直接受信して、リアルタイム分析に基づいて対応する方法もあります。
一般に、モデルの出力を Vertex AI Vision の Media Warehouse や BigQuery などのGoogle Cloud データ ウェアハウスに保存するようにアプリを構成します。データがこれらのいずれかのウェアハウスに保存されると、アプリケーション グラフに基づいてオフライン分析ジョブで使用できます。ただし、モデルの出力をライブ ストリーミングで受け取ることもできます。Vertex AI Vision にモデル出力をストリーム リソースに転送させ、コマンドライン ツール(vaictl
)または Vertex AI Vision API を使用してリアルタイムで使用できます。
次の 3 つのノードを含む次のアプリケーション グラフがあるとします。
- データソース ノード「入力ストリーム」(
input-stream
) - 処理ノード「占有人数」(
occupancy-count
) - アプリ出力の宛先ノード「Media Warehouse」(
warehouse
)
現在、アプリの出力はストリームから空室数カウント プロセスに送信され、Vertex AI Vision の Media Warehouse に保存されます。
API アプリの構成:
![]() |
{ "applicationConfigs": { "nodes": [ { "displayName": "Input Stream", "name": "input-stream", "processor": "builtin:stream-input" }, { "displayName": "Occupancy Count", "name": "occupancy-count", "nodeConfig": { "occupancyCountConfig": { "enablePeopleCounting": true, "enableVehicleCounting": true } }, "parents": [ { "parentNode": "input-stream" } ], "processor": "builtin:occupancy-count" }, { "displayName": "Media Warehouse", "name": "warehouse", "nodeConfig": { "mediaWarehouseConfig": { "corpus": "projects/PROJECT_ID/locations/LOCATION_ID/corpora/CORPUS_ID", "ttl": "86400s" } }, "parents": [ { "parentNode": "input-stream" }, { "parentNode": "occupancy-count" } ], "processor": "builtin:media-warehouse" } ] } } |
ストリーム出力を有効にする(Google Cloud コンソール)
ストリーム出力を有効にするには、最初にモデルをデプロイするか、モデルをデプロイ解除してから再デプロイします。
Console
Vertex AI Vision ダッシュボードの [アプリケーション] タブを開きます。
リストからアプリの名前の横にある [グラフを表示] を選択します。
アプリケーション グラフビルダー ページで、[デプロイ] ボタンをクリックします。
表示された [アプリケーションをデプロイ] オプション メニューで、[
出力ストリーミングを有効にする] を選択します。対応する [モデル] プルダウン メニューから、ストリーミング出力を有効にするモデルを選択します。
[デプロイ] をクリックします。
ストリーム出力を有効にする(API)
アプリノードを更新する
モデルノードが出力をストリームに送信するように、コマンドラインでアプリの構成を更新できます。
この手順が完了したら、アプリ インスタンスを更新して、分析ノード出力データを受信するストリーム リソースを指定できます。
REST
この例では、projects.locations.applications.patch メソッドを使用します。このリクエストは、前のサンプルアプリの API アプリ構成を更新して、occupancy-count
ノードが出力アノテーションを Vertex AI Vision ストリームに送信するようにします。この動作は output_all_output_channels_to_stream
フィールドで有効にします。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT: 実際の Google Cloud プロジェクト ID またはプロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - APPLICATION_ID: ターゲット アプリケーションの ID。
HTTP メソッドと URL:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
リクエストの本文(JSON):
{ "applicationConfigs": { "nodes": [ { "displayName": "Input Stream", "name": "input-stream", "processor": "builtin:stream-input" }, { "displayName": "Occupancy Count", "name": "occupancy-count", "nodeConfig": { "occupancyCountConfig": { "enablePeopleCounting": true, "enableVehicleCounting": true } }, "parents": [ { "parentNode": "input-stream" } ], "processor": "builtin:occupancy-count", "output_all_output_channels_to_stream": true } ] } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID" | Select-Object -Expand Content
200 OK
ステータスを返します。サービスはそれに応じてアプリケーション リソースを更新します。
アプリ インスタンスを更新する
上の例は、アプリを更新する方法を示しています。これにより、ターゲット ノードがストリームに出力を送信できるようになります。このオプションを有効にしたら、必要に応じてアプリ インスタンスを更新して、分析ノード出力データを受信するストリーム リソースを指定できます。
このコマンドでストリームを指定しない場合は、アプリ プラットフォームは、アプリノードがデプロイされたときに作成されたデフォルトのストリームを引き続き使用します。
ノードが出力を送信するストリーム リソースを作成する必要があります。
を指定してから、次のリクエストを送信します。
REST
この例では、projects.locations.applications.updateApplicationInstances メソッドを使用します。このリクエストでは、前のサンプルアプリの更新された API アプリ構成を使用します。前の更新コマンドで、出力アノテーションを Vertex AI Vision ストリームに送信できるように occupancy-count
ノードを設定しました。このコマンドは、そのプロデューサー occupancy-count
ノードから既存のストリーム リソースにデータを送信するようにアプリ インスタンスを更新します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT: 実際の Google Cloud プロジェクト ID またはプロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - APPLICATION_ID: ターゲット アプリケーションの ID。
inputResources
: 現在のアプリケーション インスタンスの入力リソース。これは、次のフィールドを含むオブジェクトの配列です。consumerNode
: 入力リソースを受信するグラフノドの名前。inputResource
: 入力リソースの完全な名前。
outputResources.outputResource
: アプリデータを出力するstream
リソース。outputResources.producerNode
: アプリ出力プロデューサー ノードの名前。この例では、分析ノードoccupancy-count
です。- INSTANCE_ID: アプリ インスタンスの ID。
HTTP メソッドと URL:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
リクエストの本文(JSON):
{ "applicationInstances": [ { "instance": { "inputResources": [ { "consumerNode": "input-stream", "inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/INPUT_STREAM_ID" } ], "outputResources":[ { "outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/OUTPUT_STREAM_ID", "producerNode": "occupancy-count" } ] }, "instanceId": INSTANCE_ID } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances" | Select-Object -Expand Content
200 OK
ステータスを返します。サービスはそれに応じてアプリケーション インスタンスを更新します。