Всем привет!
Во-первых, ура, сегодня первый полноценный день отпуска (вчера был перелёт)! Наконец можно спокойно отдыхать.
Ну или не совсем спокойно, так как планирую заняться подготовкой лекций, которую оттягивала уже много времени.
А пока я продолжаю прокрастинировать, хочу немного рассказать про свой проект.
Сейчас я занимаюсь задачей контролируемой генерации с помощью диффузии. Что это значит, давайте разберёмся.
Для начала хорошо бы понимать, что такое диффузия. По сути это процесс генерации, где за несколько шагов мы из шума делаем картинку, по сути каждый раз понемногу удаляя шум. Такую генерацию можно контролировать входным промптом. То есть теперь мы получаем не просто случайную картинку из выученного распределения, а именно картинку, которая соответствует входному тексту. Так работают популярные модели типа Stable Diffusion, Flux, midjourney и другие.
Для тех, кто хочет подробнее познакомиться с понятием диффузии, рекомендую:
1️⃣ Лекции Дмитрия Ветрова часть 1, часть 2
2️⃣ Можно почитать мой пост
3️⃣ Почитать блог-пост тут
Но порой не хватает именно контроля за счет промпта. Например, мы хотим, чтобы картинка соответствовала входному пространственному контролю. Например, глубине или же edges (смотри картинку).
Самый простой вариант, просто обучить диффузионную модель заново, но чтобы она использовала новый контроль. Но это время-деньги-ресурсы-деньги-еще деньги.
К тому же, пусть у нас уже есть предобученная модель, которая умеет генерировать по тексту. Хочется ее переиспользовать.
Одним из возможных решений является модель ControlNet. Это подход, который с помощью дополнительных изменений в архитектуре позволяет добавлять дополнительный контроль помимо промпта. При этом модель обучается не с нуля, данных нужно немного, а результаты симпатичные.
Тем не менее у этого подхода есть ряд недостатков и с обычным диффузионным лоссом модель обучается не так хорошо. И я сейчас как раз работаю над улучшением пайплайна обучения ControlNet модели. Недавно вот выложили препринт, можно почитать тут.
А вообще в диффузиях много всего интересного. Если у вас есть какие-то вопросы или вы что-то хотели бы узнать — пишите, я постараюсь ответить или может посоветовать, где эти ответы искать :)
Нина Коновалова