Stable diffusion: управляем цветом

Stable diffusion: управляем цветом

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

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

Есть много способов как попытаться генерировать нужные нам цвета:

  • Работать с промптом (менять слова, веса, порядок и тд)
  • Сгенерировать из наброска (в img2img, sketch)
  • Img2img с депфмапой, кении, и цветной подложкой (https://www.youtube.com/watch?v=u-jvjP2k-RU)
  • Инпеинтить
  • Можно попробовать latent couple
  • Любой вариант который будет работать

В этой статье разберемся с расширением cutoff. Сразу скажу что оно плохо работает с реалистичными моделями (или у меня не получилось), но с анимешными может помочь.

Для начала установим

вот ссылочка на github: https://github.com/hnmr293/sd-webui-cutoff
на civitai (тут качать ничего не надо, но в описании парень показал пример использования и поделился своими наблюдениями): https://civitai.com/models/18840/no-more-color-contamination-read-description

У меня его в списке расширений нет, но если у вас есть то просто находите "sd-webui-cutoff" и нажимаете "Install". Если у вас тоже его нет, то берем ссылочку на гитхаб выше, идем в "Extensions" -> "Install from URL", вставляем ссылку и нажимаем "Install". После установки появиться надпись что все ок. Переходим во вкладку "Installed" и нажимаем кнопку "Apply and restart UI". После этого у нас там же где и остальные расширения должна была появиться раскрывашка с Cutoff.

Что к чему

Вот наш промпт:
masterpiece, best quality, wallpaper, full body, 1girl, solo, standing, looking at viewer, green hair, yellow shirt, red shorts, solid white shoes, on tennis court

У нас есть цвета волос и одежды, они могут друг другу мешать и чтобы этого избежать cutoff немного перерабатывает наш промпт чтобы в числовом представлении цвета между собой меньше пересекались.
При обработке он поочередно заменяет все цвета кроме одного на какой-нибудь малозначительный токен, например на "_" (нижнее подчеркивание). Таким образом у нас остается только один цвет в промпте, а вместо остальных написано "_" и это уменьшает вероятность их смешивания. То есть у нас изначально было looking at viewer, green hair, yellow shirt, red shorts и вот как он их будет менять.

Оставляет один цвет, а другие убирает и так по очереди
Оставляет один цвет, а другие убирает и так по очереди

Пройдемся по интерфейсу

Stable diffusion: управляем цветом

Enable - активирует работу расширения
Target tokens (comma separated) - те цвета, которые мы хотим отделять, записываем через запятую
Weight - вес, сила действия наших манипуляций (я не заметил сильной разницы при 1, 1.5 или 2, поэкспериментируйте)
Disable for negative prompt - если галочка стоит, то расширение будет работать только с основным промптом, негативный не трогает (я ни разу не убирал, всегда стоит).
Cutoff strongly - если цвета слишком сильно влияют на общую картинку (освящение, антураж, предметы, интерьер и тп), включите эту настройку.
Padding token - токен который будет вставляться вместо целевых токенов (по умолчанию "_", нижнее подчеркивание, можно не менять)
Interpolation method - метод интерполяции векторов (если изменение других настроек не дает результата можете попробовать поменять это)
Debug log - будет выводить в консоль обработанные промпты

Кстати о дебаг логе, вот как выглядит промпт с выключенным и включенным cutoff strongly. Расширение полностью убирает цвета из промптов и вставляет их только когда они нужны. В обычном режиме он их убирает только при взаимодействии друг с другом (в самом низу на скринах)

Цвета из промпта полностью убраны, полностью!
Цвета из промпта полностью убраны, полностью!

Кому интересно как работает:
на главной странице на гитхабе https://github.com/hnmr293/sd-webui-cutoff#how-it-works
и тут автор подробнее расписывал https://github.com/hnmr293/sd-webui-cutoff/issues/5

Картинки!

В желтой футболке: masterpiece, best quality, wallpaper, full body, 1girl, solo, standing, looking at viewer, green hair, yellow shirt, red shorts, solid white shoes, on tennis court
В оранжевой: masterpiece, best quality, wallpaper, full body, 1girl, solo, standing, looking at viewer, purple hair, orange shirt, blue shorts, solid white shoes, on tennis court

Для той, которая в желтой футболке в cutoff прописал: green, yellow, red.
Для той, которая в оранжевой в cutoff прописал: purple, orange, blue.
Ботинки и так не всегда чисто белые получаются, так что solid white shoes не добавлял в cutoff

AnythingV3

Тут еще решил с latent couple поиграться и поставить их рядом. В cutoff прописал: green, yellow, red, purple, orange, blue

Stable diffusion: управляем цветом

AbyssOrangeMix2

Тут с желтой футболкой и без cutoff все хорошо получилось

MeinaMix V8

Итого

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

Пожелания, предложения, вопросы - всему буду рад, пишите!

Тут мой телеграм: https://t.me/mrreplicart
Тут ютуб: https://www.youtube.com/@mrreplicart

3737
2 комментария

ппц нужно быть погромистом чтобы во всё в это въехать...

ничего сложного не заметил, я во все въехал)