Videotrainingsdaten für Objekt-Tracking vorbereiten

Auf dieser Seite wird beschrieben, wie Sie Videotrainingsdaten zur Verwendung in einem Vertex AI-Dataset vorbereiten, um ein Videoobjekt-Tracking-Modell zu trainieren.

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 für das 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:

Zum Importieren Ihrer Daten erstellen Sie 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.
    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

    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:
    1. 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,,
    2. 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.

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
  ...