Menyiapkan data pelatihan video untuk pengenalan tindakan

Halaman ini menjelaskan cara untuk menyiapkan data pelatihan video agar dapat digunakan dalam set data Vertex AI untuk melatih model pengenalan tindakan video.

Bagian berikut ini 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 pengenalan tindakan, ada batasan saat menggunakan konsol pelabelan VAR. Artinya, jika Anda ingin menggunakan alat pelabelan untuk memberi label pada tindakan, Anda harus memberi label pada semua tindakan dalam video tersebut.

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 Anda menghapus label berfrekuensi rendah. Untuk pengenalan tindakan, perhatikan hal-hal berikut ini:

    • 100 frame video pelatihan atau lebih per label direkomendasikan.
    • Untuk resolusi frame video yang jauh lebih besar dari 1024 piksel x 1024 piksel, beberapa kualitas gambar mungkin hilang selama proses normalisasi frame yang digunakan oleh Vertex AI.

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 Pengenalan Tindakan:

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

    File skema lengkap

    
    title: VideoActionRecognition
    description: >
      Import and export format for importing/exporting videos together with
      action recognition annotations with time segment. Can be used in
      Dataset.import_schema_uri field.
    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`.
      timeSegments:
        type: array
        description: Multiple fully-labeled segments.
        items:
          type: object
          description: A time period inside the video.
          properties:
            startTime:
              type: string
              description: >
                The start of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision.
              default: 0s
            endTime:
              type: string
              description: >
                The end of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision, and "Infinity"
                is allowed, which corresponds to the end of the video.
              default: Infinity
      timeSegmentAnnotations:
        type: array
        description: >
          Multiple action recognition annotations. Each on a time segment of the video.
        items:
          type: object
          description: Annotation with a time segment on media (e.g., video).
          properties:
            displayName:
              type: string
              description: >
                It will be imported as/exported from AnnotationSpec's display name.
            startTime:
              type: string
              description: >
                The start of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision.
              default: 0s
            endTime:
              type: string
              description: >
                The end of the time segment. Expressed as a number of seconds as
                measured from the start of the video, with "s" appended at the end.
                Fractions are allowed, up to a microsecond precision, and "Infinity"
                is allowed, which means the end of the video.
              default: Infinity
            annotationResourceLabels:
              description: Resource labels on the Annotation.
              type: object
              additionalProperties:
                type: string
      dataItemResourceLabels:
        description: Resource labels on the DataItem. Overrides values set in
          ImportDataConfig at import time. Can set a user-defined label
          or the predefined `aiplatform.googleapis.com/ml_use` label, which is
          used to determine the data split and can be set to `training` and `test`.
        type: object
        additionalProperties:
          type: string

File input

Format data pelatihan Anda untuk pengenalan tindakan video adalah sebagai berikut.

Untuk mengimpor data, buat file JSONL atau CSV.

JSONL

JSON di setiap baris:
Lihat file YAML pengenalan tindakan untuk mengetahui detailnya.
Catatan: Segmen waktu di sini digunakan untuk menghitung stempel waktu tindakan. startTime dan endTime dari timeSegmentAnnotations bisa sama, dan sesuai dengan frame utama tindakan tersebut.



{
  "videoGcsUri': "gs://bucket/filename.ext",
  "timeSegments": [{
    "startTime": "start_time_of_fully_annotated_segment",
    "endTime": "end_time_of_segment"}],
  "timeSegmentAnnotations": [{
    "displayName": "LABEL",
    "startTime": "start_time_of_segment",
    "endTime": "end_time_of_segment"
  }],
  "dataItemResourceLabels": {
    "ml_use": "train|test"
  }
}

Contoh JSONL - Pengenalan tindakan video:



{"videoGcsUri": "gs://demo/video1.mp4", "timeSegmentAnnotations": [{"displayName": "cartwheel", "startTime": "1.0s", "endTime": "12.0s"}], "dataItemResourceLabels": {"ml_use": "training"}}
{"videoGcsUri": "gs://demo/video2.mp4", "timeSegmentAnnotations": [{"displayName": "swing", "startTime": "4.0s", "endTime": "9.0s"}], "dataItemResourceLabels": {"ml_use": "test"}}
...

CSV

Daftar kolom
  1. Data validasi.(Opsional)TRAINING, spesifikasi TEST.
  2. Konten yang akan dikategorikan, atau dianotasi. Kolom ini berisi Cloud Storage URI untuk video tersebut. Cloud Storage URI peka huruf besar/kecil.
  3. Label yang mengidentifikasi cara video dikategorikan. 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.
  4. Waktu mulai dan berakhir segmen video. Kedua kolom yang dipisahkan koma ini mengidentifikasi waktu mulai dan berakhir segmen video yang akan dianalisis, dalam hitungan detik. Waktu mulai harus kurang dari waktu berakhir. Kedua nilai tersebut tidak boleh negatif dan berada dalam rentang waktu video. Misalnya, 0.09845,1.3600555, dengan nilai pertama (0,09845) adalah waktu mulai, dan nilai kedua (1,3600555) adalah waktu berakhir segmen video yang ingin Anda beri label. Untuk menggunakan seluruh konten video, tentukan waktu mulai 0 dan waktu berakhir video berdurasi penuh, atau "inf". Misalnya: 0,inf.
  5. Anotasi. Anotasi adalah label dengan stempel waktu frame, atau segmen waktu.

Setiap baris harus berupa salah satu dari hal berikut ini:

VIDEO_URI, TIME_SEGMENT_START, TIME_SEGMENT_END, LABEL, ANNOTATION_FRAME_TIMESTAMP
VIDEO_URI, , , LABEL, ANNOTATION_FRAME_TIMESTAMP
VIDEO_URI, TIME_SEGMENT_START, TIME_SEGMENT_END, LABEL, ANNOTATION_SEGMENT_START, ANNOTATION_SEGMENT_END
VIDEO_URI, , , LABEL, ANNOTATION_SEGMENT_START, ANNOTATION_SEGMENT_END

Beberapa contohnya

Memberi label pada dua tindakan pada waktu yang berbeda:

gs://folder/video1.avi,kick,12.90,,
gs://folder/video1.avi,catch,19.65,,

Tidak ada tindakan yang diminati dalam dua rentang waktu. Catatan: baris terakhir berarti segmen yang diberi label secara lengkap tidak boleh berisi tindakan.

gs://folder/video1.avi,,,10.0,20.0
gs://folder/video1.avi,,,25.0,40.0

Data pelatihan Anda harus memiliki setidaknya satu label dan satu segmen yang diberi label lengkap.


Sekali lagi, Anda tidak perlu menentukan data validasi untuk memverifikasi hasil model Anda yang telah dilatih. Vertex AI secara otomatis membagi baris yang diidentifikasi untuk pelatihan ke dalam data pelatihan dan validasi. 80% untuk pelatihan, dan 20% untuk validasi.

Simpan konten tersebut sebagai file CSV di dalam bucket Cloud Storage Anda.