Содержание статьи
Как легко и быстро установить нейронную сеть на домашний ПК
Установка нейронной сети
Насколько я понимаю принцип работы, у MJ задействовано сразу множество взаимодействующих моделей, а объединяются они все через некий интерпретатор, который анализирует промт, дополняет его до полноценного сюжета, и модели выбирает-привлекает для отрисовки. В SD же промт сразу едет в модель. Лично мне немного не хватает этой «самодеятельности», которую проявляет MJ.
Помимо полноценных дотренированных чекпойнтов, известны и другие методы обучения генеративной модели text2image определённой стилистике или рисованию новых объектов, не входивших в первичную тренировочную базу. Один из таких методов — LoRA (low-rank adaptation of large language models, низкоуровневая адаптация LLM), что подразумевает внедрение дополнительных обучаемых нейронных слоёв в уже готовые (натренированные в ходе создания базовой модели) блоки трансформеров. Как это реализуется математически — для нас в данном случае принципиального значения не имеет; важно понимать, как этим пользоваться.
Чтобы загрузить эту модель, следует перейти на вкладку Files в веб-интерфейсе её странички на репозитории, чуть прокрутить вниз — и нажать на не самую приметную стрелочку с подчёркиванием, стоящую справа от букв «LFS» в строке, что начинается с «v-1-5-pruned-emaonly.safetensor». Как только при наведении на стрелочку всплывёт окошко с мелкой надписью «Download file» — можно нажимать и запасаться терпением: файл занимает несколько гигабайтов.
Как сообщает официальная документация, «модуль pickle имплементирует двоичные протоколы для сериализации и десериализации структуры объектов Python», т. е. устанавливает связи между различными объектами. В частности — позволяет при определённых условиях запускать сторонний код, написанный на Python, в том числе содержащий инструкции прямого исполнения — вроде eval или exec. Вот почему в среде энтузиастов машинного обучения в применении к моделям с открытым кодом всё большее распространение получает простейший формат сериализации .safetensors — безопасный, обеспечивающий ускоренную загрузку весов модели в память и более быстрое получение результата на системах с несколькими графическими процессорами.
А можно ли генерировать изображения со Stable Diffusion вообще в отсутствие подходящего ПК под рукой? Да, разумеется! Онлайн совершенно бесплатно (а порой, хотя бы в ограниченных пределах, и анонимно, т. е. без требования непременной предварительной регистрации) доступен целый ряд действующих инсталляций: Stable Diffusion Playground, mage.space, Stable Diffusion Online, Dezgo и ещё множество, обнаружить которые через любой поисковик не составит труда (едва ли не единственная отечественная разработка среди них — модель Kandinsky 2.1). Понятно, что на пользователя, в особенности не имеющего возможности заплатить за визуализацию своих текстовых описаний, такие сайты накладывают немало ограничений: это и скудость выбора параметров генерации, и невозможность совершенствовать полученную базовую картинку, и кое-где даже принудительное наложение метки сайта (watermark) на готовое изображение. Кроме того, очереди на бесплатную генерацию на популярных сайтах могут быть довольно длинными. Но если очень-очень надо получить хоть какой-то визуальный образ на основе возникшего в голове сочетания слов, доступные онлайн модели — неплохое начало.
Бесспорно, лучше прочих из сравнительно широко доступных видеокарт для машинного преобразования текста в картинки подойдут новейшие NVIDIA RTX 4080 и 4090, в первую очередь по причине внушительного объёма их VRAM — 16 и 24 Гбайт соответственно. Объём ОЗУ компьютера и производительность его ЦП принципиального значения не имеют, но лучше всё-таки ориентироваться на 8 Гбайт DRAM как минимум и хотя бы на четырёхъядерный процессор — такое «железо» позволит быстрее производить служебные вычисления, необходимые для подготовки к собственно генерации изображений.
⇡#Как художник художнику
Так вот, на финальном шаге CLIP должна передать диффузионной модели достаточно подробные указания (в виде набора токенов), какая именно картинка должна скрываться в очередном заполненном «белым шумом» прямоугольнике. И чем лучше система натренирована на сравнительно узком наборе изображений — а как раз этим нередко страдают «авторские» чекпойнты, — тем более однотипные картинки она станет выдавать при различных затравках (seed). Что, собственно, хорошо иллюстрирует только что полученная нами галерея практически паспортных фотокарточек квазистимпанковских роботов. Да, каждая из них детально проработана, но именно все разом они явно демонстрируют некую перетренированность используемой диффузионной модели.
Чего ради стоит возиться с чекпойнтами, мы покажем на примере одной из наиболее популярных сегодня доработок Stable Diffusion 1.5 под названием Deliberate v.2. Загрузить этот файл в формате .safetensors логичнее всего со страницы данного проекта на уже знакомом нам репозитории Hugging Face, после чего надо поместить дотренированную модель в ту же папку, где уже находится базовая, — model.safetensors. На сей раз переименовывать ничего не требуется.
А если вовсе отказаться от двух последних строк в поле позитивной подсказки? Пожалуй, это отсутствие заёмного стиля — само по себе стиль оригинальной Stable Diffusion 1.5 при работе с довольно развёрнутым текстовым вводом: несколько сумбурный, зато высокодетализированный.
Stable Diffusion UI — это простая и удобная оболочка с открытым исходным кодом для нейронной сети Stable Diffusion. Программа всего за два клика бесплатно выполнит установку всех необходимых зависимостей, требуемых для запуска и работы нейронной сети, а также благодаря понятному веб-интерфейсу позволит даже самым зелёным пользователям создавать настоящие шедевры.
Можно и даже нужно: вся прелесть ИИ-преобразования текста в картинки заключается как раз не в самом рисовании роботом неких образов по заданной подсказке, а в том, насколько разнообразными и порой неожиданными могут быть плоды его трудов — в зависимости от приложенных оператором мыслительных усилий. Для начала задействуем поле Negative prompt, вписав туда то, чего не хочется видеть в итоговой картинке, а именно — low quality. Далее нажмём на зелёный треугольник из стрелочек, напоминающий условное обозначение вторичной переработки: это позволит зафиксировать случайно подобранную системой затравку (seed; в данном случае — 3423357652) для последующих генераций, что сделает оценку влияния вводимых нами параметров на итоговую картинку более наглядным.
Добавим определённости в то, какими именно нам хочется видеть изображаемых роботов. В позитивные подсказки вместо просто «robot» напишем «fighting robot, shiny steel», а в негативные — один из стандартных нежелательных наборов контекстуальных терминов (undesired content 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». Гораздо интереснее, не правда ли?
Ещё один момент: в окне «Configuring the terminal emulator to use with Git Bash» из предлагаемых опций лучше выбрать MiniTTY. Это не принципиальный вопрос, и консольное окно Windows по умолчанию тут вполне сгодится, — но из соображений лучшей совместимости (с Unicode-шрифтами прежде всего) MiniTTY всё-таки предпочтительнее.
В целом результат очень хорош, проработка деталей фантастическая, но какими-то эти роботы враз стали… статичными, что ли. И резко однотипными. Однако и с этой напастью ИИ-энтузиасты научились бороться, применяя такое сильнейшее шаманство, как clip skip. Сейчас поясним, что это значит.