Skip to content

Video-Annotation

Zeitliche Segmente annotieren, Frames klassifizieren, Schlüsselbilder markieren und Objekte in Videos verfolgen.

Potato bietet umfassende Video-Annotationsmöglichkeiten, einschließlich zeitlicher Segmentierung, Frame-Klassifizierung, Schlüsselbildmarkierung und Objektverfolgung.

Annotationsmodi

ModusBeschreibungAnwendungsfall
segmentZeitliche Bereiche markierenSzenenerkentung, Sprecherwechsel
frameEinzelne Frames klassifizierenFrame-Beschriftung
keyframeWichtige Momente markierenHighlight-Erkennung
trackingObjekte über Frames verfolgenObjektverfolgung
combinedAlle Modi in einer OberflächeKomplexe Annotationsaufgaben

Grundkonfiguration

yaml
annotation_schemes:
  - name: "video_segments"

Konfigurationsoptionen

FeldTypStandardBeschreibung
namestringErforderlichEindeutiger Bezeichner für die Annotation
descriptionstringErforderlichAnweisungen für Annotatoren
annotation_typestringErforderlichMuss "video_annotation" sein
labelslistErforderlichVerfügbare Annotationsbeschriftungen
modestring"segment"Annotationsmodus
min_segmentsinteger0Mindestanzahl erforderlicher Annotationen
max_segmentsintegernullMaximale Anzahl erlaubter Annotationen
timeline_heightinteger70Zeitstrahl-Höhe in Pixeln
overview_heightinteger40Übersichtsbalken-Höhe in Pixeln
zoom_enabledbooleantrueZeitstrahl-Zoom aktivieren
playback_rate_controlbooleantrueWiedergabegeschwindigkeitsauswahl anzeigen
frame_steppingbooleantrueFrame-für-Frame-Navigation aktivieren
show_timecodebooleantrueFramenummer und Zeit anzeigen
video_fpsinteger30Video-Framerate für Berechnungen

Beschriftungskonfiguration

Beschriftungen können einfache Zeichenketten oder detaillierte Objekte mit Farben und Tastaturkürzeln sein:

yaml
labels:
  - name: "intro"
    color: "#4ECDC4"
    key_value: "1"
  - name: "content"
    color: "#3B82F6"
    key_value: "2"
  - name: "outro"
    color: "#8B5CF6"
    key_value: "3"

Beispiele nach Modus

Segmentmodus (Standard)

Zeitliche Bereiche mit Start- und Endzeiten markieren:

yaml
annotation_schemes:
  - name: "scene_detection"

Frame-Modus

Einzelne Frames klassifizieren:

yaml
annotation_schemes:
  - name: "frame_quality"

Schlüsselbild-Modus

Wichtige Momente markieren:

yaml
annotation_schemes:
  - name: "highlights"

Verfolgungsmodus

Objekte über Frames mit Begrenzungsrahmen verfolgen:

yaml
annotation_schemes:
  - name: "object_tracking"

Kombinierter Modus

Mehrere Annotationstypen in einer Oberfläche verwenden:

yaml
annotation_schemes:
  - name: "comprehensive"

Videoanzeige

Für einfache Videowiedergabe ohne Annotation (z. B. zur Begleitung anderer Annotationstypen) den Typ video verwenden:

yaml
annotation_schemes:
  - name: "video_player"

Tastaturkürzel

TasteAktion
SpaceAbspielen/Pausieren
, / .Vorheriger/nächster Frame
[Segmentstart markieren
]Segmentende markieren
EnterSegment erstellen
KSchlüsselbild markieren
CAktuellen Frame klassifizieren
DeleteAusgewählte Annotation entfernen
1-9Beschriftung auswählen
+ / -Hinein-/herauszoomen

Datenformat

Eingabedaten

Die Datendatei sollte Videopfade oder URLs enthalten:

json
[
  {
    "id": "video_1",
    "video_url": "https://example.com/videos/sample1.mp4",
    "description": "Meeting recording - identify speakers"
  },
  {
    "id": "video_2",
    "video_url": "/data/videos/sample2.mp4",
    "description": "Activity video - label actions"
  }
]

Ausgabeformat

Die Ausgabe variiert je nach Modus:

Segmentmodus:

json
{
  "id": "video_1",
  "annotations": {
    "scene_detection": [
      {
        "start": 0.0,
        "end": 5.2,
        "start_frame": 0,
        "end_frame": 156,
        "label": "indoor"
      }
    ]
  }
}

Frame-Modus:

json
{
  "id": "video_1",
  "annotations": {
    "frame_quality": [
      {
        "frame": 120,
        "time": 4.0,
        "label": "good"
      }
    ]
  }
}

Schlüsselbild-Modus:

json
{
  "id": "video_1",
  "annotations": {
    "highlights": [
      {
        "frame": 450,
        "time": 15.0,
        "label": "goal",
        "note": "First goal of the match"
      }
    ]
  }
}

Verfolgungsmodus:

json
{
  "id": "video_1",
  "annotations": {
    "object_tracking": [
      {
        "id": "track_1",
        "label": "ball",
        "frames": [
          {"frame": 0, "bbox": {"x": 100, "y": 200, "w": 30, "h": 30}},
          {"frame": 1, "bbox": {"x": 105, "y": 198, "w": 30, "h": 30}}
        ]
      }
    ]
  }
}

Unterstützte Videoformate

  • MP4 (empfohlen)
  • WebM
  • MOV
  • OGG

Video-Objektverfolgung mit Schlüsselbild-Interpolation

Neu in v2.2.0

Der Verfolgungsmodus unterstützt jetzt Schlüsselbild-Interpolation, die es Annotatoren ermöglicht, Objektpositionen an Schlüsselbildern zu markieren, während Zwischenframes automatisch interpoliert werden. Dies beschleunigt Objektverfolgungsaufgaben erheblich.

yaml
annotation_schemes:
  - name: "tracking"

Arbeitsablauf

  1. Zu einem Schlüsselbild navigieren und einen Begrenzungsrahmen um das Objekt zeichnen
  2. Mehrere Frames vorspringen und den Begrenzungsrahmen neu positionieren
  3. Das System interpoliert automatisch Positionen für Zwischenframes
  4. Interpolierte Positionen nach Bedarf überprüfen und anpassen

Die vollständige Liste gültiger Annotationsmodi ist: segment, frame, keyframe, tracking und combined.

Technische Hinweise

  • Verwendet Peaks.js für Zeitstrahl-Visualisierung
  • Standard-HTML5-Videoelemente (keine zusätzlichen Server-Abhängigkeiten)
  • Zeitstrahl unterstützt Ziehen zur Auswahl für die Segmenterstellung

Bewährte Vorgehensweisen

  1. Komprimierte Videos verwenden - Große Dateien verlangsamen das Laden
  2. Geeignete FPS festlegen - video_fps an die tatsächliche Video-Framerate anpassen
  3. Frame-Stepping aktivieren - Unverzichtbar für präzise Frame-Annotation
  4. Wiedergabegeschwindigkeit nutzen - Zeitlupe hilft bei detaillierter Arbeit
  5. Klare Segmentdefinitionen bereitstellen - Festlegen, was Segmentgrenzen ausmacht
  6. Eindeutige Farben verwenden - Beschriftungen visuell unterscheidbar machen
  7. Zeitstrahl-Höhe berücksichtigen - Für komplexe Segmentierungsaufgaben erhöhen