uwu

Очередной гайд по вкатыванию в генерацию аниме жоп с помощью нейронок by Маточка

Дисклеймер

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

Гайд всё ещё не готов, я активно (не очень) его дописываю.

На момент 28.01.23 Гугл что-то поломал в последних апдейтах и теперь почти всегда при запуске колаба будет куда-то утекать RAM, что с этим делать смотри в самом конце гайда На момент 15.04.23 проблема вроде как уже не наблюдается.

FAQ

Ну где уже жопы то?

Ближе чем ты думаешь! От генерации твоей первой вайфу тебя отделяет примерно минут 15-20 всяких несложных настроек и установок.

А чё, сколько это стоит то?

Бесплатно Здоровый сон. Забудь о нём.

А нсфв можно генерить?

Можно.

А лолей?

( ͡° ͜ʖ ͡°)

Предварительная подготовка.

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

Тебе потребуется:

  • Зарегать несколько гугл аккаунтов (желательно не менее 3-4)
  • Получить токен на ngrok
  • Зарегаться на huggingface (опционально)
  • Установить десктопный клиент гугл диска (опционально)

Теперь обо всём по порядку.

Зачем столько гугл аккаунтов?

Как уже было сказано ранее - время сессии ограничено и привязано к гугл аккаунту, то есть за сутки на одном акке ты сможешь генерить жопы максимум часов 6. Обходится это переключением на другой аккаунт. Да, придётся заново всё ставить (на самом деле это придётся каждый раз делать), но после нескольких раз ты уже разберешься и сможешь всё поднимать в пару кликов, особо не напрягаясь.

Ну допустим, а как их зарегать, они же требуют номер телефона!

Обычно да, но на момент написания данного гайда (02.01.2023) всё еще работает один довольно простой способ регистрации. Для этого тебе потребуется телефон с ведром в качестве ОС.
Алгоритм действий следующий:

  1. Заходишь в настройки телефона.
  2. Учётные записи
  3. Добавить учётную запись.
  4. Google
  5. Создать аккаунт > для себя.
  6. Вводишь любые данные и регаешь новую почту
  7. Когда спросит телефон просто нажимаешь внизу "Пропустить"
  8. ???
  9. PROFIT!

Чё за ngrok?

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

ngrok token

А нафига регаться на huggingface?

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

Ок, а нафига мне клиент гугл диска?

Из-за того что бесплатная сессия всегда заканчивается ВНЕЗАПНО, то если ты не успеешь до этого вручную сохранить всё что нагенерил, то можешь помахать ручкой своим картиночкам. Чтобы такого не происходило к колабу подключается гугл диск (на котором 15 гигов) и куда автоматически будут сохраняться все твои картиночки, что очень удобно. Но вот что не очень удобно, так это ублюдский лагающий браузерный интерфейс гугл диска, которым не очень здорово пользоваться в принципе, не говоря уже о том, когда у тебя будет 500+ картинок в одной папке. Десктопный клиент решает эту проблему, так как твоё облачное хранилище добавляется тебе в проводник как полноценный жесткий диск (при этом это всё ещё облако и поэтому он не будет занимать место на твоём диске), с которым уже намного проще взаимодействовать. Одновременно можно подключить 3 или 4 диска, чего обычно вполне хватает.

gdrivefs

Настройка колаба

Внимание!

Спасибо за внимание Данный колаб периодически обновляется поэтому расположение элементов может отличаться от того что ты увидишь в этом гайде, также там время от времени что-нибудь ломается, о чём можно сообщить автору колаба в телеге, указанной там же.

Какого ещё колаба? Что это вообще такое?

Google colab это облачный сервис, где ты бесплатно можешь запускать свой код на гугловских ноутбуках. У них там стоит видеокарта Nvidia Tesla T4, если тебе это о чем-нибудь говорит, на которой ты сможешь генерить картиночки даже с телефона. The future is now!

Ладно, куда нажимать чтобы было круто?

Уже готовых колабов, где от тебя требуется нажать всего пару кнопок, чтобы всё завелось довольно много, и небольшой список я кину в конце, но сейчас я предлагаю использовать колаб от анона, так как там есть неплохое описание вообще всего и также обратная связь с админом через телегу.
Собственно переходи по это ссылке (желательно сразу кинуть её в закладки):
https://colab.research.google.com/drive/1TC4SSLncPWytSPvquR6Y4-U7wZRfAXrV

Так пажжи, а чего так много букав, я не хочу всё это читать!

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

Если вкратце, то колаб состоит из нескольких ячеек, которые нужно запускать нажимая на вот эту кнопку run-cell, которая находится слева возле каждой ячейки, чтобы выполнить код, который находится внутри этой ячейки.
Как правило ты будешь взаимодействовать с тремя основными ячейками, а именно:

main_cells

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

Ячейки, которые содержат виджеты (ячейки в которых появляется отдельный интерфейс с вкладками и т.п.) нужно останавливать вручную нажав на клавиатуре сочетание клавиш Ctrl+M+I или пунктом Interrupt execution\Прервать выполнение кода в меню:.

interrupt_execution

Если при запуске ячеек вокруг run-cell ты видишь пунктирные линии, то поздравляю - ты забыл снять штаны остановить выполнения предыдущей ячейки.


Теперь подробнее о самой установке.

Последовательность действий примерно такая:

Установка всех компонентов → скачивание дополнительных моделей (опционально) → запуск webUI.

Первый пункт с установкой компонентов нужно запускать в самом начале ОДИН РАЗ, если сделать это повторно всё сломается. Второй и третий пункты можно запускать/останавливать сколько угодно раз за сеанс.

Начнём с ячейки Настройки, модели, установка, запуск

По сути всё необходимое сразу можно сделать в этой ячейке. Запускай её и подожди пока загрузится виджет. Если всё запустилось как надо, выглядеть это должно так:

main_install_cell

Отметь следующие чекбоксы:

  • версия_A1111: стабильная
  • подключить гуглодиск (сразу запустится подключение, подключаем)
  • подтянуть модели с гугл диска
  • ControlNet
  • Instruct_pix2pix
  • дополнения
  • внедрения
  • гиперсети
  • deepdanbooru
  • xformers
  • no_half_vae
  • запустить сразу
  • выбор моделей: NAI, AbyssOrangeMix2, Anything_V4_5, Anime_80s

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

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

Когда установка завершится ты увидишь соответствующее сообщение:

finished

Не забудь прервать выполнение кода, если ты планируешь запускать другие ячейки!


Теперь давай подробнее обо всех пунктах.

  • Версия_А1111
    На момент 22.02.2023 идёт постепенный переход колаба на обновленную версию webUI, со временем свежая версия станет основной. Как понятно из названия стабильная версия... более стабильна. На свежей версии больше инструментов, но она может чаще крашиться, но в целом ничего смертельного, попробуй обе версии и реши что тебе предпочтительнее.
  • Примонтировать гуглодиск
    Ну название говорит само за себя. Как я уже писал чуть выше, это нужно чтобы не просрать свои картиночки. Рекомендую всегда это включать.
  • ControlNet
    Нереально мощный инструмент для генерации по референсу. Что это значит?
    Берём картинку и через ControlNet получаем допустим контур:

    canny

    Далее на основе этого контура генерим себе картинку:

    canny_output

    Ну или можно в комбинации с аддоном open pose editor сделать вот так:

    pose_conrol

    Как это работает и другие примеры можно посмотреть на страничке автора.

  • Instruct_pix2pix
    Новое слово в img2img, теперь можно будет писать нейронке человеческим языком что ты хочешь изменить.
  • Дополнения
    Различные аддоны для webUI, их довольно много и делают они очень разные вещи, но на данном этапе они тебе вряд ли понадобятся и будут только мешать перегружая интерфейс, не говоря уже о том что часть не работает в колабе. В самом webUI есть возможность ставить аддоны, так что лучше делать это там, когда появится потребность. Учти что после установки аддона придётся перезапускать пункт запуска webUI.

    addons

  • Внедрения (embedding/Textual Inversion)
    О том что такое внедрения можно почитать тут.
    TL;DR - это штуки которые обучены под какой то конкретный концепт (персонаж, поза, композиция и т.п.) или стиль. Например есть эмбеды которые имитируют стиль определённых художников или рисуют определенных персонажей. Чтобы их использовать нужно для начала скачать нужные эмбеды в папку /content/stable-diffusion-webui/embeddings и затем в промпте вызывать их нужным ключом. Как правило ключом является название файла, например для as109-60000.pt ключом будет as109-60000.

    Вот несколько мест где их можно найти:

    Примеры эмбедов (1-я строчка) и комбинирования эмбедов друг с другом (2-я строчка):

    embeds
    Prompt: -,_, 1girl, solo, standing, outdoors, wheat field
    Negative prompt: (low quality:1.4, worst quality), nsfw, completely nude, simple background
    Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1077924624, Size: 576x704, Model hash: 6e430eb514, Model: anything-v4.5-pruned

  • Гиперсети
    Подробно про гиперсети тут
    TL;DR - примерно то же самое что embeddings. Использование не сильно отличается, закидывать по пути /content/stable-diffusion-webui/models/hypernetworks, а потом в самом низу выбираешь нужную гиперсеть из списка.

    hn-panel

    Список гиперсетей можно найти посетив ссылки выше + тут есть немного (сервак работает не всегда).

    Примеры:

    hn

  • LoRA (soon™)
    Подробнее о том что это.
    TL;DR - нечто среднее между гиперсетью и эмбедом. Сейчас это считается самым современным способом натренить нейронку под свои нужды.
    Аддон для использования лор ставится автоматически при установке всех компонентов, всё что тебе нужно будет сделать это по аналогии с эмбедами и гиперсетями закинуть свои лоры по пути /content/stable-diffusion-webui/extensions/sd-webui-additional-networks-dev2/models/lora

    lora-folder

    Далее в webUI находи внизу пункт Additional Networks и выбирай нужные лоры, не забывая поставить чекбокс на Enable. Большинство лор будет работать сразу, для других потребуются ключи вызова как для эмбедов, которые однако придется искать самому, так как обычно это уникальные ключи не совпадающие с названием лоры, прописанные вручную.

    Важное замечание - напротив каждой строки есть ползунок weight, который нужен для контроля влияния лоры на генерацию. По опыту могу сказать, что для подавляющего большинства лор дефолтное значение 1 слишком высокое, когда оптимальные значения находятся где-то между 0.5 - 0.8.

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

    lora-settings

    Примеры:

    lora-example
    Prompt: sfw, 1girl, standing, white dress, hatsune miku
    Negative prompt: (low quality:1.4, worst quality), nsfw, artist name, patreon, cropped
    Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 4018175798, Size: 512x768, Model hash: 264bff1fbd, Model: AbyssOrangeMix2_nsfw, Clip skip: 2, AddNet Enabled: True, AddNet Module 1: LoRA, AddNet Model 1: abmayoStyle_10(742ec002aa99), AddNet Weight A 1: 1.1

    Пример комбинации двух лор - персонажа и стиля:
    combo-lora
    Prompt: sfw, 1girl, solo, night sky background, black dress, hatsune miku, lying, (witch hat), (full body)
    Negative prompt: (low quality:1.4, worst quality), nsfw, artist name, patreon, cropped, close-up
    Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 2544058057, Size: 832x512, Model hash: 264bff1fbd, Model: AbyssOrangeMix2_nsfw, Clip skip: 2, AddNet Enabled: True, AddNet Module 1: LoRA, AddNet Model 1: ranni_128_epoch-000008(1f9ebadf2eff), AddNet Weight A 1: 1.15, AddNet Weight B 1: 1.15, AddNet Module 2: LoRA, AddNet Model 2: abmayoStyle_10(742ec002aa99), AddNet Weight A 2: 0.85, AddNet Weight B 2: 0.85

    Лоры как и всё остальное раскиданы по всем уголкам интернета и придётся их поискать. В ближайшее время я планирую собрать большой пак лор для колаба, так что stay tuned.

  • deepdanbooru
    Аддон для автозаполнения тегов из данбуры. Полезен если ты не особо хорошо знаешь теги. Список тегов тут

    danbooru

  • Xformers
    Довольно приятная штука, так как по сути это почти бесплатное увеличение скорости генерации картинок. Почему "почти"? Потому что немного страдает сама генерация. Если без xformers на одних и тех же настройках и сиде у тебя всегда будет на выходе одна и та же картинка, то с включенным будут небольшие отличия. Насколько небольшие? Настолько:

    xformers-diff - 16 картинок
    Prompt: 1girl, solo, dutch angle, gothic lolita, gothic dress, blue eyes, focus face, moon, cosmos, outer space
    Negative prompt: (low quality:1.4, worst quality), bad anatomy
    Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2271780657, Size: 512x640, Model hash: 25e42458, Model: AbyssOrangeMix2_hard

    xformers-diff2 - 8 картинок
    Prompt: nsfw, (best quality), (masterpiece), (hard shadow:1.3), (sketch:1.3), solo, 1girl, (hot springs), (partially submerged), sitting, (bathing), (nude) (loli), (black witch hat:1.2), (flat chest), (white hair), very long hair, (cat ears), yellow eyes, looking at viewer, cute, outdoors, scenery, (night sky), mountains, planets, snow, (oranges), realistic water, (lamp), (floating:1.2)
    Negative prompt: (bad_prompt_version2:1), (bad anatomy), (low quality:1.2), worst quality, extra limbs, (realistic shadows), (day)
    Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 3790954507, Size: 832x512, Model hash: 25a25911, Model: anything-v4.5-pruned
    Used embeddings: bad_prompt_version2 [afea]

Обрати внимание на то что с включенным xformers нельзя использовать гиперсети и некоторые дополнения!

  • no_half_vae
    Это фикс для того чтобы не генерились чёрные квадраты вместо картинок. Включай если столкнулся с этой проблемой, но по идее уже такого не должно быть.
  • Загрузка моделей
    Тут можно выбрать модели для скачивания. Прочитай описание моделей и выбери интересующие тебя модели. Не обязательно качать всё сразу, при желании можно докачать любые модели потом.

    Так стоп, что за модели?

    Модель (Checkpoint) - это собственно сама нейронка, которая генерит тебе картинки. Почему их так много? Потому что стандартная модель Stable Diffusion обучалась на определенных картинках (в основном всякие фоточки и рисунки известных художников) поэтому и генерить она будет примерно это же. Если ты хочешь нагенерить анимешных тян, то тут Stable Diffusion не лучший вариант. Умельцы со всего интернета брали за основу дефолтную модель и различными путями переобучали её на своих картинках, получая в результате уже совсем другую модель. В качестве основы большинства анимешных моделей например выступает слитая модель Novel AI, которая в принципе хороша и сама по себе, но её вариации могут выдать просто шикарные картинки.

    Окей, разные модели под разные хотелки, это понятно, но где их брать?

    Скачивание моделей было переработано в более удобную версию со вкладками. Восславим дедов!

    После первоначальной установки спускайся вниз до пункта докачать модели и запускай ячейку. Запуск займёт около 30 секунд. Выглядеть это должно как то так:

    download-models-widget

    По аналогии с пунктом установки, выбирай нужные модели и нажимай "Скачать".

    Обрати внимание на верхнюю левую строку глобального поиска, в которой проще всего найти интересующую тебя модель по названию.

    Описание большинства моделей можно прочитать на отдельной страничке.
    Нужно также брать в расчёт то, что у колаба ограниченное свободное место и все модели не получится установить, в среднем после установки компонентов у тебя должно быть свободно около 40 Гб и модели весят 2-4Гб в среднем, так что следи за свободным местом.

    В зависимости от выбранных моделей это может занять от 2-10 минут. Обычно всё скачивается довольно быстро. Скачивается это всё вот сюда:

    downloadPath

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

Ты почти у цели! По завершению всех загрузок не забудь прервать выполнение кода и опускайся к ячейке Запуск/перезапуск вставляй туда свой ngrok токен, включай чекбокс no_half_vae и xformers и запускай ячейку

Подожди немного пока всё запустится. Когда это произойдёт переходи по второй или третьей ссылке.

urls

В случае с ngrok ты сначала попадешь на страницу подтверждения. По сообщениям анонов некоторые ссылки не открываются или webUI не работает нормально без включённого VPN, тут как повезёт. Также следует уточнить что эти ссылки не надо показывать кому-то ещё, если не хочешь чтобы к тебе кто-то зашёл. Если всё хорошо, то тебя должно перенаправить в webUI. Выглядеть это должно вот так:

webui

Поздравляю, теперь ты наконец-то можешь генерить жопы!

Text2img

Для начала в самом низу выбери модельку и VAE - давай начнём с novelai, выбирай её из списка и дождись пока она загрузится. CLIP skip ставь на 2 т.к. это оптимальное значение для novelai и моделей на её базе (для разных моделей это значение может быть другим).

in-case-you-are-blind

Как уже было сказано ранее для некоторых моделей есть свои VAE (например Anything) но в целом для анимешных можно использовать novelai или anything.
Возвращайся во вкладку текст-в-изо.

Ты можешь ВОТ ПРЯМ СЕЙЧАС нажать на кнопку генерировать не меняя настроек и подождать чтобы тебе выдало картинку. В результате должен получиться примерно такой гигачад:

gigachad

Выглядит как говно, но это потому что промпт был написан для фотореалистичной модели SD 1.5, а не для анимешной novel AI, на которой была сгенерена картинка, но для демонстрации этого должно хватить.

Чё? Какой ещё промпт? Чё ты несёшь вообще? Нафига мне голые мужики, хочу анимешных девочек уже!

Итак мы наконец плавно подошли к самому интересному.
Промпт это собственно текстовый запрос, по которому нейронка будет тебе генерить картинки. Есть 2 типа промпта - обычный и негативный.
Как ты уже мог заметить у тебя там есть два поля для ввода текста и собственно в первое поле ты пишешь что ты хочешь увидеть на картинке, а во второе что не хочешь увидеть.
Например можно написать в первое girl standing in the garden wearing white dress, оставив второе поле пустым и сгенерить картинку. Потом добавить во второе поле flowers и сгенерить ещё одну.
Получаем что-то такое:

girl_garden

Как видишь на второй картинке теперь отсутствуют цветы, думаю суть ясна.

А что у неё с лицом, почему такая кривота? Хочу красиво!

Кнопки "Сделать с первого раза офигенно" всё ещё не придумали, поэтому нужно понимать что результат зависит от нескольких параметров, а именно:

Модель

Разные модели по разному обрабатывают запросы и некоторые обучены вообще только для 3Д картинок и будут на анимешные запросы выдавать мазню. Также разным моделям нужно составлять промпт по разному. Модели типо Stable Diffusion неплохо понимают целые фразы по типу той что выше, другие модели лучше генерят с промптами составленными из тегов, разделённых запятой, потому что были обучены картинками с различных бур (danbooru, gelbooru, sankaku). Большинство анимешных моделей как раз лучше всего понимают тегированные промпты, так что есть смысл зайти на ту же данбуру, найти картинку с нужными тегами и пытаться использовать их.
Приведу пример.
https://danbooru.donmai.us/posts/5907206
Берём оттуда основные теги, а именно: 1girl, solo, green eyes, brown hair, dress, shoes, garden, sitting, chair, table, parasol, full body, smiling, fountain, holding cup, teacup, второе поле пока оставим пустым. После нескольких генераций можно получить что-то адекватное, вот сравнение с оригиналом:

danbooru1

Всё еще выглядит как говно, но уже гораздо лучше чем раньше!

VAE

VAE это очередная постобработка. У твоих анимедевочек что-то с глазами и в рандомных местах появляются какие-то странные темные пятна? Значит ты забыл включить VAE в настройках. Разные VAE отличаются друг от друга в основном насыщенностью цветов. Их так же как и эмбеды и гиперсети можно найти на просторах интернета. Некоторые модели из списка колаба качают ещё и свои VAE в придачу (например novelai и anything V3).

vae-diff
Prompt: night, outdoors, focus face, closeup, big eyes, moon, cosmos, outer space, 1girl, blonde hair, ocean, palms, swimsuit
Negative prompt: bad_prompt_version2, (low quality:1.4, worst quality), bad anatomy
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 3373936480, Size: 512x640, Model hash: 25e42458, Model: AbyssOrangeMix2_sfw
Used embeddings: bad_prompt_version2 [afea]

Промпт

Это наверное самая сложная часть в генерации картинок.
В чем же сложность? А в том, что разные модели "требуют" разный набор токенов для оптимальных результатов, а какой именно хер его знает в 90% случаев.
Токенами называют слова или знаки, то есть cat это токен, , внезапно тоже токен. Зачем тебе это знать? Просто чтобы потом не удивляться что все в интернетах говорят про какие-то токены, по сути это синоним тега (не буду вдаваться в подробности чем они отличаются, это не столь важно). На просторах всё тех же интернетов можно найти кучу инфы и примеров того что можно писать для получения хорошего результата, но зачастую ты находишь либо откровенный мусор (плацебо токены, которые ни на что не влияют), либо токены не работают в твоей модели, либо работают на одном сиде и ломаются на следующем. Увидел крутую картинку и автор даже указал промпт? Не спеши радоваться так как с одними и теми же настройками иногда может получаться другая картинка на разных видюхах, разных версиях компонентов, разных версиях моделей и т.д. Как понять в какую часть промпта лучше поставить тот или иной токен? Какие токены перекрывают друг друга? На какие части изображения вообще они влияют? Всё это придётся узнавать на собственном опыте в большинстве случаев.

Самая базовая инфа - всё что в промпте левее имеет больший вес, всё что правее - меньший. Другими словами если первым написать red, а потом blue, то на картинке в теории должно быть больше красного цвета. Впрочем это не мешает нейронке полностью проигнорить красный цвет в какой-нибудь генерации. Или проигнорить синий...

Веса (weights) можно контролировать вручную и тут начинается цирк. Синтаксис такой:

промпт weight
токен 1
(токен) 1.1
((токен)) 1.21
(((токен))) 1.33
(токен:1.4) 1.4
[токен] 0.9
[[токен]] 0.75
(токен:0.8) 0.8

То есть можно добавлять кучу скобок (но зачем?), а можно указывать конкретное значение (одинарные скобки обязательны при этом).
Это можно делать с любым токеном, чтобы увеличить его влияние на результат. Например (blue eyes:1.2) или (smiling:1.3).
Обычно если поставить чему-либо вес больше 1.5 это похерит картинку полностью, так что не рекомендую ставить слишком высокие значения.
Также следует понимать, что запись вида (blue:0.5) лишь ослабляет синий цвет, т.е. он всё равно скорее всего где-то будет.

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

  1. Сразу реши будет ли это NSFW, если да то поставь этот токен в самое начало.
  2. Добавь токены стиля и качества типо таких:
  • (extremely detailed CG unity 8k wallpaper)
  • (best quality)
  • (ultra-detailed)
  • (best illustration)
  • (best shadow)
  • (masterpiece)
  • (original art)
  • (sketch)
  • (oil painting)
  • (illustration)
    и т.п. Тут примеры того какие токены обычно сильно влияют на генерацию, а какие не очень.
  1. Определись с ракурсом и общей композицией.
  • from behind
  • from above
  • from below
  • dutch angle
  • aerial shot
    и т.п.
    подобные теги можно найти на данбуре или тут
  1. Опиши персонажа (рост, цвет глаз, цвет волос, одежда, татуировки, размер груди, какие-то особенности)
  • long black hair
  • closed eyes
  • twin-tails
  • white dress
  • flat chest
  • huge breasts
  • animal ears
  • barefoot
  • topless
  • cleavage
    список с примерами одежды, ну и данбура опять же.
  1. Опиши фон (сильно много лучше не писать, если не хочешь чтобы акцент сместился на фон)
  • outdoors
  • indoors
  • forest
  • autumn
  • snow
  • city
  • crowd
  • simple background (можно добавить этот токен в негативный промпт чтобы фон был получше)
  • underwater
  • partially submerged
  1. Опиши более детально позу, выражение лица

По итогу у нас может получиться что-то такое:
scan, (highres:1.2), (ultra-detailed:1.2), (oil painting:0.5), (sketch:1.2), (extremely detailed CG unity 8k wallpaper:1.2), (best shadow), soft lighting, 1girl, from above, standing, shiny skin, blonde hair, short hair, hair over one eye, french braid, detailed pupil, beautiful eyes, detailed eyes, yellow eyes, (smug), (blush:0.8), (small breasts), santa hat, (red gloves), bowtie, (red dress), short sleeves, apron, (white thighhighs), skindentation, (sweat), ((on a red rug with a christmas tree in the background)), looking at viewer,

со следующим негативным промптом:
lowres, bad anatomy, bad hands, mutated hand, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name, out of focus, glowing eyes, (wedding ring:1.1), (((multiple views))), (((bad proportions))), (((multiple legs))), (((multiple arms))), pointy ears, (cleavage:1.5), (3d:0.7), (cum on breasts), (facial), white hair, medium breasts, large breasts,

что на выходе может сгенерировать подобные картинки:

santa-girl

Steps: 22, Sampler: DPM++ 2M Karras, CFG scale: 10, Seed: 4058930041, Size: 512x768, Model hash: cc44dbff, Model: BloodOrangeMix

Также прими во внимание что допустим токен blue eyes воспринимается нейронкой не только как синие глаза. Она добавит синий цвет и в другие места тоже, например сделает синим платье, так что аккуратнее с такими токенами.

blue_eyes

К слову цвета даже не обязательно к чему-то привязывать, можно накидать токенов с рандомными цветами и нейронка сама их прилепит куда-нибудь.
Пример с промптом original art, best quality, 1girl, standing, long hair, dress к которому я добавил сначала blue, black, green, а потом заменил на white, teal, orange:

as

Насчёт того насколько вообще хорошо работают такие вещи как best quality или masterpiece в запрос или low quality и bad anatomy в негативный промпт ведутся активные дискуссии и однозначного ответа вроде как нет. Единственное что понятно наверняка - многие из них сильно влияют на конечный результат, поэтому всё придётся выяснять экспериментируя с разными токенами и моделями. На примере ниже, у картинки справа было просто добавлено masterpiece в начало промпта:

masterpiece1

Стало ли прям лучше? Спорно, но как минимум этот токен повлиял на генерацию следовательно что-то он да делает. Однако это была модель SD 1.5, вот пример с другой моделью - Bstaber.
Промпт: 1girl, sitting, oranges, river, mountains для первой картинки и потом так же добавляем в самое начало masterpiece. Результат впечатляет! (опустим момент с ногами)

masterpiece2

Попробуем то же самое уже с анимешной моделью EerieOrangeMix2.
Промпт всё тот же: 1girl, sitting, oranges, river, mountains с добавлением masterpiece у второй картинки.

masterpiece3

Ну такое. Видимо тут этот токен не особо работает. Поговаривают что его аналог это original art, попробуем!

original_art

Ну, видимо и правда аналог, что сказать. А что насчёт low quality? Автор модели даже советует на своей страничке его использовать в негативном промпте. Проверяем сначала просто low quality, а затем (low quality:1.4) как советует автор. Ради удобства добавлю в начало оригинал.

low_quality

Другое дело! Автор явно не обманул!

Можно заодно проверить как работает best quality на примере первой картинки. А для второй вообще накидать всё сразу, чего уж там!

everything
Prompt: best quality, masterpiece, original art, 1girl, sitting, oranges, river, mountains
Negative prompt: (low quality:1.4)
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1082695396, Size: 512x768, Model hash: dc892b15, Model: EerieOrangeMix2

Ну, вывод делай сам.

Не забывай также про различные стили:

styles

Или художников:

art

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

Но как уже было сказано ранее разные модели по разному обрабатывают промпт, так что тут либо искать инфу в интернете, либо самому выяснять как лучше. Некоторые модели лучше генерят когда ты буквально засыпаешь их деталями, некоторые отлично генерят картинки с 2-3 токенами. Вот допустим результат от разных моделей с промптом beautiful girl, forest, dress:

models

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

80s_test
80s_test2
Prompt: _, 1girl, solo, black gothic dress, (big orange eyes:1.2), detailed eyes, face focus, detailed pupils, (big eyelashes), pale skin, (creepy), black very long hair, simple white background, small breasts, mascara
Negative prompt: (low quality:1.3), bad anatomy, worst quality, open mouth
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2838480518, Size: 512x640, Model hash: 187550ac, Model: 80s_Anime

Настройки генерации

settings

Давай пройдёмся по основным настройкам. С полями для промпта мы уже разобрались, поэтому:

  • Метод выборки или же семплер
    Что это такое? Как это работает? Чем отличаются разные семплеры друг от друга?
    Да никто не знает лол
    По сути тебе важно знать лишь то что разные семплеры имеют разную скорость генерации и дадут тебе разный результат даже с одинаковым промптом и сидом, а семплеры с приставкой а в конце (что значит Ancestral) будут ещё и заметно изменять картинку в зависимости от количества шагов. Вот грид от анона, где это няглядно продемонстрировано - https://i.imgur.com/3YTb9rw.jpg
    Как видишь для большинства семплеров ставить количество шагов больше 20-30 особо не имеет смысла.
    Я пришёл к выводу, что самые оптимальные семплеры это DPM++ 2M Karras, DPM++ SDE Karras, DDIM, Euler a, однако это всё субъективно и ничего не мешает сгенерить отличную картинку на любом семплере, экспериментируй!
  • Шаги выборки
    Не вдаваясь в подробности это то сколько раз нейросеть будет пытаться составить из рандомного шума картинку. На низких значениях (1-10) как правило получается какая-то каша и лучше ставить хотя бы от 15-20. Больше 30-40 смысла ставить обычно нет, так как качество картинки уже повышаться не будет, а генерить будет дольше. Опять же экспериментируй и смотри как лучше.
  • Ширина и высота
    Разрешение получаемой картинки. Как правило чем выше разрешение тем лучше качество и детализация, но и времени потребуется в разы больше. Модель Stable Diffusion была натренирована на картинках 512х512 поэтому это разрешение считается оптимальным для неё. Это не значит что нужно генерить только с каким-то определенным разрешением. Пробуй разные пока не найдешь то что даёт лучший результат. Если хочешь по быстрому нагенерить картинок рекомендую начать с 512х512, а потом постепенно добавлять. Детализация обычно сосёт на таких значениях, но главное это композиция, если тебе нравится что получилось всегда можно сделать апскейл с перерисовкой деталей с сохранением композиции, вот пример (сверху оригинальная картинка 576x768, снизу 4x апскейл до 2304х3072 в 2 захода):

upscale_orig upscale4x
upscale_vs1
upscale_vs2
upscale_vs3
Prompt: 1girl, solo, black gothic dress, (big orange eyes:1.2), detailed eyes, face focus, detailed pupils, (big eyelashes), pale skin, (creepy), black very long hair, simple white background, small breasts, mascara
Negative prompt: (low quality:1.3), bad anatomy, worst quality, open mouth
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2700283038, Size: 576x768, Model hash: dc892b15, Model: EerieOrangeMix2

  • Исправление лиц, бесшовные текстуры и Hires.fix
    Про это неплохо написано тут, но если вкратце, то исправление лиц это ещё одна постобработка которая неплохо фиксит глаза на реалистичных картинках, бесшовные текстуры нужны для генерации текстурок (вау), а hires.fix исправляет артефакты, такие как всякие двухголовые мутанты и два человека вместо одного, при генерации с высоким разрешением (где-то 800 и больше) и вместе с этим апскейлит твою картинку при соответствующих настройках. Используя хайрез фикс не забывай подкручивать степень изменения картинки и по желанию менять апскейлеры. Дефолтный latent при значениях ~0.5 и ниже будет выдавать одно мыло.

Face fix:
face fix
Prompt: 1girl, solo, from above, detailed face,(gray eyes:1.5), detailed pupils, textured pale skin, dress, (white long hair:1.3), forest,
Negative prompt: (low quality:1.3), bad anatomy, worst quality, open mouth, huge breasts, medium breasts, simple background, anime, cgi, 3dcg, 3d, blender, cartoon
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 129538192, Face restoration: CodeFormer, Size: 512x768, Model hash: dcef3cc4, Model: Bstaber

Highres. fix
Highres.fix
Prompt: 1girl, solo, from above, detailed face,(gray eyes:1.5), detailed pupils, textured pale skin, dress, (white long hair:1.3), forest,
Negative prompt: (low quality:1.3), bad anatomy, worst quality, open mouth, huge breasts, medium breasts, simple background, anime, cgi, 3dcg, 3d, blender, cartoon
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 129538192, Face restoration: CodeFormer, Size: 704x1088, Model hash: dcef3cc4, Model: Bstaber, Denoising strength: 0.5, First pass size: 704x1024

  • Кол-во пакетов генерации
    Сколько картинок будет сгенерено за раз. Удобно чтобы проверять насколько хорошо нейронка распознала какой-нибудь токен, если он появился на большинстве картинок - хорошо, если нет - ну анлаки. Второй пункт нет смысла трогать в колабе.
  • Шкала безклассификаторного управления диффузией (CFG)
    Насколько сильно нейронка будет следовать запросу. При низких значениях у неё будет больше "свободы" и она может сгенерить что-то чего не было в запросе и проигнорировать часть того что там было, при высоких значениях будет только то что есть в промпте. При слишком низких и высоких значениях будет говно, оптимальные значения 6-10.

cfgPrompt: 1girl, solo, black gothic dress, (big orange eyes:1.2), detailed eyes, face focus, detailed pupils, (big eyelashes), pale skin, (creepy), black very long hair, simple white background, small breasts, mascara
Negative prompt: (low quality:1.3), bad anatomy, worst quality, open mouth
Steps: 20, Sampler: DPM++ 2M Karras, Seed: 2700283038, Size: 576x768, Model hash: dc892b15, Model: EerieOrangeMix2

  • Зерно (сид, seed)
    Отправная точка для генерации картинки. Думаю ты уже встречал подобное в рогаликах. Если поставить -1, то каждая генерация будет использовать рандомный сид (красная кнопка). Если нажать на зеленую, то будет выставлен последний сгенеренный сид или же тот что выбран, если сгенерено несколько картинок. Если генерировать с одним и тем же сидом и не менять остальные настройки, то каждый раз будет одна и та же картинка. Очень полезно когда тебе понравился результат, но ты хочешь немного подправить что-нибудь или проверить насколько хорошо работает тот или иной токен - жмешь зеленую кнопку и чекаешь насколько меняется картинка немного меняя промпт или cfg. При изменении разрешения даже немного однако будет получаться совершенно другая картинка.

Img2img, инпеинтинг и апскейл [в процессе написания]

Помимо генерации картинок по текстовому запросу нейронка может генерировать картинку из другой картинки.

img2img

Даже из совсем всратой мазни.
img2img2

НУТЫПОНЕЛ
yeah

Полезное

webUI часто багает! Особенно в не chromium-based браузерах и на старых ОС. Часто перестаёт работать кнопка "генерировать", в таком случае либо переходи на хоткей ctrl+enter (иногда потом отваливается и он и почему то начинает работать shift+enter). Лечится это перезагрузкой вкладки. Проверить генерится ли в данный момент картинка можно на странице колаба в пункте запуска, если webUI завис. Также бывает что ты пытаешься что-то сгенерить или применить настройки, но в консоли вообще ничего не происходит. В таком случае попробуй зайти в webUI по другой ссылке (например gradio). Если совсем всё сломалось, то останови и запусти заново пункт с запуском webUI.


Почему после установки у меня уже 6ГБ RAM куда-то утекло, я ведь ещё даже ничего не запускал?!

Скажи спасибо гуглу, который видимо таким способом рекламирует платную версию колаба. К сожалению так как проблема не на нашей стороне, то нормального фикса пока нет и не факт что будет, но с переменным успехом работает выпиливание проблемного процесса вручную. Чтобы это сделать необходимо запустить ячейку с фиксом. Можешь попробовать запускать её перед всеми остальными ячейками в самом начале, если не помогло и после запуска у тебя всё равно RAM на отметке в 6-9ГБ, то останавливай webUI и запускай ячейку фикса ещё раз. Колаб при этом крашнется, это нормально.

RAM-leak-fix

Фикс работает не всегда c первого раза и иногда придётся крашить колаб много раз подряд, пока RAM не достигнет отметки в 1ГБ.

clown-emoji


Как качать?

Покажу на примере huggingface потому что процесс одинаковый везде. Находишь нужную модель, заходишь туда где есть прямая ссылка на скачивание. Копируешь ссылку.
hugg-dwnld

заходишь в колаб, крутишь до ячейки Загрузка моделей с сайтов и торрентовмассовая загрузка моделей и т.п. по прямым ссылкам, путь для загрузки ставишь /content/stable-diffusion-webui/models/Stable-diffusion в ссылки с 1 по 10 вставляешь собственно ссылку на модель и запускаешь ячейку. Обрати внимание, что если модель скачалась за секунду, то скорее всего ты указал ссылку не на саму модель, а на HTML страницу, которая и скачалась.

download_model2

Если есть выбор между тем качать .ckpt или .safetensors, то качать всегда следует второе. Safetensors модели исключают наличие вредоносного кода, но в рамках колаба важнее то, что они быстрее запускаются и с ними нет проблем, если модель весит больше 7Гб. Тяжелые модели .ckpt часто крашат webUI при попытке их загрузить из-за недостатка RAM в колабе. Колабные модели уже все отпрунены и с ними таких проблем не будет, поэтому смотри что качаешь.

Почему нельзя просто скачать себе на комп и потом перетаскивать в колаб?

Можно. Только там скорость как в 2007, если хочешь вернуть - вперёд, но ты будешь одну модель так скидывать всё своё бесплатное время. С примонтированного гугл диска перекидывается быстрее, но не прям чтобы очень. Как вариант для перекидывания эмбедов, гиперсетей и всяких апскейлеров это ещё норм, но не более. И вообще проверяй список моделей в самом колабе, он часто пополняется новыми, да и самому можно попросить через бота добавить какую хочешь, если у тебя есть ссылка на неё.

Где почитать про апскейл?

Подробнее про апскейл доступным языком можно почитать в гайде от анона.
Вручную скачать какой-то конкретный апскейлер можно например отсюда и закинуть в /content/stable-diffusion-webui/models/ESRGAN.

Edit
Pub: 02 Jan 2023 22:16 UTC
Edit: 15 Apr 2023 16:02 UTC
Views: 10646