Menyiapkan data pelatihan video untuk pelacakan objek

Halaman ini menjelaskan cara menyiapkan data pelatihan video untuk digunakan dalam set data Vertex AI guna melatih model pelacakan objek video.

Bagian berikut memberikan informasi tentang persyaratan data, file skema, dan format file impor data (JSONL & CSV) yang ditentukan oleh skema.

Atau, Anda dapat mengimpor video yang belum dianotasi dan menganotasikannya di lain waktu menggunakan Konsol Google Cloud (lihat Pelabelan menggunakan Konsol Google Cloud).

Persyaratan data

Persyaratan berikut berlaku untuk set data yang digunakan untuk melatih model AutoML atau model yang dilatih khusus.

  • Vertex AI mendukung format video berikut untuk melatih model Anda atau meminta prediksi (menganotasi video).

    • .MOV
    • .MPEG4
    • .MP4
    • .AVI
  • Untuk melihat konten video di konsol web atau untuk menganotasi video, video harus dalam format yang didukung secara native oleh browser Anda. Karena tidak semua browser dapat menangani konten .MOV atau .AVI secara native, rekomendasinya adalah menggunakan format video .MPEG4 atau .MP4.

  • Ukuran file maksimum adalah 50 GB (durasi hingga 3 jam). Setiap file video dengan stempel waktu rusak atau kosong dalam container tidak didukung.

  • Jumlah maksimum label di setiap set data dibatasi hingga 1.000.

  • Anda dapat menetapkan label "ML_USE" untuk video yang berada dalam file impor. Pada waktu pelatihan, Anda dapat memilih untuk menggunakan label tersebut guna membagi video dan anotasi yang sesuai ke dalam set "pelatihan" atau "pengujian". Untuk pelacakan objek video, perhatikan hal-hal berikut:

    • Jumlah maksimum frame video berlabel di setiap set data dibatasi hingga 150.000.
    • Jumlah maksimum total kotak pembatas yang dianotasi di setiap set data dibatasi hingga 1.000.000.
    • Jumlah label maksimum di setiap kumpulan anotasi dibatasi hingga 1.000.

Praktik terbaik untuk data video yang digunakan untuk melatih model AutoML

Praktik berikut berlaku untuk set data yang digunakan untuk melatih model AutoML.

  • Data pelatihan harus semirip mungkin dengan data yang menjadi dasar prediksi. Misalnya, jika dalam kasus penggunaan Anda terdapat video buram dengan resolusi rendah (seperti video dari kamera keamanan), data pelatihan Anda harus terdiri dari video buram dengan resolusi rendah. Secara umum, Anda juga harus mempertimbangkan untuk menyediakan beberapa sudut, resolusi, dan latar belakang untuk video pelatihan Anda.

  • Model Vertex AI umumnya tidak dapat memprediksi label yang tidak dapat ditetapkan oleh manusia. Jika manusia tidak dapat dilatih untuk menetapkan label dengan melihat video selama 1-2 detik, model tersebut kemungkinan tidak dapat dilatih untuk melakukan hal yang sama.

  • Model akan berfungsi optimal jika terdapat video maksimal 100 kali lebih banyak untuk label yang paling umum daripada label yang paling tidak umum. Sebaiknya hapus label berfrekuensi rendah. Untuk pelacakan objek:

    • Ukuran kotak pembatas minimum adalah 10x10 piksel.
    • Untuk resolusi frame video yang jauh lebih besar dari 1024 piksel x 1024 piksel, beberapa kualitas gambar dapat hilang selama proses normalisasi frame yang digunakan oleh pelacakan objek AutoML.
    • Setiap label unik harus ada di setidaknya tiga frame video yang berbeda. Selain itu, setiap label juga harus memiliki minimal sepuluh anotasi.

File skema

  • Gunakan file skema yang dapat diakses secara publik berikut saat membuat file jsonl untuk mengimpor anotasi. File skema ini menentukan format file input data. Struktur file mengikuti pengujian OpenAPI Schema.

    File skema pelacakan objek:

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

    File skema lengkap

    
    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

File input

Format data pelatihan Anda untuk pelacakan objek video adalah sebagai berikut.

Untuk mengimpor data, buat file JSONL atau CSV.

JSONL

JSON di setiap baris:
Lihat file YAML pelacakan objek untuk mengetahui detailnya.


{
	"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"
	}
}

Contoh JSONL - Pelacakan objek video:


{'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

Format baris dalam file CSV:

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

Daftar kolom

  • ML_USE (Opsional). Untuk tujuan pemisahan data saat melatih model. Gunakan TRAINING atau TEST.
  • VIDEO_URI. Kolom ini berisi Cloud Storage URI untuk video. Cloud Storage URI peka huruf besar/kecil.
  • LABEL. Label harus diawali dengan huruf dan hanya berisi huruf, angka, serta garis bawah. Anda dapat menentukan beberapa label untuk video dengan menambahkan beberapa baris dalam file CSV yang masing-masing mengidentifikasi segmen video yang sama, dengan label yang berbeda untuk setiap baris.
  • INSTANCE_ID (Opsional). ID instance yang mengidentifikasi instance objek di seluruh frame video dalam video. Jika disediakan, pelacakan objek AutoML akan menggunakannya untuk penyesuaian, pelatihan, dan evaluasi pelacakan objek. Kotak pembatas dari instance objek yang sama yang ada dalam frame video berbeda diberi label sebagai ID instance yang sama. ID instance hanya unik dalam setiap video, tidak dalam set data. Misalnya, jika dua objek dari dua video berbeda memiliki ID instance yang sama, bukan berarti keduanya adalah instance objek yang sama.
  • TIME_OFFSET. Frame video yang menunjukkan selisih durasi dari awal video. Selisih waktu adalah angka mengambang dan satuannya dalam detik.
  • BOUNDING_BOX. Kotak pembatas untuk objek dalam frame video. Penentuan kotak pembatas melibatkan lebih dari satu kolom.
    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

    Setiap verteks ditentukan oleh nilai koordinat x, y. Nilai koordinat harus berupa nilai mengambang dalam rentang 0 hingga 1, di mana 0 mewakili nilai x atau y minimum, dan 1 mewakili nilai x atau y terbesar.
    Misalnya, (0,0) mewakili sudut kiri atas, dan (1,1) mewakili sudut kanan bawah; Kotak pembatas untuk keseluruhan gambar dinyatakan sebagai (0,0,,,1,1,,), atau (0,0,1,0,1,1,0,1).
    Pelacakan objek AutoML tidak memerlukan pengurutan verteks tertentu. Selain itu, jika empat verteks yang ditentukan tidak membentuk persegi panjang sejajar dengan tepi gambar, Vertex AI akan menentukan verteks yang membentuk persegi panjang tersebut.
    Kotak pembatas untuk sebuah objek dapat ditentukan dengan salah satu dari dua cara berikut:
    1. Dua verteks yang ditentukan terdiri dari sekumpulan koordinat x,y jika keduanya secara diagonal berlawanan dengan titik-titik persegi panjang:
      A. x_relative_min,y_relative_min
      C. x_relative_max,y_relative_max
      sebagaimana ditunjukkan dalam contoh ini:
      x_relative_min, y_relative_min,,,x_relative_max,y_relative_max,,
    2. Keempat verteks ditentukan sebagaimana ditunjukkan dalam:
      x_relative_min,y_relative_min, x_relative_max,y_relative_min, x_relative_max,y_relative_max, x_relative_min,y_relative_max,
      Jika keempat verteks yang ditentukan tidak membentuk persegi panjang yang sejajar dengan tepi gambar, Vertex AI akan menentukan verteks yang membentuk persegi panjang tersebut.

Contoh baris dalam file set data

Baris berikut menunjukkan cara menentukan data dalam set data. Contoh ini mencakup jalur ke video di Cloud Storage, label untuk objek, selisih waktu untuk memulai pelacakan, dan dua verteks diagonal. 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,,
dalam hal ini,

  • VIDEO_URI adalah gs://folder/video1.avi,
  • LABEL adalah car,
  • INSTANCE_ID , (tidak ditentukan)
  • TIME_OFFSET adalah 12.90,
  • x_relative_min,y_relative_min adalah 0.8,0.2,
  • x_relative_max,y_relative_min tidak ditentukan,
  • x_relative_max,y_relative_max adalah 0.9,0.3,
  • x_relative_min,y_relative_max tidak ditentukan

Seperti yang disebutkan sebelumnya, Anda juga dapat menentukan kotak pembatas dengan menyediakan keempat verteks, sebagaimana ditunjukkan dalam contoh berikut.

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

Contoh CSV - tanpa label:

Anda juga dapat memberikan video dalam file data tanpa menentukan label apa pun. Kemudian, Anda harus menggunakan Konsol Google Cloud untuk menerapkan label ke data sebelum melatih model. Untuk melakukannya, Anda hanya perlu menyediakan Cloud Storage URI untuk video yang disertai dengan sebelas koma, sebagaimana ditunjukkan dalam contoh berikut.

Contoh tanpa ml_use yang ditetapkan:

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

Contoh dengan ml_use yang ditetapkan:

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