準備物件追蹤的影片訓練資料

本頁面說明如何準備影片訓練資料,以用於 Vertex AI 資料集,訓練影片物件追蹤模型。

以下各節將說明資料需求、結構定義檔案,以及結構定義所定義的資料匯入檔案格式 (JSONL 和 CSV)。

或者,您也可以匯入未標註的影片,然後使用 Google Cloud 控制台標註影片 (請參閱「使用 Google Cloud 控制台標註」)。

資料條件

下列規定適用於用於訓練 AutoML 或自訂訓練模型的資料集。

  • Vertex AI 支援以下列影片格式,可用於訓練模型或要求預測 (為影片加上註解)。

    • .MOV
    • .MPEG4
    • .MP4
    • .AVI
  • 如要在網路控制台中查看影片內容或為影片加上註解,影片必須採用瀏覽器原生支援的格式。由於並非所有瀏覽器都能原生處理 .MOV 或 .AVI 內容,建議您使用 .MPEG4 或 .MP4 影片格式。

  • 檔案大小上限為 50 GB (長度上限為 3 小時)。不支援容器中具有格式錯誤或空白時間戳記的個別影片檔案。

  • 每個資料集的標籤數上限為 1,000。

  • 您可以為匯入檔案中的影片指派「ML_USE」標籤。在訓練期間,您可以選擇使用這些標籤將影片和相應的註解分割成「訓練」或「測試」集。針對影片物件追蹤,請注意以下事項:

    • 每個資料集中的已標籤視訊窗格數上限為 150,000。
    • 每個資料集的已加註定界框總數上限為 1,000,000。
    • 每個註解集的標籤數上限為 1,000。

用於訓練 AutoML 模型的影片資料最佳做法

下列做法適用於用於訓練 AutoML 模型的資料集。

  • 訓練資料應儘可能貼近要用來進行預測的資料。例如,如果您使用的資料樣本含有模糊和低解析的影片 (例如監視攝影機拍攝的影片),則訓練資料應該也要含有模糊和低解析影片。通常,您應該還要考慮為訓練影片提供多個角度、解析度和背景。

  • Vertex AI 模型通常無法預測人類無法指派的標籤。如果無法訓練人類在觀看影片 1-2 秒後指派標籤,則可能也無法訓練模型這麼做。

  • 最常見標籤適用的影片數量最多比最不常見標籤的影片數多 100 倍時,模型的訓練效果最佳。建議您移除使用頻率偏低的標籤。物件追蹤:

    • 定界框尺寸最低為 10 x 10 像素。
    • 如果是解析度遠大於 1024 x 1024 像素的視訊窗格,AutoML 物件追蹤可能會在進行窗格正規化的過程中造成一些影像失真。
    • 每個標籤至少需在三個獨立的視訊畫面中呈現。此外,每個標籤也必須至少有十個註解。

結構定義檔案

  • 建立用於匯入註解的 jsonl 檔案時,請使用下列可公開存取的結構定義檔。這個結構定義檔案會決定資料輸入檔案的格式。檔案的結構會遵循 OpenAPI 架構測試。

    物件追蹤結構定義檔案

    gs://google-cloud-aiplatform/schema/dataset/ioformat/object_tracking_io_format_1.0.0.yaml

    完整結構定義檔案

       title: VideoObjectTracking version: 1.0.0 description: >   Import and export format for importing/exporting videos together with   temporal bounding box annotations. type: object required: - videoGcsUri properties:   videoGcsUri:     type: string     description: >       A Cloud Storage URI pointing to a video. Up to 50 GB in size and       up to 3 hours in duration. Supported file mime types: `video/mp4`,       `video/avi`, `video/quicktime`.   TemporalBoundingBoxAnnotations:     type: array     description: Multiple temporal bounding box annotations. Each on a frame of the video.     items:       type: object       description: >         Temporal bounding box anntoation on video. `xMin`, `xMax`, `yMin`, and         `yMax` are relative to the video frame size, and the point 0,0 is in the         top left of the frame.       properties:         displayName:           type: string           description: >             It will be imported as/exported from AnnotationSpec's display name,             i.e., the name of the label/class.         xMin:           description: The leftmost coordinate of the bounding box.           type: number           format: double         xMax:           description: The rightmost coordinate of the bounding box.           type: number           format: double         yMin:           description: The topmost coordinate of the bounding box.           type: number           format: double         yMax:           description: The bottommost coordinate of the bounding box.           type: number           format: double         timeOffset:           type: string           description: >             A time offset of a video in which the object has been detected.             Expressed as a number of seconds as measured from the             start of the video, with fractions up to a microsecond precision, and             with "s" appended at the end.         instanceId:           type: number           format: integer           description: >             The instance of the object, expressed as a positive integer. Used to             tell apart objects of the same type when multiple are present on a             single video.         annotationResourceLabels:           description: Resource labels on the Annotation.           type: object           additionalProperties:             type: string   dataItemResourceLabels:     description: Resource labels on the DataItem.     type: object     additionalProperties:       type: string

輸入檔案

影片物件追蹤訓練資料的格式如下。

如要匯入資料,請建立 JSONL 或 CSV 檔案。

JSONL

每行 JSON:
詳情請參閱 物件追蹤 YAML 檔案。

   { 	"videoGcsUri": "gs://bucket/filename.ext", 	"TemporalBoundingBoxAnnotations": [{ 		"displayName": "LABEL", 		"xMin": "leftmost_coordinate_of_the_bounding box", 		"xMax": "rightmost_coordinate_of_the_bounding box", 		"yMin": "topmost_coordinate_of_the_bounding box", 		"yMax": "bottommost_coordinate_of_the_bounding box", 		"timeOffset": "timeframe_object-detected"                 "instanceId": "instance_of_object                 "annotationResourceLabels": "resource_labels" 	}], 	"dataItemResourceLabels": { 		"aiplatform.googleapis.com/ml_use": "train|test" 	} }

JSONL 範例 - 影片物件追蹤:

   {'videoGcsUri': 'gs://demo-data/video1.mp4', 'temporal_bounding_box_annotations': [{'displayName': 'horse', 'instance_id': '-1', 'time_offset': '4.000000s', 'xMin': '0.668912', 'yMin': '0.560642', 'xMax': '1.000000', 'yMax': '1.000000'}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}} {'videoGcsUri': 'gs://demo-data/video2.mp4', 'temporal_bounding_box_annotations': [{'displayName': 'horse', 'instance_id': '-1', 'time_offset': '71.000000s', 'xMin': '0.679056', 'yMin': '0.070957', 'xMax': '0.801716', 'yMax': '0.290358'}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}} ...

CSV

CSV 檔案中的列格式:

[ML_USE,]VIDEO_URI,LABEL,[INSTANCE_ID],TIME_OFFSET,BOUNDING_BOX 

資料欄清單

  • ML_USE (選填)。訓練模型時用於資料分割。請使用「訓練」或「測試」。
  • VIDEO_URI:這個欄位包含影片的 Cloud Storage URI。Cloud Storage URI 會區分大小寫。
  • LABEL. 標籤開頭必須是字母,且只能含有字母、數字和底線。您可以在 CSV 檔案中新增多個資料列,每個資料列識別同一個影片片段,不同的資料列使用不同的標籤,以這種方法為影片指定多個標籤。
  • INSTANCE_ID (選填)。用來識別跨視訊窗格物件的執行個體 ID。如果有提供,AutoML 物件追蹤會用它來對物件追蹤、調整、訓練及評測。相同物件執行個體的定界框,在不同的視訊窗格中呈現,會以相同的執行個體 ID 標示。執行個體 ID 僅在各視訊中是唯一值,但在資料集中則否。舉例來說,來自不同視訊的兩個物件擁有相同的執行個體 ID,並不表示他們是相同的執行個體。
  • TIME_OFFSET:指示從影片開頭的時間偏移量。時間偏移值為浮點數,單位為秒。
  • BOUNDING_BOX:影片畫面中物件的定界框。指定定界框時,需要使用多個欄。
    bounding_box
    A. x_relative_min,y_relative_min
    B. x_relative_max,y_relative_min
    C. x_relative_max,y_relative_max
    D. x_relative_min,y_relative_max

    每個頂點皆由 x、y 座標值指定。座標值必須是介於 0 到 1 之間的浮點數,其中 0 代表 x 或 y 的最小值,而 1 則代表 x 或 y 的最大值。
    舉例來說,(0,0) 代表左上角,(1,1) 代表右下角,整個影像的定界框會表示為 (0,0,,,1,1,,) 或 (0,0,1,0,1,1,0,1)。
    AutoML 物件追蹤不需指定頂點的順序。此外,如果四個指定頂點形成的矩形沒有辦法跟影像的邊緣切齊的話,Vertex AI 即會指定可以形成此矩形的頂點。
    物件的定界框可透過以下兩種方式指定:
    1. 指定兩個頂點,由一組 x、y 座標組成,如果是矩形的對角點:
      A. x_relative_miny_relative_min
      C. x_relative_max,y_relative_max
      如以下範例所示:
      x_relative_min, y_relative_min,,,x_relative_max,y_relative_max,,
    2. 所有四個頂點皆如以下所示:
      x_relative_min,y_relative_min, x_relative_max,y_relative_min, x_relative_max,y_relative_max, x_relative_min,y_relative_max,
      如果四個指定頂點無法形成與圖片邊緣平行的矩形,Vertex AI 會指定可形成此矩形的頂點。

資料集檔案中的資料列範例

以下幾列說明如何在資料集中指定資料。範例包含 Cloud Storage 影片的路徑、物件的標籤、開始追蹤的時間偏移,以及兩個對角線頂點。VIDEO_URI.,LABEL,INSTANCE_ID,TIME_OFFSET,x_relative_min,y_relative_min,x_relative_max,y_relative_min,x_relative_max,y_relative_max,x_relative_min,y_relative_max

gs://folder/video1.avi,car,,12.90,0.8,0.2,,,0.9,0.3,,
gs://folder/video1.avi,bike,,12.50,0.45,0.45,,,0.55,0.55,,
where,

  • VIDEO_URIgs://folder/video1.avi
  • LABELcar
  • INSTANCE_ID (未指定)
  • TIME_OFFSET12.90
  • x_relative_min,y_relative_min0.8,0.2
  • 未指定 x_relative_max,y_relative_min
  • x_relative_max,y_relative_max0.9,0.3
  • 未指定 x_relative_min,y_relative_max

如先前所述,您也可以提供四個頂點,藉此指定邊界框,如以下範例所示。

gs://folder/video1.avi,car,,12.10,0.8,0.8,0.9,0.8,0.9,0.9,0.8,0.9 gs://folder/video1.avi,car,,12.90,0.4,0.8,0.5,0.8,0.5,0.9,0.4,0.9 gs://folder/video1.avi,car,,12.10,0.4,0.2,0.5,0.2,0.5,0.3,0.4,0.3

CSV 範例 - 不含標籤:

您也可以在資料檔案中指定任何標籤,直接提供影片。然後,您必須在訓練模型之前使用 Google Cloud 控制台將標籤套用至您的資料。如要進行這項操作,您只須提供影片的 Cloud Storage URI,後面加上十一個逗號,如以下範例所示。

未指派 ml_use 的範例:

   gs://folder/video1.avi   ...   

已指派 ml_use 的範例:

   TRAINING,gs://folder/video1.avi   TEST,gs://folder/video2.avi   ...