動画内オブジェクトのトラッキング
モデルの作成(トレーニング)が済んだら、batchPredict
メソッドを使用して動画の予測をリクエストできます。動画のリストを含む CSV ファイルを batchPredict
メソッドに渡します。batchPredict
メソッドでは、モデルによって予測されたオブジェクトの検出とトラッキングを行うことで、動画にアノテーションが付けられます。
モデルの最大寿命は 2 年です。2 年経つと、動画にアノテーションを付けるには、新しいモデルを作成してトレーニングする必要が生じます。
予測の例
AutoML Video Object Tracking にバッチ予測をリクエストするには、アノテーションを付ける動画への Cloud Storage パスをリストした CSV ファイルを作成します。開始時間と終了時間を指定して、動画のセグメントにのみアノテーションを付けるよう AutoML Video Object Tracking に指示することもできます。開始時間はゼロ以上で、終了時間より前にする必要があります。終了時間は開始時間より後で、動画の長さ以下にする必要があります。
次の例は、開始時間と終了時間を 0,inf
として指定して、動画全体にアノテーションを付ける方法を示しています。
gs://my-videos-vcm/cow_video.mp4,0,inf gs://my-videos-vcm/bird_video.mp4,10.00000,15.50000
AutoML Video Object Tracking がモデルによる予測の結果を書き込む出力ファイルのパスも指定する必要があります。このパスは、書き込み権限がある Cloud Storage バケットとオブジェクトである必要があります。
各動画の長さは 3 時間までで、最大ファイルサイズは 50 GB です。AutoML Video Object Tracking では、12 時間の処理時間で約 100 時間分の動画の予測を生成できます。
ウェブ UI
- AutoML Video Object Tracking UI を開きます。
- 表示されたリストから、使用するモデルをクリックします。
- モデルの [テストと使用] タブで次の操作を行います。
- [モデルのテスト] で、予測に使用する CSV ファイルを選択します。この CSV ファイルには、アノテーションを付ける動画のリストが含まれている必要があります。
[Test your model] ではさらに、アノテーション結果を受け取る Cloud Storage バケット内のディレクトリを選択します。
アノテーション結果を保持する特定の結果フォルダを Cloud Storage バケットに実際に作成してもかまいません。
- [Get Predictions] をクリックします。
アノテーションを付ける動画の数によっては、予測を取得する処理に時間がかかることがあります。
処理が完了すると、モデルページの [Recent Predictions] の下に結果が表示されます。 結果を見るには、次の手順に従います。
- [Recent Predictions] の [Predictions] 列で、表示する予測の [View] をクリックします。
- [Video] で、結果を表示する動画の名前を選択します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- model-id: モデルの ID に置き換えます。この ID は、モデルの名前の最後の要素です。たとえば、モデルの名前が
projects/project-number/locations/location-id/models/VOT6312181905852727296
の場合、モデルの ID はVOT6312181905852727296
です。 - request-id: このフィールドに任意のデジタル値を割り当てます。
- bucket-name: 使用する Cloud Storage バケットの名前に置き換えます。例:
my-project-vcm
- input-file: アノテーションを付ける動画を指定した CSV ファイルの名前に置き換えます。
- output-storage-path: 予測の出力を保存する Cloud Storage バケットへのパスに置き換えます。AutoML Video Object Tracking は、
prediction-model_name-timestamp
という形式でこのパスに結果のサブフォルダを作成します。このサブフォルダには、バッチ リクエスト内の各動画の予測ファイルが格納されます。このパスへの書き込み権限が必要です。 - 注:
- 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):
{ "request_id": "request-id", "inputConfig": { "gcsSource": { "inputUris": ["gs://bucket-name/input-file.csv"] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "gs://output-storage-path" } }, "params": { "score_threshold": "0.0" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/model-id:batchPredict"
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/model-id:batchPredict" | Select-Object -Expand Content
VOT1741767155885539328
を含むレスポンスを示しています。
Java
AutoML Video Object Tracking への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
AutoML Video Object Tracking への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
AutoML Video Object Tracking への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
予測オペレーションのステータスを取得する
次の 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": [ ] } }