Все что нужно знать про модели stable diffusion. Часть 1

Шедевральная обложка
Шедевральная обложка

Что такое модель?

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

С чего все начиналось

Сама собой модель не появиться, поэтому мы должны ее сделать и натренировать. Для тренировки нам нужен так называемый "датасет" - набор данных на которых нейросеть будет учиться и куча видеокарт, которые это все будут обрабатывать. Потратив кучу времени и денег, на выходе мы получим нашу модель. Именно таким образом и создавались основные модели stable diffusion - первой и второй версии.

Модели версии 1.x и 2.x

1.x

Самая первая модель создавалась с нуля (неожиданно!): взяли кучу картинок, подрубили видяхи и натренировали. Для следующей модели - версии 1.2 - взяли первую модель и продолжили ее тренировать, в итоге получив новую. С остальными точно также: 1.3 это продолжение 1.2, 1.4 - продолжение 1.3, 1.5 - продолжение 1.4. Из этой линейки моделей, в силу качества получаемых картинок, лучше всего себя зарекомендовали версии 1.4 и 1.5. Сейчас, например, версия 1.5 это стандарт для тренировки разных дополнительных мелких моделей (экстрасетей типа лор, текстуальных инверсий, гиперсетей или создания своей модели). Также с версии 1.2 была выучена еще одна модель - 1.5 inpainting, предназначение которой (неожиданно! x2) inpaint и outpaint (перерисовка части картинки или дорисовка вне ее). Вот как выглядит линейка первой версии

1.5-inpainting вставить было некуда, но она есть
1.5-inpainting вставить было некуда, но она есть

Ссылки на версии 1.1-1.3 больше для целостности списка, а 1.4, 1.5 и 1.5-inpainting можете добавить в закладки

2.x

Линейка моделей второй версии не стала продолжением первой, как можно было предположить, а была создана с чистого листа. Цепочка следующая: сначала сделали базовую модель "2-base" и от нее сделали пачку других. Потом натренировали 2.1-base, основываясь на 2-base, и уже от новой (т.е. 2.1-base) сделали еще одну. Проще картинкой (512 и 768 - это разрешения)

Все что нужно знать про модели stable diffusion. Часть 1

А разница есть?

Да.
Обе линейки тренировались по разному (датасет, разрешение, количество шагов). Насколько я знаю, для второй линейки датасет фильтровали более консервативно: там получилось меньше nsfw, меньше качественных фото, меньше крутых артов и тд. Если интересно, то тут можете глянуть примеры того что не вошло (порнуха даже при значении фильтра в 0.99 не всегда попадается, а они ограничились 0.1...) К тому же, во второй версии используется другая модель для обработки текста, которая тренировалась тоже по другому и данном случае это получилось хуже чем было. Еще, в силу разных архитектур моделей, все что комьюнити наработало для версии 1.x не совместимо с версией 2.x. Итог подвести можно мемом

Все что нужно знать про модели stable diffusion. Часть 1

Я совсем немного работал со второй версией, поэтому если вам есть что рассказать - прошу в комментарии, с удовольствием почитаю.
Кто хочет подробнее ознакомиться с параметрами обучения этих моделей, прошу:
https://huggingface.co/stabilityai/stable-diffusion-2#training https://huggingface.co/runwayml/stable-diffusion-v1-5#training

Хорошо, я понял и какую мне выбрать?

Никакую. В силу того, что это базовые модели, они могут нарисовать почти все, но это "все" они нарисуют посредственно. Но мы можем взять их за основу и немного дотренировать в нужную сторону, будь то аниме или фотореализм.
Вот например модель дотренированная специально для всякой фантастики (rpg). Эту тренировали на куче артов, чтобы получалось красиво.
А для аниме натренировали эту, можно еще nai вспомнить (nai - модель компании NovelAI, которую слили в сеть и используют все кто хочет)
Тактично промолчу про кучу натренированных моделей для генерации порнухи.

- сгенерирую пару артов; - ты же не будешь делать девченок с огромными сиськами... да?
- сгенерирую пару артов; - ты же не будешь делать девченок с огромными сиськами... да?

Небольшое отступление. Как мне кажется, в комьюнити есть небольшая непонятка с "тренировкой". Этим словом обозначают все: и тренировку используя 100 фоток для себя и дорогостоящую тренирову основных моделей. То, что я описывал до этого - это прям тренировка, то есть миллионы фотокарточек, сотни тысяч шагов и тысячи часов работы видеокарт. Для сравнения:
stable-diffusion 1.1 тренировалась на 170 миллионах картинок
NovelAI использовали 5.3 миллиона картинок
waifu-diffusion 1.3 тренировалась на 680 тысячах картинок
Это я для понимания разницы, потому что когда мы тренируем на 100 картинках и когда парни впрягаются и берут тысячи картинок - и то, и то тренировка, но надеюсь вы понимаете что это сильно разные "тренировки" и подход немного разный.

Миксы

Продолжим. Как я писал выше, тренировать - это долго, дорого и еще надо постараться чтобы получилось хорошо. А на это не у всех есть время, деньги и необходимые знания/сотрудники. Но если у нас есть несколько натренированных моделей, то почему бы нам не попробовать их смешать между собой в некоторой пропорции? Именно так и делают миксы/мержы: берут модели которые понравились и смешивают их вместе до результата, который понравиться. И смешивать так можно любое количество моделей. То как их правильно мержить это отдельное искусство.

Все что нужно знать про модели stable diffusion. Часть 1

Большинство моделей это именно миксы: кто-то не стесняется и пишет прям в названии "Mix" как например GhostMix, кто-то щедро расписывает в описании что с чем мешал, как делает Protogen или Art&Eros, а кто-то и в названии пишет и подробнее расписывать не лениться - OrangeMix. Но большинство, к сожалению, просто выкладывает модель. В лучшем случае напишет пару промптов и настройки для примера. Что там человек намешал? В каком соотношении? Доучивал еще сам или только сделал микс? Хуй. Его. Знает.

Ответы на эти вопросы важны, потому что если микс основан на модели от nai например, то мы можем спокойно использовать дефолтный nai'вский промпт (с доработкой в сторону других моделей в мерже), тоже самое и с каким-нибудь f222 или другими моделями для людей, чтобы целенаправленно писать mutated, disfigured, а не просто лить в промпт все подряд или тупо копировать из картинки с civitai. Аналогично дело обстоит и c остальными параметрами типа clip-skip. Тот кто учил, обычно знает особенности своей модели, тот кто смешивал - ?

Короче, миксы - дешево, сердито, но можно делать очень круто, при нулевых затратах на датасет и тренировку.

Хочу, хочу, хочу

Где же брать, эти ваши модели? Основных ресурса два:

  • civitai
    Дружелюбный интерфейс, много различных моделей, в том числе и nsfw. Помимо моделей там лежит еще куча всего: лоры, ембеддинги, позы для controlnet, гайды всякие.
Все что нужно знать про модели stable diffusion. Часть 1
  • huggingface
    Более техническая/официозная платформа, тут лежат основные модели sd, остальные заливают по желанию. Но там также лежат модели для controlnet и в целом, можно найти много полезного
Все что нужно знать про модели stable diffusion. Часть 1

Повторение - мать учения

Модель - файл, который отвечает за генерацию картинок, без него ничего работать не будет.

Модели можно создать двумя способами: - тренировка (берем картинки, видеокарты и вперед) - микс (смешивание нескольких готовых моделей)

Есть основные/официальные модели двух версий. Они могут все, но это все делают средне.

  • версия 1.x - все хорошо, парни красавцы, берем 1.4 или 1.5
  • версия 2.x - может она пока в начале пути, но выглядит печально, проходим мимо

Есть куча пользовательских моделей, которые уже заточены под конкретные стили/направления. По большей части это миксы. Качаем на civitai и huggingface и читаем описание моделей, там как минимум можно увидеть настройки, которые рекомендует автор.

Если вы пользуетесь автоматиком (инструкция по установке) файлы с моделями класть в папку stable-diffusion-webui\models\Stable-diffusion

Что будет дальше

Вообще хотел написать про расширения (всякие ckpt и safetensors), ema и fp, что они значат и какую модель брать, но решил сначала обговорить базу, чтобы дальше было проще. Это все обсудим во второй части.

Нейронки интересная и непростая штука, поэтому если хотите лучше в них разобраться, подписывайтесь на канал, там рассказываю как работать с SD

5.4K5.4K показов
26K26K открытий
33 репоста
14 комментариев

1.5-inpainting вставить было некуда, но она естьOutpainting автор пользоваться не умеет, так и запишем

Ответить

Но лучшая - 1.4, а в 2.0 были изменения не только датасета, но и частично архитектуры..

Ответить

Да, я об этом упомянул вскользь, чтобы не скатываться сильно в технику

Ответить

лучше всего себя зарекомендовали версии 1.4 и 1.5

— Нет (особенно 1.4 — по сути первая публичная версия с кучей багов). Просто 1.5 это более распространенный формат, потому что…

Обе линейки тренировались по разному (датасет, разрешение, количество шагов). Насколько я знаю, для второй линейки датасет фильтровали более консервативно: там получилось меньше nsfw, меньше качественных фото, меньше крутых артов и тд.

— Но нет. Не вводите людей в заблуждение — просто прочитайте, что происходило в момент релиза и чем завершилось. Кратко: в 2.0 по ошибке срезали слишком много, в 2.1 быстро все вырезанное вернули. Но в 2.x также поменяли модель обработки запросов и более корректно распределили ключевые слова (не стало такой сильной привязки к некоторым конкретным художникам и стилям, и вообще ключевые слова в запросах стали работать иначе). С 2.x двачеры, вопящие про вырезку nsfw из новой версии, работать не смогли — мозгов не хватило, видимо — поэтому больше моделей делают на базе 1.5. А еще это просто дешевле и быстрее.

Ответить

1. По первому пункту, честно не понял. Из первых версий лучше 1.4 и 1.5, с чем ты, как я понял вполне согласен. Но считаешь вторую версию в принципе лучше первой (или нет?), что не отменяет того, что в первой ветке лучше всех 1.4 и 1.5
2. Я свечку не держал, поэтому сказать как на самом деле не могу.
Из того что пишут сами stability так и получается, что 2-base они сильно обрезали по датасету, а 2.1-base продолжили в нормальном варианте. Но объем тренировки на "плохом" датасете и на "хорошем", к сожалению не в пользу "хорошего". И получается что никого я тут в заблуждение не ввожу (приложил картинку)
Unstable написали про то что вторая версия хуже (в некотором смысле могу понять их выгоду говорить плохо про вторую версию, потому что там nsfw хуже) https://docs.google.com/document/d/1CDB1CRnE_9uGprkafJ3uD4bnmYumQq3qCX_izfm_SaQ/edit#
на реддите это тоже обсуждалось https://www.reddit.com/r/StableDiffusion/comments/z5v4nz/this_sub_right_now/
Что касается текстовых моделей, в статье это упомянул, но не углублялся. Что лучше openai'вский CLIP или OpenCLIP - хз. Я думаю, что большинству в общем все равно и если бы вторая версия делала лучше - то на нее бы и перешли, но необязательно, потому что если все уже привыкли к 1.x и есть куча наработок, то для того чтобы всем перейти на 2.x должны быть веские причины. А таких не оказалось
Если подкинешь ссылок почитать - буду только рад

Ответить

Поставь тег #stablediffusion, чтобы не потерялось

Ответить

Чтобы я без тебя делал, спасибо *чмок*

Ответить