Skip to content
Tutorials5 min read

Anotação de Vídeo com Controles Quadro a Quadro

Configure anotação de vídeo no Potato com navegação quadro a quadro, marcadores de tempo, rotulagem de eventos temporais e classificação por segmento usando esquemas radio ou span.

Potato Team

A anotação de vídeo é como você cria dados de treinamento para coisas como reconhecimento de ações, rastreamento de objetos e detecção de eventos temporais. Este tutorial cobre a navegação por quadros, a segmentação de um clipe no tempo e como manter a rotulagem rápida. Para a referência completa do esquema de vídeo, consulte a documentação de origem.

O que a anotação de vídeo pode fazer

O Potato lida com vídeo tanto para tarefas de rotulagem quanto de classificação:

  • Classificação de vídeo: rotule clipes de vídeo inteiros
  • Marcação multirrótulo: aplique várias tags aos vídeos
  • Anotação temporal: marque eventos nos vídeos

Configuração Básica de Vídeo

yaml
annotation_task_name: "Video Action Recognition"
task_dir: "."
 
data_files:
  - "data/videos.json"
 
item_properties:
  id_key: id
  text_key: video_url
 
output_annotation_dir: "annotation_output/"
export_annotation_format: "jsonl"
 
annotation_schemes:
  - annotation_type: video_annotation
    name: action
    description: "Mark each stretch of video where one action is happening"
    mode: segment
    labels:
      - name: walking
        color: "#4ECDC4"
        key_value: "1"
      - name: running
        color: "#FF6B6B"
        key_value: "2"
      - name: jumping
        color: "#45B7D1"
        key_value: "3"
      - name: sitting
        color: "#FFEAA7"
        key_value: "4"
 
user_config:
  allow_all_users: true
yaml
    min_segments: 1
    label_requirement:
      required: true

Anotação de segmentos temporais

Marque eventos com um tempo de início e de fim:

yaml
annotation_schemes:
  - annotation_type: video_annotation
    name: frame_label
    description: "Classify the current frame"
    mode: frame
    frame_stepping: true
    show_timecode: true
    video_fps: 30
    labels:
      - name: action
        color: "#FF6B6B"
        key_value: "1"
      - name: no_action
        color: "#9CA3AF"
        key_value: "2"

Criando Segmentos

  1. Navegue até o início de um evento
  2. Pressione [ ou clique em "Mark Start"
  3. Navegue até o fim do evento
  4. Pressione ] ou clique em "Mark End"
  5. Selecione o rótulo do evento
  6. Repita para todos os eventos

Marcando momentos-chave

Marque momentos específicos dentro de um clipe:

yaml
annotation_schemes:
  - annotation_type: video_annotation
    name: key_moments
    description: "Mark the moment each action begins, peaks, and ends"
    mode: keyframe
    labels:
      - name: action_start
        color: "#22C55E"
        key_value: "1"
      - name: action_peak
        color: "#EF4444"
        key_value: "2"
      - name: action_end
        color: "#3B82F6"
        key_value: "3"

Classificação por vídeo

Classifique um vídeo inteiro com os tipos de anotação padrão:

yaml
annotation_schemes:
  - annotation_type: video_annotation
    name: plays
    description: "Mark each play and describe it"
    mode: segment
    labels:
      - name: attack
        color: "#EF4444"
      - name: defense
        color: "#3B82F6"
    segment_schemes:
      - annotation_type: radio
        name: outcome
        description: "How did this play end?"
        labels: ["scored", "turnover", "out of play"]

Vídeo com rótulos de categoria

Anote vídeos com rótulos de categoria:

yaml
annotation_schemes:
  - annotation_type: multiselect
    name: clip_tags
    description: "Tags that apply to this clip as a whole"
    labels:
      - Highlight worthy
      - Good camera angle
      - Multiple players
      - Close-up
      - Wide shot
      - Slow motion available

Uma configuração completa

yaml
annotation_task_name: "Sports Video Analysis"
task_dir: "."
 
data_files:
  - "data/sports_clips.json"
 
item_properties:
  id_key: id
  text_key: video_url
 
output_annotation_dir: "annotations/"
export_annotation_format: "jsonl"
 
annotation_instructions: |
  ## Event marking
 
  - Mark an event from the frame it **starts**, not from the frame it becomes obvious.
  - Include the full play sequence in the segment.
  - For a goal, run the segment from the shot to the ball crossing the line.
 
  ## Navigation
 
  - `Space` plays and pauses, `,` and `.` step one frame.
  - `[` and `]` set the segment boundaries, `Enter` creates the segment.
 
annotation_schemes:
  - annotation_type: video_annotation
    name: game_events
    description: "Mark every game event and its duration"
    mode: segment
    frame_stepping: true
    show_timecode: true
    playback_rate_control: true
    video_fps: 30
    min_segments: 1
    label_requirement:
      required: true
    labels:
      - name: goal
        color: "#22C55E"
        key_value: "1"
      - name: foul
        color: "#EF4444"
        key_value: "2"
      - name: corner_kick
        color: "#3B82F6"
        key_value: "3"
      - name: free_kick
        color: "#F59E0B"
        key_value: "4"
      - name: penalty
        color: "#EC4899"
        key_value: "5"
      - name: offside
        color: "#8B5CF6"
        key_value: "6"
 
  - annotation_type: multiselect
    name: clip_tags
    description: "Tags that apply to this clip as a whole"
    labels:
      - Highlight worthy
      - Good camera angle
      - Multiple players
      - Close-up
      - Wide shot
      - Slow motion available
 
user_config:
  allow_all_users: true

Formato de Saída

json
{
    "video_metadata": {
        "duration": 120.5,
        "fps": 30,
        "width": 1920,
        "height": 1080
    },
    "segments": [
        {
            "id": "segment_1",
            "start_time": 0.0,
            "end_time": 10.5,
            "start_frame": 0,
            "end_frame": 315,
            "label": "goal"
        }
    ],
    "frame_annotations": {
        "450": {
            "frame": 450,
            "time": 15.0,
            "label": "scene_change"
        }
    },
    "keyframes": [
        {
            "id": "kf_1",
            "frame": 900,
            "time": 30.0,
            "label": "important_moment",
            "note": "Key dialogue"
        }
    ],
    "tracking": {}
}

Dicas para anotação de vídeo

  1. Visão geral na primeira passagem: assista primeiro em velocidade normal
  2. Câmera lenta para precisão: use 0,25x para timestamps exatos
  3. Atalhos de teclado: muito mais rápidos do que o mouse
  4. Faça pausas: anotação de vídeo é visualmente exigente
  5. Critérios consistentes: documente os casos limítrofes com clareza

Próximos Passos


Documentação completa em Anotação de Imagens (seção de vídeo).