# Набор данных видео

В этом руководстве показано, как настроить репозиторий датасета с видеофайлами.

Набор данных с поддерживаемой структурой и [форматами файлов](./datasets-adding#file-formats) автоматически получает Dataset Viewer на своей странице в Hub.

Дополнительная информация о ваших видео — например, субтитры или ограничивающие рамки для обнаружения объектов — загружается автоматически, если вы включите эти данные в файл метаданных (`metadata.csv`/`metadata.jsonl`/`metadata.parquet`).

В качестве альтернативы видео могут храниться в файлах Parquet или в TAR-архивах, следующих формату [WebDataset](https://github.com/webdataset/webdataset).

## Только видео

Если ваш набор данных состоит только из одного столбца с видео, вы можете просто сохранить файлы видео в корне:

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

или в подкаталоге:

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

Одновременно поддерживаются несколько [форматов](./datasets-adding#file-formats), включая 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
```

См. [Имена файлов и разбиения](./datasets-file-names-and-splits) для получения дополнительной информации и других способов организации данных по разбиениям.

## Дополнительные столбцы

Если вы хотите добавить дополнительную информацию о вашем наборе данных, например текстовые подписи или ограничивающие прямоугольники, добавьте её в виде файла `metadata.csv` в вашем репозитории. Это позволяет быстро создавать наборы данных для различных задач компьютерного зрения, таких как [генерация видео](https://huggingface.co/tasks/text-to-video) или [обнаружение объектов](https://huggingface.co/tasks/object-detection).

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

Файл `metadata.csv` должен содержать столбец `file_name`, который связывает видеофайлы с их метаданными:

```csv
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](https://jsonlines.org/) `metadata.jsonl`:

```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](https://parquet.apache.org/) `metadata.parquet`.

## Относительные пути

Файл метаданных должен находиться либо в той же директории, что и связанные с ним видео, либо в любой родительской директории, как в этом примере:

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

В этом случае столбец `file_name` должен содержать полный относительный путь к видеофайлам, а не только имя файла:

```csv
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`).

Вы также можете указать несколько разбиений. Для этого каталог вашего набора данных должен иметь следующую структуру (см. [Имена файлов и разбиения](./datasets-file-names-and-splits) для получения дополнительной информации):

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

Вы можете отключить автоматическое добавление столбца `label` в [YAML-конфигурации](./datasets-manual-configuration). Если имена ваших каталогов не имеют специального значения, установите `drop_labels: true` в заголовке README:

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

## Наборы данных большого масштаба

### Формат WebDataset

Формат [WebDataset](./datasets-webdataset) хорошо подходит для видеодатасетов большого масштаба. Он состоит из TAR-архивов, содержащих видео и их метаданные, и оптимизирован для потоковой передачи. Этот формат полезен, если у вас большое количество видео и вам нужны потоковые загрузчики данных для обучения в большом масштабе.

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

Чтобы создать TAR-архив WebDataset, создайте каталог, содержащий видео и файлы метаданных для архивирования, и создайте TAR-архив, например, с помощью команды `tar`. Обычно размер одного архива составляет около 1 ГБ. Убедитесь, что каждая пара видео и метаданных имеет одинаковый префикс имени файла, например:

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

Обратите внимание, что для удобства пользователей и для обеспечения работы [Dataset Viewer](./data-studio) каждый датасет, размещённый в Hub, автоматически конвертируется в формат Parquet при размере до 5 ГБ. Поскольку видеофайлы могут быть достаточно большими, в сконвертированных данных Parquet хранятся URL-адреса видео без самих байтов видео. Подробнее об этом читайте в документации по [формату Parquet](./data-studio#access-the-parquet-files).

