# Jeu de données vidéo

Ce guide vous montre comment configurer votre dépôt de jeu de données avec des fichiers vidéo.

Un jeu de données doté d'une structure prise en charge et de [formats de fichiers](./datasets-adding#file-formats) appropriés dispose automatiquement d'un visualiseur de jeu de données sur sa page du Hub.

Des informations supplémentaires sur vos vidéos - telles que des sous-titres ou des boîtes englobantes pour la détection d'objets - sont chargées automatiquement dès lors que vous incluez ces informations dans un fichier de métadonnées (`metadata.csv`/`metadata.jsonl`/`metadata.parquet`).

Alternativement, les vidéos peuvent être stockées dans des fichiers Parquet ou dans des archives TAR suivant le format [WebDataset](https://github.com/webdataset/webdataset).

## Vidéos uniquement

Si votre jeu de données ne comporte qu'une seule colonne de vidéos, vous pouvez simplement stocker vos fichiers vidéo à la racine :

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

ou dans un sous-répertoire :

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

Plusieurs [formats](./datasets-adding#file-formats) sont pris en charge simultanément, notamment MP4, MOV et AVI.

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

Si vous avez plusieurs splits, vous pouvez placer vos vidéos dans des répertoires nommés en conséquence :

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

Voir [Noms de fichiers et splits](./datasets-file-names-and-splits) pour plus d’informations et d’autres façons d’organiser les données par splits.

## Colonnes supplémentaires

Si vous souhaitez inclure des informations supplémentaires sur votre jeu de données, telles que des légendes de texte ou des boîtes englobantes, ajoutez-les sous forme de fichier `metadata.csv` dans votre dépôt. Cela vous permet de créer rapidement des jeux de données pour différentes tâches de vision par ordinateur, comme la [génération de vidéos](https://huggingface.co/tasks/text-to-video) ou la [détection d'objets](https://huggingface.co/tasks/object-detection).

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

Votre fichier `metadata.csv` doit contenir une colonne `file_name` qui associe les fichiers vidéo à leurs métadonnées :

```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
```

Vous pouvez également utiliser un fichier [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"}
```

Et pour des jeux de données plus volumineux ou si vous êtes intéressé par des fonctionnalités avancées de récupération de données, vous pouvez utiliser un fichier [Parquet](https://parquet.apache.org/) `metadata.parquet`.

## Chemins relatifs

Le fichier de métadonnées doit se trouver soit dans le même répertoire que les vidéos auxquelles il est lié, soit dans un répertoire parent, comme dans cet exemple :

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

Dans ce cas, la colonne `file_name` doit contenir le chemin relatif complet vers les vidéos, et non simplement le nom du fichier :

```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
```

Les fichiers de métadonnées ne peuvent pas être placés dans des sous-répertoires d'un répertoire contenant les vidéos.

Plus généralement, toute colonne nommée `file_name` ou `*_file_name` doit contenir le chemin relatif complet vers les vidéos.

## Classification de vidéos

Pour les jeux de données de classification vidéo, vous pouvez également utiliser une configuration simple : utilisez des répertoires pour nommer les classes de vidéos. Stockez vos fichiers vidéo dans une structure de répertoires comme :

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

Le jeu de données créé avec cette structure contient deux colonnes : `video` et `label` (avec les valeurs `green` et `red`).

Vous pouvez également fournir plusieurs splits. Pour ce faire, votre répertoire de jeu de données doit avoir la structure suivante (voir [Noms de fichiers et splits](./datasets-file-names-and-splits) pour plus d’informations) :

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

Vous pouvez désactiver cette ajout automatique de la colonne `label` dans la [configuration YAML](./datasets-manual-configuration). Si les noms de vos répertoires n’ont pas de signification particulière, définissez `drop_labels: true` dans l’en-tête du README :

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

## Jeux de données à grande échelle

### Format WebDataset

Le format [WebDataset](./datasets-webdataset) est bien adapté aux jeux de données vidéo de grande envergure. Il se compose d'archives TAR contenant des vidéos et leurs métadonnées, et est optimisé pour le streaming. Il est utile si vous disposez d'un grand nombre de vidéos et souhaitez obtenir des chargeurs de données en streaming pour l'entraînement à grande échelle.

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

Pour créer une archive TAR WebDataset, créez un répertoire contenant les vidéos et les fichiers de métadonnées à archiver, puis créez l'archive TAR à l'aide, par exemple, de la commande `tar`. La taille habituelle par archive est généralement d'environ 1 Go. Assurez-vous que chaque paire vidéo/métadonnées partage le même préfixe de fichier, par exemple :

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

Notez que, pour la commodité des utilisateurs et afin de permettre le [Dataset Viewer](./data-studio), chaque jeu de données hébergé sur le Hub est automatiquement converti au format Parquet jusqu'à 5 Go. Étant donné que les vidéos peuvent être assez volumineuses, les URL des vidéos sont stockées dans les données Parquet converties sans les octets de la vidéo elle-même. En savoir plus à ce sujet dans la documentation du [format Parquet](./data-studio#access-the-parquet-files).

