Dream Booth — очень умное дообучение stable diffusion

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Исходная публикация с описаниеим метода [Mar 2023] - DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation

Что такое stable-diffusion

Stable Diffusion - новаторская модель генерации изображений на основе искусственного интеллекта. Она использует метод диффузии для постепенного улучшения качества сгенерированных изображений.

В основеStable Diffusion лежит архитектура autoencoder. Сначала модель "кодирует" текстовое описание в вектор признаков. Затем декодер поэтапно создает изображение, уточняя его с каждым шагом. Этот процесс напоминает диффузию - плавное распространение частиц.

Что такое дообучение

Нейронные сети "получают информацию" об окружающем мире при обучении. Создатели модели генерируют огромный датасет картинок с их описанием, и загоняют их в модель. Однако если вы хотите генерировать какой то конкретный обьект - например лично вас, вашего питомца, родной дом, картины любимого автора в особом стиле итп.
Вы можете загнать ваши новые изображения в модель, придумав для них описание, содержащие названия вашего объекта (или лучше какой-то специальный токен, условно [V]), и скоректировав веса градиентным спуском, так что бы модель понимала, что скрывается за этим токеном. Однако такое дообучение дифузионных моделей имеет свои недостатки

Пробелемы

Как мы видим на данном изображении из-за наличия в дообучающем датасете только фотографий сидячих собак, модель не может сгенерить ее в другом ракурсе, потому что забыла что собаки могут находиться и в других позах.
Как мы видим на данном изображении из-за наличия в дообучающем датасете только фотографий сидячих собак, модель не может сгенерить ее в другом ракурсе, потому что забыла что собаки могут находиться и в других позах.
  1. Language drift - модель предварительно обученная на большом корпусе текста и позже точно настроенная для конкретной задачи, постепенно теряет синтаксические и семантические знания языка.

  2. Уменьшения разнообразия выходных данных. Модели преобразования текста в изображение естественным образом обеспечивают большое разнообразие выходных данных. При точной настройке мы хотели бы иметь возможность создавать объект в новых ракурсах, позах. Однако из за переобучения вариативность выходных поз объекта сокращается.

Основная идея решения

Авторы статьи решают эту задачу дополнительным лоссом - class-specific prior preservation loss. Вначале обучаемая модель пытаться сгенерировать нашу собаку, и обучается по лоссу с фотографиями из выборки для дообучения. Затем она же генерирует произвольную собаку, и лосс считается с фотографиями, сгенерированными исходной моделью. Таким образом, мы наказываем модель, за то что она забывает абстрактные признаки собак, концентрируясь на обучающей выборке. Более лаконично на схеме:

Или более строго прибавку к лосу можно записать в виде:

\begin{aligned}& \mathbb{E}_{\mathbf{x}, \mathbf{c}, \boldsymbol{\epsilon}, \boldsymbol{\epsilon}^{\prime}, t}\left[\right.  \left.\lambda w_{t^{\prime}}\left\|\hat{\mathbf{x}}_\theta\left(\alpha_{t^{\prime}} \mathbf{x}_{\mathrm{pr}}+\sigma_{t^{\prime}} \boldsymbol{\epsilon}^{\prime}, \mathbf{c}_{\mathrm{pr}}\right)-\mathbf{x}_{\mathrm{pr}}\right\|_2^2\right]\end{aligned}

Насколько хорошо это работает?

Как видно из картинок ниже, добавление class-specific prior preservation loss очень позитивно сказалось на возможности модели генерировать исходный объект в разнообразных вариациях

Просто сравните с тем что было выше!

Так же модель научилась видоизменять обьект в зависимости от промпта, генерируя полностью новые объекты на основе существующего:

При этом сама модель не потеряла возможности генерировать обычные объекты (произвольных собак, отличных от той, на которой происходило до обучение)

А так же такой подход очень хорошо сработал для задач style-transfer конкретного объекта. Авторы смогли сгенерировать картинки в разных стилях, но с исходной собакой.

LoRA

При обучении модели нет смысла обучать все её веса, достаточно обучения небольших адаптеров. Подробнее о том как это работает написано в моей другой статье на хабре.

Воспроизведение результатов

Я до обучил stable-diffusion-v1-5 на двух собственных датасетах - фотографии кошки (cloody-cat) и декоративного гриба. Обучения проходило на видеокарте A100 (занимая примерно 1/8 видеопамяти) в течении 2х минут. Интерактивная демонстрация работы моей модели на Hugging Face - freQuensy23/diffusion-cloody - там можно потыкать свои запросы бесплатно (за такое им огромный респект)! В таблице ниже показано как со временем обучения меняется результат генерации по промпту "A [V] cat", а более красочно вы можете посмотреть это в анимации в начале этой статьи или тут. Так же я проверил данную систему на генерации этого кота в очень разных условиях и стилях. Дальше будет просто фотогалерея

A [V] cat in the spacesuit drawing
A [V] cat in the spacesuit drawing
A [V] cat sad
A [V] cat sad
A [V] cat drawing
A [V] cat drawing
A [V] cat dancing
A [V] cat dancing
A [V] cat selfie in the ISS
A [V] cat selfie in the ISS
A [V] cat swim
A [V] cat swim

Прошу прощения за такой спам картинками в конце, чуть менее формально про эту технологию и идеи по ее монетизации описаны в моей телеге
P.S. Если есть ошибка в правописании - сообщите мне через стандартную систему хабра - я исправлю. Мне бывает сложно писать на русском.

Источник: https://habr.com/ru/articles/760920/


Интересные статьи

Интересные статьи

Путь начинающего разработчика сложный и тернистый. Мы хотим как можно быстрее стать специалистом своего дела, получить работу и достойное вознаграждение за проделанный путь и приложенные усилия. Но вр...
В продуктовой среде создаётся много продуктов, но на текущий момент 99% продуктов сводится к новому формату питания, транспорта, медицины, жилья и т.д. Даже более того, в...
Подкасты – канал, который активно развивается весь 2020 год. Растет объем аудитории, да и самих подкастов становится все больше. При этом единого аудиторного измерителя слушателей не суще...
В продолжении одной из тем, поднятых в публикации Александра Ершова (Ustas) «Нейросетевой визуальный поиск», предлагаю читателям Хабра погрузиться в мир концепции Н.М. Амосова, ее -мо...
Приветствую, Хабр! Представляю вашему вниманию перевод статьи «9 Extremely Powerful JavaScript Hacks» автора Klaus. Прим. переводчика: в этом новом (от 10 декабря) посте классные приёмы для Ja...