Содержание статьи
Stable Diffusion — как установить и как пользоваться нейросетью
Где скачать Stable Diffusion
У нас в тестах нейросети участвовали два компьютера. Большая часть изображений сгенерирована с помощью топовой видеокарты Nvidia RTX 4090 с 24 Гб видеопамяти. На генерацию 12 изображений размером 1024х768 уходило от 40 секунд до 2 минут, а увеличение картинки в четыре раза происходило за 3-4 секунды.
Попробуем сделать формат нашего изображения менее квадратным. Ставим ширину изображения (Width) 1024 пикс, а высоту (Height) — 768. Считается, что наилучший результат нейросеть выдает лучший результат при генерации квадратных картинок 512х512 пикселей, так как обучалась именно на таком размере. Если же нужно сделать прямоугольные картинки, рекомендуется делать одну из сторон либо равной 512 пикселей, либо уменьшить или увеличить это значение в два раза, до 256 или 1024 точек соответственно.
Однослойный персептрон (англ. Single-layer perceptron) — перцептрон, каждый S-элемент которого однозначно соответствует одному А-элементу, S-A связи всегда имеют вес 1, а порог любого А-элемента равен 1. Часть однослойного персептрона соответствует модели искусственного нейрона.
Можно вернуться к квадратному формату, а можно попытаться это исправить с помощью поля Negative Prompt, в которое добавим описание того, что не хотим получать в генерации: «deformed, distorted, disfigured, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, mutated hands and fingers, disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation» (деформированный, искаженный, изуродованный, плохо нарисованный, плохая анатомия, неправильная анатомия, лишняя конечность, отсутствующая конечность, искажённые конечности, мутировавшие руки и пальцы, отсоединенные конечности, мутация, мутировавший, уродливый, отвратительный, размытый, ампутация).
Как правило, в большинстве нейронных сетей есть так называемый входной слой, который выполняет только одну задачу — распределение входных сигналов остальным нейронам. Нейроны этого слоя не производят никаких вычислений. В остальном нейронные сети делятся на основные категории, представленные ниже.
Иначе говоря, мы минимизируем суммарное отклонение наших ответов от правильных, но только в неправильную сторону; верный ответ ничего не вносит в функцию ошибки. Умножение на [math]y(x)[/math] здесь нужно для того, чтобы знак произведения всегда получался отрицательным: если правильный ответ −1, значит, перцептрон выдал положительное число (иначе бы ответ был верным), и наоборот. В результате у нас получилась кусочно-линейная функция, дифференцируемая почти везде, а этого вполне достаточно.
Что сейчас мешает нейросетям запомнить все на свете?
Наши котики имеют размер 1024х768 пикс, что не так много. Для инстаграма хватит, а вот на большом мониторе особо не порассматриваешь, да и для печати маловато. Поэтому попробуем увеличить размер изображения. Делается с помощью тех же кнопок справа вверху (наводим мышь на картинку, чтобы кнопки появились).
В начало описания добавили RAW photo— считается, что с таким ключевым словом нейросеть делает более фотореалистичные изображения. Вместо photo of the cat (фотография кота) поставили close-up portrait of the cat (крупный портрет кота). Обратите внимание на скобки вокруг close-up: с их помощью мы даём понять нейросети, что данный параметр для нас очень важен и на него стоит обратить больше внимания. Чем больше скобок, тем больше «вес» этого параметра в промте. Без скобок Stable Diffusion рисовала недостаточно крупных котиков, а вот с тремя скобками котики стали гораздо ближе к камере.
ИИ-исследователи стремятся объединить сильные стороны рекуррентных нейронных сетей и трансформеров. Рекуррентность позволяет сократить требования моделей к объему оперативной памяти во время генерации ответа, а трансформеры обеспечивают высокую степень параллельности вычислений во время обучения, что позволяет эффективно использовать кластеры с видеокартами. Такие модели уже появляются, например ряд state-space моделей (Mamba, RWKV), Griffin и Hawk от Google DeepMind, разрабатываемый нами подход Recurrent Memory Transformer и недавно появившуюся xLSTM от Сеппа Хохрайтера (Sepp Hochreiter), известного автора оригинальной LSTM.
Само обучение нейронной сети можно разделить на два подхода: обучение с учителем [на 28.01.19 не создан] и обучение без учителя [на 28.01.19 не создан] . В первом случае веса меняются так, чтобы ответы сети минимально отличались от уже готовых правильных ответов, а во втором случае сеть самостоятельно классифицирует входные сигналы.
Как видно на рисунке справа, у нейрона есть [math]n[/math] входов [math]x_i[/math] , у каждого из которого есть вес [math]w_i[/math] , на который умножается сигнал, проходящий по связи. После этого взвешенные сигналы [math]x_i \cdot w_i[/math] направляются в сумматор, который аггрегирует все сигналы во взвешенную сумму. Эту сумму также называют [math]net[/math] . Таким образом, [math]net = \sum_^ w_i \cdot x_i = w^T \cdot x[/math] .
Существует немало разных сборок Stable Diffusion, отличающихся друг от друга интерфейсом и степенью сложностей, с которыми придётся столкнуться при установке. Самыми удобным для начинающего пользователя можно считать Easy Stable Diffusion. Скачать сборки можно с github.com: вот ссылка на Easy Stable Diffusion.
См. также
Задача обучения перцептрона — подобрать такие [math]w_0, w_1, w_2, \ldots, w_n[/math] , чтобы [math]sign(\sigma(w_0 + w_1 \cdot x_1 + w_2 \cdot x_2 + \ldots + w_n \cdot x_n))[/math] как можно чаще совпадал с [math]y(x)[/math] — значением в обучающей выборке (здесь [math]\sigma[/math] — функция активации). Для удобства, чтобы не тащить за собой свободный член [math]w_0[/math] , добавим в вектор $x$ лишнюю «виртуальную размерность» и будем считать, что [math]x = (1, x_1, x_2, \ldots, x_n)[/math] . Тогда [math]w_0 + w_1 \cdot x_1 + w_2 \cdot x_2 + \ldots + w_n \cdot x_n[/math] можно заменить на [math]w^T \cdot x[/math] .
Теперь нужно выбрать и скачать модель. У нейросетей для генерации картинок существуют разные модели, натренированные для создания изображений в разных стилях. Например, у Midjourney есть стандартная модель Midjourney v4, более свежая Midjourney v5, создающая более фотореалистичные изображения, и модель niji•journey, генерирующая картинки в стиле аниме и манга.
Неплохая работа с глубиной резкости и боке, реалистичные котики почти без проблем с глазами. Но интерьер и атмосфера получились не такими выразительными, как в Deliberate. В целом, рекомендуем к установке и использованию / Иллюстрация: Алиса Смирнова, Фотосклад.Эксперт
Идею перцептрона предложил нейрофизиолог Фрэнк Розенблатт. Он предложил схему устройства, моделирующего процесс человеческого восприятия, и назвал его «перцептроном» (от латинского perceptio — восприятие). В 1960 году Розенблатт представил первый нейрокомпьютер — «Марк-1», который был способен распознавать некоторые буквы английского алфавита.
После обучения сети, то есть когда сеть выдает корректные результаты для всех входных сигналов из обучающей выборки, ее можно использовать на практике. Однако прежде чем сразу использовать нейронную сеть, обычно производят оценку качества ее работы на так называемой тестовой выборке.
У Stable Diffusion из-за открытого кода моделей гораздо больше: есть модели для имитации разных художественных стилей, для реализма, для аниме и для создания архитектурных эскизов. Мы будем использовать одну из самых популярных универсальных моделей Deliberate 2.0, её можно скачать здесь.
Обращаться к произвольному моменту в прошлом рекуррентные нейросети научились только в 2014 году — благодаря механизму внимания. Затем, в 2017 году было предложено избавиться от рекуррентности и построить архитектуру нейронной сети состоящей только из внимания и полносвязных слоев. Новый тип нейросетей назвали трансформерами — они и легли в основу современных больших языковых моделей с миллиардами параметров, то есть популярных сегодня чат-ботов вроде ChatGPT или GigaChat.
Нажимаем и ждём, пока Stable Diffusion увеличит нашу картинку. На компьютерах со слабой видеокартой возможны ошибки. На нашем подопытном с GTX 960 4 Гб увеличение работает через раз. Но тут ничего не поделаешь: либо пробовать раз за разом, либо менять железо.