реактор
7 лет подряд
Привет Реактор.
Не часто пишу посты, но думаю почему бы не запечатлеть это по истине "достижение" в анналах ленты. Уже как 7 лет подряд посещаю наш клуб анонимных и не очень, уважаемых пидоров. Вот был пробит очередной штамп в профиль. В общем спасибо всем авторам полезных и познавательных статей, местным авторам комиксов и художникам и конечно же уважаемым щитпостерам смешных картинок, что каждый день заряжаете меня позитивом и смехуёчками. Всем мир, берегите себя и свои жопы, нам их ещё просиживать тут!
нейросети нейромазня Stable diffusion длинопост гифки
Создание "анимации" через img2img в Stable Diffusion.
И вновь здравствуйте. Продолжая серию познавательного по нейросетям, сегодня разберём несколько способов, как снятое видео преобразить с помощью нейросетей. Думаю вы видели разные нейронные-клипы и прочее, где криповые ебаки дрыгаются и перетекают из формы в форму. Вот чё то похожее мы будет сегодня делать, но я постараюсь не уходить в крипоту, а сделать, что то вменяемое на сколько кривизна моих рук мне позволит. Ну с предисловием почти закончили.
Вот пример того, что сегодня накуролесим.
И так, что на понадобится? Для начала установленный Stable Diffusion webui от AUTOMATIC1111 (на других работаю редко) и программа EbSynth. Не помешает знание, того, как щёлкать телефоном видео, как переносить их на пк, и как разбить их на последовательность изображений и обратно в другие форматы. Окей вроде всё.
Перво-наперво потребуется снять короткое видео, можно и долгое, хоть кино снимайте, но обрабатывать будем дольше.
Любым удобным способом разбиваем видео на последовательность изображений, типо img_[####].png , я делаю это обычно через After Effects, но можно и онлайн сервисами, просто загуглите "mp4 to png sequence".
И так теперь перед нами два пути, долгий и не столь долгий.
Долгий: Можем обработать все кадры через Stable Diffusion и слепить из них обратно анимацию, но это довольно долгий процесс.
Покороче: Можем воспользоваться программой EbSynth, скормив ей несколько отредаченных ключевых кадров, по которым, она выстроит остальное изображение, основываясь, на движениях с остальных "чистых" кадров. Звучит как магия. Ну оба эти способа имеют как плюсы так и минусы.
Плюсы и минусы полностью через SD:
+ Мало артефактов
+ Анимация чувствуется цельной без разрыва композиции
- Долгое производство
- Флики фона и разных деталей (может кому то зайдёт)
Плюсы и минусы EbSynth:
+ Плавность
+Отсутствие фликов фона и детализации
- Явно видны переходы при смене ключевого кадра (умельцы думаю смогут на монтаже сгладить смешением кадров и т.д...)
- Артефакты при движениях
И так разобрались с плюсами и минусами, и начнём разбирать оба варианта. Начнём с создания с помощью перерисовки всех кадров в SD.
Я специально записал достаточно проблематичный футаж, где я часто и резко дёргаю головой и кривляюсь. Да бы посмотреть, как оба варианта себя покажут в одинаковых условиях.
Видео длится чуть больше 9 секунд, 270 кадров, 30 FPS, 2160x3840. Для этого способа, я намерено удалю половину кадров. Даже не потому, что я задолбаюсь рендерить, но и то, что каждый кадр будет создавать флики деталей, и в 30 FPS их будет в 2 раза больше, чем вы увидите дальше. Не думаю, что было бы приятно, поэтому, так как на вкус и цвет эпилептиков нет, продолжаем.
Разбиваем видео на последовательность изображений.
Заходим в Stable Diffusion и переходим в раздел img2img. загружаем для начала один любой кадр, по нему мы и будем выстраивать всё дальнейшее преобразование.
Для своего примера я выставил модель "sd-v1-5-inpainting", 60 Steps, Euler, разрешение максимально близкое к соотношению сторон кадра, CFG scale 24 denosing strength 0,5. Так же среди скриптов выбрал img2img alterbative test, там убрал все галочки кроме последней "Sigma adj...", В original prompt описываю, то как выглядит ОРИГИНАЛЬНОЕ изображение, остальные значения по умолчанию.
Возвращаюсь наверх, выставляю всё тот же оригинальный промпт и приписываю ему дополнительные детали, и негативные промпты которые мне не нравятся.
Ииии крутим барабан до тех пор пока не увидим изображение, которое зацепит взгляд. Нашли? Отлично сохраняем сид, и прописываем его. Шикарно, а вот теперь реальная закалка для видюхи. Мне пришлось прописывать "--precision full --no-half" в парамтры запуска SD, ибо уменя почему то хреново работает с img2img и часто выдаёт чёрные пикчи. С этими аргументами проблема решилась, но генерация стала дольше.
Переходим в подпункт Batch img2img, и указываем путь, туда где лежит наша последовательность кадров, и путь куда мы выведем всё добро. Убеждаемся, что сид введён, всё готово, и жмём снова старт. Ну у меня на обработку 135 изображений ушло около часа. Поэтому прикидывайте размер изображения и число кадров, что бы не ждать уйму времени, но без этого никуда.
И так, как только всё закончилось, ищем свежие сохранённые кадры, надеюсь они у вас будут поименованы так, же как и файлы для импорта, в формате последовательности. Их можем обратно перековырнуть в форматы видео или гиф, с помощью фотожопа, after effects или онлайн решений (гуглим пальчиками).
Получилось у меня следующее:
Видно, что постоянно дёргается всякое на фоне, но это можно и растушевать или обрезать уже на монтаже кому нужно, сам кадр персонажа держится цельно и не распадается на артефакты, блеск.
А теперь попробуем почти тоже самое, но при помощи EbSynth.
Запускаем прогу и видим, что нас просит вставить путь до Keyframes (ключевых кадров) и Video (последовательность изображений нашего видео).
Важный момент! Разрешение ключевых кадров должно быть идентично размеру видео или наоборот. Если у вас ключевой кадр в 480p а видео в 4K, то словите ошибку.
Нам потребуется задать минимум один обработанный ключевой кадр, по которому оно будет достраивать остальное на основе движения остальных кадров. Я буду вставлять ключевые кадры, каждый раз, когда я буду двигаться и менять выражение лица. Вышло 10 кадров вместо 135 перерисовки.
Ну а для видео я задействую все 270 кадров и не буду их обрезать, пусть будет в нативных 30 фпс.
Дальше для себя я открыл Advanced и тыкнул на Synthesis Detail: High, просто потому что хочу. Вам не обязательно.
Теперь запутаная хрень. Надо задать последовательность встраивания ключевых кадров.
Если простым языком, каждый ключевой кадр будет отвечать за участок в видео от a-кадра b-кадра. Следовательно, так как я разбивал их с идеей, что они будут встраиваться, там где будет происходить динамика, так я и раставляю ключевые кадры. Если у вас видео где минимум движений, максимум движение губ и мимики, то не нужно так запариваться. Если у вас видео, где прыгает попугай, а из него вы рисуете динозавра, то да, надо будет чуть ли не каждый прыг-скок закейфреймить в идеале, а то попугей рассыпется на артефакты.
Выставили все кадры, выставляем теперь каждому вывод, я выведу их в одну папку, но можете в разрые, если намерены смешивать кадры на монтаже (при этом вы заранее в выствлении кадров всё предусмотрели для этого).
Всё жмём RUN ALL и ждём минут 15-20, ну я ждал столько.
Получаем всю такую же последовательность изображений и всё так же известными способами конвертим в удобный для себя формат.
Поздравляю вы великолепны если повторили, всё шаг в шаг и получилось.
Видно, что с этим способом, анимация вышла плавней, без эпилептических вспышек, но сыпется местами на артефакты и видны стыки ключевых кадров но это фиксится монтажом.
Можно ли делать, что то сложнее, чем из мужика-мужика. Можно хоть в киборга или чужого себя перерисовать, но тогда сложнее будет выдержать единый стиль изображения, ибо не уверен, что удастся отрисовать несколько раз идентичные образы выдержанные в одном стиле, но это зависит от того, какие настройки вы выставите, но если оставите, слишком приближающее к оригиналу изображения, то и совсем отличающегося персонажа не выйдет. Ладно вот пример из начала темы.
Как видно, в каждом ключевом кадре облик ощутимо меняется. Тем не менее, кто научится этим пользоваться в полной мере, думаю сможет обратить это себе в пользу.
Спасибо, что дочитали, надеюсь, кому то будет полезно. Задавайте вопросы, постараюсь на них отвечать. Если я где то ошибся, не стесняйтесь поправить меня.
Полезный автор на YT, по видео которого я и решил написать это -https://www.youtube.com/@enigmatic_e
Небольшой русскоязычный гайд, который увидел вчера, пока готовил материалы -
нейросети нейромазня 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, где надо фотожопим лишнее.
Как только залили изображения, я сделал 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, но это крайне запутанные настройки, о них я побольше размусолю ниже в разделе с водой и по ходу текста.
Аргументы не трогаю.
Отлично, переходим к разделу тренировки, здесь нас попросит вставить наш Hugging Face Token. По идеи это нужно только если мы качаем модель SDv1.4 или прочую с Hugging Face, а у нас она локально на пк уже стоит, но всё равно просит, поэтому регаемся там и идём в настройках раздел с токенами https://huggingface.co/settings/tokens и создаём токен на WRITE и вставляем его в наше поле. Прописываем папку куда будут выгружаться все файлы после и проверяем, что бы стояла галочка, что бы модель генерилась потом в .ckpt файл в нашей папке вывода.
Иии жмём старт! И так теперь запасаемся терпением, можете заварить чай, помыться, выйти на улицу, потрогать траву, сходить в магазин и т.д, ибо процесс первого запуска НЕВЕРОЯТНО ДОЛГИЙ. Серьёзно, я сам в первый раз думал, что у меня, что то зависло. Минут 30 только оно подгружало нужные файлы, и убедитесь, что у вас на диске есть ещё место, ибо пару десятков ГБ на нём, этот процесс забьёт. Если увидите, что ошибок не вылезно, в папке \AppData\Roaming\smy20011.dreambooth были сгенерены картинки референсы по классовому промпту и вы не словили ошибку о нехватке видеопамяти (будет у многих вангую) то поздравляю, у вас пойдёт тренировка, и вы увидите, как у вас будут лететь надписи Steps ****% |▋▋▋▇| ***/1000 [**:** < 00:00, *.**s/it, loss=0.***,lr=5e-6]
На тренировку модели в 1000 шагов моей RTX 3080 потребовалось почти пол часа. Чтож, когда увидим сообщение о том, что всё готово, заходим в папку вывода, и переименовываем как хотим и переносим .ckpt файл в папку с моделями нашего stable diffusion.
Запустите 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
Чистая NAI
Ну вроде неплохо. Но можно лучше.
У меня выходили и более презентабельные модели, чего стоит модель с моей рожей, что генерит меня с шансом 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, хотя чем больше это число, то тем больше примеров картинок лучше подготовить, но остановлюсь на этом.
Теперь идём в Preprocess images, вводим путь до папки с изображениями и туда, куда их выгрузит. Ставим галочку на Use deepbooru for caption, не уверен, будет ли у вас эта функция, если нету или не работает, поставьте в аргументах запуска SD аргумент "--deepdanbooru", и тогда точно всё будет ок. Эта функция создаст текстовое описание для каждого изображения в формате тегов с danbooru, так сетка лучше обучится. Если трените не на NAI моделе, а что то реалистичное, то советую использовать, Use BLIP for caption, создаст промпты как если бы их писали для работы с обычной моделью SD 1.4... Так же уделите время и вручную проверьте КАЖДЫЙ созданый текстовый документ, и сверьте его с картинкой, постарайтесь удалить ненужные промпты или добавить, то что считаете нужно, не всегда оно создаёт описание корректно. Да это муторно, но стоит без этого может натренить сетку не на то, что мы желаем.
И последний подпункт 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. Чё страшно, запутались? Кароче, шляпа в том, что бы сетка не переобучилась, так мы её постепенно полируем, подробнее об этом после гайда в разделе с разными мыслями.
Вот выставили 200 шагов и 0.02 скорость, она прогонит по этим параметрам и закончит, не закрываем ничего, меняем параметры на следующие по списку, 1000 шагов и скорость 0.01 и опять жмём Train Embedding и опять идёт тренировка уже дальше с новыми данными. И т.д до конца. 20000 шагов золотая середина как по мне. У меня на это уходит около полутора часа, побольше, чем на тренировку 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
DreamBooth без Embeding
И без DreamBooth и без Embedding на чистом NAI
Ну 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.
Остальные галочки ниже необязательны.
Потом так же подготавливаем изображения как и с embeddings, это я не буду повторять и переходим сразу в Train.
Выбираем так же как и при тренировке embedding путь до шаблона, папку с датасетом из наших картинок с текстом, сохранение результатов и картинок.
Теперь выбираем нужную гиперсеть в выпадающем списке Hypernetworks. Изменять будем раздел Hypernetwork Learning rate, а не Embedding Learning rate, как раньше и жать будем на Train Hypernetwork, а не Train Embedding.
Вот примеры хороших соотношений последовательностей 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
DreamBooth и без Embedding
Без DreamBooth и без Embedding
Как и писал выше, иногда Embedding лишний, некоторые результаты, лучше без него, некоторые с ним. Сутуативная хреновона, но лучше будет, чем нет.КОНЕЦ.
нейросети Stable diffusion NovelAI нейромазня гифки
Использовал скрипт для SD, "deforum" - https://github.com/deforum-art/deforum-for-automatic1111-webui
Сам ещё не разобрался с ним, но первые попытки выглядят приколько.
нейросети Stable diffusion NovelAI нейромазня гифки много гифок art длиннопост
С моделью NAI в SD можно генерить не только терабайты хорни контента
masterpiece, best quality, solo focus, boy, hidden face, brown short hair, black (overcoat), blue jeans, white-red sneakers, leather gloves, cloudy, foggy, street light, telephoto, depth of field, lens distortion, white balance, dramatic lighting, tone mapped, lens flare, detailed, 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-skinned male
Steps: 80, Sampler: Euler, CFG scale: 11, Seed: 1592534600, Size: 1024x768, Model hash: 925997e9, Model: NovelAI, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337
masterpiece, best quality, anime poster, 1boy, peasants, (((guards))), steal armor, black chestplate, open helmet, face, short hair, stubble beard, open eyes, closed mouth, close-up, solo focus, indoors, (temple), (((middle ages europe))), ((dark fantasy)), (gothic), lens distortion, white balance, dramatic lighting, tone mapped, lens flare, by studio (((((MAPPA))))
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))
Steps: 80, Sampler: Euler, CFG scale: 11, Seed: 3854560427, Size: 1024x768, Model hash: 925997e9, Model: NovelAI, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337
masterpiece, best quality, anime poster, 1boy, (((witcher))), ((geralt)) of rivia, little (scar) on left eye, two sword on back, armor, no helmet, medium pale hair, small beard, yellow cat eyes, standing, from behind, (close-up), solo focus, outdoors, (village), ((fantasy)), (eastern europe), lens distortion, white balance, dramatic lighting, tone mapped, lens flare, detailed, realistic, by (((GHIBLI)))
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)), animal, cat, pet,
Steps: 80, Sampler: Euler, CFG scale: 11, Seed: 3912775550, Size: 1024x704, Model hash: 925997e9, Model: NovelAI, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337
masterpiece, best quality, anime poster, 1boy, (((witcher))), ((geralt)) of rivia, little scar on left eye, back, wolf medallion on neck, leather chainmail black armor, leather armored gloves, no helmet, medium pale hair, small beard, yellow cat eyes, standing, from behind, (close-up), solo focus, outdoors, (village), ((dark fantasy)), (eastern europe), lens distortion, white balance, tone mapped, lens flare, detailed, realistic, by (((a-1 pictures)))
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)), ((animal)), cat, pet, wolf,
Steps: 80, Sampler: Euler, CFG scale: 11, Seed: 1972381041, Size: 1024x704, Model hash: 925997e9, Model: NovelAI, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337
masterpiece, best quality, (((pencil drawing))), ((manga)), poster, 1boy, cyberpunk jacket, shirt, gloves, short hair, open eyes, standing, from front, [[close-up]], solo focus, outdoors, (street), (((cyberpunk))), (neon), (holograms), night, foggy, lens distortion, white balance, tone mapped, lens flare, detailed, 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)), ((animal)), cat, pet, wolf,
Steps: 80, Sampler: Euler, CFG scale: 11, Seed: 1714982364, Size: 1024x704, Model hash: 925997e9, Model: NovelAI, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337
masterpiece, best quality, (framed poster), 1boy standing on the roof, short hair, open eyes, closed mouth, cyberpunk coat, black pants, leather boots, looking into the distance, back, from behind, (clouse-up), cyberpunk city, [skyscrapers], outdoors, (streets), (((cyberpunk))), ((neon)), (holograms), night, [foggy], dramatic lighting, lens distortion, white balance, tone mapped, lens flare, detailed, 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)), ((animal)), cat, pet, wolf,
Steps: 80, Sampler: Euler, CFG scale: 11, Seed: 1452913399, Size: 1280x640, Model hash: 925997e9, Model: NovelAI, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337
БОНУС:
masterpiece, best quality, masterpiece, girl (holding cactus) dildo, medium hair, antenna hair, orange hair, blue eyes, freckles, foxy ears, breasts, standing, white top, orange welding overalls on suspenders, waist, (orange) suspenders, orange collar with bell, gold hairpin, gold buckles, white background, evil smile, horny, blush
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-skinned male
Steps: 80, Sampler: Euler, CFG scale: 12, Seed: 1566520377, Size: 768x1024, Model hash: 925997e9, Model: NovelAI, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337
нейросети Stable diffusion длиннопост NovelAI
Модель NovelAI под Stable-Diffusion
Там недавно слили исходники NovelAI, на сколько знаю сервис генерит истории по описанию, что то вроде AI Dungeon. Но с 3 октября у них появилась фича генерить и изображения по описанию. Собственно слили и её.
Автор репозитория одной из сборок, AUTOMATIC1111 добавил в свою сборку поддержку работы новых слитых моделей ,его кстати забанили в офф. дискорде Stable Diffusion после произошедшего.
Если хотим поиграться с новой моделью, а выдаёт она довольно неплохие результаты, то нам нужно:
1. Установить сборку Stable Diffusion от AUTOMATIC1111 - https://github.com/AUTOMATIC1111/stable-diffusion-webui
2. Качаем модель (у них есть NSFW и SFW версии) и некоторые ещё необходимые вещи из слитых материалов - magnet:?xt=urn:btih:5bde442da86265b670a3e5ea3163afad2c6f8ecc&dn=novelaileak
3. Переименуйте model.ckpt, что лежит внутри animefull-final-pruned в любоеназвание.ckpt. например в novelai.ckpt, теперь переименуем animevae.pt в название которое мы дали предыдущему файлу и добавляем к нему .vae.pt к примеру в novelai.vae.pt... Теперь заходим директорию \stable-diffusion-webui\, заходим в папку models и создаём там папку с именем hypernetworks и кидаем в неё файлы aini.pt, anime.pt, anime_2.pt и т.д из папки modules, что мы скачивали. Теперь в папку \models\Stable-diffusion\ с основными моделями что мы используем, переносим ранее переименованый файл novelai.ckpt и файл novelai.vae.pt
4. Запускаем Stable Diffusion и переходим в настройки, ищем раздел "Stable Diffusion" и включаем нужную модель и finetune hypernetwork
5. Готово, можем работать с новой моделью.NovelAI использует CFG:11 и негативные промты: 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, поэтому если хотите результаты похожие на те, что генерит оригинальная, то используйте эти параметры.
В некоторых промптах взятых напрямую из NovelAI может встречаться синтаксис {}. Он предназначен только для официального сервиса NovelAI. Так же усиливает акцент, как и (), но акцентирование увеличивается только в 1,05 раза вместо 1.1 с (). Поэтому если прям точь в точь повторить результат с понравившегося промпта, что увидели в интернетиках, то используем (слово:1.05) или видим {{}}, то используем (слово:1.1025)... А лучше почитайте https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features для понимания всяких тонких фишек.
Ну надеюсь всё правильно описал расписал. Если есть вопросы спрашивайте, если они в рамках понимания моего разума, то отвечу. Ниже приложу пару примеров изображений и промптов к ним, которые способна выдать модель. К слову через эту модель лучше генерить всякие анимешные арты ибо они там получаются лучше всего.
Мои:
((masterpiece)), painting of a ((Mandalorian)) bounty hunter, Star wars, Tatooine, space, stars, art by John J. Park
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
Steps: 150, Sampler: Euler, CFG scale: 11, Seed: 3998559443, Size: 512x704, Model hash: 925997e9
((masterpiece)), girl,red dress,short hair,summer, twintails, black hair,
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
Steps: 150, Sampler: Euler, CFG scale: 11, Seed: 3013799092, Size: 512x704, Model hash: 925997e9
copic, thick outlines, {{mohawk, shaved sides}}, 1girl, {vibrant}, deep shadows, deep space, {{80s, scifi, movie poster}}, skin tight spacesuit, jumpsuit, {power armor}, {{small breasts}}, closeup, detailed eyes, torso, headshot
{{BEST QUALITY}}, {{MASTERPIECE}}, {{HIGH RES}}, {{CINEMATIC LIGHTING}}, {{DETAILED}}, {{TELEPHOTO LENS}}, beautiful hd background, high detailed background, {realistic shadows}, HD shadows, {{{midjourney}}}, tarte (hodarake), Anor Lando, avataart, Andy Livy, by dark album, god teir background art, realistic, realistic portrait, masterpiece portrait, {{{{{{MASTERPIECE}}}}}}, sharp, photo realistic, background focus, {{{{{background only}}}}}, futuristic city, future, advanced technology, neon lights, holograms, flying ships, buildings metalic silver , advanced civilization, year 5096 , science fiction, sci-fi, futuristic dome, matrix
{white hair}, {very long hair}, gloves, black yellow coat, bandaged wrist, torn clothes, {{black}} eyeshadow, black and white eyes, earrings, {{floating crown}}, {star halo}, detached wings, {{masterpiece}}, {1girl}, black smear on right side of face, space background, {goddess}, {standing on a white platform}, {star symbol on clothes}, star earrings, {{medium}} breasts, bandaged torso, patterns on eye pupils, long majestic black yellow coat, chain earrings, makeup, large black and yellow coat, inside a cathedral at night, {detailed large crown}, character focus, floating stars, presenting a menger cube, magic cubes on background, dark magic, serious, {divine}, {{teenage}}, mini universe above hand, black cubes on the background, supernova on the background, decorated hair, covered body, {{{black background}}}, light above head, spirals on background, fractal patterns, {{dirty face}}, bandaged arms, fractal background
Отличный комментарий!