tariel.ge › Полезное: бесплатные книги › ИИ изнутри: от нейрона до своей моделиБесплатно · автор Тариел Бежанидзе
← ИИ изнутри ЛИСТ 14ИзображенияРЕВ. 1
Глава 14 · Изображения

Диффузия: как из шума получается картинка

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

Идея наоборот

Как научить сеть рисовать? Прямая постановка безнадёжна: что считать правильным ответом на «нарисуй плату»? Правильных картинок бесконечно много.

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

прямой процесс: портим
фото платы → +шум → +шум → +шум → ... → сплошной шум
    шаг 0     шаг 1   шаг 2   шаг 3        шаг 1000

обучение: по картинке на шаге N предсказать добавленный шум

Обучили. Теперь запускаем в обратную сторону: берём случайный шум и просим сеть шаг за шагом убирать из него «шум». Из ничего проступает изображение.

Аналогия

Как проявка фотографии: сначала мутное пятно, постепенно проступают контуры, потом детали. Только здесь на плёнке изначально ничего не было — изображение рождается из того, что сеть «считает» правдоподобным при удалении шума.

Почему считать удаётся быстро

Картинка 1024×1024 — это три миллиона чисел. Прогонять их через сеть сотню раз было бы неподъёмно.

Решение: работать не с картинкой, а с её сжатым представлением. Отдельная сеть-кодировщик сжимает изображение в компактный массив в десятки раз меньше, весь процесс удаления шума происходит там, а в конце декодер разворачивает результат обратно в картинку.

полный путь
текст «плата с вздутым конденсатором»
  ↓ текстовый кодировщик
векторы смысла (глава 06)
  ↓
случайный шум в сжатом пространстве
  ↓ ← сюда через внимание (глава 08) подмешивается текст
шаг 1: убрали часть шума
шаг 2: убрали ещё
  ...
шаг 25: чистое сжатое представление
  ↓ декодер
готовая картинка
Вот почему это работает на вашей видеокарте

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

Как текст управляет картинкой

Ваше описание превращается в векторы (ровно как в главе 06), и на каждом шаге удаления шума сеть смотрит на эти векторы через внимание — механизм из главы 08, только между картинкой и текстом.

То есть сеть на каждом шаге спрашивает себя: «какой шум надо убрать, чтобы получившееся было похоже вот на это описание». Постепенно накапливаясь, эти решения и приводят к нужному изображению.

Отсюда известное ограничение

Текстовый кодировщик понимает описание как «мешок признаков» гораздо лучше, чем как структуру. Поэтому модели плохо даются точные пространственные отношения («красный куб слева от синего шара»), счёт («ровно пять конденсаторов») и текст на картинке. Свежие модели стали заметно лучше, но природа ограничения та же.

Настройки, которые вы будете крутить

ПараметрЧто делаетПрактика
ШагиСколько раз убирать шум20–30 обычно достаточно. Больше — почти нет разницы, только дольше
Сила следования текстуНасколько жёстко держаться описанияСлишком мало — игнорирует запрос. Слишком много — пережжённые цвета и артефакты
СэмплерАлгоритм, каким именно убирается шумВлияет на стиль и скорость. Поменяйте — увидите разницу, единственно верного нет
SeedНачальный шумТот же seed и те же настройки — та же картинка. Записывайте удачные
РазрешениеРазмер результатаМодель обучалась на определённом размере; сильно отклоняться — получать искажения
Негативный запросЧего не должно бытьРаботает как отталкивание от описанного
Про seed — самый недооценённый параметр

Генерация полностью детерминирована: одинаковые входные данные дают одинаковый результат. Это значит, что вы можете менять один параметр за раз и честно сравнивать. Без фиксации seed любое сравнение настроек бессмысленно — вы сравниваете разные случайные шумы.

Что за модели бывают

ПоколениеОсобенностиТребования
Ранние (SD 1.x)Лёгкие, огромная экосистема дополнений, качество по нынешним меркам слабоеИдут почти на всём
Средние (SDXL и родственные)Хорошее качество, много готовых стилей и адаптеровКомфортно на ваших 16 ГБ
Новые (крупные модели вроде Flux)Заметно лучше с текстом и композициейТяжелее; на 16 ГБ нужны сжатые варианты
Про лицензии — проверяйте отдельно

У моделей изображений условия использования различаются сильнее, чем у языковых: часть свободна для коммерции, часть разрешает только некоммерческое использование, часть требует отдельной лицензии. Если планируете использовать результаты в своих продуктах — это надо прочитать до того, как вы на модели что-то построили.

Чем это отличается от языковой модели

ЯзыковаяДиффузионная
Что предсказываетСледующий токенШум, который надо убрать
Как получается результатСлева направо, по одномуЦеликом, за несколько проходов уточнения
Можно ли вернуться и исправитьНетДа — каждый шаг уточняет всю картинку
ПовторяемостьЗависит от температурыПолная при фиксированном seed
РазмерМиллиарды параметровОбычно заметно меньше

Проверьте, что поняли

Что дальше

Практика на вашем железе: что ставить, что реально влезет в 16 ГБ и чего ожидать по скорости.

Глава14 — Диффузия: как из шума получается картинка
БлокИзображения
Далее15 — Практика: генерация изображений на 16 ГБ видеопамяти
Ревизия1
↑ Оглавление Предыдущая глава← 13 · LoRA: дообучить модель на своём ноутбуке Следующая глава15 · Практика: генерация изображений на 16 ГБ видеопамяти →

Бесплатная книга · tariel.ge · версии инструментов и команды проверяйте в документации проектов

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.