DreamBooth - это инновационный метод, который позволяет настраивать модели преобразования текста в изображение, такие как Stable Diffusion, используя всего несколько изображений объекта. DreamBooth позволяет создавать новые, контекстуально изменяющиеся изображения объекта в различных сценах, позах и ракурсах, расширяя творческие возможности генеративных моделей.

Подготовка данных

Формат данных для обучения DreamBooth прост. Все, что вам нужно, - это изображения концепта (например, человека) и концептуальный токен.

Шаг 1: Соберите свои изображения

Соберите 3-5 высококачественных изображений объекта, которого вы хотите персонализировать. Эти изображения должны немного отличаться по позе или фону, чтобы предоставить модели разнообразный набор для обучения. Вы можете выбрать больше изображений, если хотите обучить более надежную модель.

Шаг 2: Выберите свою модель

Выберите базовую модель в Hugging Face Hub, которая соответствует вашим потребностям. Важно выбрать модель, которая поддерживает размер изображения для ваших тренировочных данных. Модели, доступные в hub, часто имеют особые требования или возможности, поэтому убедитесь, что выбранная вами модель соответствует размерам ваших изображений.

Шаг 3: Определите свой концептуальный токен

Концептуальный токен является ключевым элементом обучения в DreamBooth. Этот токен действует как уникальный идентификатор для вашего объекта в рамках модели. Как правило, вы используете простое описательное ключевое слово, например prompt, в разделе параметров вашей программы обучения. Этот токен будет использован моделью для создания новых изображений вашего объекта съемки.

Параметры

 

( 
    model: str = None,
    vae_model: Optional = None,
    revision: Optional = None,
    tokenizer: Optional = None,
    image_path: str = None,
    class_image_path: Optional = None,
    prompt: str = None,
    class_prompt: Optional = None,
    num_class_images: int = 100,
    class_labels_conditioning: Optional = None,
    prior_preservation: bool = False,
    prior_loss_weight: float = 1.0,
    project_name: str = 'dreambooth-model',
    seed: int = 42,
    resolution: int = 512,
    center_crop: bool = False,
    train_text_encoder: bool = False,
    batch_size: int = 4,
    sample_batch_size: int = 4,
    epochs: int = 1,
    num_steps: int = None,
    checkpointing_steps: int = 500,
    resume_from_checkpoint: Optional = None,
    gradient_accumulation: int = 1,
    disable_gradient_checkpointing: bool = False,
    lr: float = 0.0001,
    scale_lr: bool = False,
    scheduler: str = 'constant',
    warmup_steps: int = 0,
    num_cycles: int = 1,
    lr_power: float = 1.0,
    dataloader_num_workers: int = 0,
    use_8bit_adam: bool = False,
    adam_beta1: float = 0.9,
    adam_beta2: float = 0.999,
    adam_weight_decay: float = 0.01,
    adam_epsilon: float = 1e-08,
    max_grad_norm: float = 1.0,
    allow_tf32: bool = False,
    prior_generation_precision: Optional = None,
    local_rank: int = -1,
    xformers: bool = False,
    pre_compute_text_embeddings: bool = False,
    tokenizer_max_length: Optional = None,
    text_encoder_use_attention_mask: bool = False,
    rank: int = 4xl: bool = False,
    mixed_precision: Optional = None,
    token: Optional = None,
    push_to_hub: bool = False,
    username: Optional = None,
    validation_prompt: Optional = None,
    num_validation_images: int = 4,
    validation_epochs: int = 50,
    checkpoints_total_limit: Optional = None,
    validation_images: Optional = None,
    logging: bool = False,
 
)

 

  • model (str) — Название модели, которая будет использоваться для обучения.
  • vae_model (Необязательный[str]) — Название модели VAE, которая будет использоваться, если таковая имеется.
  • revision (Необязательный[str]) — Конкретная версия модели для использования.
  • tokenizer (Необязательный[str]) — Используемый токенизатор, если он отличается от модели.
  • image_path (str) — Путь к обучающим изображениям.
  • class_image_path (Необязательный[str]) — Путь к классу изображений.
  • prompt (str) — Подсказка для экземпляров изображений.
  • class_prompt (Необязательный[str]) — Подсказка для класса изображений.
  • num_class_images (int) — Количество изображений класса для генерации.
  • class_labels_conditioning (Необязательный[str]) — Формирующие надписи для изображений классов.
  • prior_preservation (bool) — Обеспечить предварительную консервацию во время тренировки.
  • prior_loss_weight (float) — Вес потери при предыдущей консервации.
  • project_name (str) — Имя проекта для выходного каталога.
  • seed (int) — Случайное начальное значение для воспроизводимости.
  • resolution (int) — Разрешение обучающих изображений.
  • center_crop (bool) — Включить обрезку изображений по центру.
  • train_text_encoder (bool) — Включить обучение кодировщика текста.
  • batch_size (int) — Размер пакета для обучения.
  • sample_batch_size (int) — Размер партии для отбора проб.
  • epochs (int) — Количество эпох обучения.
  • num_steps (int) — Максимальное количество тренировочных шагов.
  • checkpointing_steps (int) — Интервал шагов для установки контрольной точки.
  • resume_from_checkpoint (Необязательный[str]) — Путь к возобновлению тренировки с контрольной точки.
  • gradient_accumulation (int) — Количество шагов накопления градиента.
  • disable_gradient_checkpointing (bool) — Отключить установку контрольных точек градиента.
  • lr (float) — Скорость обучения.
  • scale_lr (bool) — Включить масштабирование скорости обучения.
  • scheduler (str) — Тип планировщика темпов обучения.
  • warmup_steps (int) — Количество шагов разогрева для планировщика скорости обучения.
  • num_cycles (int) — Количество циклов для планировщика скорости обучения.
  • lr_power (float) — Коэффициент мощности для планировщика скорости обучения.
  • dataloader_num_workers (int) — Количество рабочих для загрузки данных.
  • use_8bit_adam (bool) — Включить использование 8-разрядного оптимизатора Adam.
  • adam_beta1 (float) — Параметр Beta1 для оптимизатора Adam.
  • adam_beta2 (float) — Параметр Beta2 для оптимизатора Adam.
  • adam_weight_decay (float) — Снижение веса для оптимизатора Adam.
  • adam_epsilon (float) — Параметр Epsilon для оптимизатора Adam.
  • max_grad_norm (float) — Максимальная норма градиента для отсечения.
  • allow_tf32 (bool) — Разрешить использовать TF32 для тренировок.
  • prior_generation_precision (Необязательный[str]) — Точность по сравнению с предыдущим поколением.
  • local_rank (int) — Local rank for distributed training.
  • xformers (bool) — Включить в xformers эффективное запоминание и внимание.
  • pre_compute_text_embeddings (bool) — Предварительно вычислить текстовые вложения перед обучением.
  • tokenizer_max_length (Необязательный[int]) — Максимальная длина для токенизатора.
  • text_encoder_use_attention_mask (bool) — Использовать маску внимания для кодировщика текста.
  • rank (int) — Ранг за распределенное обучение.
  • xl (bool) — Включить обучение по модели XL.
  • mixed_precision (Необязательный[str]) — Включить смешанную тренировку точности.
  • token (Необязательный[str]) — Токен для доступа к модельному концентратору.
  • push_to_hub (bool) — Включить загрузку модели на хаб.
  • username (Необязательный[str]) — Имя пользователя для модельного хаба.
  • validation_prompt (Необязательный[str]) — Подсказка для проверки изображений.
  • num_validation_images (int) — Количество создаваемых изображений для проверки.
  • validation_epochs (int) — Временной интервал для проверки.
  • checkpoints_total_limit (Необязательный[int]) — Общий лимит для контрольных точек.
  • validation_images (Необязательный[str]) — Путь к проверочным изображениям.
  • logging (bool) — Включить ведение журнала с помощью TensorBoard.

DreamBoothTrainingParams