Дотримання Stable Diffusion через DreamBooth
DreamBooth дозволяє навчити SD на конкретному предметі (людина, продукт, стиль, персонаж) з 5–20 фотографій. Після навчання модель генерує предмет у довільних сценаріях, зберігаючи впізнаваність.
Застосування
- Брендований продукт: кросівки в різних сценах — на природі, в місті, у студії
- Аватари: обличчя людини в різних стилях — аніме, олійний живопис, мультфільм
- Персонаж: ігровий персонаж у нових ситуаціях
- Стиль художника: перенесення художнього стилю на нові сцени
Навчання Diffusers DreamBooth
pip install accelerate diffusers transformers bitsandbytes
# Сценарій навчання для SDXL DreamBooth
accelerate launch train_dreambooth_lora_sdxl.py --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" --instance_data_dir="./training_images" --output_dir="./dreambooth_output" --instance_prompt="a photo of sks person" --resolution=1024 --train_batch_size=1 --gradient_accumulation_steps=4 --learning_rate=1e-4 --lr_scheduler="constant" --lr_warmup_steps=0 --max_train_steps=500 --seed=42 --mixed_precision="fp16"
Підготовка набору даних
from PIL import Image
import os
def prepare_dreambooth_dataset(source_images, output_dir, target_size=1024):
os.makedirs(output_dir, exist_ok=True)
for i, img_path in enumerate(source_images):
img = Image.open(img_path).convert("RGB")
width, height = img.size
min_dim = min(width, height)
left = (width - min_dim) // 2
top = (height - min_dim) // 2
img_cropped = img.crop((left, top, left + min_dim, top + min_dim))
img_resized = img_cropped.resize((target_size, target_size), Image.LANCZOS)
img_resized.save(f"{output_dir}/{i:03d}.jpg", quality=95)
print(f"Підготовлено {len(source_images)} зображень у {output_dir}")
Гіперпараметри та поради
| Параметр | Рекомендація | Ефект |
|---|---|---|
| Кроки навчання | 200–1000 | > 1000 — переобучення |
| Learning rate | 1e-4 до 1e-5 | Нижче = стабільніше |
| Зображення | 5–20 | Різні кути/освітлення |
| Збереження попередніх знань | Так | Запобігає мовному дрейфу |
| Размер пакета | 1–2 | Обмежено VRAM |
Тривалість: навчання DreamBooth LoRA (~500 кроків на RTX 3090) — 15–30 хвилин. Сервіс із завантаженням зображень користувачами та генерацією аватарів — 2–4 тижні.







