Outpaint в StableDiffusion

Привет!

Хочу рассказать про интересный способ outpainting через ControlNet. Да, сейчас существует уже очень много классных сервисов, которые могут исполнять подобный прием на очень высоком уровне, но преимущество этого способа в том, что все делается прямо в автоматике1111, где под рукой всегда есть все настройки, ползунки, ваши любимые модели и inpaint.

Чтобы воспользоваться этим приемом понадобиться поставить расширение ControlNet и к нему модель inpaint

Для того, чтоб у вас появилось расширение ControlNet, мы заходим во вкладку Extensions внутри вашего автоматика, далее Available и жмем на кнопку Load From. В строке Search начинаем вводить ControlNet и находим его в списке доступный расширений. Так же можно поставить его через вкладку Extensions – Install from URL, введя в верхнюю строчку ссылку на официальную страничку расширения на гитхабе: https://github.com/Mikubill/sd-webui-controlnet.

На этой же странице на гитхабе мы находим вот эту ссылку https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

От сюда нам понадобиться скачать одну модель “control_v11p_sd15_inpaint.pth” и положить ее в папку с нашим StableDiffusion по пути “ %\stable-diffusion-webui\models\ControlNet “.

Outpaint в StableDiffusion

Теперь все, что нам осталось – это перезагрузить наш автоматик, выбрать вашу любимую модель и настройки и сгенерировать что-нибудь красивое, желательно в портретном соотношении сторон.

Outpaint в StableDiffusion

Нажимаем на кнопку Send to img2img и переносим наше изображение, промпт и настройки в соседнюю вкладку.

Здесь, в настройках под изображением, нам нужно, в первую очередь, выставить соотношение сторон, которое мы хотим получить после outpainting, например, я хочу сделать свое изображение из портретного широким в соотношении 16:9, и выкрутить ползунок Denoising strength на уровень от 0.75 до 1. Я выставлю, как раз, единицу. Так же рекомендуется сбросить Seed, но с ним, как и с показателем Denoising можно поэкспериментировать.

Outpaint в StableDiffusion

Опускаемся еще чуть ниже и разворачиваем вкладку расширения ControlNet. Перетаскиваем наше, раннее сгенерированное изображение, в поле image, нажимаем галочку Enable и выбираем в списке радиокнопок inpaint. Автоматически загрузится модель inpaint и препроцессор inpaint_only – его нужно поменять на inpaint_only+lamaЮ иначе ничего не получится. Указываем, что ControlNet приоритетнее и выбираем изменение размера с заливкой. Все как на скриншоте ниже.

Outpaint в StableDiffusion

Для улучшения качества можно еще поставить галочку на Pixel Perfect, но это может увеличить время генерации. Если StableDiffusion выдает ошибку о нехватки памяти, то ставим галочку на Low VRAM.

Все, теперь просто нажимаем кнопку Generate и получаем наше изображение в формате 16:9.

До:

Outpaint в StableDiffusion

И после:

Outpaint в StableDiffusion

Так же буду рад вас видеть в своем телеграм канале, где я выкладываю свои нейро-арты, делюсь промптами, фотографиями и рассказываю про обработку:https://t.me/artemphotography

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

А что такое "инпэйнт" и "аутпэйнтинг"?

1

инпэинт - это перерисовка кусочка внутри готового изображения, аутпэинт - расширение границ изображения на основе того фона, что уже есть.

2

Годно, спасибо.
Вообще быстро появляются новые инструменты, упрощающие работу с генерацией изображений.

1

А можно ли продолжать это до бесконечности? Увеличение в 2 раза размеров не получится. Только шакалить исходники?