動画へのアノテーション付け
モデルをトレーニングしたら、動画を一覧表示する batchPredict
メソッドに CSV ファイルを指定することで、予測をリクエストできます。batchPredict
メソッドは、モデルによる予測に基づいてラベルを適用します。
モデルの最大寿命は 2 年です。それ以降は、新しいモデルをトレーニングする必要があります。
予測の例
AutoML Video に対して予測のバッチをリクエストするには、アノテーションを付ける動画への Cloud Storage パスのリストが記載された CSV ファイルを作成します。開始時間と終了時間を指定して、動画のセグメント(セグメント レベル)にのみアノテーションを付けるよう AutoML Video に指示することもできます。開始時間はゼロ以上で、終了時間より前にする必要があります。終了時間は開始時間より後で、動画の長さ以下にする必要があります。inf
を使用して動画の終わりを示すこともできます。
gs://my-videos-vcm/short_video_1.avi,0.0,5.566667 gs://my-videos-vcm/car_chase.avi,0.0,3.933333 gs://my-videos-vcm/northwest_wildlife_01.avi,0.0,3.7 gs://my-videos-vcm/northwest_wildlife_02.avi,0.0,1.666667 gs://my-videos-vcm/motorcycles_and_cars.avi,0.0,2.633333 gs://my-videos-vcm/drying_paint.avi,0.0,inf
AutoML Video がモデルによる予測の結果を書き込む出力ファイルのパスも指定する必要があります。このパスは、書き込み権限がある Cloud Storage バケットとオブジェクトである必要があります。
各動画の長さは 3 時間までで、最大ファイルサイズは 50 GB です。AutoML Video では、12 時間の処理時間で約 100 時間分の動画の予測を生成できます。
動画の予測をリクエストするときは、params
セクションで次のオプションを設定できます。これらのオプションを指定しない場合、デフォルトのスコアしきい値が適用され、segment_classification が使用されます。
score_threshold - 0.0(信頼できない)から 1.0(信頼度が非常に高い)までの値。モデルが動画の予測を行う場合、指定した信頼スコア以上の結果のみが生成されます。API のデフォルト値は 0.5 です。
segment_classification - セグメント レベルの分類を有効にするには、true に設定します。この場合、AutoML Video から、リクエストの構成で指定した動画のセグメント全体のラベルとその信頼スコアが返されます。デフォルトは true です。
shot_classification - ショットレベルの分類を有効にするには、true に設定します。この場合、AutoML Video により、リクエストの構成で指定した動画のセグメント全体で各カメラショットの境界が特定されます。そして、検出されたショットごとのラベルとその信頼スコアが、ショットの開始時間と終了時間とともに返されます。デフォルトは false です。
1s_interval_classification - 1 秒間隔での動画の分類を有効にするには、true に設定します。AutoML Video から、リクエストの構成で指定した動画のセグメント全体について、1 秒単位でラベルとその信頼スコアが返されます。デフォルトは false です。
ウェブ UI
- AutoML Video UI を開きます。
- 表示されたリストから、使用するモデルをクリックします。
- モデルの [テストと使用] タブで次の操作を行います。
- [モデルのテスト] で、予測に使用する CSV ファイルを選択します。この CSV ファイルには、アノテーションを付ける動画のリストが含まれている必要があります。
[Test your model] ではさらに、アノテーション結果を受け取る Cloud Storage バケット内のディレクトリを選択します。
アノテーション結果を保持する特定の結果フォルダを Cloud Storage バケットに実際に作成してもかまいません。 そうすれば、結果ディレクトリに含まれている
video_classification.csv
ファイルを読み込むことで、以前の予測に簡単にアクセスできます。- [Get Predictions] をクリックします。
アノテーションを付ける動画の数によっては、予測を取得する処理に時間がかかることがあります。
処理が完了すると、モデルページの [Recent Predictions] の下に結果が表示されます。 結果を見るには、次の手順に従います。
- [Recent Predictions] の [Predictions] 列で、表示する予測の [View] をクリックします。
- [Video] で、結果を表示する動画の名前を選択します。
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
)。
CSV ファイルで指定した動画の数によっては、バッチ予測タスクが完了するまでに時間がかかることがあります。タスクが完了すると、次の例のように、オペレーションのステータスが done: true
と表示されます。エラーは発生していません。
{ "name": "projects/project-number/locations/location-id/operations/VCN926615623331479552", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "createTime": "2020-02-11T21:39:19.832131Z", "updateTime": "2020-02-11T21:43:43.908318Z", "done": true, "batchPredictDetails": { "inputConfig": { "gcsSource": { "inputUris": [ "gs://bucket-name/input-file.csv" ] } }, "outputInfo": { "gcsOutputDirectory": "output-storage-path/prediction-test_model_01-2019-01-11T21:39:19.684Z" } } } }
バッチ予測タスクが完了すると、コマンドで指定した Cloud Storage バケットに予測の出力が保存されます。動画セグメントごとに JSON ファイルがあります。次に例を示します。
my-video-01.avi.json
{ "input_uri": "automl-video-sample/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": [ ] } }
Java
AutoML Video に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
AutoML Video に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
AutoML Video に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。