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


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 プロセッサから分析出力とメタデータをクエリできます。

目標

このチュートリアルでは、次の方法を説明します。

  • 利用人数カウント アプリを作成します。
  • アプリをデプロイして使用できるようにします。
  • 動画をストリーミングするようにリモートマシンを設定します。
  • ストリーミング動画をアプリのストリームノードに取り込みます。
  • ストレージの Vertex AI Vision の Media Warehouse で動画を検索します。

料金

このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。

新規の Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine and Vision AI APIs.

    Enable the APIs

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the following roles to the service account: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    6. Click Continue.
    7. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  6. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.
  7. Install the Google Cloud CLI.

  8. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Compute Engine and Vision AI APIs.

    Enable the APIs

  13. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the following roles to the service account: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    6. Click Continue.
    7. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  14. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.
  15. Install the Google Cloud CLI.

  16. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  17. To initialize the gcloud CLI, run the following command:

    gcloud init
  18. Cloud Storage バケットからサンプル動画ファイルをコピーする場合にのみ必要なロール。

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

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

  • データの取り込み: 動画フィードがストリームに取り込まれます。
  • データ分析: 取り込み後に 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. 占有数モデルノードを追加するには、サイドメニューの [Specialized models] セクションで [occupancy analytics] オプションを選択します。

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

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

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

  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検索条件を適用)。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

リソースを個別に削除する

Compute Engine VM インスタンスを削除する

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

ウェアハウスを削除する

  1. In the Google Cloud console, go to the Warehouses page.

    Go to the Warehouses tab

  2. Locate your occupancy-count-warehouse warehouse.
  3. To delete the warehouse, click Actions, click Delete warehouse, and then follow the instructions.

ストリームを削除する

  1. In the Google Cloud console, go to the Streams page.

    Go to the Streams tab

  2. Locate your occupancy-count-stream stream.
  3. To delete the stream, click Actions, click Delete stream, and then follow the instructions.

アプリを削除する

  1. In the Google Cloud console, go to the Applications page.

    Go to the Applications tab

  2. Locate your occupancy-count-app app.
  3. To delete the app, click Actions, click Delete application, and then follow the instructions.

次のステップ