Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

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

Для начала, что, собственно, мы вообще делаем? В зависимости от типа, мы интерполируем между, или замещаем часть весов в модели, но это очень кратко и не факт, что правда, лишь моё понимание. Хотя интерполяция между весами это правда, и мы это увидим в примерах.

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

Конкретное влияние весов на генерацию можно наглядно посмотреть в одном из расширений, которое позволяет вам лично менять веса в эмбеддингах. Их там сотни и каждый меняет генерацию. Мержинг моделей это изменение таких весов в масштабе всей модели.

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

Дисклеймер

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

Я буду рассматривать мерж только по формуле Add Difference, так как она более контролируемая, чем Weighted Sum, или Sigmoid к которому нет формулы в подсказках. Но я призываю вас экспериментировать со всеми, дабы найти лучший результат лично для вас :)

Что вам нужно

WebUI - AUTOMATIC1111 как обычно
Модель - любые две модели, которые вам нравятся, а можно и три, и т.д.
Устанавливаем расширение Merge Board из меню расширений. Перезапускаемся.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Какой-нибудь промпт и сид, дабы всегда была одна картинка(в рамках сида). Я в данном случае использовал пресет с кучей вайлдкардов, который меняется от сида к сиду полностью, включая модификаторы стилей, что позволяет смотреть на результаты в куда большем охвате, но может быть и статичен, это на ваше усмотрение.

На этом всё. Вы готовы мержить.

Процесс

У вас появится данная вкладка в интерфейсе:

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Вы можете видеть, как я уже смержил мою основную модель в 5 вариациях, от 10 до 50.

В графах А(1-10) вы вставляете основную модель, на базе которой будет производится мерж.
В графах B(1-10) вставляете ту, которую нужно скрестить с основной.
В графах C(1-10) вставляете ту модель, которая нужна, в зависимости от требований и метода интерполяции.

Так же можно поставить не модель, а O(1-10), это модели результаты мержа линий с 1 по 10, то есть можно их мержить цепочкой, в основном для сложных мержей рецептами.

Методы

На данный момент есть 3 метода

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Weighted Sum: Результат = A * (1 - M) + B * M
M - Это мультипликатор

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Weighted Sum не использует графу C(1-10) в мерже, а производит интерполяцию напрямую, умножая модель на ( 1 - мультипликатор), то есть, например он у вас 0.3, то модель будет помножена на 0.7, а после к ней будут добавлены веса модели из графы B(1-10), умноженные на мультипликатор, то есть в данном примере на 0.3.
Данный метод напрямую будет интерполировать веса моделей.

Add Difference: Результат = A + (B-C) * M
Это основной метод, который я использую. Он вычитает веса модели графы C(1-10) из модели в графе B(1-10), а после множит их на мультипликатор и накладывает на модель. Не смотря на то, что основная модель ни на что не множится, а веса накладываются поверх, это НЕ добавляет бОльших возможностей модели и так же является интерполяцией между весами, но в другой обёртке, более точной, либо экзотической, смотря что вы вычитаете и откуда.
В основном такой метод будет строится по примеру: Модель1(A) - Модель2(B) - Модель1(C), но вы конечно вольны экспериментировать с любыми моделями, более того, я верю, что у вас получится найти интересные вариации :)

Sigmoid: ???
Подсказки по формуле сигмоида не вставили, поэтому и пояснить мне не о чем. Могу только сказать, что по памяти, данный метод только маржинально отличается от Weighted Sum, поэтому был вырезан из основного интерфейса за ненадобностью, но некоторые предпочитают использовать его.
Так же давно был обратный сигмоид, но его убрали насовсем.
Но это не точно.

Save as float16

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

Ckpt/Safetensors

Какой вам больше нравится. На данный момент полный переход на safetensors ещё не произашёл, и иногда ckpt всё-таки нужен.
Так например у меня не работает расширение Dreambooth с моделями в расширении safetensors(хоть и должен...), но в остальном, если вы не тренируете саму модель, то вам нет смысла сохранять как ckpt, ибо safetensors быстрее.

Рецепты

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Полезно, если вы хотите сохранить свой сложный мерж, что бы не вводить его снова, что бы что-то быстро поменять и т.д.

П.С. В окошке не мой рецпт, я их не использую. Разработчик любезно предоставил для всех пример с мержем какой-то модели для хентая. ¯\_(ツ)_/¯

Третье же окно просто выводит список всехваших моделей. Там ничего интересного нет, да и функционала тоже.

Процесс и результаты

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

У меня уже готов первый батч мержа моей основной модели с дримлайк моделью в вариациях от 0.1 до 0.5 с шагом в 0.1.
Больше смысла делатьне имеет, так как я не планирую делать дримлайк основной. Да и собственно вплоть до 0.5 оно только в образовательных целях, для небольшого тюна выше 0.3 уже плохо влияет на многие модели.

Процесс это не очень долгий, даже быстрый, если вы на SSD. Только запаситесь местом, так как каждая моделька это 4/2 гига. Не забывайте удалять лишние после получения результата. Оставляйте только понравившиеся.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Вот мои мержи, Anything3 добавлена как референс базы. Вторая линия - моя основная модель и основа мержа.

По мержам, мне понравились результаты что-то между 01 и 02, поэтому идём мержить между данными числами.

Просто модифицируем числа, меняем названия и стартуем.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

А пока оно мержится, поговорим про генерацию x/y плота для сравнения. Вот пример, меняете на свои названия и сиды.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

И у вас получится такой же плот.

А вот и результаты второго шага мержа.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

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

12 фиксит большинство проблем 10, а так же уже получает генерации, которые я предпочёл бы, как генерация с кругом в последнем сиде.

14 ещё лучше, но мне хотелось бы получить что-то между 14 и 16, дабы четвёртый сид перешёл в то, что ближе к 16, а не к 14.

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

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

0148! Рубикон перейдён. Доволен данным мержем.

Теперь ждём новую красивую модель, что бы проделывать это ещё десяток-другой раз по новому :3

Если проделывать так с каждым мержем, то у вас получатся отменные миксы. Давайте что-ли полюбуемся на генерации моего. Не буду ничего фиксить, просто картиноцки.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Ля поля, даже пальцев 5... Это на сиде, который с цветами был в плотах выше, 2850049684, может быть он просто хороший, пробуйте кто хочет.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Напоминает какой-нибудь старый постер.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

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

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Пальцы(9((

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Снимает тех, кто попытается развести полит. срач в 4к и на поларойд.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Ммм, космас... Какая-та смесь солнца и чёрной дыры-тян.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

У меня нет комментария на эту картинку. Поднял кфг до 14,1.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

Закончим картиной луны над озером. Никаких аниме тянок, никакой политики(которой и так не было).

Конец

Выбор финального результата всегда, конечно, субъективный. В данном случае я опирался только на то, что мне эстетически нравится больше. Для вас же критерии могут быть абсолютно разными, может быть вам интересен какой-либо конкретный стиль, и вы будете проверять именно на нём, а может вам интересен какой-либо объект, и т.д.

Так же существуют некоторые пограничные веса, при затрагивании которых картина кардинально меняется, они могут находиться даже на глубине 0.ххх1, это то, что меняет картинку кардинально, как вы могли видеть в переходе на моём мерже с 0144 на 0148, при изменении 4 картинки. Именно такие переходы стоит пытаться ловить, так как до них, между оригиналом и достаточным мержем, получается каша. Но, стоит учитывать, что всё это влияние оказывается на весь объём сидов, где-то починилось, где-то сломалось, для этого мы и используем сразу некоторый их объём для сравнения.

P.S. Скрещивать модели на базе разных структур не выйдет.

Эрудированный(или просто более точный) мержинг моделей | Гайд по скрещиванию моделей Stable Diffusion

А ещё это чуть не положило мне драйвер. Вот так вот, всё ради вас...

Ниже спрятана драма про создателя интерфейса AUTOMATIC1111, к статье отношения не имеет, просто делюсь если кому интересно.

Ссылок на какие-либо сборники рецептов мержей я оставлять не буду, так как там есть некоторые, содержание которых поднимает вопросы. Кому нужны рецепты, смогут найти их сами, но в основном там хентай.

P.P.S. Там кста Автоматика пытаются кенселить за расизм, нацизм и цп, я очень сильно веселился, пока читал всё это xD Некоторые к этому ещё добавляют, что ничего необычного, ибо он вроде русский. Очередной день клоунады в цирковом обществе ¯\_(ツ)_/¯
Если кратко, то он делал моды для римворлда в 2018 сатирического содержания, а так же высмеивал двойные стандарты. Ну собственно вот оно и вот. Про процессоры так вообще за ссылки на сборники инверсий, где всё смешано в кучу, ответственности за которые он не несёт.

Контент для взрослых
106106
64 комментария

Братан, харош!!! Давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот ещё почаще?

4
Ответить

А колбасы из графена тебе не завернуть?

2
Ответить
Автор

Ля, было бы время, разбирал бы чаще, но нет его, нет...

1
Ответить

Вот они - художники 21 века! Методы, мерджи, мультипликаторы, A * (1 - M) + B * M, это вот всё. Да почуют себя остальные глупыми обезьянами с палкой-рисовалкаой в лапе.

3
Ответить
Автор

Зато уровень входа какой! Поставил программу и делаешь картины! Никаких знаний!

2
Ответить

Что там сложного то? Диффузные модели хорошо изучены, библиотеки написаны годы назад. Почти ничего изобретать не нужно.

P.S. Помню что слегка паниковал, когда подобные модели вышли, но изучив подробнее вопрос, понял что реальных художников не заменят - уровень абстракции, знаете ли, не тот. А вот заменить армию low/mid рисовак запросто. Но и обратное кстати верно - чел с уровнем навыка уровня "могу нарисовать анимешную мордочку", теперь может почувствовать себя почти настоящим творцом.

Ответить

А будет гайд по созданию своей модели?

Ответить