Diffusers documentation

Создание набора данных для обучения

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Создание набора данных для обучения

На Hub представлено множество датасетов для обучения моделей, но если вы не нашли нужный или хотите использовать собственный, вы можете создать датасет с помощью библиотеки 🤗 Datasets. Структура датасета зависит от задачи, для которой вы обучаете модель. Самая простая структура — это каталог с изображениями для таких задач, как безусловная генерация изображений. Другая возможная структура — каталог с изображениями и текстовый файл с соответствующими текстовыми описаниями для таких задач, как генерация изображений по тексту.

В этом руководстве показано два способа создания набора данных для дообучения:

  • укажите папку с изображениями в аргументе --train_data_dir
  • загрузите датасет в Hub и передайте идентификатор репозитория датасета в аргумент --dataset_name

💡 Подробнее о том, как создать набор изображений для обучения, читайте в руководстве Создание набора изображений.

Предоставление набора данных в виде папки

Для безусловной генерации вы можете предоставить собственный датасет в виде папки с изображениями. Скрипт обучения использует билдер ImageFolder из 🤗 Datasets для автоматического создания датасета из папки. Структура вашего каталога должна выглядеть так:

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

Передайте путь к каталогу с набором данных в аргумент --train_data_dir, после чего можно запустить обучение:

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

Загрузите ваши данные в Hub

💡 Чтобы узнать больше о создании и загрузке набора данных в Hub, ознакомьтесь с публикацией Image search with 🤗 Datasets.

Начните с создания набора данных с помощью функции ImageFolder, которая создаёт столбец image с изображениями, закодированными в формате PIL.

Вы можете использовать параметры data_dir или data_files, чтобы указать расположение набора данных. Параметр data_files поддерживает сопоставление конкретных файлов с частями набора данных, такими как train или 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_3367a.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"]}
)

Затем используйте метод push_to_hub, чтобы загрузить набор данных в 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)

Теперь набор данных доступен для обучения, если передать его имя в аргумент --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>

Дальнейшие шаги

Теперь, когда вы создали набор данных, вы можете передать его в аргумент train_data_dir (если ваш набор данных находится локально) или dataset_name (если ваш набор данных размещён на Hub) в скрипте обучения.

Для следующих шагов попробуйте использовать свой набор данных для обучения модели бесусловной генерации или генерации изображений по тексту!

Update on GitHub