DreamBooth

dreambooth — subject-driven fine-tuning по нескольким изображениям

Раздел
Адаптеры
Обновлено
11.08.26

DreamBooth — рецепт персонализации text-to-image модели по нескольким изображениям конкретного объекта. Во время обучения редкий идентификатор связывается с его внешностью, а prior preservation помогает не спутать один экземпляр со всем классом. Обновления можно сохранить в полных весах или в LoRA, поэтому DreamBooth не означает один формат файла.

Коротко

DreamBooth связывает несколько изображений конкретного объекта с новым текстовым идентификатором. После fine-tuning модель может помещать этого человека, питомца или предмет в сцены, которых не было в маленьком датасете.

Оригинальный метод сочетает два сигнала: фотографии экземпляра с промптом вида a [V] dog и изображения общего класса с промптом a dog. Второй поток помогает сохранить разнообразие класса, чтобы слово dog не стало означать только одну собаку.

DreamBooth — не синоним полного checkpoint. Обучение может обновлять полные веса denoiser, часть компонентов или LoRA-адаптер. Рецепт данных и loss отвечает на вопрос чему учим, а LoRA — как компактно параметризуем обновление.

Откуда появился метод

Работа DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation описала персонализацию большой text-to-image модели по небольшому набору фотографий одного субъекта. В экспериментах часто использовались три–пять изображений, а результат проверялся в новых позах, ракурсах, стилях и окружениях.

Это число стало популярным слоганом, но не превратилось в техническое ограничение. Одному предмету с простой геометрией может хватить нескольких кадров. Лицо, сложная фактура или объект, который должен оставаться узнаваемым под разными углами, обычно выигрывает от более разнообразного набора.

Главная задача метода не «запомнить фотографии». Модель должна выделить постоянные признаки объекта и отделить их от фона, света, позы и камеры.

Идентификатор и класс

Во время обучения объект получает составное описание:

a [V] dog

Здесь [V] — редкий идентификатор экземпляра, а dog — знакомое модели имя класса. Вместе они означают не любую собаку, а конкретную.

В исходной работе идентификатор подбирался как редкая последовательность токенов словаря. Современные тренеры часто используют условное слово вроде TOK, sks или придуманное имя. Важна не внешняя странность букв, а то, как tokenizer делит строку и насколько исходное значение мешает новой связи.

Класс тоже влияет на результат. Слишком широкое слово слабо отделяет объект от остальных данных, а слишком узкое может навязать лишние признаки. Для необычной фигурки полезным классом бывает toy, для конкретного корги — dog, для человека — person. Это часть эксперимента, а не универсальный словарь.

Prior preservation

На маленьком датасете модель легко связывает имя класса с одним экземпляром. Тогда промпт a dog начинает возвращать вариации обученной собаки, а новые сцены повторяют фон и позу исходных фотографий. Авторы называют эти проблемы language drift и overfitting.

Class-specific prior preservation добавляет второй набор примеров общего класса. Их может сгенерировать исходная модель до fine-tuning:

instance: a [V] dog → фотографии конкретной собаки
class:    a dog     → разные собаки исходной модели

Loss экземпляра учит внешности [V] dog, а prior loss поддерживает прежнее разнообразие dog. Вес второй части определяет компромисс: слишком слабая регуляризация не сдерживает переобучение, слишком сильная мешает запомнить экземпляр.

Prior preservation остаётся опцией в практических реализациях. Его польза зависит от модели, предмета, датасета и способа адаптации. Само наличие папки class images не гарантирует разнообразия: однотипные или ошибочные примеры могут закрепить собственный перекос.

Что именно обучается

В оригинальном DreamBooth fine-tuning затрагивал генеративную модель достаточно глубоко, чтобы новая связь вошла в её поведение. В популярных latent diffusion реализациях основным обучаемым компонентом был denoiser — U-Net или diffusion transformer.

Text encoder может оставаться замороженным либо обучаться вместе с denoiser. Его обновление иногда улучшает связь идентификатора с объектом, но повышает расход памяти и риск переобучения языка. У архитектур с несколькими text encoder решение принимается отдельно для каждого компонента.

VAE обычно не является целью DreamBooth: он кодирует и декодирует изображения, но не отвечает за текстовую привязку объекта. Исключения возможны в специальных исследованиях, однако их не стоит считать стандартным pipeline.

DreamBooth и LoRA не являются взаимоисключающими

LoRA заменяет полное обновление матрицы обучаемой низкоранговой поправкой. Её можно применить внутри DreamBooth-рецепта к attention, линейным слоям denoiser или text encoder.

Получаются два распространённых варианта:

  • full DreamBooth — обновлённые веса сохраняются вместе с моделью;
  • DreamBooth LoRA — сохраняются только обученные адаптеры, а базовая модель остаётся отдельной.

Первый вариант даёт больше степеней свободы, но занимает больше места и тесно связан с конкретной базой. Второй легче переносить, смешивать и версионировать, но его ёмкость ограничена rank, выбранными слоями и форматом тренера.

Фраза «DreamBooth-файл весит столько-то гигабайт» поэтому не имеет постоянного ответа. Размер зависит от архитектуры, precision, числа сохранённых компонентов и того, записан полный pipeline или адаптер.

Как проходит обучение

Упрощённый pipeline состоит из шести частей.

  1. Instance images. Несколько фотографий одного объекта показывают устойчивые признаки с разных сторон.
  2. Instance prompt. Каждый пример связывается с идентификатором и именем класса.
  3. Class images. При включённом prior preservation отдельный набор представляет общий класс.
  4. Fine-tuning. Denoiser предсказывает шум, velocity или другую целевую величину, предусмотренную базовой моделью.
  5. Validation. Одни и те же контрольные промпты и seed запускаются на промежуточных checkpoint.
  6. Export. Сохраняются полные веса, LoRA или другой поддерживаемый формат обновлений.

Точная loss-функция зависит от parameterization базовой модели. Поэтому формула «DreamBooth всегда обучается по MSE шума» слишком узкая: современные flow- и velocity-модели используют собственные цели и weighting.

Почему датасет важнее количества шагов

На нескольких фотографиях любая повторяющаяся деталь выглядит для модели признаком объекта. Одинаковая стена на всех кадрах может попасть в «идентичность» так же уверенно, как форма ушей или рисунок сумки.

Полезное разнообразие включает:

  • разные ракурсы и масштаб объекта;
  • несколько выражений или поз, если они входят в задачу;
  • разный фон и свет;
  • чёткие кадры без противоречащих деталей;
  • сохранение важных особенностей в видимой области.

Разнообразие не означает случайную коллекцию. Если половина снимков скрывает главный признак, модель не получает надёжного сигнала. Если на фотографиях меняется сам объект — причёска, логотип, цвет покрытия — fine-tuning может смешать версии.

Переобучение и недообучение

DreamBooth балансирует между узнаваемостью и редактируемостью.

При недообучении идентификатор почти не меняет базовую модель: цвет, форма или лицо «плывут» между seed.

При переобучении объект узнаваем, но повторяет исходную позу, фон и кадрирование. Промпт хуже меняет одежду и окружение, а разные seed становятся похожими.

Один training loss не выбирает лучший checkpoint. Валидационная сетка показывает как минимум три свойства:

  1. сходство с объектом;
  2. выполнение нового промпта;
  3. разнообразие между seed.

Максимум по одной метрике может ухудшить две другие. Поэтому обещания «пиксельной идентичности» или фиксированного процента сходства без описания оценки ничего не говорят о качестве персонализации.

Что хранит результат

Fine-tuning не складывает исходные фотографии внутрь файла как альбом. Он меняет параметры так, чтобы определённое conditioning чаще приводило к нужным признакам.

Это не отменяет риски memorization. Маленький датасет и слишком долгая тренировка способны приблизить отдельные выходы к обучающим кадрам. Для публичного релиза полезно проверять ближайшие совпадения и не распространять веса, если права на исходники или образ человека этого не допускают.

Лицензия базовой модели продолжает действовать и после fine-tuning. Доступность весов не означает автоматического разрешения на коммерческое использование, обучение на чужом образе или публикацию производной модели.

С чем часто путают

  • DreamBooth и LoRA — первое описывает персонализацию по экземпляру и loss; второе — форму параметр-эффективного обновления.
  • DreamBooth и Textual Inversion — Textual Inversion обычно обучает новые embeddings при замороженной генеративной модели; DreamBooth меняет её поведение через веса или адаптеры.
  • DreamBooth и обычный fine-tuning — DreamBooth является частным subject-driven рецептом, а fine-tuning охватывает гораздо больше задач и объёмов данных.
  • DreamBooth и IP-Adapter — IP-Adapter передаёт визуальную ссылку во время inference; DreamBooth заранее меняет или дополняет параметры модели.
  • Идентификатор и trigger word — trigger вызывает выученную связь, но не хранит внешность сам по себе.
  • Class images и negative examples — class images не запрещают объект; они поддерживают распределение общего класса.

Частые вопросы

Сколько фотографий нужно?

Оригинальная работа показывала персонализацию обычно по трём–пяти изображениям. Это ориентир для демонстрации, не предел и не гарантия. Нужный объём определяется разнообразием внешности и будущих сцен.

DreamBooth всегда создаёт новый checkpoint?

Нет. Полный fine-tuning можно сохранить как pipeline или checkpoint, а DreamBooth LoRA — как отдельный адаптер. Некоторые тренеры сохраняют также состояние optimizer для продолжения обучения; оно не нужно для обычной генерации.

Нужно ли обучать text encoder?

Не всегда. Это может усилить связь идентификатора с объектом, особенно когда одного обновления denoiser мало, но увеличивает память и чувствительность к learning rate. Совместимость зависит от архитектуры и тренера.

Prior preservation обязателен?

Это центральная часть исходного метода и полезная регуляризация, но практические scripts делают её опциональной. Решение проверяется по сохранению класса, сходству объекта и разнообразию сцен.

Можно обучать стиль, а не предмет?

Технически DreamBooth-подобные pipelines используют и для стилей, но исходная постановка была subject-driven. Для стиля меняются captions, class prior и критерии оценки; простое копирование настроек объекта часто связывает стиль с конкретными сюжетами датасета.

DreamBooth работает только со Stable Diffusion?

Нет. Это общий рецепт персонализации diffusion- и flow-based text-to-image моделей, если реализация открывает нужные компоненты для обучения. Конкретный script, loss и формат LoRA остаются архитектурно-зависимыми.

Главное

DreamBooth учит text-to-image модель узнавать конкретный объект по редкому идентификатору и имени класса. Instance loss закрепляет внешность, а prior preservation помогает сохранить разнообразие класса и отделить экземпляр от общего слова.

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

Источники