Новые возможности Stable Diffusion, часть 4

Пробуем новые модели, пишем запросы на русском и генерим музыку из изображений.

Новые возможности Stable Diffusion, часть 4
Спонсор этого выпуска - T800, берущий свои первые аккорды c Riffusion<br />
Спонсор этого выпуска - T800, берущий свои первые аккорды c Riffusion

С прошлого моего мини-гайда прошло уже 2 месяца, за это время Anzhc и новостники подхватили знамя постов с нейросетками, за что им большой респект. А я пока продолжу потихоньку рассказывать о том, что увидел и попробовал за это время.

Как и раньше, все картинки в посте сгенерированы с помощью сборки Automatic1111 на GTX1080; художественной ценности/вкуса в них нет и не планировалось. Параметры генерации в этот раз лежат в самих чанках png, если они вам интересны — качайте картинки в посте и используйте PNG Info.

Оглавление:

0. Что нового в сообществе SD?

1) Процентов 75 новостей и обсуждений последних месяцев — про борьбу художников против нейросетей, наблюдать отголоски можно прямо на DTF — см. новости про Unstable Diffusion и их кикстартер/патреон.
В ход пошли уже грязные приемы — массовые репорты инструментария как «сексуально непристойного, связанного в т. ч с педофилией», из-за которых гитхаб на полдня автоматически забанил аккаунт Automatic1111 и, соответственно, репозиторий. Разобрались, разбанили, репозиторий работает как раньше.
Еще теперь и сами художники средней руки попадают под горячую руку своих же, т. к. их работы слишком похожи на работы нейросети.

Появились даже конспирологические теории, что за всей быстрой организацией протеста художников стоит Disney, у которого в следующем году права на Микки-Мауса истекают и которому срочно надо придумать аргументы в пользу усиления и продления защиты интеллектуальной собственности. Чтобы убить двух зайцев и не попробовать это сделать под предлогом «смотрите, народ требует ужесточения контроля за соблюдением копирайта в интернете и допуска к нейросетям только избранных художников из списка богатых и *высоко-этичных* компаний»?

2) Stability AI показали первые работы с будущими апдейтами Stable Diffusion, в которых, судя по четкой передаче текста на изображении, используется новая сетка T5 вместо/вместе с OpenCLIP.
Если они реализуют это хотя бы на уровне демо eDiffi/Imagen и снова выложат в общий доступ — должны будут уйти проблемы с текстом и пониманием сложных отношений между частями запроса, что откроет больше возможностей для целенаправленных нестандартных генераций. Минусы — из T5 вычищено много слов, связанных с NSFW. Список того, что T5 точно не знает можно глянуть здесь. Я сам половины из этих слов не знаю и побаиваюсь гуглить, но их и текущие варианты моделей, натренированных на порно, не знают:

3) Люди все еще пытаются разобраться, как лучше использовать negative promt и надо ли использовать длиннющие конструкции из *poorly drawn hands, face, feet, eyes и т. д* для улучшения качества изображения. С одной стороны, реально качество генераций растет, но оно растет если и просто рандомных слов напихать. Особенно странно использовать теги из анимешных датасетов для моделей, которые их не знают.

С чего вдруг какие-либо картинки должны становиться лучше, если сказать сетке *ни в коем случае не рисуй двух оленей в пиджаках!*? Однако, достаточно часто становятся, что порождает все большее и большее удлинение списка слов в негативном запросе/бездумное кочевание списка из запроса в запрос без нужды (сам грешу этим).

Все это породило локальный мем с инверсией promt — когда негативный и обычный запросы меняют местами у популярных изображений и смотрят, что выйдет. Верный способ узнать противоположность искусства!

Негативный запрос из заглавной фотки этой статьи. <br />
Негативный запрос из заглавной фотки этой статьи.

4) Гугл презентует еще 1 свой вариант нейросетки для генерации изображений, Muse — в этот раз на основе трансформеров, а не диффузоров. Как я понял разницу — диффузоры учатся, постепенно добавляя-убирая случайный цветной шум на изображение, а трансформеры — закрывая части изображения маской и угадывая, что под закрытой частью. Работает, якобы, намного быстрее, чем существующие варианты и на синтетическом тесте достигает лучших результатов качества генерации

Для обычных пользователей сейчас смысла мало, т. к авторы не планируют выкладывать код в открытый доступ. Утверждения о качестве тоже пока малопроверяемы. Но разраб, спонсируемый Stability AI, уже начал собирать модельку на том же принципе в открытом доступе.

5) OpenAI решили зайти и в генерацию 3D, выпустив Point-E, делающую модельку по текстовому описанию. Granger уже расписал на DTF, добавлю только, что можно попробовать онлайн-демку:

Можно и просто текстовый запрос в 3D перегнать и плоское изображение попробовать сделать объемным.

Нюанс — получается пока так себе, на мой взгляд. Текст в картинку — совсем плохо, 2D в 3D — еще хоть как-то.

Местный мемо-кот может спать спокойно<br />
Местный мемо-кот может спать спокойно

6) Обученных моделей становится все больше и из-за этого все сильнее распространяется смешивание моделей для получения хороших стилей, внятной анатомии или просто для быстрого расширения известных нейросетке понятий. Хорошим тоном теперь считается на только приложить сами параметры запроса, но и поделиться, как смешивали используемую модель/поделиться ссылкой на готовую модель.
Использующих нейросетки уже и promt engineer называли и art-miners, теперь можно нейро-миксологами обзывать. Или сразу *сомелье*, как в S. N. U. F. F. Пелевина, он достаточно точно описал происходящее сейчас.
О новых популярных моделях — в следующем разделе.

Ваш персональный микс готов! <br />
Ваш персональный микс готов!

7) В тему нейросетей, но не рисования — хочется поиграть с ChatGPT, но тяжко получить доступ из России? Можно попробовать опен-сорс аналог, например KoboldAI. Из плюсов — заточено под текстовые игры (днд/новелки) и в качестве поддержки авторов, есть разные модели, в т. ч, умеющие в генерацию весьма фривольных текстов. Можно установить у себя или попробовать прям на серверах гугла, бесплатно:

8) Из новостей проникновения нейросетей в интрументарий — cтала доступна интеграция с Blender, позволяющая автоматически наносить генерируемые текстуры на модель. Некоторые игровые студии делятся, что уже используют доработанный SD для автогенерации и нанесения текстур приличного уровня. Масштабное распространение SD в геймдеве не за горами.

Вторая полезная интеграция — Automatic1111 внутри Adobe Photoshop. Объединить 2 монструозных интерфейса в 1 — что может быть лучше? Судя по комментам, можно поставить и на каперские версии 23.5+

1. Полезные ресурсы и модели

1) Курировать растущий список моделей вручную, как это делали в rentry уже малореально; huggingface прекрасен, но это все-таки платформа для разработчиков нейросетей, не заточенная конкретно под Stable Diffusion и его возможности. Поэтому получает распространение civitAI, в котором можно выкладывать готовые модели/эмбеддинги/гиперсети, к ним прикручен пользовательский рейтинг, в комментах можно показывать свои собственные результаты с конкретной моделью, ругать создателя сетки и пр.

Готовы удалять модели, если на них пожалуется автор исходных изображений, но при соблюдении множества условий (говорят, что из всех запросов удовлетворили только 1). Активно общаются с сообществом SD, стараясь занимать нейтральные позиции в срачах.

2) Вышла Waifu Diffusion v1.4, натренированная на 5+ миллионов анимешных изображений (среднее разрешением 640*640) и Stable Diffusion 2.1 в основе. Не забудьте скачать идущий в комплекте VAE и yaml-конфиг.

Имхо — с Anything v3.0 добиться приличного результата сейчас проще, но интереснее сам прецедент, что крупную модель решили учить поверх второй версии SD, а не 1.5.

Аску получилось отрисовать далеко не с первого раза. По-умолчанию генерировало какую-то девочку в красном платье<br />
Аску получилось отрисовать далеко не с первого раза. По-умолчанию генерировало какую-то девочку в красном платье

3) Появилась модель Analog Diffusion, натренированная на аналоговые фотографиях, с ней получаются весьма неплохие фотореалистичные изображения. Для активации используйте *analog style* в запросе.

Немного зернистости добавлено фотошопом<br />
Немного зернистости добавлено фотошопом

4) Automatic1111 теперь поддерживает модель с AltCLIP, которая неплохо понимает запросы не только на английском. Хотели вписывать свои запросы на родном языке — настало ваше время! Судя по статье, русский, арабский, японский, корейский, китайский, французский и испанский работают +-одинаково. Сделано китайцами, так что их представления о качестве перевода на русский может отличаться от нашего.

Качаете и распаковываете всю папку с моделью в models/Stable-diffusion (если медленно качает — оставайтесь на странице файлообменника), конфиг (тот, что в лежит архиве — не подходит)

Пример с запросом на русском:

"Дед Мороз в синей шубе и тулупе, в полный рост, большие снежинки, добрый взгляд, елки на фоне, дорога из льда, звездное небо,колдовство и магия, детская иллюстрация". Почти что описание с Алиэкспресса<br />
"Дед Мороз в синей шубе и тулупе, в полный рост, большие снежинки, добрый взгляд, елки на фоне, дорога из льда, звездное небо,колдовство и магия, детская иллюстрация". Почти что описание с Алиэкспресса

5) Сравнение разных вариантов настроек Dreambooth. Самое полезное — наглядная разница, что меняется в зависимости от того, какие изображение загружали в обучение.

6) Стали популярны миксы моделей Protogen (есть и реалистичные и анимешные варианты), которые чаще остальных справляются с отрисовкой рук и в целом делают стиль, похожий на популярные фотографии. Мне понравилось, Арни с заставки отрисован в них. Многие жалуются, что лица получают одинаковые, если специально не делать упор на какое-то выражение/тип лица.

This Protogen's Korean woman does not exist<br />
This Protogen's Korean woman does not exist

7) Специально для Бобровой командировки, тех кому понравились *поделки из бумаги* и при этом не хочется возни с обходом цензуры/оплатой миджорни — есть модель, натренированная на миджорниевских результатах, стиль активируется через mdjrny-pprct в начале запроса. Для предпочитающих SD 2.1 есть просто маленький текстовый эмбеддинг, делающий не сильно хуже.

2. Style Pile

Начнем обзор свежих дополнений к базовому инструментарию с отличного скрипта для новичков и тех, кто задолбался вспоминать правильные фамилии художников и английские прилагательные для разных стилей/цветов/настроений.

Устанавливается как и раньше, через раздел extensions — Available — Style Pile.

Активируется через раздел Scripts в txt2img/img2img.

Работает предельно просто — вы вписываете свой запрос как обычно, а потом выбираете из раскрывающегося списка нужные вам описания качеств результата. Скрипт подставляет их в нужные места запроса и сделает на них акцент через придание настраиваемого веса (по-умолчанию ставит 1.3 каждому своему прилагательному).

Интерфейс скрипта балансирует на грани перебора.<br />
Интерфейс скрипта балансирует на грани перебора.

На вкладках directions — colors можно заранее посмотреть примеры того, как меняется изображения с конкретными ключевыми словами.

Для желающих есть еще встроенные подстановки ваших слов из списка в задаваемые места запроса или просто рандомайзер запросов

3. Open Outpaint

Расширение для более удобной дорисовки частей изображений, хорошо работает с inpainting моделями.

После установки через extensions надо будет зайти в ваш webui-user. bat и прописать в commandline_ARGS --api

Пример внешнего вида интерфейса<br />
Пример внешнего вида интерфейса

Подробнейший мануал на английском от разработчика — тут. Упрощенный от меня:

Когда зайдете во вкладку — перед вами будет пустое поле с квадратными границами, обозначающими место генерации изображений. Зажатый CTRL позволяет перемещаться по этому полю

По-умолчанию в меню справа включена опция Dream, с неё и начнем. Она позволяет создать изображение с 0 либо дорисовать отсутствующие части в рамках границ (аналогично скрипту Outpaint в обычной вкладке img2img)

Для начала — вбейте в левом меню Promts свой запрос. В вкладке Stable Diffusion setings — выбираете какую-то из inpainting моделей и свои предпочтительные семплеры, разрешение/число шагов/CFG, все как обычно.

В самом конце левой менюшки — опции, специфичные для выбранного метода.

После этого достаточно просто нажать левую кнопку мыши и начнется генерация 1 слоя с выбранными вами параметрами. Когда генерация закончится, вам будут доступны опции:

  • <1/x> позволяет выбрать, что из изображений оставить на слое
  • + запустит генерацию дополнительных изображений, старые варианты при этом никуда не денутся
  • Y — сохранить выбранное изображение как итоговый вариант слоя
  • N — удалить все результаты генерации
  • R — сохранить изображение в ресурсы, что б потом легко вставить его где-то еще (через опцию Stamp Image)
  • S — сохранить отдельное изображение
  • U — отправить seed изображения в Stable Diffusion settings

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

Вторая опция в менюшке справа — традиционный img2img, но с удобной возможностью выделить рамкой часть, которая будет переработана. Можно спокойно выделять мышкой любую прямоугольную область, главное, чтоб в видеопамять влезло. Хорошо подходит, чтобы отполировать шероховатости получившейся мозаики из изображений и придать стилизацию всем частям сразу. Контекстное меню слева позволяет настроить denoising strength, позволяя управлять величиной вносимых img2img изменений.

Следующая опция — Mask Brush — нужно для режима inpainting. Выделяете кисточкой нужную область — маску. Размер кисточки настраивается слева, ластик = правая кнопка мыши. Нарисовали нужную область — возвращаетесь в img2img и выбираете в контекстном меню, хотите ли вы рисовать внутри или снаружи области с маской. Если область красная — изменения будут в ней, синяя — вокруг нее.

Осталось только выделить мышкой изображение через опцию Select Image и сохранить выделенную область. Либо зайти в меню Save/upsacling слева и увеличить разрешение, выбрав нужный апскейлер/сохранить вообще всю рабочую область

Нагенерить такой городок на моей видеокарте без outpaint не вышло бы<br />
Нагенерить такой городок на моей видеокарте без outpaint не вышло бы

4. Depth

Оценка глубины на изображении позволяет добиться лучшего подобия позы с референсов (в процессе написания наткнулся на бесплатный сайт с 3D моделями в разных позах), упростить генерацию множества объектов на 1 изображении, сохранять композицию при преобразования изображения.
Есть официальная модель, в которую встроена сетка для оценки глубины MiDaS (dpt_hybrid), но она работает на основе Stable Diffsuion 2.0, который не всем нравится.
В теории, если вам хочется использовать оценку глубины с другими моделями, стоит поставить отдельное расширение, делающую карту глубины на основе изображения.

Уже есть минимум 2 расширения, которые делают подобное:

  • depth2mask — с меньшим числом настроек, работает как скрипт в Img2Img, заточена под применение в inpainting
  • depthmap — с большим числом настроек, возможностью генерации 3D-модельки и выбором большого варианта нейросеточек для анализа глубины

Я попробовал оба, т. к интересно было попробовать различие в вариантах нейросеток MiDaS/ResNet, но в итоге пользовался первым, т. к 3D-фичи мне не нужны. Cочетание ResNet-BOOST строило карту глубины лучше, чем любая из сеток MiDaS.

Большой минус в применении расширений на практике в том, что пока для inpaint нет большой разницы в оттенках серого в маске, он просто считает все выше определенного порога маской. И красит в/вне ее рамок.
Так что текущий способ использования расширений в рамках Stable Diffusion мне видится только для автоматического выделения фигуры/фона без какого либо знания о самой фигуре. Если что-то сильно упускаю — пишите в комментарии.

Война не меняется даже в далекой-далекой галактике<br />
Война не меняется даже в далекой-далекой галактике

Но вот официальная depth модель делает img2img с сохранением исходных глубин неплохо уже сейчас. Для примера — делаем из девушки Нео с сохранением позы. Описание последовательности действий — в подписи к картинкам:

5. Riffusion

Об этом аддоне нельзя не рассказать, т. к идея в его основе, на мой взгляд, гениальна.

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

Этим Riffusion и занимается. Авторы дообучили базовый SD 1.5 на 5-секундных спектрограммах композиций с их текстовым описанием (рок, джаз, фанк и пр) и так, что теперь нейронка пытается выдать спектрограмму с музыкой под любое текстовое описание. Потом специальный алгоритм преобразует картинку со спектрограммой обратно в 5-секундный музыкальный участок.

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

Если исследовательская жилка в вас пересилила эстетскую — качайте модель и устанавливайте через вкладку Extensions само расширение Riffusion для WebUi. Если хотите генерить более долгие аудиофайлы с плавными изменениями — поставьте еще расширение Promt Travel | Seed travel.

Для начала просто сгенерим 5 секунд музыки.

Выбираем в txt2img скрипт Riffusion audio generator и выбираем, куда складывать готовые аудиофайлы. Нарисованные спектрограммы будут сохраняться по вашим обычным путям сохраняемых картинок.
Включаем в селекторе моделей riffusion-model, вбиваем свой запрос.
На каких композициях авторы учили модель, сколько их было всего — одним авторам и и известно. Не дай бог им еще от правообладателей музыкальной индустрии отбиваться. Это не то. Это не Чикатило и даже не архивы спецслужб. Сюда лучше не лезть.
Я не представляю, можно ли сейчас узнать заранее, поймет ли нейросеть ваш запрос или просто выдаст что-то среднее из всего ей известного. Поэтому рекомендую начать с простых запросов — названия крупных жанров, очень известных исполнителей.

Настройки семлеров тут имеют большое значение. Имхо, лучший выбор по звучанию — те семплеры, что отрисовывают много мелких деталей (DPM++SDE, DPM++2M, DPM Adaptive и их аналоги)

Пример спектрограммы и музыки из нее:

Когда спектрограмма сгенерится — можно нажать на кнопку *Refresh Inline Audio* и проиграть последний сгенерированный семпл прямо в браузере.

Если хочется сделать более долгую композицию с плавным переходом между семлами — используйте скрипт Promt Travel для перехода между разными стилями либо Seed Travel для перехода между вариантами одного и того же.
У Promt Travel слегка необычный синтаксис, вам надо в запросе указать 2 строчки сразу. Первая строчка запроса — начало генерации, вторая — конец; если строк в негативном запросе меньше, чем в обычном — они подставятся под каждый обычный.

Между ними будет отрисовывать умеренно плавный переход с сохранением всех промежуточных результатов в отдельную папку. Вы заходите в отдельную вкладку Riffusion, указываете путь до папки promt travel| seed travel c нужными результатами (по-умолчанию это будет отдельная подпапка в ваших традиционных местах сохранения результатов), отмечаете галочкой "Also output single joined audio file (will be named _joined. wav)" и нажимаете «Convert folder».

Пример результата с Seed travel:

Можно даже дообучать под стиль отдельных исполнителей почти так же, как тренировать модель конкретным лицам, под это тоже уже есть мини-гайд на примере Раммштайн

В этот раз вывод будет короткий и традиционный — рад помочь, чем смогу, в комментариях и в личке всем, кому все еще интересен Stable Diffusion как инструмент для реализации своих творческих задумок.
Пишу я все эти лонги, чтобы самому хоть как-то успевать за развитием этой области, т. к нет способа лучше самому разобраться, чем попытаться объяснить еще кому-то. В этот раз получился не гайд, а скорее просто обзор новых фич, значит есть еще куда копать в собственном понимании.

То, ради чего использую нейросеть я - отрисовка ситуаций с словесных ролевых игр. Здесь к парню во сне приходит его богиня и делает мягкий выговор за абъюз игровых механик<br />
То, ради чего использую нейросеть я - отрисовка ситуаций с словесных ролевых игр. Здесь к парню во сне приходит его богиня и делает мягкий выговор за абъюз игровых механик
7979
69 комментариев

Опа, теперь ДТФ умеет делать изображение с комплиляцией из содержимого для ленты? Или кто-то из модераторов решил постараться? @NECROID, подскажи! :)

3

Это был я. Так просто попризинтабелней

7

пиздец книги научной фантастики 80ых становятся реальностью

4

Мега статья. Да еще и с личным упоминанием моего поста. Огромное спасибо и респект. Буду изучать, как раз доделал трилогию бумажную. А теперь благодаря этому тексту может быть получится перейти на новый уровень качества.

2

Не, качество вряд-ли вырастет сильно, а пока будешь осваиваться в Stable Diffusion после Midjourney - скорее упадет. Midjourney очень сильно помогает, дорабатывая твои запросы *под капотом*.
Но при этом возможностей в Stable Diffusion намного больше и ограничений искусственных намного меньше.
Крч, это как примерно как Айфон и Андроид на своей заре - в одном все готово для пользователя, а второй дешевле и позволяет переделать все, что хочешь, был бы навык. И то и то - хорошо.

1

Зарегался на DTF только ради твоих материалов.
Так что буду ждать обновлений, продолжений.

Если будут вопросы, а они появляются, писать в комментах?

1

Так или в личку сразу, если не хочешь выносить вопросы на всех)

3