Die folgenden Abschnitte enthalten Informationen zu Datenanforderungen, Schemadateien und dem Format der Datenimportdateien ( JSONL& CSV), die vom Schema definiert werden.
Alternativ können Sie Videos, die noch nicht annotiert wurden, importieren und später mit der Google Cloud Console annotieren (siehe Labels mit der Google Cloud Console erstellen).
Datenanforderungen
Die folgenden Anforderungen gelten für Datasets, die zum Trainieren von AutoML- oder benutzerdefinierten Modellen verwendet werden.
Vertex AI unterstützt die folgenden Videoformate, um Ihr Modell zu trainieren oder eine Vorhersage anzufordern (annotieren eines Videos).
- .MOV
- .MPEG4
- .MP4
- .AVI
Wenn Sie sich die Videoinhalte in der Webkonsole ansehen oder ein Video annotieren möchten, muss das Video in einem Format vorliegen, das von Ihrem Browser nativ unterstützt wird. Da MOV- oder AVI-Inhalte nicht von allen Browsern nativ verarbeitet werden, empfiehlt sich die Verwendung des Videoformats MPEG4 oder MP4.
Die maximale Dateigröße beträgt 50 GB (maximale Dauer von 3 Stunden). Einzelne Videodateien mit fehlerhaften oder leeren Zeitstempeln im Container werden nicht unterstützt.
Die maximale Anzahl von Labels in jedem Dataset ist derzeit auf 1.000 begrenzt.
Sie können den Videos in den Importdateien Labels vom Typ "ML_USE" zuweisen. Zur Trainingszeit können Sie diese Labels verwenden, um die Videos und die zugehörigen Annotationen in Trainings- oder Test-Datasets aufzuteilen. Beachten Sie beim Videoobjekt-Tracking Folgendes:
- Die maximale Anzahl von Videoframes mit Labels in jedem Dataset ist auf 150.000 begrenzt.
- Die maximale Gesamtzahl der annotierten Begrenzungsrahmen in jedem Dataset ist auf 1.000.000 begrenzt.
- Die maximale Anzahl von Labels in jedem Annotationssatz ist auf 1.000 begrenzt.
Best Practices für Videodaten zum Trainieren von AutoML-Modellen
Die folgenden Vorgehensweisen gelten für Datasets, die zum Trainieren von AutoML-Modellen verwendet werden.
Die Trainingsdaten sollten den Daten, für die Vorhersagen getroffen werden sollen, möglichst ähnlich sein. Wenn Ihr Anwendungsfall beispielsweise verschwommene Videos mit niedriger Auflösung (zum Beispiel von einer Überwachungskamera) beinhaltet, sollten Ihre Trainingsdaten aus verschwommenen Videos mit niedriger Auflösung bestehen. Sie sollten außerdem mehrere Blickwinkel, Auflösungen und Hintergründe für Ihre Trainingsvideos bereitstellen.
Vertex-KI-Modelle können in der Regel keine Labels vorhersagen, die von Menschen nicht zugewiesen werden können. Wenn bei einem bestimmten Video ein Mensch nicht fähig wäre, nach einer oder zwei Sekunden Betrachtung ein Label zuzuweisen, kann Ihr Modell höchstwahrscheinlich auch nicht dafür trainiert werden.
Das Modell funktioniert am besten, wenn für das am häufigsten verwendete Label höchstens 100-mal mehr Videos vorhanden sind als für das am wenigsten verwendete Label. Es wird empfohlen, Labels mit geringer Häufigkeit zu entfernen. Für Objekt-Tracking:
- Die Größe des Begrenzungsrahmens ist 10px x 10px.
- Bei einer Videoframeauflösung, die viel größer als 1024 x 1024 Pixel ist, kann die Bildqualität während der Framenormalisierung, die von AutoML Video Object Tracking verwendet wird, verloren gehen.
- Jedes eindeutige Label muss in mindestens drei verschiedenen Videoframes vorhanden sein. Außerdem muss jedes Label mindestens zehn Annotationen haben.
Schemadateien
Verwenden Sie beim Erstellen der JSONL-Datei zum Importieren von Annotationen die folgende öffentlich zugängliche Schemadatei. Diese Schemadatei bestimmt das Format der Dateneingabedateien. Die Struktur der Datei folgt dem OpenAPI-Schematest.
Schemadatei für Objekt-Tracking:
gs://google-cloud-aiplatform/schema/dataset/ioformat/object_tracking_io_format_1.0.0.yaml
Vollständige Schemadatei
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
Eingabedateien
Die Trainingsdaten für das Objekt-Tracking in Videos haben folgendes Format:
Erstellen Sie zum Importieren Ihrer Daten entweder eine JSONL- oder eine CSV-Datei.
JSONL
JSON in jeder Zeile:
Weitere Informationen finden Sie in der Datei Objekt-Tracking 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" } }
Beispiel JSONL – Videoobjekt-Tracking:
{'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 einer Zeile in der CSV-Datei:
[ML_USE,]VIDEO_URI,LABEL,[INSTANCE_ID],TIME_OFFSET,BOUNDING_BOX
Liste der Spalten
ML_USE
(Optional). Zum Aufteilen von Daten beim Training eines Modells. Verwenden Sie TRAINING oder TEST.VIDEO_URI
. Dieses Feld enthält den Cloud Storage-URI für das Video. Bei Cloud Storage-URIs wird zwischen Groß- und Kleinschreibung unterschieden.LABEL
. Labels müssen mit einem Buchstaben beginnen und dürfen nur Buchstaben, Zahlen und Unterstriche enthalten. Sie können mehrere Labels für ein Video festlegen. Dazu müssen Sie in der CSV-Datei mehrere Zeilen hinzufügen, die jeweils dasselbe Videosegment mit einem anderen Label kennzeichnen.INSTANCE_ID
(Optional). Eine Instanz-ID, die die Objektinstanz in Videoframes eines Videos identifiziert. Wenn angegeben, verwendet AutoML Videoobjekt-Tracking diese zum Objekt-Tracking, zum Training und zur Bewertung. Die Begrenzungsrahmen derselben Objektinstanz, die in verschiedenen Videoframes vorhanden sind, werden mit derselben Instanz-ID gekennzeichnet. Die Instanz-ID ist nur in jedem Video einmalig, nicht jedoch im Dataset. Wenn beispielsweise zwei Objekte aus zwei verschiedenen Videos dieselbe Instanz-ID haben, heißt das nicht, dass sie dieselbe Objektinstanz haben.TIME_OFFSET
. Der Videoframe, der das Ende der Wiedergabe vom Anfang des Videos angibt. Der Zeitversatz ist eine Gleitkommazahl, die Einheiten werden in Sekunden angegeben.BOUNDING_BOX
. Ein Begrenzungsrahmen für ein Objekt im Videoframe. Die Angabe eines Begrenzungsrahmens umfasst mehr als eine Spalte.
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
Jeder Eckpunkt wird durch x- und y-Koordinatenwerte angegeben. Die Koordinatenwerte müssen eine Gleitkommazahl im Bereich von 0 bis 1 sein, wobei 0 den minimalen x- oder y-Wert und 1 den größten x- oder y-Wert darstellt.
Beispielsweise steht (0,0) für die obere linke Ecke und (1,1) für die rechte untere Ecke. Ein Begrenzungsrahmen für das gesamte Bild wird als (0,0,,,1,1,,) oder (0,0,1,0,1,1,0,1) ausgedrückt.
AutoML-Objekt-Tracking erfordert keine bestimmte Eckpunkt-Reihenfolge. Wenn außerdem vier angegebene Eckpunkte kein Rechteck parallel zu den Bildkanten bilden, gibt Vertex AI Eckpunkte an, die ein solches Rechteck bilden.
Der Begrenzungsrahmen für ein Objekt kann auf zwei Arten angegeben werden:- Zwei Eckpunkte, die aus einem Satz von x- und y-Koordinaten bestehen, wenn sie diagonal gegenüberliegende Punkte des Rechtecks sind:
A.x_relative_min
,y_relative_min
C.x_relative_max
,y_relative_max
wie in diesem Beispiel:
x_relative_min, y_relative_min,,,x_relative_max,y_relative_max,,
- Alle vier Eckpunkte, wie angegeben:
x_relative_min,y_relative_min, x_relative_max,y_relative_min, x_relative_max,y_relative_max, x_relative_min,y_relative_max,
Wenn die vier angegebenen Eckpunkte kein Rechteck parallel zu den Bildkanten bilden, gibt Vertex AI Eckpunkte an, die ein solches Rechteck bilden.
- Zwei Eckpunkte, die aus einem Satz von x- und y-Koordinaten bestehen, wenn sie diagonal gegenüberliegende Punkte des Rechtecks sind:
Beispiele für Zeilen in Dataset-Dateien
Folgende Zeilen zeigen, wie Daten in einem Dataset angegeben werden. Das Beispiel umfasst einen Pfad zu einem Video in Cloud Storage, ein Label für das Objekt, einen Zeitversatz für den Start des Tracking und zwei diagonale Eckpunkte.
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,,
Wobei:
- VIDEO_URI ist
gs://folder/video1.avi
, - LABEL ist
car
, - INSTANCE_ID , (Nicht angegeben)
- TIME_OFFSET ist
12.90
, - sind x_relative_min,y_relative_min
0.8,0.2
, - x_relative_max,y_relative_min nicht angegeben,
- sind x_relative_max,y_relative_max
0.9,0.3
, - x_relative_min,y_relative_max sind nicht angegeben
Wie bereits erwähnt, können Sie Ihre Begrenzungsrahmen auch angeben, indem Sie alle vier Eckpunkte angeben, wie in den folgenden Beispielen gezeigt.
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
Beispiel-CSV – keine Labels:
Sie können Videos auch in der Datendatei bereitstellen, ohne Labels anzugeben. Sie müssen dann die Google Cloud Console verwenden, um Labels auf Ihre Daten anzuwenden, bevor Sie Ihr Modell trainieren. Dazu müssen Sie nur den Cloud Storage-URI für das Video gefolgt von drei Kommas angeben, wie im folgenden Beispiel gezeigt.
Beispiel ohne zugewiesenes ml_use:
gs://folder/video1.avi ...
Beispiel mit zugewiesenem ml_use:
TRAINING,gs://folder/video1.avi TEST,gs://folder/video2.avi ...