视频数据集
本指南将向你展示如何配置包含视频文件的数据集仓库。
具有支持的结构和文件格式的数据集会在 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
有关更多信息和其他按切分组织数据的方法,请参阅文件名和切分。
附加列
如果你想要包含有关数据集的附加信息(例如文本标题或边界框),请将其作为 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)。
你也可以提供多个切分。为此,数据集目录应具有以下结构(有关更多信息,请参阅文件名和切分):
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 # 数据集子集的名称(如果适用)。
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
请注意,为了方便用户并启用数据集查看器,Hub 上托管的每个数据集都会自动转换为 Parquet 格式,最多 5GB。由于视频可能非常大,转换后的 Parquet 数据中存储的是视频的 URL,而不是视频字节本身。在 Parquet 格式文档中了解更多信息。