replicart

replicart

Рассказываю про нейросети, которые генерируют картинки
Пикабушник
Дата рождения: 11 ноября 1995
поставил 0 плюсов и 0 минусов
364 рейтинг 16 подписчиков 7 подписок 18 постов 4 в горячем

Генерация графики для 2d платформера

Парень сделал простой платформер и прикрутил к нему редактор уровней со stable diffusion, чтобы игроки могли создавать собственные локации.

Пользователь может нарисовать свой уровень в виде карты глубины, которая потом будет обработана с помощью controlnet (штука, которая помогает нейронке лучше понимать, что нужно сгенерить). Для создания окружения он использовал эту модель, а спрайты персонажей делал с помощью этой.

Генерация графики для 2d платформера Нейронные сети, Stable Diffusion, Платформер, 2D, Видео, Без звука

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

Самому попробовать можно тут
Пост на реддите
Статья, в которой он рассказал как делал
Код платформера

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

Показать полностью 1

Генерируем пиксель арт

Окей, для пиксель арта характерно две вещи:

  • Низкое разрешение (или имитация оного)

  • Ограниченная цветовая палитра

Что у нас может делать stable diffusion:

  • лучше всего генерирует на разрешении 512x512

  • с помощью моделей, лор и остального, можем попробовать стилизовать как "пиксель арт"

В таком случае, мы можем сгенерить стилизованную под пиксель арт картинку, а затем подправить размер и цвета, так? Так. Давайте делать, только прежде два понятия:

  • квантизация - процесс при котором мы уменьшаем количество цветов в изображении

  • дизеринг - попытка изобразить цвет которого нет в палитре, теми которые в ней есть - используется для теней и градиентов

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост
Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост

А теперь давайте быстренько пройдемся по тому, что у нас есть:

  • PXL8: скрипт, который использует nQuantCpp. Можем уменьшить картинку, есть много методов квантизации, ограничение цветов, включение/отключение дизеринга. В общем ок, но во-первых это скрипт и допустим, чтобы мне просто обработать картинку, мне нужно закинуть ее в img2img, поставить нулевой денойзинг и ждать, пока вся цепочка отработает ничего не делая и только потом отработает скрипт - это долго. Во-вторых, нет других цветовых режимов (черно-белого, градации серого или возможность закинуть свою палитру)

  • pixel art: скрипт. Можем уменьшить картинку, выбрать метод квантизации и количество цветов, а дизеринг ставят за нас по умолчанию. Остальные недостатки те же, что и у предыдущего

  • pixelization: добавляется в extras. Использует три сетки, чтобы обработать картинку. Можно только повлиять на размер картинки

  • sd-pixel: добавляется в extras. Размер картинки, количество цветов и перевод в черно-белый - это все, что нам доступно. Ни выбора квантизации, ни выбора дизеринга

В целом все скрипты более менее с задачей справляются, но каждый по своему хорошо и по своему плохо, а иметь четыре расширения для решения одной задачи, как-то много. Ну, я человек простой. Написал свое расширение и засунул туда все, что захотел: sd-webui-pixelart

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост
  • Выбор количества цветов, методов квантизации и дизеринга + при добавил функцию для лучшего выбора цветов при квантизации (эта которая в конце, "Enable k-means for color quantization")

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

  • Функционал в двух вариантах: скрипт - чтобы обрабатывать сразу после генерации, секция в extras - чтобы можно было быстро обработать отдельные фотки

Как пример, картинка прогнанная через pixelization и мое расширение (из размера 512x768 в 128x192)

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост

Так работают разные цветовые режимы (ограниченная палитра, градации серого, черно белая и цвета, взятые с картинки с полностью зеленой палитры)

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост

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

Для всяких зелий неплохо подходит связка pixhell + gag-rpg-potions-or-lora-21

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост

Для простенького пиксель арта подойдет rev-animated + mpixel lora (и вообще, это наверное лучшая лора, из тех, что есть)

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост

Прикольные анимешные портреты получаются если использовать anything-v3 + pixel-art-style lora

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост

Простенькие пейзажи можно сделать с помощью pixel-landscapes

Генерируем пиксель арт Нейронные сети, Stable Diffusion, Pixel Art, Длиннопост

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

Показать полностью 9

Продолжаем обрабатывать видео с помощью нейросетей

Обработка сделана с помощью warpfusion (доработанный stable diffusion). Инструмент хороший, но платный. Интересующиеся могут почитать/оплатить на страничке автора на patreon

Если хотите получить представление как с этим работать, можете посмотреть это видео (на англ)
Оригинальный пост на реддите

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

Показать полностью

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

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

В первой части мы поняли что к чему, во второй подробно разобрали разные варианты моделей и сейчас пришло время научиться конвертировать модели в разные форматы.

Будем использовать это расширение
Потому что оно простое и может сделать все что нужно

В двух словах про другие расширения

Checkpoint merger (который по умолчанию установлен) - чуть сложнее и нет возможности работать с ema/no-ema

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

Model toolkit - отличное расширение, чтобы глянуть что-там в модели. Конвертация fp16/fp32, есть возможность вытянуть отдельные части модели и нужную пачку весов (ema/no-ema), но нужно сильно больше телодвижений и интерфейс опять не такой удобный как у model converter

Короткая справка что там в модели

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

Основная часть + подробная инфа

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

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

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

При том, что нам не нужно мержить модели, а просто получить файлик нужного формата - это все немного не то.
А теперь, как в рекламе олд спайс: посмотрите на остальные расширение и посмотрите на это, еще раз на другие и опять на это

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

Установка

Устанавливается точно также как и все остальные расширения.
Переходим во вкладку Extensions, раздел Available нажимаем кнопку Load from: и у нас подгрузится список расширений. Дальше в поиске пишем model converter у нас он такой один, натуральный блондин. Нажимаем серую кнопку Install и после того как он загрузит, переходим в раздел Installed и нажимаем оранжевую кнопку Apply and restart UI и после перезагрузки у нас появиться вкладка model converter

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост
Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост
Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

Как превратить брюки в элегантные шорты?

Если вы читали вторую часть, то по параметрам вам все должно быть понятно:
Model - модель, с которой будем работать (работает и с ckpt, и с safetensors)
Custom name - название сконвертированной модели (если ничего не указать, возьмет оригинальное название и добавит приписки с выбранными параметрами, можно глянуть чуть ниже)
Precision - точность чисел в нашей модели
Pruning methods - какую пачку весов будем оставлять (disabled - оставит без изменений)
Checkpoint format - расширение, которое хотим получить
Show extra options - покажет дополнительные поля в которых мы сможем выбрать что делать с конкретными частями модели, пропускаем (если вам это нужно, то и без меня знаете)
Fix clip - чинит текстовую часть нашей модели, соответственно есть смысл включать если она сломана, не трогаем (кстати model toolkit может написать если сломан clip)

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

Работает все просто: выбираем модель, нужные параметры, нажимаем на оранжевую кнопку "Run" и ждем. Делает достаточно быстро, но это еще зависит от выбранных параметров. После того как новая модель будет готова, в правом столбце появиться сообщение с расположением файла (сохраняет туда, где лежат остальные модели, у меня указана нестандартная папка)

Важный момент
Если мы что-то делаем с моделью, то она должна быть полной. То есть если мы хотим вытянуть из модели ema веса, то в модели они должны быть. Если мы хотим перевести модель в fp16, то она должны быть fp32 (иначе нет никакого смысла переводить fp16 в fp16 или fp16 в fp32, потому что точность мы уже потеряли). Условно говоря, модель - это тортик. И если от целого тортика (полная модель с двумя пачками весов в fp32) мы можем отрезать кусок (no-ema fp16), то из кусочка у нас не получиться воссоздать целый тортик или другую его часть

Зачастую авторы выгружают уже обрубленные модели, в которых нет двух пачек весов или уже в fp16. Поэтому для демонстрации буду использовать sd1.5

Вес

Показатель, по которому можно примерно судить что там в модели:
Две пачки весов в fp32 ~7гб
Две пачки весов, одна из которых fp16 ~5.8гб
Две пачки в fp16 или одна пачка весов fp32 ~3.6-4гб
Одна пачка весов в fp16 ~2гб

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

С тем, как показывают вес есть отдельный прикол, но тут не углубляясь.
Возьмем например Protogen 3.4 на civitai и huggingface

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

Смотрим. Ага, пять с лишним гигов, значит у нас тут две пачки, одна из которых fp16, а другая fp32, ок. Так, стоп. Почему на civitai она весит 5.57, а на huggingface 5.98 (выделены красным)? Получается они разные? Начал качать, а он показывает 5.6. Скачал, и у обоих размер пишет 5 843 978, а в свойствах 5.57. Так и хочется сказать

Все что нужно знать про модели stable diffusion. Часть 3 Нейронные сети, Stable Diffusion, Гайд, Длиннопост

Они просто по разному считают:
хром - показывает нормальный размер и округляет при скачивании
huggingface - показывает размер в байтах, оставляет только первые 3 цифры, а остальное отбрасывает и пишет гб (посмотрите размер на huggingface и в свойствах значение в скобках)
civitai - показывает размер файла нормально
проводник - тоже нормальный размер, только в кб (5 843 978кб/1024=5707мб; 5707Мб/1024=5.7гб)
ну а в свойствах все как надо

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

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

Показать полностью 12

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

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

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

Мы довольные, резкий кликом мышки открываем civitai, выбираем понравившуюся модель, например Realistic Vision, открываем менюшку с файлами для скачивания и что мы видим

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

Какие-то Full, Pruned, fp, SafeTensor, PickleTensor. При этом еще и разница между файлами в несколько гигабайт. Можно мне ту которая будет картинки делать?

Ладно, испытаем удачу на huggingface, скачаем основную модель 1.5. Что может быть сложнее, правда?

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

Опять эти pruned'ы, еще и ckpt, safetensors и emaonly откуда-то взялись

Похоже придется чутка разобраться.

Небольшой дисклеймер: задача этой статьи - чтобы вы поняли какую модель качать. Где возможно, будет опущено и упрощенно все техническое, потому что на каждый раздел можно привести пачку статей которые объяснят как это работает, и еще пачки три, чтобы +- схватить базу на которой это все построено, начиная от статей как stable diffusion в принципе работает и небольшой доки по safetensors и заканчивая стандартами типа IEEE-754

Начнем с конца - расширения

У нас есть два основных формата:

  • ckpt (pickle tensor) - это стандартный формат для моделей, которые мы используем с SD. Их минус в том, что при желании в файл можно запихнуть вредоносный код, который выполниться, когда мы загрузим модель.

  • safetensors (safetensor) - доработанный формат для моделей, суть существования которого в том, чтобы нельзя было засунуть в модель что-то вредное. Также модель в этом формате грузиться быстрее чем модель в формате ckpt. (имеется в виду именно загрузка, например когда мы переключаем модели, а не скорость генерации картинок)

Разницы при генерации картинок нет абсолютно никакой. Содержимое, что модели ckpt, что модели safetensors одинаковое.

Поэтому если есть safetensors - берем safetensors, если нет качаем ckpt и пользуемся.

fp16/fp32/bf16

Компьютер все считает в числах. Числа нужно как-то хранить в памяти. Тут у нас классическая дилемма:
Если мы выделяем больше памяти, то числа будут точнее (больше), но требуется больше места и расчеты с ними проводить сложнее.
Если мы выделяем меньше памяти, то числа будут менее точными (меньше), но занимать они будут сильно меньше места и считаться значительно быстрее.

fp - это floating point (numbers), то есть (число) с плавающей точкой, например 0.00548219 или 7743.123, именно такой формат чисел и используется в моделях. (потому что могут еще быть просто числа, типа 10 или 66492, для нас, как говорил великий, шо то, шо это, но для компьютера это большая разница)

16 или 32 - число бит, которые мы выделяем для каждого числа. Как несложно заметить разница в два раза. В машинном обучении 32 это стандарт, а если нужно другое - конвертируют

Соответственно, fp32 значит, что в нашей модели для каждого числа выделяется 32 бита, а в fp16 - всего 16. Поэтому модели fp16 весят в +- два раза меньше чем fp32 и картинки генерируют быстрее.

bf16 - это попытка и рыбку съесть и косточки продать: места нужно как для fp16, но точность больше. Не все видеокарты поддерживают, не везде применяется, поэтому пропустим.

для наглядности

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

При генерации картинок результаты моделей fp16 не принципиально отличаются от fp32, поэтому если мы скачиваем модель погенерить, можно спокойно брать fp16. Если же мы выбираем модель, чтобы на ней тренировать что-то (модель, лору и тд), то лучше брать fp32 модель.

pastelmix и waifu diffusion

dreamshaper и sd 1.5

По умолчанию, автоматик все старается считать в fp16, поэтому то что у нас модель fp32, по сути влияет только на размер файла. Если хотите сравнить скорость генерации, то добавьте к параметрам запуска --no-half и у вас всегда будет считать в fp32

no-EMA/EMA-only

Тут для понимания лучше будет начать с отстраненного примера.
Если вы когда-нибудь смотрели на биржевые графики, то видели, что там идет подробная линия цены, которая реагирует на мельчайшие изменения на рынке. Но чтобы чуть лучше понимать что происходит, возможно нет смысла смотреть каждое движение цены? Может, чтобы уловить общую тенденцию нам лучше подойдет какое-то среднее значение? Именно для этого и применяется экспоненциальная скользящая средняя (ema, exponential movement average) - на графике она красная.

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

Примерно тоже самое и у нас. У моделей stable diffusion при тренировке сохраняли две пачки весов: non-ema и ema.

no-EMA - это обычная модель, как тренируется, так и тренируется, примерно также как обычный график цены. Иногда это может сказаться не совсем хорошо, потому что мы учили модель долго, упорно и вначале-середине все было ок, а под конец ее повело немного не туда и она так и сохранилась.

EMA-only применительно к модели, означает что веса в модели более "гладкие" и во время тренировки модель обращала внимание не только на текущий шаг, но брала во внимание и несколько предыдущих. Аналогично тому, как и ema на графике

Соответственно модель в которой у нас обе пачки весов называется full, full-ema или никак не обозначается, модель в которой одна из пачек: no-ema и emaonly обычно так и называются.

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

Но, если все так интересно, какая нужна нам? Зависит от модели, но как правило можно принять так: для тренированных оставляем ema/no-ema (тестируем какая будет лучше), для миксов оставляем no-ema.

С миксами зачастую ema-only генерят только шум или результат значительно хуже

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

Pruned

Тут только пара слов. У нас есть модель. Суть в том что на входе она получает что-то одно и выдает что-то другое на выходе. Соответственно внутри происходят некоторые преобразования. Часть этих преобразований может быть почти незаметной, можно сказать незначительной, например если мы умножим 5 на 1.0000001 то у нас получиться 5.0000005. Если нас интересует только первые три знака после запятой, то есть 5.000, то подобные изменения для нас некритичны. Мы можем пропустить подобные операции, а операций таких может быть много, а может и не быть совсем. Процесс, когда мы избавляемся от незначительных кусочков в модели, называется pruning, а модель которая прошла через этот процесс pruned.
Как мне кажется, в сообществе есть некоторая путаница: pruned - значит уменьшенная, соответственно как бы образом мы не уменьшали модель она теперь pruned. Это не совсем так.
Это достаточно сложный процесс, который нужно знать как делать, поэтому, если вы видите, что у модели приписка pruned, то скорее всего имеется в виду либо то что она fp16, либо что она только ema/non-ema, либо и то и другое вместе.

No vae/baked vae

Откроем например страничку Dreamshaper'а и увидим еще один параметр

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

VAE - это часть модели, а как мы знаем из первой статьи, без модели ничего работать не будет. И если выкинуть ее часть - тоже.

Когда у модели указано "no vae" - значит в модель зашита та VAE, которая шла по умолчанию. Если написано baked значит зашили какую-то нестандартную.

Это просто не совсем корректное название, которое прижилось и путает, поэтому когда вы выбираете "none" в автоматике в поле для выбора VAE - вы указываете, чтобы использовалась та VAE, которая вшита в модель, а не чтобы не использовалась никакая.

Все что нужно знать про модели stable diffusion. Часть 2 Нейронные сети, Stable Diffusion, Гайд, Видео, Без звука, Длиннопост

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

Нестандартные модели

У моделей есть определенная структура. Примерно как разные версии одной и той же программы могу конфликтовать между собой, также и модели с разными архитектурами нужно использовать немного по разному. Структура моделей stable diffusion первой версии, и например контролнета 1.0 считаются основными и поэтому автоматик со всеми моделями работает как-будто они модели sd 1.x или controlnet 1.0. Именно поэтому для моделей версий sd 2.x или controlnet 1.1 нам нужен дополнительный файлик, который и подскажет автоматику, что с этой моделью нужно работать немного иначе. Это будет файл с расширением yaml. Это конфигурационный файл, в котором храниться вся нужная информация о модели. Обычно, скачать их можно там же где и сам файл модели.

Итого

Формат: ckpt или safetensors?
Предпочтительнее safetensors - она безопаснее и быстрее загружается. Нет safetensors версии? Ну и пускай, можно брать ckpt.

Точность чисел: fp16 или fp32?
Для генерации картинок лучше 16, для тренировки лучше 32. Нет 32? Ну и ладно, берем 16

Пачка весов: ema или non-ema?
Для миксов - non-ema, для тренированных нужно протестировать какая лучше.

Комплектная VAE: no vae или baked?
no vae - будет дефолтная, baked - та, которую автор зашил в модель. Если вы все равно выбираете какую-то другую, то без разницы.

Для нестандартных моделей, например модели sd 2.0 нужен файл настроек с расширением yaml, который должен называться также как и файл модели и лежать рядом с моделью.

По умолчанию, автоматик считает все в fp16 и использует no-ema веса

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

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

Показать полностью 7 2

Продолжаем играться с нейронками

Пайплайн такой же как и в прошлом видео:

обработка сделана с помощью runway Gen-1 (stable diffusion), которая может стилизовать видео по текстовому описанию. Также автор использовал reface, чтобы анимацию лица при разговоре не косило.

Озвучка сгенерирована в elevenlabs

Канал автора на ютуб

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

Показать полностью

Обработка нейронками продолжает развиваться

Видео обработано с помощью runway Gen-1 (stable diffusion), которая может стилизовать видео по текстовому описанию.
Озвучка сгенерирована в elevenlabs.

Оригинальный пост в твиттере

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

Показать полностью

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

Все что нужно знать про модели stable diffusion. Часть 1 Нейронные сети, Stable Diffusion, Гайд, Мат, Длиннопост

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

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

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

Сама собой модель не появиться, поэтому мы должны ее сделать и натренировать. Для тренировки нам нужен так называемый "датасет" - набор данных на которых нейросеть будет учиться и куча видеокарт, которые это все будут обрабатывать. Потратив кучу времени и денег, на выходе мы получим нашу модель. Именно таким образом и создавались основные модели 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 (перерисовка части картинки или дорисовка вне ее). Вот как выглядит линейка первой версии

Все что нужно знать про модели stable diffusion. Часть 1 Нейронные сети, Stable Diffusion, Гайд, Мат, Длиннопост

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

Ссылки на версии 1.1-1.3 больше для целостности списка, а 1.4, 1.5 и 1.5-inpainting можете добавить в закладки
v1.1: https://huggingface.co/CompVis/stable-diffusion-v-1-1-original
v1.2: https://huggingface.co/CompVis/stable-diffusion-v-1-2-original
v1.3: https://huggingface.co/CompVis/stable-diffusion-v-1-3-original
v1.4: https://huggingface.co/CompVis/stable-diffusion-v-1-4-original
v1.5: https://huggingface.co/runwayml/stable-diffusion-v1-5
v1.5-inpainting: https://huggingface.co/runwayml/stable-diffusion-inpainting

2.x

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

Все что нужно знать про модели stable diffusion. Часть 1 Нейронные сети, Stable Diffusion, Гайд, Мат, Длиннопост

2-base: https://huggingface.co/stabilityai/stable-diffusion-2-base
2-inpainting: https://huggingface.co/stabilityai/stable-diffusion-2-inpainting
2-depth: https://huggingface.co/stabilityai/stable-diffusion-2-depth
4x-upscaler: https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler
2 (768): https://huggingface.co/stabilityai/stable-diffusion-2
2.1-base: https://huggingface.co/stabilityai/stable-diffusion-2-1-base
2.1: https://huggingface.co/stabilityai/stable-diffusion-2-1

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

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

Все что нужно знать про модели stable diffusion. Часть 1 Нейронные сети, Stable Diffusion, Гайд, Мат, Длиннопост

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

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

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

Все что нужно знать про модели stable diffusion. Часть 1 Нейронные сети, Stable Diffusion, Гайд, Мат, Длиннопост

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

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

Миксы

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

Все что нужно знать про модели stable diffusion. Часть 1 Нейронные сети, Stable Diffusion, Гайд, Мат, Длиннопост

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

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

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

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

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

  • civitai
    Дружелюбный интерфейс, много различных моделей, в том числе и nsfw. Помимо моделей там лежит еще куча всего: лоры, ембеддинги, позы для controlnet, гайды всякие.

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

Все что нужно знать про модели stable diffusion. Часть 1 Нейронные сети, Stable Diffusion, Гайд, Мат, Длиннопост

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

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

Модели можно создать двумя способами:

  • тренировка (берем картинки, видеокарты и вперед)

  • микс (смешивание нескольких готовых моделей)

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

  • версия 1.x - все хорошо, парни красавцы, берем 1.4 или 1.5

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

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

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

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

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

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

Показать полностью 7
Отличная работа, все прочитано!