Найти в Дзене

Как работает img2img: генерация картинки по картинке в нейросетях. Часть 3

Оглавление

Особый случай номер два(.два): Kandinsky 2.2

Посвящение Яну Вермееру. "Кандинский" 2.2, экран, пиксели, 2023.
Посвящение Яну Вермееру. "Кандинский" 2.2, экран, пиксели, 2023.

Как работает img2img: генерация картинки по картинке в нейросетях. Часть 1

Как работает img2img: генерация картинки по картинке в нейросетях. Часть 2

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

Я говорю сейчас конкретно о "Кандинском". Если, например, вы привыкли пользоваться этой нейросетью на сайте ruDALL-E, вы можете и не подозревать, что она тоже понимает ввод информации с помощью изображения. В веб-интерфейсе просто не предусмотрено такой возможности. На платформе FusionBrain можно загрузить свою картинку, но настроить процесс генерации по ней вы не можете (если не считать ввод запроса и выбор художественного стиля). В телеграм-боте Сбера GigaChat "Кандинский" вообще замотан в смирительную рубашку и понимает одну лишь команду "нарисуй". И только в собственном телеграм-боте "Кандинский" получает максимальную свободу: здесь можно не только выбрать формат будущего изображения, но и использовать процесс img2img, который к тому же можно гибко настраивать.

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

Кнопки управления телеграм-ботом "Кандинского" 2.2
Кнопки управления телеграм-ботом "Кандинского" 2.2

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

Исправляюсь.

img2img в нейросети Kandisnky 2.2

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

"Кандинский" 2.2, режим "Вариации картинки"
"Кандинский" 2.2, режим "Вариации картинки"

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

-4

Поскольку мне нужно состарить "Девушку с жемчужной серёжкой" (я же по-прежнему продолжаю начатые две статьи назад опыты), выбираю вариант "Смешивание картинки и текста" и добавляю запрос "Пожилая женщина с жемчужной серёжкой":

"Кандинский" 2.2, режим смешивания картинки и текста по умолчанию
"Кандинский" 2.2, режим смешивания картинки и текста по умолчанию

В целом неплохо, но можно ли здесь добиться результата, похожего на результаты Playgroundai или Leonardo AI, чтобы поза, освещение, цветовая гамма и черты лица больше напоминали оригинал?

Чтобы попытаться это сделать, нам нужно добраться до параметра Strength или его аналога. Сделать это можно, переключившись в профессиональный режим (звучит-то как!) в главном меню бота:

Шлёп!.. И вы профессионал.
Шлёп!.. И вы профессионал.

Работа в профессиональном режиме открывает доступ к управлению весами. Система весов внешне работает немного иначе, чем параметр Strength: вы указываете желаемую степень влияния на результат, во-первых, загруженной картинки (насколько нейросеть должна ориентироваться на картинку), а, во-вторых, текстового запроса (насколько нейросеть должна учитывать текстовое описание). Хотя, если копнуть глубже, принцип зашумления наверняка и здесь тот же самый, что и в других моделях.

То на "ты", то на "вы"... "Кандинский", ты определитесь уже, в каких мы отношениях.
То на "ты", то на "вы"... "Кандинский", ты определитесь уже, в каких мы отношениях.

Для быстрого выбора бот предлагает три кнопки с предустановленными соотношениями: 0.7 к 0.3 (или 70% к 30%), 0.5 к 0.5 (или 50/50) и 0.3 к 0.7. Но это не значит, что вы можете использовать только три этих пропорции. Желаемые веса можно ввести и вручную в таком же формате: вес 1 в виде десятичной дроби - пробел - вес 2 в виде десятичной дроби.

Для первого результата я хочу, чтобы на 90% нейросеть вдохновлялась репродукцией, и только на 10% — моим текстом. Ну в самом деле, из него только и нужно взять слово "пожилая", всё остальное есть на картинке.

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.9:0.1
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.9:0.1

Судя по результату, десяти процентов внимания не хватило даже на "пожилую". Текст проигнорирован полностью, при этом более похожей на оригинал картинка не стала.

Теперь попробую кнопку с соотношением 0.7 к 0.3:

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.7:0.3
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.7:0.3

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

Следующий шаг: соотношение 0.3 к 0.7 (нейросеть ориентируется примерно на две трети на текстовый запрос, и на одну треть — на картинку).

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.3:0.7
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.3:0.7

Цвета на портрете начали съезжать к холодной гамме, героиня ещё немного постарела, большого сходства по-прежнему не вижу (хотя здесь они уже могли бы быть родственницами).

Наконец, последняя пропорция — 0.1 к 0.9. На оригинал картинки ИИ смотрит вполглаза, ориентируясь в основном на текст.

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.1:0.9
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.1:0.9

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

Вот, просто для справки, его версия маленькой девочки с той же серёжкой:

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.7:0.3
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.7:0.3

А что же котопёс?

Текстовый запрос на этот раз составлен по-русски и звучит так: "Щенок лежит на полированном полу". При соотношении весов 0.7 к 0.3 результат очень похож на мейн-куна и совсем не похож на собаку:

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.7:0.3
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.7:0.3

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

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.5:0.5
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.5:0.5

При соотношении весов 03. к 0.7 превращение завершено, и перед нами щенок, ничем не напоминающий кота, которым он когда-то был. Комната тоже совершенно другая.

"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.3:07
"Кандинский" 2.2, профессиональный режим, соотношение весов картинки и текста — 0.3:07

В завершение, исключительно для того, чтобы вас взбодрить, покажу варианты девушки с жемчужной серёжкой, созданные на платформе FusionBrain без руля и ветрил (то есть без возможности настройки):

Нейросеть "Кандинский" 2.2 на платформе FusionBrain
Нейросеть "Кандинский" 2.2 на платформе FusionBrain

Как говаривал Сергей Есенин, "...только синь сосёт глаза".

Остаётся рассмотреть ещё смешивание двух картинок. Принцип действия этого метода ровно тот же самый, что и у смешивания картинки и текста, только вместо текстовой подсказки используется второе вводное изображение. Если вы хотите подробностей, советую вам почитать очень подробный и понятно изложенный материал в блоге Нейроблогер: человек в нейросетях. И не только этот, кстати: у автора много полезных статей, которые особенно пригодятся тем, кто пользуется преимущественно "Кандинским".

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