Hub documentation

Conjunto de Dados de Vídeo

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Conjunto de Dados de Vídeo

Este guia mostrará como configurar seu repositório de dataset com arquivos de vídeo.

Um conjunto de dados com uma estrutura e formatos de arquivo suportados possui automaticamente um Visualizador de Conjunto de Dados em sua página no Hub.

Informações adicionais sobre seus vídeos - como legendas ou bounding boxes para detecção de objetos - são carregadas automaticamente, desde que você inclua essas informações em um arquivo de metadados (metadata.csv/metadata.jsonl/metadata.parquet).

Alternativamente, os vídeos podem estar em arquivos Parquet ou em arquivos TAR seguindo o formato WebDataset.

Apenas vídeos

Se o seu conjunto de dados consiste apenas de uma coluna com vídeos, você pode simplesmente armazenar seus arquivos de vídeo na raiz:

my_dataset_repository/
├── 1.mp4
├── 2.mp4
├── 3.mp4
└── 4.mp4

ou em um subdiretório:

my_dataset_repository/
└── videos
    ├── 1.mp4
    ├── 2.mp4
    ├── 3.mp4
    └── 4.mp4

Vários formatos são suportados simultaneamente, incluindo MP4, MOV e AVI.

my_dataset_repository/
└── videos
    ├── 1.mp4
    ├── 2.mov
    └── 3.avi

Se você tiver vários splits, pode colocar seus vídeos em diretórios nomeados de acordo:

my_dataset_repository/
├── train
│   ├── 1.mp4
│   └── 2.mp4
└── test
    ├── 3.mp4
    └── 4.mp4

Veja Nomes de arquivos e splits para mais informações e outras formas de organizar dados por splits.

Colunas adicionais

Se houver informações adicionais que você deseja incluir sobre seu conjunto de dados, como legendas de texto ou caixas delimitadoras, adicione-as como um arquivo metadata.csv no seu repositório. Isso permite criar rapidamente conjuntos de dados para diferentes tarefas de visão computacional, como geração de vídeo ou detecção de objetos.

my_dataset_repository/
└── train
    ├── 1.mp4
    ├── 2.mp4
    ├── 3.mp4
    ├── 4.mp4
    └── metadata.csv

O seu arquivo metadata.csv deve ter uma coluna file_name que vincula os arquivos de vídeo aos seus metadados:

file_name,text
1.mp4,an animation of a green pokemon with red eyes
2.mp4,a short video of a green and yellow toy with a red nose
3.mp4,a red and white ball shows an angry look on its face
4.mp4,a cartoon ball is smiling

Você também pode usar um arquivo JSONL metadata.jsonl:

{"file_name": "1.mp4","text": "an animation of a green pokemon with red eyes"}
{"file_name": "2.mp4","text": "a short video of a green and yellow toy with a red nose"}
{"file_name": "3.mp4","text": "a red and white ball shows an angry look on its face"}
{"file_name": "4.mp4","text": "a cartoon ball is smiling"}

E para conjuntos de dados maiores ou se você estiver interessado em recursos avançados de recuperação de dados, pode usar um arquivo Parquet metadata.parquet.

Caminhos relativos

O arquivo de metadados deve estar localizado no mesmo diretório dos vídeos aos quais está vinculado, ou em qualquer diretório pai, como neste exemplo:

my_dataset_repository/
└── train
    ├── videos
    │   ├── 1.mp4
    │   ├── 2.mp4
    │   ├── 3.mp4
    │   └── 4.mp4
    └── metadata.csv

Neste caso, a coluna file_name deve ser um caminho relativo completo para os vídeos, não apenas o nome do arquivo:

file_name,text
videos/1.mp4,an animation of a green pokemon with red eyes
videos/2.mp4,a short video of a green and yellow toy with a red nose
videos/3.mp4,a red and white ball shows an angry look on its face
videos/4.mp4,a cartoon ball is smiling

Arquivos de metadados não podem ser colocados em subdiretórios de um diretório com os vídeos.

De forma mais geral, qualquer coluna nomeada file_name ou *_file_name deve conter o caminho relativo completo para os vídeos.

Classificação de vídeo

Para conjuntos de dados de classificação de vídeo, você também pode usar uma configuração simples: use diretórios para nomear as classes de vídeo. Armazene seus arquivos de vídeo em uma estrutura de diretórios como:

my_dataset_repository/
├── green
│   ├── 1.mp4
│   └── 2.mp4
└── red
    ├── 3.mp4
    └── 4.mp4

O dataset criado com essa estrutura contém duas colunas: video e label (com os valores green e red).

Você também pode fornecer múltiplos splits. Para isso, o diretório do seu dataset deve ter a seguinte estrutura (veja Nomes de arquivos e splits para mais informações):

my_dataset_repository/
├── test
│   ├── green
│   │   └── 2.mp4
│   └── red
│       └── 4.mp4
└── train
    ├── green
    │   └── 1.mp4
    └── red
        └── 3.mp4

Você pode desabilitar essa adição automática da coluna label na configuração YAML. Se os nomes dos seus diretórios não tiverem significado especial, defina drop_labels: true no cabeçalho do README:

configs:
  - config_name: default  # Name of the dataset subset, if applicable.
    drop_labels: true

Conjuntos de dados em larga escala

Formato WebDataset

O formato WebDataset é adequado para conjuntos de dados de vídeo em larga escala. Ele consiste em arquivos TAR contendo vídeos e seus metadados e é otimizado para streaming. É útil se você tiver um grande número de vídeos e precisar de carregadores de dados em streaming para treinamento em larga escala.

my_dataset_repository/
├── train-0000.tar
├── train-0001.tar
├── ...
└── train-1023.tar

Para criar um arquivo TAR do WebDataset, crie um diretório contendo os vídeos e os arquivos de metadados a serem arquivados e crie o arquivo TAR usando, por exemplo, o comando tar. O tamanho usual por arquivo é geralmente em torno de 1GB. Certifique-se de que cada par de vídeo e metadados compartilhe o mesmo prefixo de arquivo, por exemplo:

train-0000/
├── 000.mp4
├── 000.json
├── 001.mp4
├── 001.json
├── ...
├── 999.mp4
└── 999.json

Observe que, para a conveniência do usuário e para habilitar o Dataset Viewer, todo dataset hospedado no Hub é automaticamente convertido para o formato Parquet, até 5GB. Como os vídeos podem ser bastante grandes, as URLs dos vídeos são armazenadas nos dados Parquet convertidos, sem os próprios bytes dos vídeos. Leia mais sobre isso na documentação do formato Parquet.

Update on GitHub