リモート ストリーミング入力を使用して人数カウントアプリを作成する

Vertex AI Vision は、動画 データの取り込み、分析、保存に使用できる AI を活用したプラットフォームです。Vertex AI Vision を使用すると、AI アプリケーションを構築してデプロイできます。Vertex AI Vision の他のプロダクト コンポーネントとの統合を活用して、エンドツーエンドの Vertex AI Vision ソリューションを構築できます。

Vertex AI Vision プラットフォームを使用してソリューションの実装を開始するには、次の Vertex AI Vision のコンセプトとコンポーネントを確認してください。

  • ストリーム: ソリューションの動画ストリーミング レイヤを表します。ストリーム ソースは、ライブ動画(IP カメラなど)または動画ファイル(MP4 ファイルなど)にできます。

  • アプリケーション: ストリームと AI プロセッサ間の接続を有効にして、動画に対して ML オペレーションを実行します。たとえば、カメラ ストリームを、カメラの前を通り過ぎる人の数をカウントする AI モデルに接続できます。

  • メディア ウェアハウス: ストリームによって取り込まれた動画をGoogle Cloud ストレージに保存します。この宛先にデータを保存すると、取り込まれたストリームのデータで使用される AI プロセッサから分析出力とメタデータをクエリできます。

利用人数カウント アプリケーションを作成する

環境を設定したら、まずデータを処理するアプリを作成します。アプリは、次のものを接続する自動化されたパイプラインと考えることができます。

  • データの取り込み: 動画フィードがストリームに取り込まれます。
  • データ分析: 取り込み後に AI モデルを追加できます。取り込まれた動画情報に対して、任意のコンピュータ ビジョン オペレーションを実行できます。
  • データ ストレージ: 2 つのバージョンの動画フィード(元のストリームと AI モデルで処理されたストリーム)をメディア ウェアハウスに保存できます。

Google Cloud コンソールでは、アプリはグラフとして表されます。また、Vertex AI Vision では、アプリグラフに少なくとも 2 つのノード(動画ソースノード(ストリーム)と、少なくとも 1 つのノード(処理モデルまたは出力先))が必要です。

空白のアプリを作成する

アプリグラフにデータを入力する前に、まず空のアプリを作成する必要があります。

コンソール

Google Cloud コンソールでアプリを作成します。

  1. Vertex AI Vision ダッシュボードの [アプリケーション] タブを開きます。

    [アプリケーション] タブに移動

  2. [作成] ボタンをクリックします。

  3. アプリ名として「occupancy-count-app」と入力し、地域を選択します。

  4. [作成] をクリックします。

アプリ コンポーネント ノードを追加する

空のアプリケーションを作成したら、次の 3 つのノードをアプリグラフに追加できます。

  1. 取り込みノード: 作成した Compute Engine VM インスタンスから送信されたデータを取り込むストリーム リソース。
  2. 処理ノード: 取り込まれたデータに対して動作する占有率分析モデル。
  3. ストレージ ノード: 処理済みの動画を保存するメディア ウェアハウス。メタデータ ストアとしても機能します。このウェアハウスでは、取り込まれた動画データに関する分析情報を生成できるほか、AI モデルがデータについて推論した情報を保存することもできます。

コンソール

コンソールでアプリにコンポーネント ノードを追加します。

  1. Vertex AI Vision ダッシュボードの [アプリケーション] タブを開きます。

    [アプリケーション] タブに移動

  2. occupancy-count-app 行で、グラフを表示を選択します。これで、処理パイプラインのグラフ ビジュアリゼーションが表示されます。

データ取り込みノードを追加する

  1. 入力ストリーム ノードを追加するには、サイドメニューの [コネクタ] セクションで [ストリーム] オプションを選択します。

  2. [ストリーム] メニューの [ソース] セクションで、[ストリームを追加] を選択します。

  3. [ストリームを追加] メニューで、 [新しいストリームを登録] を選択し、ストリーム名として occupancy-count-stream を追加します。

  4. ストリームをアプリグラフに追加するには、[ストリームを追加] をクリックします。

データ処理ノードを追加する

  1. 占有数モデルノードを追加するには、サイドメニューの [特殊モデル] セクションで [占有分析] オプションを選択します。

  2. デフォルトの選択肢である [人物] と [車両] はそのままにします。

データ ストレージ ノードを追加する

  1. 出力先(ストレージ)ノードを追加するには、サイドメニューの [コネクタ] セクションで [Vertex AI Vision の Media Warehouse] オプションを選択します。

  2. [Vertex AI Vision のメディア ウェアハウス] メニューで、[ウェアハウスを接続] をクリックします。

  3. [ウェアハウスを接続] メニューで、[新しいウェアハウスを作成] を選択します。ウェアハウスに occupancy-count-warehouse という名前を付け、TTL の期間を 14 日のままにします。

  4. [作成] ボタンをクリックしてウェアハウスを追加します。

アプリをデプロイして使用できるようにする

必要なコンポーネントをすべて使用してエンドツーエンドのアプリを構築したら、アプリを使用するための最後のステップとして、アプリをデプロイします。

コンソール

  1. Vertex AI Vision ダッシュボードの [アプリケーション] タブを開きます。

    [アプリケーション] タブに移動

  2. リスト内の occupancy-count-app アプリの横にある [グラフを表示] を選択します。

  3. アプリケーション グラフ ビルダーのページで、 [デプロイ] ボタンをクリックします。

  4. 次の確認ダイアログで、[デプロイ] を選択します。

    デプロイ オペレーションが完了するまでに数分かかることがあります。デプロイが完了すると、ノードの横に緑色のチェックマークが表示されます。

    UI にデプロイされたアプリ

動画をストリーミングするようにリモート マシンを設定する

これで、ストリーミング データを受信、処理、保存する準備が整った占有率カウント アプリがデプロイされました。次に、動画データをアプリに実際にストリーミングする必要があります。

このチュートリアルでは、動画をホストする Compute Engine VM インスタンスを作成し、そのストリーミング動画データを VM から送信します。

Linux VM を作成

Compute Engine VM インスタンスから動画を送信する最初の手順は、VM インスタンスの作成です。

コンソール

  1. コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. VM の名前を指定します。詳しくは、リソースの命名規則をご覧ください。

  5. (省略可)この VM のゾーンを変更します。Compute Engine は、複数のゾーンで各リージョンが均等に使用されるように、各リージョン内でゾーンのリストをランダム化します。

  6. 残りのデフォルト オプションはそのままにします。これらのオプションの詳細については、VM を作成して起動するをご覧ください。

  7. VM を作成して起動するには、[作成] をクリックします。

VM 環境を設定する

VM が起動したら、コンソールを使用してブラウザで SSH 接続を確立できます。この接続を確立したら、vaictl コマンドライン ツールをダウンロードして、アプリに動画を取り込むことができます。

コンソール

VM への SSH 接続を確立する

  1. コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 作成したインスタンス行の [接続] セクションで、[SSH] をクリックします。新しいブラウザ ウィンドウに SSH 接続が開きます。

    UI の SSH オプション

vaictl コマンドライン ツールをダウンロードする

  1. [ブラウザでの SSH] ウィンドウで、次のコマンドを使用して Vertex AI Vision(vaictl)コマンドライン ツールをダウンロードします。

    wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb
    
  2. 次のコマンドを実行して、コマンドライン ツールをインストールします。

    sudo apt install ./visionai_0.0-5_amd64.deb
    
  3. インストールをテストするには、次のコマンドを実行します。

    vaictl --help
    

アプリに動画ファイルを取り込む

VM 環境を設定したら、サンプル動画ファイルをコピーし、vaictl を使用して動画データを占有数アプリにストリーミングできます。

ブラウザでの SSH

サンプル動画を VM にコピーする

  1. VM の [ブラウザでの SSH] ウィンドウで、次の gcloud storage cp コマンドを使用してサンプル動画をコピーします。次の変数を置き換えます。
    • SOURCE: 使用する動画ファイルの場所。独自の動画ファイル ソース(gs://BUCKET_NAME/FILENAME.mp4 など)を使用することも、サンプル動画のいずれかを使用することもできます。
      • gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4(人物と車両を含む動画、ソース
      • gs://cloud-samples-data/vertex-ai-vision/highway_vehicles.mp4(車両のみの動画、ソース
    gcloud storage cp SOURCE .

VM から動画をストリーミングし、アプリにデータを取り込む

  1. このローカル動画ファイルをアプリの入力ストリームに送信するには、次のコマンドを使用します。次の変数を置き換える必要があります。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • LOCATION_ID: ロケーション ID。例: us-central1詳細については、クラウドのロケーションをご覧ください。
    • LOCAL_FILE.EXT: ローカル動画ファイルのファイル名。例: my-video.mp4
    • --loop フラグ: 省略可。ファイルデータをループしてストリーミングをシミュレートします。

    このコマンドは、動画ファイルをストリームにストリーミングします。--loop フラグを使用すると、コマンドを停止するまで動画がストリームにループされます。

    vaictl -p PROJECT_ID \
        -l LOCATION_ID \
        -c application-cluster-0 \
        --service-endpoint visionai.googleapis.com \
    send video-file to streams 'occupancy-count-stream' --file-path LOCAL_FILE.EXT --loop

vaictl 取り込みオペレーションの開始から動画がダッシュボードに表示されるまで、約 100 秒かかることがあります。

ストリームの取り込みが完了すると、Vertex AI Vision ダッシュボードの [ストリーム] タブで occupancy-count-stream ストリームを選択して、動画フィードを確認できます。

[ストリーム] タブに移動

UI でライブ動画がストリーミングされている様子
Google Cloud コンソールでストリームに取り込まれる動画のライブビュー。動画のクレジット: Elizabeth MavorPixabay) (ピクセル化を追加)。

ストレージ ウェアハウス内の動画コンテンツを検索する

動画データを処理アプリに取り込んだら、分析された動画データを表示したり、占有率分析情報に基づいてデータを検索したりできます。

コンソール

  1. Vertex AI Vision ダッシュボードの [ウェアハウス] タブを開きます。

    [ウェアハウス] タブに移動

  2. リストで occupancy-count-warehouse ウェアハウスを見つけて、アセットを表示をクリックします。

  3. [人数] または [車両数] セクションで、[最小] の値を 1 に、[最大] の値を 5 に設定します。

  4. Vertex AI Vision の Media Warehouse に保存されている処理済み動画データをフィルタするには、[検索] をクリックします。

    UI でファセット化された保存済みデータのビュー
    Google Cloud コンソールの検索条件に一致する保存済み動画データのビュー。動画提供者: PixabayElizabeth Mavor検索条件を適用)。