Тренируем модели через DreamBooth на конкретные образы. / NovelAI :: Stable diffusion :: нейромазня :: длиннопост :: DreamBooth :: нейросети

нейросети нейромазня Stable diffusion NovelAI DreamBooth длиннопост 

Тренируем модели через DreamBooth на конкретные образы.

Здравствуйте мои любители нейронного колдунства и прочих искуственно интелектуальных утех. Сегодня мы научимся тренировать уже готовые модели на образы которые мы хотим. Локально на нашем ПК без всяких Google Colab и Runpod.

Если я где то накосячил, поправьте в коментариях.

ДИСКЛЕЙМЕР! БУДЕТ ОЧЕНЬ МНОГО ТЕКСТА. Этот способ тренировки через DreamBooth подразумевает, что у вас в гробу установлена карточка (Nvidia скорее всего только поддерживается) с минимум 8-10 ГБ видеопамяти. Тренировка сетки уже куда более ресурсожрущий процесс, чем просто генерация картиночек. Ранее DreamBooth требовал минимум 24ГБ памяти. Так что пока я нашёл нужные материалы, проверил их и понял, как с этим работать, прошла не одна неделя... Стояла бы у меня 3090, то этот гайд вышел бы ещё в середине октября. но если всё же хочется побаловаться, то можно воспользоваться облачными google colab и runpod. Но я так же затрону гиперсети (Hypernetworks), результаты с ними куда менее презентабельные чем через dreambooth, но можно запустить на карточках попроще. Если вы всё же железо-бетонно готовы следовать дальше, прошу.

И так, продолжим. DreamBooth модель можно натренировать на свою рожу, свою собаку, любимую табуретку, или какого нибудь персонажа.

В данном посте я буду работать на модели NAI (NovelAI я буду сокращать в дальнейшем) ибо буду тренить на нашу Реактор-тян. Если хотите сделать своё лицо или, что то из нашего бренного мира то подойдёт обычная модель Stable Diffusion 1.4

В конце будет небольшой Q&A и заметки, дабы всю (почти) воду и рассуждения отградить от основной информации.

Я разобью гайд на несколько частей. Тренировка DreamBooth и тренировка Embeddings с Hypernetworks.

DreamBooth:

Знаю, что уже появился спобоб тренить DB (DreamBooth я буду сокращать в дальнейшем) через webui stable diffusion от AUTOMATIC1111 в виде загружаемого плагина, но чёрт, вы хоть видели сколько там настроек? Я устану вам объяснять каждую и вы умрёте от духоты, поэтому я выбрал более дружелюбное, отдельно загружаемое приложение - DreamBooth-gui - https://github.com/smy20011/dreambooth-gui скачиваем и устанавливаем его по инструкции приложеной на Гитхабе, не буду тут расписывать ибо и так много текста.

Запускаем приложение и видим первое, что нас просят сделать, а именно загрузить набор изображений на который мы хотим натренировать модель. Делаем их в разрешении 512x512, где надо фотожопим лишнее.

0 dreambooth-gui
□
X
Pick Image Config Trainer Train,нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

Как только залили изображения, я сделал 8шт, переходим на следующую вкладку Confin Trainer, здесь мы зададим нужные параметры и настройки. Рассуждения о зависимости некоторых параметров от других, пока где-то на уровне теории заговоров, но основные зависимости я объясню дальше.

И так, для начала выбираем модель. По умолчанию нам предложит CompVis SD v1.4, который оно подкачает с hugging face. Но сегодня я работаю с NAI поэтому указываю путь до папки с моделью. Сейчас я на версии программы v0.1.8. и она требует, что бы модель была конвертирована из .ckpt в diffusers. Вот ссылка на мою конвернутую модель NAI - https://drive.google.com/file/d/1BnZyUb9C5wjz7Lcp1Dn8JidZLQ4taQEy/view?usp=share_link

Далее указываем Instance prompt, это должно быть уникальное слово которого не должна знать модель, то есть никаких boy, girl, и имён персонажей которых может знать модель. В дальшейшем это название мы будем указывать среди промптов, что бы модель на это тригеррилась и генерила уже с учётом натренированности этого концепта.

Class prompt указываем ёмко, кратно, что мы тренируем. У нас один женский персонаж и раз уж модель NAI тренилась на датасете danbooru, то я и укажу женский тег от туда, а именно 1girl.

Training Steps я выставлю 1000, а Learning Rate 5e-6, но это крайне запутанные настройки, о них я побольше размусолю ниже в разделе с водой и по ходу текста.

Аргументы не трогаю.

0 dreambooth-gui
□
X
Pick Image Config Trainer Train Run dreambooth on NVIDIA GeForce RTX 3080, 8.65gb free
Model
C:\Users\egorv\dreambooth-gui\models\NAI
Choose Local Model
Name of the base model, (eg, CompVis/stable-diffusion-v1-4)
Instance prompt joyreactorchan
Name of the instance,

Отлично, переходим к разделу тренировки, здесь нас попросит вставить наш Hugging Face Token. По идеи это нужно только если мы качаем модель SDv1.4 или прочую с Hugging Face, а у нас она локально на пк уже стоит, но всё равно просит, поэтому регаемся там и идём в настройках раздел с токенами https://huggingface.co/settings/tokens и создаём токен на WRITE и вставляем его в наше поле. Прописываем папку куда будут выгружаться все файлы после и проверяем, что бы стояла галочка, что бы модель генерилась потом в .ckpt файл в нашей папке вывода.

0 dreambooth-gui
□
X
Pick Image Config Trainer Train Hugging Face Token
Output Dir
C:\Users\egorv\dreambooth-gui\outputs\joyreactor
Select
B Generate model checkpoint (.ckpt file) in the output directory
Training Command
docker run -t —gpus=all

Иии жмём старт! И так теперь запасаемся терпением, можете заварить чай, помыться, выйти на улицу, потрогать траву, сходить в магазин и т.д, ибо процесс первого запуска НЕВЕРОЯТНО ДОЛГИЙ. Серьёзно, я сам в первый раз думал, что у меня, что то зависло. Минут 30 только оно подгружало нужные файлы, и убедитесь, что у вас на диске есть ещё место, ибо пару десятков ГБ на нём, этот процесс забьёт. Если увидите, что ошибок не вылезно, в папке \AppData\Roaming\smy20011.dreambooth были сгенерены картинки референсы по классовому промпту и вы не словили ошибку о нехватке видеопамяти (будет у многих вангую) то поздравляю, у вас пойдёт тренировка, и вы увидите, как у вас будут лететь надписи Steps ****% |▋▋▋▇| ***/1000 [**:** < 00:00, *.**s/it, loss=0.***,lr=5e-6]

На тренировку модели в 1000 шагов моей RTX 3080 потребовалось почти пол часа. Чтож, когда увидим сообщение о том, что всё готово, заходим в папку вывода, и переименовываем как хотим и переносим .ckpt файл в папку с моделями нашего stable diffusion.

Training Command
Finished!
"jii\datasets\joyreac
:tor:/instance •
S
s s s
Steps: 100%' Steps: 100%|| Steps: 100%|| Steps: 100%|| Steps: 100%||
Training finished, check
C:\Users\egorv\dreambooth-gui\outputs\joyreactor for model output.
OK
/it, loss=0.257, lr=5e-6] /it, loss=0.257,

Запустите SD, загрузите модель. Проверьте результаты, всё ли выглядит так, как должно, у меня получилось... приемлимо...

joyreactorchan, 1girl, orange hair, medium hair, antenna hair, blue eyes, freckles, foxy ears, white bardot top, orange overalls, orange collar with bell, gold hairpin, gold buckles
Negative prompt: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name, furry
Steps: 60, Sampler: Euler, CFG scale: 11, Seed: 3985740085, Size: 960x960, Model hash: e02601f3, Model: joyreactor, Denoising strength: 0.7, Clip skip: 2, First pass size: 0x0

Модель DreamBooth

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

Чистая NAI

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

Ну вроде неплохо. Но можно лучше.

У меня выходили и более презентабельные модели, чего стоит модель с моей рожей, что генерит меня с шансом 50%, а в остальных случаях Иисуса либо Джареда Лето либо двухголовую ебаку...

Вот пример с DB, а вот чистая NAI. Ну думаю, я бы мог вопроизвести похожий результат и без DB, но потребовалось бы куда больше промптов и попыток. Тем не менее, DB приближает качество и иполнение результатов, к тем, на какие мы тренировали, поэтому если тренируете на лицо, то оно даст намного чёткие и предсказуемые результаты, чем просто по запросу "лохматый бородатый мужик"

Если хотим закрепить результат и возможно улучшить, то рекомендую потренить и Textual Inversion - https://huggingface.co/docs/diffusers/training/text_inversion Это крошечная часть нейросети обученая на наборе картинок. требует поменьше ресурсов для тренировки, чем DreamBooth. С её помощью удобно воспроизодить стили и какие то объекты. Я потреню на том же датасете картинок, что и DB.

Тренировка Embeddings (Textual Inversion)

Идём в раздел SD webui который называется Train, и в первом подразделе Create embedding начинаем заполнять пункты.

Name - просто имя файла и в дальшейшем мы будем писать это название среди промптов, что бы задействовать нужный embedding. Поэтому я использую название, то же, что и у инстанс промпта в DB, что бы тригеррить их обоих разом.

В Initilization text вписываем описание персонажа, я описал его более подробно, ибо на реактор-тян оно почему то ловит затуп и генерит совсем шлак потом. А так обычно то же, что и class prompt в DB. Число векторов на токен я выставил 8, хотя чем больше это число, то тем больше примеров картинок лучше подготовить, но остановлюсь на этом.

Stable Diffusion checkpoint JoyReactor.ckpt [e02601f3]
txt2img img2img Extras PNG Info Checkpoint Merger Train Create aesthetic embedding Settings Extensions See wiki for detailed explanation.
Create embedding Create hypernetwork Preprocess images Train,нейросети,нейромазня,Stable

Теперь идём в Preprocess images, вводим путь до папки с изображениями и туда, куда их выгрузит. Ставим галочку на Use deepbooru for caption, не уверен, будет ли у вас эта функция, если нету или не работает, поставьте в аргументах запуска SD аргумент "--deepdanbooru", и тогда точно всё будет ок. Эта функция создаст текстовое описание для каждого изображения в формате тегов с danbooru, так сетка лучше обучится. Если трените не на NAI моделе, а что то реалистичное, то советую использовать, Use BLIP for caption, создаст промпты как если бы их писали для работы с обычной моделью SD 1.4... Так же уделите время и вручную проверьте КАЖДЫЙ созданый текстовый документ, и сверьте его с картинкой, постарайтесь удалить ненужные промпты или добавить, то что считаете нужно, не всегда оно создаёт описание корректно. Да это муторно, но стоит без этого может натренить сетку не на то, что мы желаем.

See wiki for detailed explanation.
Create embedding Create hypernetwork Preprocess images Train
C:\Users\egorv\stable-diffusion-webui\training\joyreactor
Preprocess,нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

OOOOO-O-Byyfgs.p 00000-0- Byyfgs.t
00001-0-Screens	00001-0-Screens	00002-0-Screens
hot_1.png	hot_1.txt	hot_2.png
00002-0-Screens hot_2.txt
00003-0-Screens hot_3.png
00003-0-Screens hot_3.txt
00004-0-Screens	00004-0-Screens 00005-0-sdfdf.pn	00005-0-sdfdf.txt	00006-0-sdfsh3v 00006-0-sdfsh3v

И последний подпункт Train. Тут внимательно, можно ошибиться с пунктами и кнопками. Я помечу на скрине те пункты, которые мы трогаем, остальные игнорьте.

В embeddings выбираем наш созданый, в dataset directory указываем путь, куда мы выгружали изображения уже с описаниями, в prompt template file указываем путь до файла шаблона по которым оно будет трениться, я создал свой файлик, в котором внутри написано только [filewords] , прямо с квадратными скобками, это будет задействовать описания изображений которые мы создали раньше.

Save an image to log и save a cope of embedding, это параметры отвечающие за тестовое создание изображения на данном этапе тренировки и сохранинии текущего результата на момент шагов. Я генерирую изображение каждые 500 шагов и сохраняю прогресс каждые 1000, да бы проверить не произошла ли перетренировка модели, да бывыет и такое, её можно перетренировать, об этом после гайда...

И надеюсь вы не подумали, что я пропустил пункт с Embedding Learning Rate и Max Steps, то нет. Вот тут та же шляпа, что и раньше, и надо подбирать соотношения. В этот раз будем создавать поэтапно.

Для начала мы проведём тренировку на 200 шагов и Learning Rate 0.02, после увеличим число шагов до 1000 и уменьшим LR до 0.01, потом 2000 шагов и LR 0,005, 3000 и 0.002, 4000 - 0.0005 и в конце выставим 20000 шагов и скорость обучения на 0.00005. Чё страшно, запутались? Кароче, шляпа в том, что бы сетка не переобучилась, так мы её постепенно полируем, подробнее об этом после гайда в разделе с разными мыслями.

Stable Diffusion checkpoint JoyReactor.ckpt [e02601f3]
txt2img img2img Extras PNG Info Checkpoint Merger Train Create aesthetic embedding Settings Extensions See wiki for detailed explanation.
r	\
Create embedding Create hypernetwork Preprocess images Train
Train an embedding or Hypernetwork;

Вот выставили 200 шагов и 0.02 скорость, она прогонит по этим параметрам и закончит, не закрываем ничего, меняем параметры на следующие по списку, 1000 шагов и скорость 0.01 и опять жмём Train Embedding и опять идёт тренировка уже дальше с новыми данными. И т.д до конца. 20000 шагов золотая середина как по мне. У меня на это уходит около полутора часа, побольше, чем на тренировку DreamBooth, результат не будет сверх разиться, но будет чуть более в нужном нам направлении.

Loss: 0.0780509 Step: 15526
Last prompt: lgirl, orange hair, medium hair, antenna hair, blue eyes, freckles, foxy ears, white bardot top, orange overalls, orange collar with bell, gold hairpin, gold buckles, smoking, :d Last saved embedding:

Training finished at 200 steps.
Embedding saved to C:\Users\egorv\stable-diffusion-webui\embeddings\joyreactorchan.pt,нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

[Epoch 24: 800/800]loss : 0.096Б130: 100%
16000/16000 [1:18:42<00:00,	3.39it/s],нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

Вот примеры, того что по итогу вышло.

masterpiece, best quality, joyreactorchan, 1girl, orange hair, medium hair, antenna hair, blue eyes, freckles, foxy ears, white bardot top, orange overalls, orange collar with bell, gold hairpin, gold buckles, solo, standing, upper body
Negative prompt: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name, furry, portrait
Steps: 60, Sampler: Euler, CFG scale: 11, Seed: 370310831, Size: 768x768, Model hash: e02601f3, Model: joyreactor, Denoising strength: 0.7, Clip skip: 2, First pass size: 0x0

DreamBooth + Embedding

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

DreamBooth без Embeding

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

И без DreamBooth и без Embedding на чистом NAI

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

Ну Embedding иногда подтягивает, некоторые результаты, иногда может быть лишним. Довольно ситуативная и спорная вещь, но вот на DreamBooth сразу узнаётся Реактор-тян, нежели на обычной NAI с теми же хорошо подобранными промптами.

И да, знаю, что вероятно будут просить уже готовую модель, так что держите ссылки на модель на Реактор-тян и готовый Embedding:

https://drive.google.com/file/d/1s2z1grZvNdVxkw5uHJQIWKecgeV39tWp/view?usp=sharing

https://drive.google.com/file/d/1pft2NvHGi5xaJ61LctRc2Lf4aixHke0Z/view?usp=sharing

Лучше пусть кто то забэкапит, а то мало ли я буду облако чистить.

Hypernetworks

Если не получилось натренить DreamBooth, то попробуйте гиперсети. Тоже прикольные результаты можно получить, если постараться.

Тренить гиперсеть на реактор-тян я не буду, поэтому опишу как делал ранее с другими вещами. Если желаете ознакомиться с материалом, по которому я и сам тренировался, прошу - https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/2670

Процесс тренировки схож с тренировкой embeddings.

Так же в заходим в раздел Train, и уже в подпункт Create Hypernetwork. Имя гиперсети пишем какое хотим, без разницы, модули 768 320 640 1280 оставляем как есть.

Теперь тут свои завертоны пойдут, просят ввести структуру слоёв гиперсети:

Для широких гиперсетей: 1, 3 ,1 или 1, 4 ,1

Для глубоких гиперсетей: 1, 1.5, 1.5, 1 или 1, 1.5, 1.5, 1.5, 1 или 1, 2, 2, 1

Широкие: подходят для запоминания новых вещей, таких как конкретное животное, человек или объект.

Глубокие: подходят для обобщения вещей, таких как стили.

Поэтому исходите из этого, для реактор-тян я бы выбрал 1, 3, 1

Следующий пункт, select activation function of hypernetwork:

Для аниме (NAI, Waifu и т. д.): Selu, Gelu, mish

Для фотографий: Relu, swish, mish,leakyrelu, rrelu

Теперь Select Layer weights initialization. Для аниме ставим xaviernormal. Если фото и т.д то по умолчанию normal.

Остальные галочки ниже необязательны.

txt2img img2img Extras PNG Info Checkpoint Merger See wiki for detailed explanation.
Train
Create aesthetic embedding Settings Extensions
Create embedding Create hypernetwork Preprocess images Train Name
Modules
✓ 768	✓ 320	✓ 640	✓ 1280
Enter hypernetwork layer structure
1,2,1
Select

Потом так же подготавливаем изображения как и с embeddings, это я не буду повторять и переходим сразу в Train.

Выбираем так же как и при тренировке embedding путь до шаблона, папку с датасетом из наших картинок с текстом, сохранение результатов и картинок.

Теперь выбираем нужную гиперсеть в выпадающем списке Hypernetworks. Изменять будем раздел Hypernetwork Learning rate, а не Embedding Learning rate, как раньше и жать будем на Train Hypernetwork, а не Train Embedding.

Create embedding Create hypernetwork Preprocess images Train
Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images [wiki]
Batch size 1
Dataset directory
Path to directory with input images Log directory textualjnversion Prompt template file

Вот примеры хороших соотношений последовательностей Steps к LR:

Для обычных людей - 0.00005:100, 0.000005:1500, 0.0000005:10000, 0.00000005:20000

А вот для извращенцев - 0.00005:100, 0.000005:1500, 0.0000005:2000, 0.00005:2100, 0.0000005:3000, 0.00005:3100, 0.0000005:4000, 0.00005:4100, 0.0000005:5000, 0.00005:5100, 0.0000005:6000, 0.00005:6100, 0.0000005:7000, 0.00005:7100, 0.0000005:8000, 0.00005:8100, 0.0000005:9000, 0.00005:9100, 0.0000005:10000, 0.000005:10100, 0.00000005:11000, 0.000005:11100, 0.00000005:12000, 0.000005:12100, 0.00000005:13000, 0.000005:13100, 0.00000005:14000, 0.000005:14100, 0.00000005:15000, 0.000005:15100, 0.00000005:16000, 0.000005:16100, 0.00000005:17000, 0.000005:17100, 0.00000005:18000, 0.000005:18100, 0.00000005:19000, 0.000005:19100, 0.00000005:20000. Этот вариант выглядит монструозно, но я его тестировал лично, и довольно хорошо работает при условии, что вы подобрали хорошие примеры изображений и текстовые описания к ним.

И так же поэтапно треним как и embedding... ВСЁ!

ВОДА и Q&A!!!

Ахренеть, как буд-то по новой пишу дипломную, но только с надеждой в том, что кому то это поможет и он воспользуется этим материалом, либо же просто покекает с того, что я потратил на это несколько недель, начиная от поиска нормального способа запуска DreamBooth и заканчивая десятком часов на попытки разобраться в особенностях и нюансах, ну и этот текст я пишу уже где то часов 6 нонстоп, набралось уже 2 c половиной тысячи слов! серьёзно, надо хоть воды налить себе, ха отличная шутка.

1)Q: Почему так сложно?

A: А кому легко?

2)Q: Можно ли было уместить это в 5 абзацев на 500 слов в общем?

A: Не знаю, пишу как умею, кто умер от духоты и захлебнулся в воде, простите)

3)Q: У меня видеокарта ******, у меня заработает?

A: Не знаю. Скорее всего на AMD, вообще никак. Если у вас есть в карте тонна видеопамяти, то должно. Либо попробуйте запустить, через Google Colab, Runpod и прочие облака с арендой видеокарт и работы с их мощностями. Я НЕ БУДУ ПИСАТЬ ГАЙД ПО КОЛАБУ, НЕЕЕЕТ!

4)Q: Не надоело ли писать вопросы и ответы?

A: Да, чёт устал, задавайте в комментариях, отвечу как смогу.

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

Подойдите к этапу подбора изображений для тренировки максимально отвественно и серьёзно, ибо от того какие изображения вы скормите, во многом будет зависить результат. Так же качество > колличество, будет хорошо если вы задействуете 10 годных примеров, нежели 30 посредственных. Я стараюсь выдерживать единый стиль изображений, если одна картинка будет от карандаша, другая 3D CGI, а третья в стиле Пикассо, то выйдет так себе и выйдет мешанина из этого всего. Если тренирую персонажа, то стараюсь делать акцент на лице, тело можно будет и промптами задать, но вот получить нужное лицо сложно, ну за этим и нужен DB.

Во многом из за конвертации .ckpt в diffusers я неделю ломал голову, ибо обычным скриптом предназначеным для этого у меня не выходило, но как видите удалось, а именно при помощи гуглколаба от TheLastBen. Необходимо было залить модель в колаб, прогнать через его скрипт, и выгрузить результат себе на гугл диск. В скорой версии Dreambooth gui v.0.1.9. появится возможность использовать .ckpt и программа сама будет его конвертировать. 

Вот теперь мы пришли к одной из самых важных вещей, во круг которых строятся различные догадки и теории заговоров... А именно зависимость количества шагов тренировки (Training Steps) и скорости обучения (Learning Rate или LR).

Число шагов обучения ~= кол.во изображений * 100, у меня 8 изображений, поэтому оптимально было бы 800, но я округлил до 1000, потому что хочу. По скорости обучения ещё сложнее, но держим в голове несколько вещей, больше steps = меньше LR, и наоборот. Так же главное не перетренировать модель. Представьте этот процесс как работа по дереву. У вас есть бревно и вы хотите обтесать из него фигуру. Поставите слишком высокий LD и срежете слишком много кусков и модель будет перетренирована и бракована. А поставите если поставите слишком низкий LR, то представьте, как мелким скальпелем обтёсываете огромное бревно дуба до размера фигурки.

Пока тестил эту байду, знакомый кидал идеи на чё попробовать тренить, приложу ещё примеры DB и embedding под персонажа Макимы из Человека Бензопилы (Аниме), но её я уже делал на немного допилиной модели - Anything-V3.0, про неё уже сделали пост - https://joyreactor.cc/post/5385144

masterpiece, best quality, makimacmdb, makima \(chainsaw man\), 1girl, medium hair, pink hair, sidelocks, bangs, braid, braided ponytail, eyebrows visible through hair, orange eyes, ringed eyes, breasts, medium breasts, shirt, collared shirt, shirt tucked in, black pants, suit, business suit, formal jacket, long sleeves, necktie, black necktie, light smile, expressionless, looking at viewer, solo, gradient background, cinematic, filmic, telephoto, depth of field, lens distortion, lens flare, white balance, strobe light, volumetric lighting, dramatic lighting, little haze, ray tracing reflections, detailed, intricate, elegant, realistic
Negative prompt: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name, ((extra fingers)), ((poorly drawn hands)), ((poorly drawn face)), (((mutation))), (((deformed))), ((bad anatomy)), (((bad proportions))), ((extra limbs)), glitchy, ((extra hands)), ((mangled fingers)), dark skin, hair ornament , troubled eyebrows, big breast, yumemi riamu
Steps: 60, Sampler: Euler, CFG scale: 11, Seed: 1316407258, Size: 896x896, Model hash: e02601f3, Model: makimaANY, Denoising strength: 0.7, Clip skip: 2, First pass size: 0x0

DreamBooth + Embedding

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

DreamBooth и без Embedding

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

Без DreamBooth и без Embedding

нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост

Как и писал выше, иногда Embedding лишний, некоторые результаты, лучше без него, некоторые с ним. Сутуативная хреновона, но лучше будет, чем нет.

КОНЕЦ.


Подробнее
0 dreambooth-gui □ X Pick Image Config Trainer Train
0 dreambooth-gui □ X Pick Image Config Trainer Train Run dreambooth on NVIDIA GeForce RTX 3080, 8.65gb free Model C:\Users\egorv\dreambooth-gui\models\NAI Choose Local Model Name of the base model, (eg, CompVis/stable-diffusion-v1-4) Instance prompt joyreactorchan Name of the instance, use a rare word if possible. (Eg, sks) Class prompt 1 girl If you want training with prior-preservation loss, set the class prompt. (Eg, a person) Training Steps 1000 Learning Rate 5e-6 Training arguments Add your custom arguments here. --mixed_precision=fp16 --train_batch_size=1 --gradient_accumulation_steps=1 --gradient_checkpointing --use_8bit_adam
0 dreambooth-gui □ X Pick Image Config Trainer Train Hugging Face Token Output Dir C:\Users\egorv\dreambooth-gui\outputs\joyreactor Select B Generate model checkpoint (.ckpt file) in the output directory Training Command docker run -t —gpus=all -v=C:\Users\egorv\dreambooth-gui\datasets\joyreactor:/instance - Start
Training Command Finished! "jii\datasets\joyreac :tor:/instance • S s s s Steps: 100%' Steps: 100%|| Steps: 100%|| Steps: 100%|| Steps: 100%|| Training finished, check C:\Users\egorv\dreambooth-gui\outputs\joyreactor for model output. OK /it, loss=0.257, lr=5e-6] /it, loss=0.257, lr=5e-6] s/it, loss=0.257f lr=5e-6] s/it, loss=0.257f lr=5e-6] 997/1000 [27:38<00:03, 1.31 s/it loss=0.257f lr=5e-6] || 998/1000 [27:39<00:02, 1.31 s/it, loss=0.257, lr=5e-6] || 999/1000 [27:40<00:01, 1.32s/it, loss=0.257, lr=5e-6] || 1000/1000 [27:42<00:00, 1.33s/it, loss=0.257, lr=5e-6] || 1000/1000 [28:07<00:00, 1.69s/it, loss=0.257, lr=5e-6]


Stable Diffusion checkpoint JoyReactor.ckpt [e02601f3] txt2img img2img Extras PNG Info Checkpoint Merger Train Create aesthetic embedding Settings Extensions See wiki for detailed explanation. Create embedding Create hypernetwork Preprocess images Train
See wiki for detailed explanation. Create embedding Create hypernetwork Preprocess images Train C:\Users\egorv\stable-diffusion-webui\training\joyreactor Preprocess
OOOOO-O-Byyfgs.p 00000-0- Byyfgs.t 00001-0-Screens 00001-0-Screens 00002-0-Screens hot_1.png hot_1.txt hot_2.png 00002-0-Screens hot_2.txt 00003-0-Screens hot_3.png 00003-0-Screens hot_3.txt 00004-0-Screens 00004-0-Screens 00005-0-sdfdf.pn 00005-0-sdfdf.txt 00006-0-sdfsh3v 00006-0-sdfsh3v 00007-0-sdhgfd. 00007-0-sdhgfd.t hot_4.png hot_4.txt g d.png d.txt png xt
Stable Diffusion checkpoint JoyReactor.ckpt [e02601f3] txt2img img2img Extras PNG Info Checkpoint Merger Train Create aesthetic embedding Settings Extensions See wiki for detailed explanation. r \ Create embedding Create hypernetwork Preprocess images Train Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images [wiki] Embedding joyreactorchan Hypernetwork Embedding Learning rate Hypernetwork Learning rate 0.00001 Batch size Dataset directory C:\Users\egorv\stable-diffusion-webui\training\joyreactor Log directory textualjnversion Prompt template file C:\Users\egorv\stable-diffusion-webui\textual_inversion_templates\danbooru.txt Height Max steps Save an image to log directory every N steps, 0 to disable Save a copy of embedding to log directory every N steps, 0 to disable ✓ Save images with embedding in PNG chunks Read parameters (prompt, etc...) from txt2img tab when making previews Train Hypemetwork Train Embedding
Loss: 0.0780509 Step: 15526 Last prompt: lgirl, orange hair, medium hair, antenna hair, blue eyes, freckles, foxy ears, white bardot top, orange overalls, orange collar with bell, gold hairpin, gold buckles, smoking, :d Last saved embedding: textualjnversion\2022-ll-ll\joyreactorchan\embeddings\joyreactorchan-15000.pt Last saved image: textual_inversion\2022-ll-ll\joyreactorchan\images\joyreactorchan-15500.png, prompt: lgirl, orange hair, medium hair, antenna hair, blue eyes, freckles, foxy ears, white bardot top, orange overalls, orange collar with bell, gold hairpin, gold buckles, choker, depth of field, hair ornament, hairclip, puffy short sleeves, puffy sleeves, smile, solo, sweat
Training finished at 200 steps. Embedding saved to C:\Users\egorv\stable-diffusion-webui\embeddings\joyreactorchan.pt
[Epoch 24: 800/800]loss : 0.096Б130: 100% 16000/16000 [1:18:42<00:00, 3.39it/s]



txt2img img2img Extras PNG Info Checkpoint Merger See wiki for detailed explanation. Train Create aesthetic embedding Settings Extensions Create embedding Create hypernetwork Preprocess images Train Name Modules ✓ 768 ✓ 320 ✓ 640 ✓ 1280 Enter hypernetwork layer structure 1,2,1 Select activation function of hypernetwork. Recommended : Swish / Linear(none) linear Select Layer weights initialization. Recommended: Kaiming for relu-like, Xavier for sigmoid-like, Normal otherwise Normal Add layer normalization Use dropout Overwrite Old Hypernetwork Create hypemetwork
Create embedding Create hypernetwork Preprocess images Train Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images [wiki] Batch size 1 Dataset directory Path to directory with input images Log directory textualjnversion Prompt template file C:\Users\egorv\stable-diffusion-webui\textual_inversion_templates\style_filewords.txt Width 512 Height 512 Max steps 100000 Save an image to log directory every N steps, 0 to disable 500 Save a copy of embedding to log directory every N steps, 0 to disable 500 y Save images with embedding in PNG chunks Read parameters (prompt, etc...) from txt2img tab when making previews Interrupt Train Hypemetwork Train Embedding



нейросети,нейромазня,Stable diffusion,NovelAI,DreamBooth,длиннопост
Еще на тему
Развернуть
Вообще нейосети можно заставить генерить мобов или НПС для больших миров. Можно даже и на лету.
Можно и лазерный пистолет сделать на питании от АЭС, но зачем? нпс сейчас довольно простые, что бы прям было выгодно использовать нейронки нпс должны дорасти хотя бы до какого-то подобия интеллекта вместо простых if-else + рандом
Около-разумных нпс конечно пытаются делать, но обычно это единичные случаи вокруг которых обычно строится вся игра, вроде The Last Guardian
Чтобы не высасывать из пальца квесты для не главных локаций, а сразу генерировать бэк, лор и рожи.
Рандом все таки рандом, его видно.
Предлагаю сразу генерировать всю игру
И игрока
Это не на столько комплексные системы что бы под них отдельно делать нейросеть, это как из пушки по воробьям
Ну да, несколько гигабайт шейдеров металлов и полупрозрачных говн это норм, а нейросеть с датасетом для генерации бесконечного квеста - это оверкилл.
Если ты имеешь в виду карты рафнеса, металлика, нормалок и тд, то тут по другому никак. А без нейронки вполне можно и обойтись
Где то смотрел ролик про интеллект НПС и вроде про скайрим говорили, что сначала хотели сделать с нейросетями и рандомом, но при любых настройках стража убивала ключевого персонажа и в итоге всё это вырезали нахер ибо работать с этим невозможно
Это в Обле хотели.
Уже что-то подобное есть.
сложна
кто ж знал что технологическая сингулярность произойдет в 2023 году
Пока не актуально, но интересно. Пожалуй схороню
Спасибо! Схоронил на будущее. Когда наберусь отваги и ума опробовать. Или напьюсь и попробую всем чертям назло под смягчающим бафом алкогольного пофигизьму. Иначе не разберусь.
Знал бы ты где оригинал статьи находится.
На шести гигах видео даже пытаться не стоит да? :с
На шести гигах можно спокойно генерить арты с разрешением примерно 832х832, может и больше (но смысла не особо, годноту можно потом апскейльнуть).
та не, генерирую я спокойно(640*960), интересовало именно обучение.
Врятли получится, но тем не менее предложу альтернативный вариант тренировки. Он более долгий (намного), но сможет сработать.
Установить Dreambooth расширение для Stable Diffusion webui AUTOMATIC1111, там можно тренить через процессор. Это будет сверх медленно, но возможно получится хоть как то.
https://github.com/d8ahazard/sd_dreambooth_extension/
Гайд по этому расширению -
Ага, спасибо, попробую.
и хочется разобраться, и лень.. к тому же 100 гиг прочих натренированных ии файлов лежит. нужно просмотреть все...
сохраню, на всяк случай
Благодарствую. Значится, вопрос, есть один автор, чей стиль рисовки мне дико вкатывает. На борту пока 1060 6Gb, через что лучше попытаться воссоздать его стиль? Через гипернетворк? Или эмбед? Через что будет оптимальней, ведь силы карточки очень ограничены.
Попробуй сначала через hypernetwork. Просто тестово запустить процесс работы, проверить осилит ли видеокарта. Если осилит, то рекомендую повникать в обсуждаения людей тут, да бы лучше разобраться в тренировке стилей через гиперсети - https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/2670
Благодарствую, так и сделаю.
30 минут оно не подгружала файлы, а генерировало картинки по запросу 1girl. Так как он указан как пример для обучения. В некоторых реализациях эти картинки можно самому загрузить и отобрать наиболее удачные для лучшего результата. Этот способ плохо работает если вы не можете указать запрос который генерирует что-то похожее на предмет обучения. Например я пытался обучить нарисованного персонажа в оригинальной модели и получалась фигня в большинстве случаев. Тут реализован способ без использования вспомогательных изображений. Еще и можно несколько образов в один файл обучить и они не будут "просачиваться" в другие запросы. Вот готическая киберпанк яна обученная на стикерах nradiowave.
в стиле радиоволны я бы посмотрел еще генерации, стиль ваще кайфовый.
Тут от волны персонаж, стиль by atey ghailan, by greg rutkowski, by greg tocchini, by james gilleard, by joe gb fenton, by kaethe butcher из первого поста по нейронкам запрос. Но я вроде часть художников удалил, точно не помню.
DreamBooth-gui - https://github.com/smy20011/dreambooth-gui скачиваем и устанавливаем его по инструкции приложеной на Гитхабе, не буду тут расписывать ибо и так много текста.

Ссылка не работает, есть альтернативный вариант где скачать?
В ссылке в посте просочилась лишняя запятая, поэтому не работает. А вот ссылка в твоем комменте работает. Так что смело тыкай свою ссылку
круууууууууууть
спасибо! пойду пробывать!
а в облачке кто знает хороший сервис где можно сделать все вышеописанное?
runpod, в самом начале статьи
vast.ai очень недорогой, но надо дружить с докером или хотя бы консолькой линупсов
полезная статья на реакторе, охуеть! автору всех благ.
может кто нибудь по случаю посоветует где сейчас лучше всего style transfer работает? чтобы промт не вбивать, а мазки кисти накидывать
Ничего не понял, но результат мне нравится.
Вопрос к знатокам задает безработный из Твери.

Можно ли локально обучать нейросеть на ПК с картой от ATI?
И как в целом обстоят дела с картами от красных и нейросетями?
Все не очень... Там почти все сетки для фото на нвидиа CUDA держатся
У красных есть свой аналог CUDA - Radeon Open Compute (ROCM). Для генерации картинок через SD я просто заменил дефолтные пакеты torch и torch-vision (грубо говоря это движок который запускает сетку на видеокарте) на пакеты с поддержкой ROCM и все заработало без вопросов. Т.е. не важно, на чем тренировали сетку, формат весов и поддержка необходимых инструкций для выполнения вычислений на GPU у AMD тоже есть.
большое спасибо за гайд!
попробую твоим способом.
в интернете пока очень мало нормальной информации как правильно обучать, лишь общие советы и посредственные примеры. поэтому такие мануалы на вес золота.

я уже неделю пытаюсь обучить hypernetwork на Марси из доты с переменным успехом.
наделал полтысячи скриншотов из аниме, спарсил все картинки с реактора. прогнал всё это через подготовку с BLIP промтом, а потом вручную отредактировал эти промты.
обычно персонаж похож на себя, но итоговое качество картинки страдает: то все картинки заблюренные, то ещё что-то. в общем результат сильно хуже чем у NovelAI без hypernetwork.

последняя попытка, вроде, с нормальным качеством, но пока Марси узнаю отдалённо..
прогонял сначала на 25 лучших картинках с идеальным описанием. 100к шагов и 0.0000005 learning rate.
(по хорошему надо было на пару ноликов поменьше сделать, походу. но я экспериментирую)
и во второй раз уже на 300 картинках с нормальным описанием, те же шаги и rate.
через пару часов закончит, посмотрю что получилось.
© 0 ® e Stable Diffusion - 97% ET X C @ 127.0.0.1:7860 Stable Diffusion checkpoint novelaileak.ckpt [925997e9] v txt2img img2img Extras PNG Info Checkpoint Merger Train Settings Extensions See wiki for detailed explanation. Create embedding Create hypernetwork Preprocess images Train
Скорее всего ты перетренировываешь излишне. Раз уж у тебя 300 картинок, я бы попробал ещё вот такую структуру гиперсети, 1, 2, 4, 2, 1 и тот огромный порядок steps к LR который я приводил в посте.
+ Изображения должны быть достаточно разнообразны. Если датасет будет забит на треть самоповторами и мало оригинальными изображениями, хорошо точно не выйдет. Как я и писал в конце поста по поводу подбора изображений, качество > колличество
00075-0-Marc¡ (167).png 00079-0-Marc¡ (170).txt * \ у • 9 00084-0-Marci ЛГО.ппа 00075-0-Marc¡ (167).txt * I • 00081-O-Marci (172).png 00076-0-Marci (168).png 00081-0-Marci (172).txt 00076-0-Marci (168).txt 4 f • 00082-0-Marci (173).png 00078-0-Marci (17).png 00082-0-Marci
да, там много похожих, с разным выражением лица.
но в этот раз всё таки успех)
^■bfi Л 'S ri / li-A \\ I ЫНШ Ш1л X miù tu Hi- т>Я W*—«Д ~ M I Hl ■■yV^ Vf
попробую, спасибо!
этот эксперимент 25 часов занял..
Не подскажете такой момент, при попытке генерить картинки размерами больше чем 512х512, например 832х832 выдаёт ошибку:
RuntimeError: CUDA out of memory. Tried to allocate 1.74 GiB (GPU 0; 12.00 GiB total capacity; 3.84 GiB already allocated; 6.31 GiB free; 3.86 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Мне непонятно, почему не хватает видеопамяти, если карточка на 12 Гб и видно что свободной памяти завались, но всё равно пишет ошибку.
странно, у меня нормально генерировало 1024х1024 на 8гб карте,
очень редко вылетала нехватка памяти.

в .bat файле пропиши это:
set COMMANDLINE_ARGS=--autolaunch --medvram
с "medvram" 100% будет работать.

больше инфы тут:
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Optimizations
Попробовал, так же безрезультатно.
Заметил что внизу пишет: "Time taken: 27.72sTorch active/reserved: 5294/5358 MiB, Sys VRAM: 7243/12288 MiB (58.94%)"
Если сложить 5294 и 7243, то как раз получается больше 12 Гб. Но почему так фиг знает.
Ставил ещё lowvram, с ним запустилось, но время рендера 10+ минут)

Может ещё влияет количество шагов? Я пытаюсь со 150 рендерить.
j5I Диспетчер задач — □ X Файл Параметры Вид Процессы Производительность Журнал приложений Автозагрузка Пользователи Подробности Службы О ЦП 23% 3,38 ГГц GPU NVIDIA GeForce RTX 2060 О Память 7,7/15,9 ГБ (48%) О Диск 0 (Z:) HDD 0% О Диск 1 SSD 0% О Диск 2 (D:) SSD 0% О Диск 3
и сразу совет: если рендеришь картинки больше чем 512х512, то надо ставить галочку "Highres. fix"
иначе будешь получать очень странные результаты.

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#highres-fix

з.ы: не уверен что именно больше 512х512, мб на 832 будет нормально генерить.
но для 1024 эта опция необходима.
Спасибо, попробую
Проверь, не забита ли у тебя видеопамять сторонними процессами.
Да вроде как нет, в обычном состоянии занято 0,5, при запущенной нейронке показывает 4-4,5 Гб. Во время процесса генерации может занимать до 6 Гб. А когда разрешение выше даже не пытается занять память, а почти сразу пишет ошибку :(
Объясните пожалуйста что такое DreamBooth и Embedding, и где находить обновленные 'библиотеки' по типу (NAI, Waifu и т. д.)
DreamBooth - https://dreambooth.github.io/ , https://en.wikipedia.org/wiki/DreamBooth
Textual Inversion - https://textual-inversion.github.io/ , https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Textual-Inversion
Не уверен, что удастся найти обновляемую NAI, ибо модель, что гуляет по сети, стала публичной благодаря взлому сервиса https://novelai.net/image , поэтому пока основные разработчики не обновят её и опять их не взломают, то новой версии не будет.
По поводу остальных моделей проще.
Тем не менее, качать не проверенные модели, гиперсети и embeddings из сети я не рекомендую, ибо могут содержать в себе "замаринованный" вредоносный код - https://docs.python.org/3/library/pickle.html
Вот ссылки на модели в которых я уверен.
SD v1-4 - https://huggingface.co/CompVis/stable-diffusion-v1-4
SD v1-5 - https://huggingface.co/runwayml/stable-diffusion-v1-5
waifu v1-3 - https://huggingface.co/hakurei/waifu-diffusion
waifu v1-4 - https://huggingface.co/hakurei/waifu-diffusion-v1-4
Если хочется больше риска, но больше ресурсов то можешь их найти тут - https://rentry.org/sdupdates2
Я что-то не поял, вот я допустим скачал из инета гиперсеть, в какую блин папку его надо запихнуть и что включить, чтобы заработало?
\stable-diffusion-webui\models\hypernetworks
И потом в настройках webui ищи пункт с hypernetworks и выбирай
Ля, походу я реально в шары долбился. Спасибо.
Что я скачал и почему ничего не получается?
И так, для начала выбираем модель. По умолчанию нам предложит CompVis SD v1.4, который оно подкачает с hugging face. Но сегодня я работаю с NAI поэтому указываю путь до папки с моделью. Сейчас я на версии программы vO.1.8. и она требует, что бы модель была конвертирована из .ckpt в diffusers. Вот
Ну скачал ты конвертированую из .ckpt в diffusers модель NovelAI. Её необходимо распаковать из архива куда нибудь. Если выбираешь "локальную" модель для тренировки, то указывай путь до той папки, куда ты распаковал.
dreambooth-gui\models\NA( v О Имя |l scheduler |l text_encoder |l tokenizer |l unet |l vae I modeljndex.json
Извиняюсь не весь архив разархивировала, однако всё равно не видит дрим бут файл.
Имя л 5сИес1и1ег 1ех1_епсос1ег ^кетгег ипе1 уае Тип Дата изменения 18.11.2022 14:20 18.11.2022 14:20 18.11.2022 14:20 18.11.2022 14:20 18.11.2022 14:20 Папка с файлами Папка с файлами Папка с файлами Папка с файлами Папка с файлами Размер Choose Local Model
Ну на скриншоте отсутсвует ещё model_index.json, нужно разархивировать все файлы из архива.
Вес папки должен быть (4 266 955 722 байт)
Свойства: ЫА1 X Предыдущие версии Общие Доступ Настройка Безопасность №1 Тип Расположение Размер На диске Содержит Папка с файлами С \и9ег$'едотУДгеатЬоо№-ди1\тос1е1в 3.97 ГБ (4 266 955 722 байт) 3.97 ГБ (4 266 975 232 байт) Файлов 12; папок 5 ься Вид > МА1 Имя Р 5сИес1и1ег Р
Сам он есть, его не видно при открытии через дрим бут. Ладно, что-то эта прога излишне много жрёт оперативной памяти, 16 гигов ей явно мало и она ещё и с диска выжирает гигов этак 10 файлом pagefile.sys (файл подкачки), плюс ко всему на кой-то хрен подрубает гибернизацию файлом hiberfil.sys, который тоже жрёт место на диске. Ко всему прочему видюшку не трогает, а вот проц напрягает только в путь. Скачал v1-5-pruned-emaonly ибо 1.4 не пашет, так вроде всё нормально было и обучалось, так нет ошибка с кудо ядрами толи 3050 не тащит, толи проц. А ну её нафиг, другое пребывать надо.
Размер Имя Дата изменения Тип scheduler text_encoder tokenizer unet vae 18.11.2022 14:20 18.11.2022 14:20 18.11.2022 14:20 18.11.2022 14:20 18.11.2022 14:20 Папка с файлами Папка с файлами Папка с файлами Папка с файлами Папка с файлами scheduler text encoder tokenizer unet vae
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Name > □ > > > > > > > > > > □ □ □ □ □ novelaileak github stableckpt Q animefull-final-pruned □ animefull-latest □ animefull-prevgood □ animesfw-final-pruned □ animesfw-latest □ animesfw-prevgood □ extra-sd-prune Q modules O vector_adjust Q animevae.pt □ clean.py workspace
подробнее»

нейросети Stable diffusion длиннопост NovelAI

Name > □ > > > > > > > > > > □ □ □ □ □ novelaileak github stableckpt Q animefull-final-pruned □ animefull-latest □ animefull-prevgood □ animesfw-final-pruned □ animesfw-latest □ animesfw-prevgood □ extra-sd-prune Q modules O vector_adjust Q animevae.pt □ clean.py workspace