コマンドラインを使用して動画にラベルを付ける
このクイックスタートでは、以下のプロセスを順を追って説明します。
- Cloud Storage に一連の動画をコピーする。
- 動画とそのラベルをリストした CSV ファイルを作成する。
- AutoML Video を使用してデータセットを作成し、モデルをトレーニングして使用する。
始める前に
プロジェクトを設定する
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成する
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project 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
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project 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
リクエストのデータを使用する前に、次のように置き換えます。
- dataset-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/datasets
JSON 本文のリクエスト:
{ "displayName": "dataset-name", "videoClassificationDatasetMetadata": { } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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
name
を返します。このようなレスポンスの例を次に示します。project-number
はプロジェクトの番号、operation-id
はリクエストに対して作成された長時間実行オペレーションの ID です。
トレーニング データをインポートする
REST
トレーニング データをインポートするには、importData
メソッドを使用します。この方法では、次の 2 つのパラメータを指定する必要があります。
- トレーニングへのパスを含む CSV へのパス。
- テストデータの CSV ファイル。注: これらのファイルは、Cloud Storage の「automl-video-demo-data」バケットで使用できます。
リクエストのデータを使用する前に、次のように置き換えます。
- input-uri: アノテーションを付けるファイルを含む Cloud Storage バケット(ファイル名を含む)。先頭は gs:// でなければなりません。例:
"inputUris": ["gs://automl-video-demo-data/hmdb_split1.csv"]
- dataset-id: データセットのデータセット識別子(表示名ではない)に置き換えます。例:
VCN4798585402963263488
- 注:
- 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": input-uri } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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
VCN7506374678919774208
を含むレスポンスを示しています。
インポート オペレーションのステータスを取得する
次の curl
または PowerShell コマンドを使用して、データ インポート オペレーションのステータスをクエリできます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- operation-id: データ インポート オペレーションのオペレーション ID に置き換えます。
- 注:
- 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
と表示されます。エラーは発生していません。
すべてのデータセットを一覧表示する
次の curl
または PowerShell コマンドを使用して、データセットのリストと、データセットにインポートされたサンプル動画の数を取得します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
モデルのトレーニング
モデル トレーニング オペレーションを開始する
データセットを作成し、トレーニング データをデータセットにインポートしたら、モデルをトレーニングできます。
次の curl
または PowerShell コマンドを使用して、モデルをトレーニングします。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- dataset-id: この ID は、データセットの名前の最後の要素です。たとえば、データセットの名前が
projects/434039606874/locations/us-central1/datasets/VCN3104518874390609379
の場合、データセットの ID はVCN3104518874390609379
です。 - 注:
- 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 本文のリクエスト:
{ "displayName": "test_model", "dataset_id": "dataset-id", "videoClassificationModelMetadata": {} }
リクエストを送信するには、次のいずれかのオプションを選択します。
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
{ "name": "projects/project-number/locations/location-id/operations/operation-id", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "progressPercentage": 100, "createTime": "2020-02-27T01:56:28.395640Z", "updateTime": "2020-02-27T02:04:12.336070Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.Model", "name": "projects/project-number/locations/location-id/models/operation-id", "createTime": "2020-02-27T02:00:22.329970Z", "videoClassificationModelMetadata": { "trainBudget": "1", "trainCost": "1", "stopReason": "BUDGET_REACHED" }, "displayName": "a_98487760535e48319dd204e6394670" } }
モデル トレーニング オペレーションのステータスを取得する
次の curl
または PowerShell コマンドを使用して、モデルをトレーニングします。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- operation-id: トレーニング オペレーションのオペレーション ID に置き換えます。
- 注:
- 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
が表示されます。エラーはありません。
モデルが使用可能であることを確認する
モデル トレーニング オペレーションが正常に完了したら、次の curl
または PowerShell コマンドを使用してプロジェクトのモデルを一覧表示することにより、モデルが使用可能であることを確認できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- dataset-id: データセットのデータセット識別子(表示名ではない)に置き換えます。
- model-name: モデルに選択した名前に置き換えます。
- 注:
- 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
例:
VCN1741767155885539328
。
予測を行う
動画のアノテーション(予測)をリクエストするには、batchPredict
コマンドを実行します。batchPredict
コマンドは、Cloud Storage バケットに保存されている CSV ファイルを入力として受け取ります。このファイルには、アノテーションを付ける動画へのパス、アノテーションを付ける動画のセグメントを特定する開始時間と終了時間が格納されています。このクイックスタートでは、この CSV ファイルの名前は hmdb_split1_test_gs_predict.csv
です。
次の curl
または PowerShell コマンドを実行して、バッチ(非同期)予測リクエストを行います。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- input-uri: アノテーションを付けるファイルを含む Cloud Storage バケット(ファイル名を含む)。先頭は gs:// でなければなりません。例:
"inputUris": ["gs://automl-video-demo-data/hmdb_split1_test_gs_predict.csv"]
- output-bucket: Cloud Storage バケットの名前に置き換えます。例:
my-project-vcm
- object-id: データ インポート オペレーションのオペレーション ID に置き換えます。
- 注:
- 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" } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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
バッチ予測リクエストのオペレーション ID が返されます(例: VCN926615623331479552
)。
予測オペレーションのステータスを取得する
次の curl
または PowerShell コマンドを使用して、バッチ予測オペレーションのステータスをクエリできます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- operation-id: データ インポート オペレーションのオペレーション ID に置き換えます。
- 注:
- 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
と表示されます。エラーは発生していません。
バッチ予測タスクが完了すると、コマンドで指定した Cloud Storage バケットに予測の出力が保存されます。動画セグメントごとに JSON ファイルがあります。例:
my-video-01.avi.json
{ "inputUris": ["gs://automl-video-demo-data/sample_video.avi"] "segment_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 4, "nanos": 960000000 } }, "confidence": 0.43253016 }, { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 4, "nanos": 960000000 } }, "confidence": 0.56746984 } ], "frames": [ ] } ], "shot_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 5 } }, "confidence": 0.43253016 }, { "segment": { "start_time_offset": { }, "end_time_offset": { "seconds": 5 } }, "confidence": 0.56746984 } ], "frames": [ ] } ], "one_second_sliding_window_classification_annotations": [ { "annotation_spec": { "display_name": "ApplyLipstick", "description": "ApplyLipstick" }, "segments": [ ], "frames": [ { "time_offset": { "nanos": 800000000 }, "confidence": 0.54533803 }, { "time_offset": { "nanos": 800000000 }, ... "confidence": 0.57945728 }, { "time_offset": { "seconds": 4, "nanos": 300000000 }, "confidence": 0.42054281 } ] } ], "object_annotations": [ ], "error": { "details": [ ] } }
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトとそのリソースをまとめて削除してください。
モデルや関連するデータセットが不要になった場合は削除できます。
モデルの一覧表示
次の curl
または PowerShell コマンドを使用して、プロジェクトのモデルとその ID を一覧表示できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- model-name: モデルの作成時にレスポンスで指定された完全なモデル名。完全な名前の形式: projects/project-number/locations/location-id/models
- 注:
- 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 レスポンスが返されます。
モデルの削除
モデルを削除するには、次のコマンドを使用します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- model-id: モデルの識別子に置き換えます。
- 注:
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
DELETE https://automl.googleapis.com/v1beta1/projects/project-number/locations/test/models/model-id
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
データセットの一覧表示
次の curl
または PowerShell コマンドを使用して、プロジェクトのデータセットとその ID を一覧表示できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。
HTTP メソッドと URL:
https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/datasets
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
データセットの削除
次の curl
または PowerShell コマンドを使用して、データセットを削除できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- dataset-name: 完全なデータセット名。データセットの作成時にレスポンスで返されます。完全な名前の形式:
projects/project-number/locations/location-id/datasets/dataset-id
- project-number: プロジェクトの番号。
- location-id: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。 - dataset-id: データセットの作成時に指定された ID
HTTP メソッドと URL:
DELETE https://automl.googleapis.com/v1beta1/dataset-name
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
次のステップ
- 分類ワークフローの詳細