Редизайн в Stable Diffusion
Помимо очевидного применения к изменению готового варианта изображения, редизайн широко применяется у дизайнеров и архитекторов.
В этом материале мы разберём конечный результат - создание редизайна эталонного изображения. Такой же подход можно использовать для эффектов типа: разрушения, пожара, изменение времени года и прочего.
Главное с чего нужно начать, это подготовить эталонное изображение. Сам эталон несложно скачать из интернета или сгенерировать самому. Но для интерьера и экстерьера ситуация осложняется точностью соблюдения размеров и искажениями перспективы - т.к. это более сложный и практический пример реального применения, то далее будем рассматривать именно его. Сделать эталон интерьера или фасада можно через создание - 3D проекта. Благо дело сейчас полно программ как локальных так и через online позволяющих создать проект дома или отдельных его комнат. В качестве примера будет использована программа Revit для проектирования и дополнительное расширение Enscape3D для более удобной постановки камеры с возможностью пройтись пешком или полетать по проекту с применением рендеринга.
Обойтись без проекта и стать хорошим дизайнером/архитектором - сложно т.к. важно соблюдать пропорции и конструкционные особенности проекта - наша задача будет состоять в рендере эталона для визуального улучшения или поиска вдохновения.
Вот примеры эталонов:
Настройки и модели
Для работы со Stable Diffusion в Automatic1111 нам понадобится скачать со страницы huggingface модель diffusion_pytorch_model_promax.safetensors которую нужно положить в папку ...\webui\models\ControlNet\
Запомните название модели, допускается переименовать её в более понятное для себя название, я например назвал controlnet-union-sdxl-1_0-promax.safetensors - т.к. эта модель универсальная и включает в себя совокупность моделей для разных целей в controlnet.
Качество генерации будет зависеть от:
- качества прорисовки эталона, чем чётче будут очертания объектов - тем лучше. В идеале использовать обводку объектов и хорошее разрешение.
- основной модели генерации, рекомендуется универсальная XL модель, в тестах и примерах я использовал juggernautXL_v9Rundiffusionphoto2.
- наличие на эталоне таких элементов как человеки и мелких деталей сложно определяемых на человеческий глаз
- правильности подобранных настроек
Для активации режима генерации нам понадобится закинуть в Controlnet заготовку, включить само расширение и выбрать вкладку InstructP2P.
- Выставим разрешение согласно пропорциям подгруженного эталона, оно может быть чуть больше рекомендуемого для модели по высоте, например для XL по высоте можно выставить чуть более 1024 (другую сторону можно привести к пропорциям через рядом расположенный замочек при изменении эталонного значения одной из сторон), а ширину можно сделать и 2048. В примере в начале статьи разрешение 1600*1200 для XL модели.
- Preprocessor = none
- Model = controlnet-union-sdxl-1_0-promax (именно так я назвал скачанную модель), если её не будет в списке то нужно обновить список щёлкнув на рядом расположенную иконку.
- Control Weight = 1.5 чем больше это значение, тем больше соблюдаются линии объектов и меньше добавляются элементов, чем меньше это значение - тем больше выполняется подсказка и вносится больше преобразований. Соответственно увеличиваем до 2 если есть мелкие детальки которые важнее подсказки, и уменьшаем если подсказка должна вносить большое количество изменений в композицию.
- Control Mode = My prompt is more important
Для применения к конкретным элементам нужно использовать маску. Для сохранения максимальной схожести лица. требуется внести корректировки в настройки:
- Control Weight = 1
- Control Mode = Balanced
- Разрешение генерируемой картинки должно совпадать с эталоном!
- в подсказке пишем не просто что хотим сгенерировать, а прям просим об этом, добавляем токен "make in".
* Выбор набора настроек Control Type влияет на набор параметров характерных для связки препроцессора и модели. В основном это для удобства работы т.к. у каждой связки могут быть свои ползунки, но тем не менее может немного изменить генерацию.
Дополнительные расширения
Для улучшения согласованности генерируемых элементов можно дополнительно воспользоваться расширением FreeU - суть сводится к включению и выбору соответствующей рекомендации под используемую модель.
Результаты
В итоге должны получить следующие вариации:
Сравнение до и после "разрушения":
Экстерьер "Зима":
Экстерьер "Кинематографичный стиль":
Интерьер "разрушение":
Интерьер "уютная праздничная атмосфера":
Материальчик с тестами, сравнениями по интерьерам и экстерьерам тут: Stalogen.ru
Изменения на портретах
Изменения накладываются на всю композицию, поэтому для сохранения лица при любых изменениях нужно воспользоваться маской.
Для редизайна с сохранением лица без маски нужно быть готовым к изменениям на всей композиции. Наилучшие настройки в таком случае представлены в соответствующем разделе данного материала, а результат будет вот таким:
В данном случае лучше отрабатывает особый синтаксис, нужно прописать словами что нужно сделать с эталоном, в данном случае я прописал: "make in yellow jacket" - что в переводе значит "сделай жёлтый пиджак"