Найти тему

Как сгенерировать коллаж: ещё один способ работы с "живым холстом" нейросети KREA

"Эскадрилья", KREA, экран, пиксели, 2024. Фрагмент.
"Эскадрилья", KREA, экран, пиксели, 2024. Фрагмент.

Сегодня речь пойдёт о работе в режиме генерации в реальном времени ("живой холст", или Real-time generation) на платформе KREA. Если вам не знакомы ни платформа, ни процесс, могу подсказать, где можно с ними познакомиться:

Взросление KREA: как невероятно изменилась нейросеть в бета-версии и как теперь с ней работать

Живой холст: новый продвинутый способ генерации картинок в нейросетях на примере KREA

***

Работа с "живым холстом" сама по себе очень увлекательна и затягивает, а тут ещё разработчики добавили к бета-версии KREA пару переделок. Во-первых, не так давно полностью сменился набор стилей в правой панели. Теперь там можно найти Portrait (портрет), Concept (концепт), CGI (компьютерная графика) и Cartoon (мультяшка). Есть ещё стиль по умолчанию (Default), который мало чем отличается от портретного.

Во-вторых, ползунок AI Strength отцепился от текстового поля и стал отдельно плавающим элементом. И, в-третьих, в наборе инструментов Img2Img наконец появился ластик (Eraser), а ещё — возможность генерировать картинки по тексту внутри окна генерации картинки по картинке (кнопка с пером, Generate Image). Такая вот рекурсия.

Слева — увеличенный фрагмент левой панели инструментов KREA, справа — правой.
Слева — увеличенный фрагмент левой панели инструментов KREA, справа — правой.

Как это и зачем это — сейчас разберёмся.

Кнопка Generate Image помещает на левую (рабочую) поверхность холста отдельную рамку, в которой будет сгенерировано изображение, с её собственным полем для ввода текста. Всё, что будет находиться в этой рамке и вокруг неё, станет исходником для создания конечного изображения в правой части окна. В принципе, всё это работает почти так же, как при загрузке в KREA готовых картинок с вашего устройства — с той разницей, что картинки у вас не готовые: вы создаёте их прямо на месте.

Как обычно, покажу на примере. Начну с генерации вида ночного города. Нажимаю на кнопку с пером, и в левой части окна появляется небольшая рамка, которая по умолчанию уже содержит случайное изображение и поле с описанием под ним. В это поле я и ввожу свой текст: a big city at night:

Поле генерации по тексту в режиме "живого холста" в KREA
Поле генерации по тексту в режиме "живого холста" в KREA

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

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

Ещё один щелчок на кнопке с пером — и появляется новая рамка генерации поверх первой. В текстовом поле под ней я печатаю лаконичное a lemon, "лимон". На этом этапе уже можно добавить текст описания для итоговой композитной картинки, которая должна появиться в результате всех манипуляций в правой части экрана. Этот текст, giant lemons flying over a big city at night (гигантские лимоны, летящие над большим городом ночью) я печатаю в нижнем поле. В правой части экрана KREA послушно генерирует ночной город и лимон с учётом содержимого левой части:

-4

Это чем-то напоминает режим Inpaint на платформах вроде FusionBrain, Leonardo AI или Playgroundai, когда вы выделяете участок на уже созданной картинке и заполняете его новым объектом, генерируя его по текстовому описанию. Но всё-таки это не то же самое.

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

С другой стороны, она не пытается вписать новый объект в уже существующую сцену просто потому, что собственно сцена создаётся в правой части экрана. Левая часть — просто рабочее пространство, куда вы можете накидывать множество разных элементов. Обратите снимание, что лимон справа всё ещё имеет собственный фон (с этим я разберусь через минуту).

В других моделях новый объект оказывается сразу намертво встроенным в существующее изображение, и просто так его уже никуда не передвинуть. Участок фона, который попадает в рамку Inpaint, перерисовывается заново. В KREA новую картинку можно двигать, искажать и масштабировать, а фон с неё удаляется кнопкой Remove Background (меню с инструментами открывается по щелчку правой кнопкой мыши). Всё, что находится под ней, остаётся без изменений. Другими словами, вы как будто собираете коллаж из журнальных иллюстраций, при необходимости вырезая их по контуру.

-5

Если вас не устраивает сгенерированная картинка, можно продолжать перебирать варианты, нажимая на кнопку с зацикленной стрелкой (она изменяет значения Seed).

А ещё можно уточнять запрос прямо на лету. Помните, что при генерации в режиме реального времени буквально каждый добавленный знак в тексте может радикально поменять итоговое изображение.

Имейте в виду, что после применения к картинке трансформации текстовое поле пропадает, и перерисовать её уже нельзя.

Картинки можно дублировать кнопкой Duplicate, но в моём случае ради визуального разнообразия каждый лимон в эскадре генерировался отдельно, а затем масштабировался и поворачивался под нужным углом. Фон у каждого цитруса легко удалился инструментом Remove Background:

-6

В окончательном рендере KREA слегка перестаралась с бугристостью кожуры и допустила пару других ошибок в лимоностроении, зато на улицах города можно различить даже отдельные фонари, а на реке — лодки и теплоход:

-7

А вот другая версия — с косяком рыб, каждая их которых получилась путём дублирования самой первой рыбы кнопкой Duplicate:

-8

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

-9

В общем, Real-time Generation в KREA стал ещё увлекательнее. Если вы найдёте какие-то другие остроумные способы применения нового инструмента генерации внутри генерации, расскажите о своих находках в комментариях, это будет интересно и полезно.

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

P.S. На днях режим "живого холста" появился и в мобильном приложении Dream, правда, доступен почему-то только на оплаченных аккаунтах. Странная жадность со стороны разработчиков, учитывая, что на всех остальных платформах он совершенно бесплатен. Если у вас есть возможность испытать Real-time Generation в Dream, поделитесь впечатлениями (и картинками).