Издевательство над картинками. Орудие - нейросеть

Вот запускаю я однажды нейронку персонажей всяких, да дизайн погенерить, вбиваю промпт `split screen, multiple views, spear, cowboy shot` в попавшийся под руку чекпоинт Illustrious'a
и получаю

split screen, multiple views, spear, cowboy shot. Steps: 32, Sampler: Euler a, Schedule type: Automatic, CFG scale: 5, Seed: 26939173, Size: 1536x1152, Model hash: 789461ab55, Model: waiSHUFFLENOOB_ePred20
split screen, multiple views, spear, cowboy shot. Steps: 32, Sampler: Euler a, Schedule type: Automatic, CFG scale: 5, Seed: 26939173, Size: 1536x1152, Model hash: 789461ab55, Model: waiSHUFFLENOOB_ePred20

Это что ж получается, из случайного шума каким-то чудом родились сразу 2 картинки в одном изображении? Не, ну тут понятно, что промпт `split screen, multiple views` волшебный и позволяет генератору, поделив изображение попалам, одного персонажа разместить и тут и там, что называется, но ведь здесь буквально попиксельное совпадение. В общем, пытаюсь я как-то объяснить увиденное, в голове всплывают страшные термины вроде translational invariance и self-attention, но ясно одно - существует механизм "синхронизации" левой и правой половины генерируемого изображения. А за активацию этого механизма всякие `split screen`, да `before and after` как раз и отвечают.

На самом деле, тут ничего удивительного нет, учитывая то, какие данные были использованы для обучения. Но это аниме модели. Для того, чтобы повторить подобное на SDXL (и производных) надо писать что-то наподобие `diptych of two identical images` - диптих, это когда 2 изображения вместе, короче. Но эффект гораздо слабее - сам проверял.

Ладно, поехали дальше.

Эксперимент img2img inpaint

Короче, берём вот такое изображение:

Серый фон
Серый фон

Потом берём вот такую черно-белую маску:

Значит будем менять левую часть, а правую оставим как есть
Значит будем менять левую часть, а правую оставим как есть

И отправляем это всё в inpaint (для тех кто использует Forge UI - вкладка Inpaint upload, для тех кто использует ComfyUI - сами раберётесь, вам не привыкать) и прописываем вот такой промпт:

(split screen, multiple views, reference sheet:1.1), 1girl, [:arm up:0.2]

После недолгого ожидания получается:

Издевательство над картинками. Орудие - нейросеть

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

Эксперимент img2img inpaint + ControlNet Reference.

Те же самые настройки что и в предыдущем примере, но теперь ещё добавляется вот это изображение в качестве условия для генерации - controlNet reference_only, короче. Не буду долго объяснять.

Издевательство над картинками. Орудие - нейросеть

Меняем промпт на 'bamboo hat' и одеваем на неё смешную шапку:

Издевательство над картинками. Орудие - нейросеть

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

Издевательство над картинками. Орудие - нейросеть

А если не включать эффект контрольного изображения слишком рано, то можно внести гораздо более существенное изменение:

Пропускаем первые 6 шагов из 32
Пропускаем первые 6 шагов из 32

Отдельное замечение про Flux.1 Kontext. Совсем недавно вышедшая модель, которая позволяет проделывать подобные манипуляции с изображением, но только лучше и качественнее. Вот только она гораздо тяжелее и, скажем так, несколько ограничена в промптах. Можете попробовать на официальном сайте и сравнить. Вот пример того, что может Flux.1 Kontext:

Скормил бездуховной машине собственный рисунок
Скормил бездуховной машине собственный рисунок

Ладно, возвращаемся к моему способу.

Больше примеров (догадайтесь какой был промпт)

Издевательство над картинками. Орудие - нейросеть
Издевательство над картинками. Орудие - нейросеть
Издевательство над картинками. Орудие - нейросеть
Нигде не спрячешься
Нигде не спрячешься
Отдалить камеру
Отдалить камеру

Кто хочет попробовать вот вам ComfyUI workflow. Лучше всего работает с аниме моделями типа Illustrious или NoobAI.

Задавайте вопросы, может отвечу

8
5
5 комментариев