Hub documentation

视频数据集

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

视频数据集

本指南将向你展示如何配置包含视频文件的数据集仓库。

具有受支持的结构和文件格式的数据集,其 Hub 页面会自动提供数据集查看器。

有关视频的其他信息 - 例如字幕或用于目标检测的边界框 - 只要您将此信息包含在元数据文件(metadata.csv/metadata.jsonl/metadata.parquet)中,就会自动加载。

或者,视频可以存储在 Parquet 文件或遵循 WebDataset 格式的 TAR 归档中。

仅视频

如果您的数据集仅包含一个视频列,您可以直接将视频文件存储在根目录下:

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

或在子目录中:

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

同时支持多种格式,包括 MP4、MOV 和 AVI。

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

如果您有多个拆分,可以将视频放入相应命名的目录中:

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

有关更多信息以及按 split 组织数据的其他方法,请参阅 文件名和 split。

附加列

如果您希望为数据集添加额外信息,例如文本说明或边界框,请在您的仓库中将其作为 metadata.csv 文件添加。这可以让您快速创建适用于不同计算机视觉任务的数据集,例如 视频生成 或 目标检测。

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

您的 metadata.csv 文件必须包含一个 file_name 列,用于将视频文件与其元数据关联起来:

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

您也可以使用 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"}

对于更大的数据集,或者如果您希望使用高级数据检索功能,可以使用 Parquet 文件 metadata.parquet。

相对路径

元数据文件必须位于与其关联的视频所在的同一目录中,或位于任意父目录中,如下例所示:

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

在这种情况下,file_name 列必须是视频的完整相对路径,而不仅仅是文件名:

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

元数据文件不能放在包含视频的目录的子目录中。

更一般地,任何名为 file_name 或 *_file_name 的列都应包含视频的完整相对路径。

视频分类

对于视频分类数据集,您也可以使用简单的设置:使用目录来命名视频类别。将您的视频文件存储为如下目录结构:

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

使用此结构创建的数据集包含两列:video 和 label(取值为 green 和 red)。

您也可以提供多个 split。为此,您的数据集目录应具有以下结构(有关更多信息,请参阅 文件名和 split):

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

您可以在 YAML 配置中禁用自动添加 label 列的功能。如果您的目录名称没有特殊含义,请在 README 头部设置 drop_labels: true:

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

大规模数据集

WebDataset 格式

WebDataset 格式非常适合大规模视频数据集。它由包含视频及其元数据的 TAR 归档文件组成,并针对流式处理进行了优化。如果您拥有大量视频,并希望为大规模训练获取流式数据加载器,该格式非常有用。

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

要创建 WebDataset TAR 归档,请创建一个包含要归档的视频和元数据文件的目录,然后使用例如 tar 命令创建 TAR 归档。 每个归档的常规大小通常约为 1GB。 请确保每对视频和元数据文件共享相同的文件前缀,例如:

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

请注意,为了方便用户并启用 Dataset Viewer,Hub 上托管的每个数据集都会自动转换为 Parquet 格式,大小上限为 5GB。由于视频文件可能相当大,转换后的 Parquet 数据中仅存储视频的 URL,而不包含视频本身的字节数据。有关此内容的更多信息,请参阅 Parquet format 文档。

Update on GitHub