Diffusers documentation

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

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

De nombreux jeux de données sont disponibles sur le Hub 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. 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

💡 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.

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 de 🤗 Datasets pour construire automatiquement un jeu de données à partir du dossier. La structure de votre répertoire doit ressembler à :

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 :

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

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

💡 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.

Commencez par créer un jeu de données avec la fonctionnalité 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 :

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 pour téléverser le jeu de données sur le Hub :

# 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 :

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 ou de génération d'images à partir de texte !

Update on GitHub