コマンドラインを使用して動画オブジェクトを追跡する
このクイックスタートでは、以下のプロセスを順を追って説明します。
- Cloud Storage に一連の動画をコピーする。
- 動画とそのラベルをリストした CSV ファイルを作成する。
- AutoML Video Object Tracking を使用してデータセットを作成し、モデルをトレーニングして使用する。
始める前に
プロジェクトを設定する
- 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.
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_ID
は、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_ID
は、実際の Google Cloud プロジェクト名に置き換えます。
-
-
AutoML and Cloud Storage API を有効にします。
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_ID
は、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_ID
は、実際の Google Cloud プロジェクト名に置き換えます。
-
-
AutoML and Cloud Storage API を有効にします。
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - 環境変数
PROJECT_ID
をプロジェクト ID に設定します。export PROJECT_ID=PROJECT_ID
AutoML API 呼び出しとリソース名には、プロジェクト ID が含まれています。環境変数PROJECT_ID
は、ID の指定に便利です。
データセットの作成とトレーニング データのインポート
データセットの作成
データセットの名前を決め、次の curl
または PowerShell コマンドを使用して、その名前で新しいデータセットを作成します。
REST
POST リクエストを送信する方法は次のとおりです。この例では、Google Cloud CLI を使用してアクセス トークンを生成します。gcloud CLI のインストール手順については、AutoML Video Intelligence Object Tracking のクイックスタートをご覧ください。リクエストのデータを使用する前に、次のように置き換えます。
- dataset-name: ターゲット データセットの名前。
例:my_dataset_01
- 注:
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
リクエストの本文(JSON):
{ "displayName": "dataset-name", "videoObjectTrackingDatasetMetadata": { } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets" | Select-Object -Expand Content
VOT12345....
です。
トレーニング データをインポートする
REST
トレーニング データをインポートするには、importData
メソッドを使用します。この方法では、次の 2 つのパラメータを指定する必要があります。
- トレーニングへのパスを含む CSV へのパス。
- テストデータの CSV ファイル。注: これらのファイルは、Cloud Storage の「automl-video-demo-data」バケットで使用できます。
リクエストのデータを使用する前に、次のように置き換えます。
- dataset-id: データセットの IDこの ID は、データセットの名前の最後の要素です。例:
- データセット名:
projects/project-number/locations/location-id/datasets/3104518874390609379
- データセット ID:
3104518874390609379
- データセット名:
- bucket-name: モデル トレーニング ファイルリストの CSV ファイルを保存した Cloud Storage バケットの名前に置き換えます。
- csv-file-name: モデル トレーニング ファイルリストの CSV ファイル名に置き換えます。
- 注:
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData
リクエストの本文(JSON):
{ "inputConfig": { "gcsSource": { "inputUris": ["gs://bucket-name/csv-file-name.csv"] } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id:importData" | Select-Object -Expand Content
VOT7506374678919774208
を含むレスポンスを示しています。
インポート オペレーションのステータスを取得する
次の curl
または PowerShell コマンドを使用して、データ インポート オペレーションのステータスをクエリできます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- operation-id: リクエストに対して作成され、オペレーション開始時にレスポンスで指定された長時間実行オペレーションの ID(例:
VOT12345....
) - 注:
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
done: true
と表示されます。エラーは発生していません。- operation-name: AutoML Video Intelligence Object Tracking API から返されたオペレーションの名前。オペレーション名の形式は
projects/project-number/locations/location-id/operations/operation-id
です。
すべてのデータセットを一覧表示する
次の curl
または PowerShell コマンドを使用して、データセットのリストと、データセットにインポートされたサンプル動画の数を取得します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-number: プロジェクトの数
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets "
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets " | Select-Object -Expand Content
VOT3940649673949184000
は、リクエストに対して作成され、オペレーション開始時にレスポンスで指定された、長時間実行オペレーションのオペレーション ID です。
モデルのトレーニング
モデル トレーニング オペレーションを開始する
データセットを作成し、トレーニング データをデータセットにインポートしたら、カスタムモデルをトレーニングできます。次の curl
または PowerShell コマンドを使用して、モデルをトレーニングします。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- dataset-id: ターゲット データセットの名前。
たとえば、
my_dataset_01
表示名です。 - model-name: モデルに選択した名前に置き換えます。
- 注:
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models
リクエストの本文(JSON):
{ "datasetId": "dataset-id", "displayName": "model-name", "videoObjectTrackingModelMetadata": {}, }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models" | Select-Object -Expand Content
VOT1741767155885539328
を含むレスポンスを示しています。
モデル トレーニング オペレーションのステータスを取得する
モデルのトレーニング オペレーションのステータスを確認するには、次の curl
または PowerShell コマンドを実行します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- operation-name: AutoML Video Intelligence Object Tracking API から返されたオペレーションの名前。オペレーション名の形式は
projects/project-number/locations/location-id/operations/operation-id
です。 - 注:
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1beta1/operation-name
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/operation-name"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/operation-name" | Select-Object -Expand Content
done: true
と表示されます。エラーはありません。
モデルが使用可能であることを確認する
モデル トレーニング オペレーションが正常に完了したら、次のコマンドを使用してプロジェクトのモデルを一覧表示することにより、モデルが使用可能であることを確認できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-number: プロジェクトの数
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
予測を行う
batchPredict メソッドを使用して、動画のアノテーション(予測)をリクエストできます。batchPredict
メソッドには次の 2 つの入力が必要です。
- アノテーションを付ける動画へのパスを含む Cloud Storage バケットに保存された CSV ファイル。
- アノテーションを付ける動画のセグメントを特定する開始時間と終了時間。
このクイックスタートでは、traffic_video_batch_predict.csv
という名前の CSV ファイルを使用します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- model-id: モデルの識別子に置き換えます。
- input-uri: アノテーションを付けるファイルを含む Cloud Storage バケット(ファイル名を含む)。
gs://
で始まる必要があります。
例:"inputUris": ["gs://automl-video-demo-data/traffic_videos/traffic_video_batch_predict.csv"],
- output-bucket: 予測の結果を格納する Cloud Storage バケットに置き換えます。
- object-id: 予測リクエストの出力を Cloud Storage バケットのどこに保存するかを識別するオブジェクト名に置き換えます。注: Cloud Storage バケットへの書き込み権限が必要です。
- 注:
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:batchPredict
JSON 本文のリクエスト:
{ "inputConfig": { "gcsSource": { "inputUris": ["input-uri"] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "gs://output-bucket/object-id" } } "params": { "score_threshold": "0.0" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
予測オペレーションのステータスを取得する
次の curl
または PowerShell コマンドを使用して、バッチ予測オペレーションのステータスをクエリできます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-number: プロジェクトの数
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。 - operation-id: リクエストに対して作成され、オペレーション開始時にレスポンスで指定された長時間実行オペレーションの ID(例:
VOT12345....
)
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/operations/operation-id" | Select-Object -Expand Content
projects/project-number/locations/location-id/operations/operation-id
です。
バッチ予測タスクが完了すると、コマンドで指定した Cloud Storage バケットに予測の出力が保存されます。動画セグメントごとに JSON ファイルがあります。JSON ファイルは my-video-01.avi.json に似た形式であり、ファイル拡張子 .json が元のファイル名に追加されます。
{ "inputUris": ["automl-video-demo-data/sample_video.avi"], "object_annotations": [ { "annotation_spec": { "display_name": "Cat", "description": "Cat" }, "confidence": 0.43253016 "frames": [ { "frame": { "time_offset": { "seconds": 4, "nanos": 960000000 }, "normalized_bounding_box": { "x_min": 0.1, "y_min": 0.1, "x_max": 0.8, "y_max": 0.8 } } }, { "frame": { "time_offset": { "seconds": 5, "nanos": 960000000 }, "normalized_bounding_box": { "x_min": 0.2, "y_min": 0.2, "x_max": 0.9, "y_max": 0.9 } } } ], "segment": { "start_time_offset": { "seconds": 4, "nanos": 960000000 }, "end_time_offset": { "seconds": 5, "nanos": 960000000 } } } ], "error": { "details": [ ] } }
クリーンアップ
カスタムモデルや関連するデータセットが不要になった場合は削除できます。
モデルの削除
次の curl
または PowerShell コマンドを使用して、モデルを削除できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-number: プロジェクトの数
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。 - model-id: モデル ID に置き換えます。
HTTP メソッドと URL:
DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
データセットの削除
次の curl
または PowerShell コマンドを使用して、データセットを削除できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-number: プロジェクトの数
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。 - datase-id: データセット ID の ID に置き換えます。
HTTP メソッドと URL:
DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets/dataset-id
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。