ruSauron
Block weights: Дайте LoRA второе дыхание
Для Stable Diffusion Webui есть одно замечательное, но трудное в использовании расширение, о котором почти нет информации и примеров использования. Оно позволяет задавать вес не всей модели в целом, например, ползунком, или цифрой после двоеточия: <lora:myawesomelora:1.4>. Это дополнение позволяет задавать вес каждого блока! Например, Вы можете плавно увеличивать вес к центральным блокам и снижать к началу и концу: <lora:myawesomelora:1.4:0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2>.
Название дополнения: sd-webui-lora-block-weight
Кратко синтаксис: <lora:loraname:weight:blockweights>
Вы можете как указывать вес каждого блока, так и воспользоваться предустановленными тегами, вроде MIDD, INALL, OUTALL, либо создать свой тег. ВАЖНО: внутри угловых скобок < > нельзя использовать пробелы, кавычки, скобки, лишние двоеточия и лишние запятые. В примере на github есть строка <lora:"lora name":1:IN02> и из-за наличия кавычек она работать не будет, отчего может показаться, что дополнение сломано, но это не так. Дополнение не умеет работать с Batch size выше 1.
Да, но для чего вообще это нужно? При помощи этого дополнения можно, например, брать из LoRA только начальные блоки, которые оказывают огромное влияние на композицию, только последние, которые в основном определяю цветовой тон, или средние, которые отвечают за всё понемногу.
Это может упростить генерацию того, для чего LoRA не особо была предназначена, например:
Снизив вес начальных блоков можно получить любимого аниме-персонажа с нормальными пропорциями
Снизив вес конечных блоков можно получить того же персонажа с глазами в пол лица, но в обычной цветовой гамме.
Добавление конечных блоков из посторонних LoRA может усилить обводку, отражения, текстуру кожи, осветлить или затемнить изображение
Красивый стиль, который во всём видит дома чуть снизит свой энтузиазм и начнёт рисовать персонажей.
Ну и добавить всевозможных уродцев, артефакты, лишние глаза, пальцы и прочее. Всё же мы собираемся ломать нормальную работу модели, отрезая от неё непонравившиеся куски.
Для установки найдите в списке дополнений и установите sd-webui-lora-block-weight. После перезагрузки UI на вкладках txt2img и img2img появится новый элмент: LoRA Block Weight.
Обратите внимание: на данный момент это дополнение конфликтует с Composable Lora. Они могут быть установлены одновременно, но галочка Active/Enabled должна стоять только в одном из них. Если активированы оба дополнения, то эффект от использованной в запросе LoRA может примениться дважды (если не больше), что создаст выжженное изображение или мешанину цветов. Скорее всего это проблема Webui потому что prompt scheduling в некоторых условиях показывает подобные проблемы.
Не относится к теме, но поясню. Prompt scheduling – изменение запроса на определённом шаге, например, [cat:dog:0,4] начнёт рисовать кота, но когда пройдёт 40% всех шагов уберёт из запроса кота и на тоже место поставит собаку. Это может привести как к животному, имеющему черты обоих, так и отдельно стоящих плохо нарисованных кота и собаку.
Я дам хорошую отправную точку для начала экспериментов:
В строке запроса после названия модели LoRA и веса напишите ещё одно двоеточие и слово XYZ, на примере популярной модели это будет <lora:yaeMikoRealistic_yaemikoMixed:1:XYZ> , а в картинках я использовал <lora:HuaqiangLora_futaallColortest:1:XYZ>
После этого проверьте, что дополнение включено (Active), разверните XYZ plot дополнения (не путайте с X/Y/Z plot в разделе скриптов) поставьте опцию XYZ plot.
Выберите X Types Original Weights, в поле X введите:
INS,IND,INALL,MIDD,OUTD,OUTS,OUTALL
Подготовка закончена, Вы увидите таблицу, вроде приложенной.
Если какой-то из результатов понравился – сотрите в запросе XYZ и напишите тег, который был вверху экрана, например, MIDD (но мне понравился инвертированный MIDD, картинка от него):
<lora:HuaqiangLora_futaallColortest:1:MIDD>
Если ни один вариант не понравился – можно попробовать инвертировать запрос, все теги превратятся в свои противоположности. Для этого вместо XYZ напишите ZYX и ещё раз запустите генерацию. Небольшая проблема. На момент написания нужно добавить ещё одну любую LoRA с весом 0 и тегом XYZ. Например, я взял Паймон. Думаю, Паймон обрадовалась тому, что у неё невзирая ни на что остаётся вес 0. Возможно, это будет исправлено, возможно нет. Как объяснил автор дополнения, это потребует изменения логики работы дополнения.
Итак пример: <lora:HuaqiangLora_futaallColortest:1:ZYX> <lora:paimonGenshinImpact_v10:1:XYZ>
Если Вам понравился один из инвертированных вариантов, то нужно будет развернуть ниже список Weights setting, найти в списке соответствующую строку, например, MIDD, скопировать её в блокнот/Excel/Word и заменить все 1 на любой символ, все 0 на 1 и указанный ранее символ на 0, после чего вставить прямо в запрос вместо ZXY. Не забудьте только убрать оттуда Паймон и отключить XYZ plot.
На этом всё, я постараюсь ответить на вопросы в комментариях








