Videotrainingsdaten für Aktionserkennung vorbereiten

Auf dieser Seite wird beschrieben, wie Sie Videotrainingsdaten zur Verwendung in einem Vertex AI-Dataset vorbereiten, um ein Modell zur Videoaktionserkennung 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. Bei der Aktionserkennung gibt es eine Einschränkung bei der Verwendung der VAR-Labeling-Konsole. Wenn Sie also das Labeling-Tool verwenden möchten, um Aktionen mit Labels zu versehen, müssen Sie alle Aktionen in diesem Video mit Labels versehen.

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. Beachten Sie bei der Aktionserkennung Folgendes:

    • Es werden mindestens 100 Trainingsbilder pro Label empfohlen.
    • Bei einer Videoframe-Auflösung, die deutlich größer als 1.024 x 1.024 Pixel ist, kann es sein, dass die Bildqualität bei der Frame-Normal-Verarbeitung von Vertex AI verloren geht.

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 die Aktionserkennung:

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

    Vollständige Schemadatei

    
    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

Eingabedateien

Die Trainingsdaten für die Videoaktionserkennung 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 YAML-Datei zur Aktionserkennung.
Hinweis: Die Zeitsegmente werden hier verwendet, um die Zeitstempel der Aktionen zu berechnen. startTime und endTime von timeSegmentAnnotations können gleich sein und entsprechen dem Schlüsselframe der Aktion.


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

Beispiel für JSONL – Videoaktionserkennung:


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

Liste der Spalten
  1. Validierungsdaten.(Optional)TRAINING, TEST-Spezifikation.
  2. Der Inhalt, der kategorisiert und annotiert werden soll. Dieses Feld enthält den Google Cloud Storage-URI für das Video. Bei Cloud Storage-URIs wird zwischen Groß- und Kleinschreibung unterschieden.
  3. Ein Label, das angibt, wie das Video kategorisiert ist. 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.
  4. Start- und Endzeit des Videosegments. Diese zwei durch Kommas getrennten Felder geben die Start- und Endzeit des zu analysierenden Videosegments in Sekunden an. Die Startzeit muss kleiner sein als die Endzeit. Beide Werte dürfen nicht negativ sein und müssen innerhalb des Zeitbereichs des Videos liegen. Beispiel: 0.09845,1.3600555, wo der erste Wert (0.0845) der Beginn ist und der zweite Wert (1, 3600555) die Endzeit des Videosegments ist, das Sie mit einem Label versehen möchten. Legen Sie eine Startzeit von 0 und eine Endzeit entsprechend der Länge des Videos oder "inf" fest, um den gesamten Inhalt des Videos verwenden zu können. Beispiel: 0,inf
  5. Annotation Annotation ist ein Label mit entweder einem Frame-Zeitstempel oder einem Zeitsegment.

Jede Zeile muss eine der folgenden Angaben haben:

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

Einige Beispiele

Labels zu zwei Aktionen zu unterschiedlichen Zeiten hinzufügen:

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

In den beiden Zeiträumen gibt es keine relevante Aktion. Hinweis: Die letzte Zeile bedeutet, dass das vollständig mit einem Label versehene Segment keine Aktionen enthalten kann.

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

Ihre Trainingsdaten müssen mindestens ein Label und ein vollständig mit Labels versehenes Segment aufweisen.


Auch hier müssen Sie keine Validierungsdaten angeben, um die Ergebnisse Ihres trainierten Modells zu prüfen. Vertex AI unterteilt die für das Training vorgesehenen Zeilen automatisch in Trainings- und Validierungsdaten. 80 % für das Training und 20 % für die Validierung.

Speichern Sie den Inhalt als CSV-Datei in Ihren Cloud Storage-Bucket.