# Créer un jeu de données pour l'entraînement

De nombreux jeux de données sont disponibles sur le [Hub](https://huggingface.co/datasets?task_categories=task_categories:text-to-image&sort=downloads) pour entraîner un modèle, mais si vous ne trouvez pas celui qui vous intéresse ou si vous souhaitez utiliser le vôtre, vous pouvez créer un jeu de données avec la bibliothèque 🤗 [Datasets](https://huggingface.co/docs/datasets). La structure du jeu de données dépend de la tâche pour laquelle vous souhaitez entraîner votre modèle. La structure la plus basique est un répertoire d'images pour des tâches comme la génération d'images non conditionnelle. Une autre structure de jeu de données peut être un répertoire d'images et un fichier texte contenant les légendes correspondantes pour des tâches comme la génération d'images à partir de texte.

Ce guide vous montre deux façons de créer un jeu de données pour l'ajustement fin :

- fournir un dossier d'images à l'argument `--train_data_dir`
- téléverser un jeu de données sur le Hub et passer l'identifiant du dépôt du jeu de données à l'argument `--dataset_name`

> [!TIP]
> 💡 En savoir plus sur la création d'un jeu de données d'images pour l'entraînement dans le guide [Créer un jeu de données d'images](https://huggingface.co/docs/datasets/image_dataset).

## Fournir un jeu de données sous forme de dossier

Pour la génération inconditionnelle, vous pouvez fournir votre propre jeu de données sous forme d'un dossier d'images. Le script d'entraînement utilise le constructeur [`ImageFolder`](https://huggingface.co/docs/datasets/en/image_dataset#imagefolder) de 🤗 Datasets pour construire automatiquement un jeu de données à partir du dossier. La structure de votre répertoire doit ressembler à :

```bash
data_dir/xxx.png
data_dir/xxy.png
data_dir/[...]/xxz.png
```

Transmettez le chemin vers le répertoire du jeu de données à l'argument `--train_data_dir`, puis vous pouvez démarrer l'entraînement :

```bash
accelerate launch train_unconditional.py \
    --train_data_dir <path-to-train-directory> \
    <other-arguments>
```

## Téléversez vos données sur le Hub

> [!TIP]
> 💡 Pour plus de détails et de contexte sur la création et le téléchargement d'un jeu de données sur le Hub, consultez l'article [Image search with 🤗 Datasets](https://huggingface.co/blog/image-search-datasets).

Commencez par créer un jeu de données avec la fonctionnalité [`ImageFolder`](https://huggingface.co/docs/datasets/image_load#imagefolder), qui crée une colonne `image` contenant les images encodées en PIL.

Vous pouvez utiliser les paramètres `data_dir` ou `data_files` pour spécifier l'emplacement du jeu de données. Le paramètre `data_files` permet d'associer des fichiers spécifiques à des sous-ensembles du jeu de données, tels que `train` ou `test` :

```python
from datasets import load_dataset

# example 1: local folder
dataset = load_dataset("imagefolder", data_dir="path_to_your_folder")

# example 2: local files (supported formats are tar, gzip, zip, xz, rar, zstd)
dataset = load_dataset("imagefolder", data_files="path_to_zip_file")

# example 3: remote files (supported formats are tar, gzip, zip, xz, rar, zstd)
dataset = load_dataset(
    "imagefolder",
    data_files="https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_5340.zip",
)

# example 4: providing several splits
dataset = load_dataset(
    "imagefolder", data_files={"train": ["path/to/file1", "path/to/file2"], "test": ["path/to/file3", "path/to/file4"]}
)
```

Utilisez ensuite la méthode [push_to_hub](https://huggingface.co/docs/datasets/v5.2.0/en/package_reference/main_classes#datasets.Dataset.push_to_hub) pour téléverser le jeu de données sur le Hub :

```python
# assuming you have ran the hf auth login command in a terminal
dataset.push_to_hub("name_of_your_dataset")

# if you want to push to a private repo, simply pass private=True:
dataset.push_to_hub("name_of_your_dataset", private=True)
```

Le jeu de données est désormais disponible pour l'entraînement en passant le nom du jeu de données à l'argument `--dataset_name` :

```bash
accelerate launch --mixed_precision="fp16"  train_text_to_image.py \
  --pretrained_model_name_or_path="stable-diffusion-v1-5/stable-diffusion-v1-5" \
  --dataset_name="name_of_your_dataset" \
  <other-arguments>
```

## Étapes suivantes

Maintenant que vous avez créé un jeu de données, vous pouvez l’intégrer dans l’argument `train_data_dir` (si votre jeu de données est local) ou `dataset_name` (si votre jeu de données est sur le Hub) d’un script d’entraînement.

Pour vos prochaines étapes, n'hésitez pas à essayer d'utiliser votre jeu de données pour entraîner un modèle de [génération non conditionnelle](unconditional_training) ou de [génération d'images à partir de texte](text2image) !

