本頁說明如何使用 Google Cloud 控制台或 Vertex AI API,從影片分類模型取得批次推論。批次推論為非同步要求。您可以直接從模型資源要求批次推論,而不需要將模型部署至端點。
AutoML 影片模型不支援線上推論。
取得批次推論
如要提出批次推論要求,您必須指定輸入來源和輸出格式,讓 Vertex AI 儲存推論結果。
輸入資料規定
提交批次要求時,應在輸入內容中指定要送交模型推論的項目。AutoML 影片模型類型的批次推論會使用 JSON 列檔案指定要推論的影片清單,然後將 JSON 列檔案儲存在 Cloud Storage 值區中。您可以為 timeSegmentEnd
欄位指定 Infinity
,以便指定影片結束時間。以下範例顯示輸入 JSON Lines 檔案中的單一行。
{'content': 'gs://sourcebucket/datasets/videos/source_video.mp4', 'mimeType': 'video/mp4', 'timeSegmentStart': '0.0s', 'timeSegmentEnd': '2.366667s'}
要求批次推論
如需批次推論要求,您可以使用 Google Cloud 控制台或 Vertex AI API。視您提交的輸入項目數量而定,批次推論工作可能需要一些時間才能完成。
Google Cloud 控制台
使用 Google Cloud 控制台要求批次推論。
在 Google Cloud 控制台的 Vertex AI 專區中,前往「批次預測」頁面。
按一下「Create」,開啟「New batch prediction」視窗,然後完成下列步驟:
- 輸入批次推論的名稱。
- 在「Model name」(模型名稱) 中,選取要用於此批次推論的模型名稱。
- 在「Source path」中,指定 JSON Lines 輸入檔案所在的 Cloud Storage 位置。
- 在「Destination path」(目的地路徑) 中,指定批次推論結果的儲存位置。輸出格式取決於模型的目標。圖片目標的 AutoML 模型會輸出 JSON Lines 檔案。
API
使用 Vertex AI API 傳送批次推論要求。
REST
使用任何要求資料之前,請先替換以下項目:
- LOCATION_ID:模型儲存及執行批次推論工作的位置。例如:
us-central1
。 - PROJECT_ID:您的專案 ID
- BATCH_JOB_NAME:批次工作顯示名稱
- MODEL_ID:模型的 ID,用於推論
- THRESHOLD_VALUE (選用):模型只會傳回可信度分數至少為此值的推論
- SEGMENT_CLASSIFICATION (選用):布林值,決定是否要求片段層級分類。Vertex AI 會針對您在輸入例項中指定的整個影片片段,傳回標籤及其信心分數。預設為
true
。 - SHOT_CLASSIFICATION (選用):布林值,用於決定是否要求鏡頭層級分類。Vertex AI 會針對您在輸入例項中指定的整個影片時間片段,決定中每個拍攝鏡頭的分界。接著,Vertex AI 會傳回每個偵測到鏡頭的標籤和信心分數,以及該鏡頭的開始和結束時間。預設值為
false
。 - ONE_SEC_INTERVAL_CLASSIFICATION (選用):布林值,用來決定是否以一秒的間隔要求影片分類。Vertex AI 會針對您在輸入例項中指定的整個影片時間片段,傳回每一秒的標籤和其信心分數。預設值為
false
。 - URI:輸入 JSON Lines 檔案的 Cloud Storage URI。
- BUCKET:您的 Cloud Storage 值區
- PROJECT_NUMBER:系統自動產生的專案編號
HTTP 方法和網址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
JSON 要求主體:
{ "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID", "modelParameters": { "confidenceThreshold": THRESHOLD_VALUE, "segmentClassification": SEGMENT_CLASSIFICATION, "shotClassification": SHOT_CLASSIFICATION, "oneSecIntervalClassification": ONE_SEC_INTERVAL_CLASSIFICATION }, "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": ["URI"], }, }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "OUTPUT_BUCKET", }, }, }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/batchPredictionJobs/BATCH_JOB_ID", "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": [ "CONTENT" ] } }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "BUCKET" } }, "state": "JOB_STATE_PENDING", "createTime": "2020-05-30T02:58:44.341643Z", "updateTime": "2020-05-30T02:58:44.341643Z", "modelDisplayName": "MODEL_NAME", "modelObjective": "MODEL_OBJECTIVE" }
您可以使用 BATCH_JOB_ID 輪詢批次工作狀態,直到工作 state
為 JOB_STATE_SUCCEEDED
為止。
Java
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Java。詳情請參閱 Vertex AI Java API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Node.js。詳情請參閱 Vertex AI Node.js API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python 適用的 Vertex AI SDK
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Vertex AI SDK for Python API 參考說明文件。
擷取批次推論結果
Vertex AI 會將批次推論輸出內容傳送至您指定的目的地。
批次推論工作完成後,推論的輸出內容會儲存在您在要求中指定的 Cloud Storage 值區。
批次推論結果範例
以下是影片分類模型的批次推論結果範例。
{ "instance": { "content": "gs://bucket/video.mp4", "mimeType": "video/mp4", "timeSegmentStart": "1s", "timeSegmentEnd": "5s" } "prediction": [{ "id": "1", "displayName": "cat", "type": "segment-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "5s", "confidence": 0.7 }, { "id": "1", "displayName": "cat", "type": "shot-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "4s", "confidence": 0.9 }, { "id": "2", "displayName": "dog", "type": "shot-classification", "timeSegmentStart": "4s", "timeSegmentEnd": "5s", "confidence": 0.6 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "1s", "confidence": 0.95 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "2s", "timeSegmentEnd": "2s", "confidence": 0.9 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "3s", "timeSegmentEnd": "3s", "confidence": 0.85 }, { "id": "2", "displayName": "dog", "type": "one-sec-interval-classification", "timeSegmentStart": "4s", "timeSegmentEnd": "4s", "confidence": 0.6 }] }