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- Data validasi.(Opsional)
TRAINING
, spesifikasiTEST
. - Konten yang akan dikategorikan, atau dianotasi. Kolom ini berisi Cloud Storage URI untuk video tersebut. Cloud Storage URI peka huruf besar/kecil.
- 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.
- 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 mulai0
dan waktu berakhir video berdurasi penuh, atau "inf". Misalnya:0,inf
. - 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.