Все что нужно знать про модели 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

5858
14 комментариев

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

4

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

1

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

1

Без 100 грам не разобрать, что за воды настрочил, да ещё и 2 раза. На самом деле всё на столько просто, что даже сложно. Модель или контрольная точка - это мозги ИИ. Хочешь мозги анимешника, хочешь фотографа, а хочешь амбидекстера ну тот который в 2 полушария фигачит

1

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

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

1

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

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

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

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