Нейросеть, которая рисует картинки по описанию, начинает не с чистого холста, а с хаотичного цифрового шума. Шаг за шагом она убирает из него лишнее, пока не проявится изображение, соответствующее вашему тексту. Такие системы называются диффузионными моделями, и на этом принципе работают Midjourney, Stable Diffusion, DALL-E, Kandinsky и Шедеврум.

Как нейросеть рисует картинки по текстовому описанию
Фото: Bartolomeo Bettera, Wikimedia Commons, Public domain.

От шума к изображению — главная идея диффузии

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

Добавлять шум легко. Самое интересное — научиться обратному процессу. Нейросеть учат смотреть на зашумленную картинку и угадывать, какой шум к ней примешан, чтобы его можно было вычесть. Если повторить такое «очищение» много раз подряд, из полной ряби постепенно проступает изображение.

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

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

Как обучают рисующую нейросеть

Для обучения нужны сотни миллионов или миллиарды пар «картинка + подпись». Их собирают из интернета: у многих изображений на сайтах есть описания и альтернативные тексты. Процесс обучения выглядит так:

  1. берется картинка с подписью, например фото рыжей кошки на подоконнике;
  2. к картинке добавляется шум случайной силы — от легкой ряби до почти полного хаоса;
  3. нейросеть получает испорченную картинку и подпись и пытается угадать, какой шум был добавлен;
  4. ошибку угадывания используют, чтобы немного поправить параметры сети;
  5. все повторяется на следующей паре, и так сотни миллионов раз.

Со временем сеть усваивает, как вообще выглядят кошки, подоконники, закаты, акварель и фотографии, снятые на пленку. И главное — как эти понятия связаны со словами.

Хитрость, которая ускорила генерацию

Обрабатывать картинку по пикселям очень затратно. В 2022 году широкое распространение получил подход латентной диффузии, лежащий в основе Stable Diffusion. Изображение сначала сжимается в компактное представление, примерно в десятки раз меньше оригинала, вся работа с шумом идет в этом сжатом виде, а в конце результат разворачивается обратно в полноценную картинку. Благодаря этому рисующие модели смогли работать даже на домашних видеокартах.

Какую роль играет текстовое описание

Без подсказки диффузионная модель нарисует что-то правдоподобное, но случайное. Текст задает направление. Ваш запрос сначала обрабатывает отдельная языковая нейросеть — текстовый кодировщик. Он превращает слова в набор чисел, отражающих смысл. В 2021 году компания OpenAI представила модель CLIP, обученную на сотнях миллионов пар «картинка + подпись» сопоставлять изображения и тексты. Подобные кодировщики используются во многих генераторах.

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

Поскольку исходный шум каждый раз случайный, один и тот же запрос дает разные картинки. В большинстве сервисов можно зафиксировать стартовый шум числом — его называют seed, — и тогда при тех же настройках результат повторится.

Почему нейросеть путает пальцы и надписи

Руки — самое коварное место

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

Буквы, похожие на буквы

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

Другие типичные странности

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

Известные генераторы изображений

ГенераторКто создалОсобенность
MidjourneyНезависимая лаборатория, СШАХудожественный стиль
Stable DiffusionStability AI и партнерыОткрытая модель
DALL-EOpenAI, СШАВстроен в ChatGPT
KandinskyСбер, РоссияХорошо понимает русский
ШедеврумЯндекс, РоссияПриложение с лентой работ

Первая версия DALL-E вышла в 2021 году, Midjourney и Stable Diffusion стали доступны широкой публике летом 2022 года. Stable Diffusion выделяется тем, что ее веса опубликованы: модель можно запустить на своем компьютере и дообучить под конкретный стиль. Российские генераторы удобны тем, что запросы на русском не нужно переводить.

До диффузионных моделей лица и картинки создавали генеративно-состязательными сетями (GAN), придуманными в 2014 году. В них две сети соревнуются: одна рисует, другая пытается отличить подделку от настоящего фото. Такие сети давали отличные лица, но плохо справлялись с произвольными сценами по описанию.

Как описать картинку, чтобы нейросеть поняла

Запрос к генератору называют промптом. Несколько правил, которые заметно улучшают результат:

  • Начинайте с главного объекта. «Старый маяк на скалистом берегу» лучше, чем длинное вступление про настроение.
  • Добавляйте детали по слоям: объект, действие, окружение, время суток, освещение, ракурс.
  • Указывайте стиль: фотография, акварель, карандашный набросок, пиксель-арт, детская книжная иллюстрация.
  • Описывайте свет. «Мягкий утренний свет», «закат, длинные тени», «неоновая подсветка» сильно меняют атмосферу.
  • Называйте формат: горизонтальный кадр, квадрат, крупный план, вид сверху.
  • Не перегружайте. Пять-шесть предметов в одной сцене модель начинает путать, лучше упростить композицию.
  • Используйте отрицательный промпт, если сервис его поддерживает: «без текста, без размытия, без лишних людей».
  • Меняйте по одному параметру и сравнивайте варианты, так быстрее понять, какое слово что делает.

Что еще спрашивают о нейросетях-художниках

Нейросеть копирует чужие картинки?

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

Можно ли использовать картинки от нейросети в коммерции?

Это зависит от правил конкретного сервиса и законов страны. У большинства генераторов есть пользовательское соглашение, где оговорены права на результат. Перед использованием в рекламе или на товарах его стоит прочитать.

Как отличить картинку от нейросети?

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