本頁面說明如何使用 Google Cloud 控制台或 Vertex AI API,從影片動作辨識模型取得批次推論結果。批次推論為非同步要求。您可以直接從模型資源要求批次推論,不必將模型部署至端點。
AutoML 影片模型不支援線上推論。
取得批次推論結果
如要提出批次推論要求,須指定輸入來源和輸出格式,Vertex AI 會將推論結果儲存至指定位置。
輸入資料規定
提交批次要求時,應在輸入內容中指定要送交模型推論的項目。AutoML 影片模型類型的批次推論作業會使用 JSON Lines 檔案指定要推論的影片清單,然後將 JSON Lines 檔案儲存在 Cloud Storage bucket 中。您可以為 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 專區中,前往「Batch predictions」(批次預測) 頁面。
按一下「建立」開啟「新增批次預測」視窗,然後完成下列步驟:
- 輸入批次推論的名稱。
- 在「Model name」(模型名稱) 中,選取要用於這批推論的模型名稱。
- 在「Source path」(來源路徑) 中,指定 JSON Lines 輸入檔案所在的 Cloud Storage 位置。
- 在「Destination path」(目的地路徑) 中,指定要儲存批次推論結果的 Cloud Storage 位置。輸出格式取決於模型目標。以圖片目標為主的 AutoML 模型會輸出 JSON Lines 檔案。
API
使用 Vertex AI API 傳送批次推論要求。
REST
使用任何要求資料之前,請先替換以下項目:
- LOCATION_ID:儲存模型及執行批次推論工作的區域。例如:
us-central1
。 - PROJECT_ID:您的專案 ID
- BATCH_JOB_NAME:批次作業的顯示名稱
- MODEL_ID:用於進行推論的模型 ID
- THRESHOLD_VALUE (選用):模型只會傳回信心分數至少為這個值的推論
- 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, }, "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
在試用這個範例之前,請先按照Java使用用戶端程式庫的 Vertex AI 快速入門中的操作說明進行設定。 詳情請參閱 Vertex AI Java API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Python API 參考說明文件。
擷取批次推論結果
Vertex AI 會將批次推論輸出內容傳送至您指定的目的地。
批次推論工作完成後,推論的輸出內容會儲存在您於要求中指定的 Cloud Storage bucket。
批次推論結果範例
以下是影片動作辨識模型提供的批次推論結果範例。
{ "instance": { "content": "gs://bucket/video.mp4", "mimeType": "video/mp4", "timeSegmentStart": "1s", "timeSegmentEnd": "5s" } "prediction": [{ "id": "1", "displayName": "swing", "timeSegmentStart": "1.2s", "timeSegmentEnd": "1.2s", "confidence": 0.7 }, { "id": "2", "displayName": "jump", "timeSegmentStart": "3.4s", "timeSegmentEnd": "3.4s", "confidence": 0.5 }] }