Примочки для Stable Diffusion
Расширяем возможности WebUI reForge, чтобы повысить комфорт и качество
WebUI reForge dev
Интерфейс reForge — это форк WebUI Forge, который, в свою очередь, является форком WebUI AUTOMATIC1111, уже, возможно, знакомого тебе по статьям «ReForge. Улучшаем картинки, генерируемые Stable Diffusion» и «Семплеры и шедулеры. Разбираем два важных механизма улучшения генеративных картинок». В первой я рассказывал об установке продукта на компьютер и начале работы, во второй описаны разные семплеры и шедулеры.
Сегодня же мы будем говорить о расширениях (extensions) — как уже встроенных в продукт, так и сторонних. Но прежде, чем приступить к исследованию, мы обновим нашу копию веб‑интерфейса reForge до свежей сборки и переключимся на ветку «для разработчиков», что откроет доступ к некоторым вещам, недоступным пользователям стабильной сборки.
На странице проекта перечислены ветки main, dev, dev2 и experimental; если ты видишь какие‑то другие ветки, значит, автор проекта Panchovix затеял очередное переименование. По задумке разработчика, основная ветка main должна быть максимально стабильной и совместимой; в нее входят обновления из A1111 (в частности, новые семплеры и шедулеры), в ней же сделаны патчи для одновременной загрузки нескольких моделей.
В эту ветку не входят свежие обновления движка Comfy; чтобы получить к ним доступ, нужно переключиться на ветку dev, в которой есть все из main плюс выборочные обновления и функции из Comfy.
В теории эта ветка работает быстрее основной, однако можно добиться реального прироста производительности, обновив вручную torch до версии torch-2.5.1+cu12 и torchvision до версии torchvision-0.20.1+cu124. Обновления лучше брать с сайта проекта или сразу качать wheel с соответствующими именами файлов. Надеюсь, с установкой в папку stable-diffusion-webui-reForge\
и чисткой «хвостов» старых версий ты разберешься.
Установка reForge dev с нуля
Для начала установи Python версии 3.12 (да, это старая версия Python; нет, 3.13 ставить не стоит, часть расширений не заведется) и Git, а также убедись, что они добавлены в переменную PATH. Python можно взять с официального сайта.
Самым правильным способом установки reForge dev будет установка «с нуля» в новую папку, например stable-diffusion-webui-reForge
или stable-diffusion-webui-reForge-dev
. Разработчик неоднократно переименовывал файлы, выносил встроенные расширения «наружу» и совершал обратные операции, в результате чего образовалось множество «хвостов» в виде «зависших» папок __pycache__
, из‑за которых образовались конфликты между остатками расширений.
Разработчик рекомендует для этого такую последовательность команд:
git clone https://github.com/Panchovix/stable-diffusion-webui-reForge.git
cd stable-diffusion-webui-reForge
git checkout dev
Внимание: установив свежую сборку reForge, пока не запускай продукт! Для начала отредактируй файл environment.
и включи venv:
set SKIP_VENV=0
Эта переменная указывает, что нужно создать изолированное окружение для конкретной сборки reForge. Это позволяет избежать конфликтов в установленных пакетах и зависимостях.
В файле webui\
можно указать еще и ряд переменных, способных увеличить производительность, изменить пути к моделям и включить темную тему интерфейса. Перечислю основные — они указываются в строку, ее можно просто вставить в файл webui-user.
; использовать их, разумеется, не обязательно — параметр COMMANDLINE_ARGS
можно оставить пустым.
set COMMANDLINE_ARGS=--vae-in-bf16 --pin-shared-memory --cuda-malloc --cuda-stream --theme dark
Все параметры, кроме --theme
, который активирует темную тему, относятся к повышению производительности; если твоя видеокарта несовместима с какими‑либо из этих параметров, не используй их. Узнать, поддерживаются ли они, можно только после полной установки и первого запуска reForge; если при запуске в терминале выводятся подобные строки, то их имеет смысл попробовать:
Hint: your device supports --pin-shared-memory for potential speed improvements, but may cause issues.
Hint: your device supports --cuda-malloc for potential speed improvements.
Hint: your device supports --cuda-stream for potential speed improvements, but may cause some issues.
Пути к моделям
Базовые модели, а также всевозможные лоры и текстовые инверсии удобно хранить отдельно от основной установки WebUI, в том числе на другом диске. К примеру, можно указать следующие пути:
set COMMANDLINE_ARGS=%COMMANDLINE_ARGS%^
--models-dir "%CD:~0,2%/models/"
С такими настройками модели (как базовые, так и те, которые хранятся по умолчанию в папке \
) должны будут находиться в папке /
того же диска, куда установлен reForge. Соответственно, если ты решишь использовать такую схему, тебе нужно будет перенести всю папку моделей в корень диска:
\stable-diffusion-webui-reForge\models → \models
Также стоит сразу скачать в папку \
какую‑нибудь модель SDXL — например, gtmUltimateBlendXL_v25CosXL, с которой мы будем экспериментировать дальше. Если ты этого не сделаешь, то одна из моделей для начала работы будет скачана автоматически.
Раньше это была реалистичная модель с архитектурой SD1.5:
realisticVisionV51_v51VAE.safetensors
С недавних пор разработчик reForge заменил модель, и теперь по умолчанию будет скачана модель NoobAI 1.1 EPS, а именно файл NoobAI-XL-v1.1.safetensors. Обрати внимание: эта модель имеет мало общего с обычными моделями SDXL; она умеет генерировать только аниме‑изображения, причем запрос нужно составлять из тегов Danbooru. Короче говоря, выбери и скачай в нужную папку более универсальную модель.
Примеры моделей:
- AlbedoBase XL — удачная универсальная модель с максимально широким покрытием имеющихся в рамках SDXL концепций.
- CyberRealistic — еще одна качественная, отлично сбалансированная модель с уклоном в реализм.
- KIKA_real — интересная модель с уклоном в креативность.
- Zaxious_XL — еще одна модель с уклоном в креативность.
- GTM UltimateBlend_XL — модель класса CosXL; серьезно отличается от любых других моделей; несовместима с RAUNet, но способна выдавать качественный результат.
Для генерации изображений в стиле аниме на сегодняшний день лучше всего использовать одну из моделей на основе Illustrious. Модели семейства v-pred имеют ряд особенностей, и к ним неприменимы некоторые из описанных ниже приемов.
Полностью сформированный файл webui-user.
может выглядеть приблизительно следующим образом:
@echo off
set PYTHON=set GIT=set VENV_DIR=set COMMANDLINE_ARGS=--vae-in-bf16 --pin-shared-memory --cuda-malloc --cuda-stream --theme dark
set COMMANDLINE_ARGS=%COMMANDLINE_ARGS%\^--models-dir "%CD:\~0,2%/models/"call webui.bat
Далее запусти файл webui-user.
и дождись установки всех пакетов. Если в процессе возникнет ошибка «python.exe: no module named pip», тебе нужно будет зайти в папку, в которой у тебя установлен Python и выполнить следующую команду:
python -m ensurepip
После этого будут скачаны и установлены зависимости (около 6,5 Гбайт) и программа наконец запустится.
Обновление существующей сборки
Если у тебя уже установлена стабильная сборка main, ты можешь попробовать переключиться на ветку dev, открыв командную строку в папке stable-diffusion-webui-reForge\
последовательностью команд:
git switch dev
git pull
Если последовательность не сработает, есть и другой способ, описанный на странице проекта:
git remote add reForge https://github.com/Panchovix/stable-diffusion-webui-reForge
git branch Panchovix/dev
git checkout Panchovix/dev
git fetch reForge
git branch -u reForge/dev
git stash
git pull
Начало работы: раскладываем расширения по полочкам
Итак, WebUI reForge установлен. При первом запуске все расширения (13 из них предустановлены) расположены сверху вниз.

Когда раскрываешь настройки расширений, пользоваться интерфейсом становится сложновато из‑за необходимости все время прокручивать туда‑обратно. Поэтому первым расширением, которое я устанавливаю в reForge, становится SD Webui Tabs Extension. Поставить его можно либо из вкладки Extensions → Install from URL, либо из командной строки, тогда установка должна выполняться в следующей папке:
stable-diffusion-webui-reForge-dev\webui\extensions
Я предпочитаю второй способ, так как он позволяет автоматизировать установку всех нужных расширений.
Итак, заходим в папку stable-diffusion-webui-reForge-dev\
и выполняем следующую команду:
git clone https://github.com/Haoming02/sd-webui-tabs-extension
После установки плагина и перезагрузки WebUI reForge (это можно сделать прямо из раздела настроек) расширения будут организованы в виде вкладок, пользоваться которыми проще и удобнее.

Если тебе не нравится цветовая гамма вкладок, то в настройках Settings → User Interface → Tabs Extension ее можно поменять на один из цветов стандарта CSS Colors. Не забудь после этого перезапустить интерфейс командой Reload UI.
Расширения-улучшения
В эту категорию входят расширения, которые дополняют и улучшают пользовательский интерфейс, позволяют организовать очередь задач или генерировать текстовые запросы по шаблону.
Быстрый выбор соотношения сторон
В Stable Diffusion поддерживается ограниченное количество стандартных разрешений, а нестандартные должны быть кратными 64. Запомнить все возможные разрешения тяжело — да и не нужно, ведь их можно вывести в пользовательский интерфейс одним из расширений.
Подобных расширений создано множество в силу востребованности и простоты. Рекомендую попробовать одно из двух следующих (выбери что‑то одно, между собой подобные расширения могут конфликтовать):
git clone https://github.com/altoiddealer/--sd-webui-ar-plusplus
или
git clone https://github.com/alemelis/sd-webui-ar
После установки и перезапуска интерфейса сразу под строкой Seed появится ряд кнопок для выбора соотношения сторон. Верхний ряд пересчитывает корректное соотношение, исходя из текущих размеров картинки, нижний — устанавливает одно из стандартных разрешений SDXL.

Поменять местами высоту и ширину картинки можно при помощи иконки справа от цифр разрешения.

Сохранение конфигурации
В настройках WebUI можно сохранить только одну конфигурацию «по умолчанию», которая будет восстанавливаться при запуске приложения. Для этого нужно найти вкладку Defaults в самом низу настроек Settings, после чего нажать View changes и Apply.
Текущая конфигурация, включая базовые настройки и настройки расширений, будет сохранена в файл webui\
. Удобно, но провернуть это можно только для одного набора настроек. А что делать, если ты подобрал оптимальные настройки для разных типов изображений или разных моделей и хочешь быстро переключаться между ними?
Для этого существуют расширения, сохраняющие текущий конфиг. Ни одно из них не совершенно; я не смог найти ни одного варианта, который сохранял бы действительно все настройки, включая настройки расширений. Один из компромиссных — расширение Config Presets:
git clone https://github.com/Zyin055/Config-Presets
После его установки (и перезапуска WebUI) снизу от области превью появится дополнительная панель с пресетами.

При сохранении пресета ты сможешь выбрать, какие поля сохранять. Если нужного поля в списке нет, то добавить его можно лишь ручным редактированием файла настроек плагина.
Очередь задач
Процесс генерации изображений может занять длительное время, особенно в случаях, когда генерируется сразу серия картинок. По умолчанию WebUI поддерживает только одну задачу и последовательно генерирует картинки с одним и тем же запросом, настройками и моделью; увеличивается лишь значение seed. Организовать очередь настроек можно расширением Agent Scheduler. Оно — единственное в своем роде; никаких альтернатив для него в рамках WebUI не существует.
git clone https://github.com/ArtVentureX/sd-webui-agent-scheduler
После установки (с этого момента я перестану напоминать о необходимости перезапуска WebUI) сразу под кнопкой Generate появится дополнительная кнопка Schedule и окно выбора модели.

Обрати внимание: можно как добавить в очередь текущую задачу, так и выбрать одну или несколько других моделей. Эта возможность очень полезна, если ты хочешь сравнить результат работы нескольких разных моделей с одними настройками и запросом; тогда ты можешь выбрать целую папку с моделями и создать очередь задач, в которой твой запрос (со всеми настройками) будет обработан последовательно каждой моделью из папки. А если ты еще и зафиксируешь значение Seed, то можно будет провести прямое сравнение моделей.
Управлять очередью задач можно из вкладки Agent Scheduler. При желании можно на лету редактировать текст запроса, менять выбранную модель и параметр CFG.

Превью моделей
Хочешь вот такое превью с картинками моделей?

Ставь расширение Civitai Helper:
git clone https://github.com/zixaphir/Stable-Diffusion-Webui-Civitai-Helper
После перезапуска WebUI в интерфейсе появится вкладка Civitai Helper. Зайди на нее, нажми Scan и подожди, пока плагин подсчитает контрольные суммы установленных у тебя моделей и вытащит с Civitai превью. Это удобно и работает даже для переименованных файлов — но не срабатывает для моделей, скачанных с других ресурсов, если их авторы не разместили их на Civitai. Для таких моделей можно просто положить рядом с файлом <
превью с именем <
(или jpg
).
Теги Danbooru для аниме-моделей
Самые популярные базовые модели для генерации изображений в стиле аниме (к ним относятся модели семейств Pony и Illustrious, а также модели на основе Animagine) обучены на картинках с разнообразных ресурсов booru (имиджборды с поддержкой тегов). В частности, многие разработчики использовали для обучения базу данных Danbooru 2023 и ее актуальные дополнения.
Все изображения из подобных наборов описываются стандартными тегами. В стандартные теги входят имена художников, изобразительные стили, персонажи, сеттинги, особенности композиции, объекты, действия и многое другое. Чем точнее твой запрос следует синтаксису, тем больше шансов получить желаемое — и наоборот. Разумеется, запомнить все теги невозможно — и не нужно. Вместо этого нужно поставить расширение Tag Autocomplete:
git clone https://github.com/DominikDoom/a1111-sd-webui-tagcomplete.git
Теперь при вводе текстового запроса будут появляться всплывающие подсказки, предлагающие варианты на основе предустановленного списка тегов.
Плагин может использовать как предустановленные списки тегов (по умолчанию — Danbooru), так и разнообразные альтернативные списки (например, e621). Все они хранятся в виде текстовых файлов; их можно создавать и редактировать.

В качестве бонуса расширение устанавливает скрипт, который упростит использование лор, автоматически добавляя слова‑активаторы и выводя список лор после того, как ты напечатаешь открывающую угловую скобку <
.
Динамические запросы
Иногда хочется проверить, как модель отрисует изображение по запросу с незначительными вариациями, например — как будет выглядеть изображение, выполненное в стилистике разных художников. Для этого тоже есть расширение — Dynamic Prompts:
git clone https://github.com/adieyal/sd-dynamic-prompts.git
После его установки ты сможешь перечислять варианты в скобках или выбирать случайный вариант из текстового файла. Например, __artists__
выберет случайную строку из файла artists.
, сохраненного в папке webui\
или одном из подкаталогов (когда ты введешь двойное подчеркивание, список доступных шаблонов появится в выпадающем окне).
У расширения достаточно мощный синтаксис. Например, можно выбрать двух случайных художников из файла artist.
:
{2$$__artist__}
Можно — случайным образом от одного до трех:
{1-3$$artist1|artist2|artist3}
Можно выбирать случайно, но первый художник будет выпадать вдвое чаще:
{2::artist1|artist2}
Можно использовать переменные и шаблоны в формате Jinja2. Наконец, доступен режим PromptMagic, в котором облегченные языковые модели используются для дополнения запроса релевантными с точки зрения этих моделей ключевыми словами.
Детализация рук и лиц
Известная проблема Stable Diffusion — искажения в мелких деталях, таких как пальцы рук и черты лица. Появляются эти искажения из‑за того, что система изначально генерирует изображение в невысоком разрешении и лишь вторым проходом повышает разрешение исходной картинки до желаемого.
Увеличением параметра Denoising strength в настройках hires.
можно до некоторой степени исправить огрехи, однако с определенных значений (зависящих от комбинации множества параметров, включая настройки CFG, семплера и шедулера) он начинает вносить собственные артефакты.
Чтобы обойти эту проблему, были созданы алгоритмы, позволяющие автоматически выделять части изображения и исправлять их на этапе постобработки. Работают они следующим образом. После того как генерация картинки (включая второй проход) завершилась, изображение передается тому или иному расширению (ADetailer, uDDetailer или подобному).
Расширение использует модель (или по очереди несколько моделей), которая распознает заданную часть изображения и выделяет ее в виде сегмента. Далее этот сегмент генерируется заново в максимальном для модели разрешении, после чего масштабируется и аккуратно вставляется обратно в общую картинку. При правильных настройках результат выглядит естественно.
Основные расширения этого типа — ADetailer и uDDetailer (в названии второго присутствует литера мю, которая время от времени успешно ломает Gradio). Их можно устанавливать и использовать как по отдельности, так и вместе — расширения не конфликтуют.
git clone https://github.com/Bing-su/adetailer.git
git clone https://github.com/wkpark/uddetailer
ADetailer в целом несколько мощнее; он поддерживает больше настроек, позволяет использовать произвольное количество моделей для перерисовки (например, можно сделать последовательную детализацию всей головы, а потом отдельно лица и глаз). Поддерживает сохранение конфигурации через Settings → Defaults.
uDDetailer позволяет последовательно использовать только две модели, но в дополнение к стандартным файлам .pt поддерживает и формат .onnx. Кроме того, здесь есть возможность загрузить любую картинку и обработать ее. В ADetailer такая возможность присутствует только на вкладке img2img.
В обоих расширениях множество настроек.

К слову, модели для распознавания объектов можно как использовать предустановленные, так и скачивать, к примеру, с сайта Civitai, Hugging Face или с GitHub.


Рекомендую сразу зайти в настройки Settings → ADetailer и указать в параметре Extra paths to scan adetailer models дополнительный путь к папке с моделями, например \
.
Похожим образом работает и uDDetailer.
Улучшайзеры
Эта категория расширений предназначена для улучшения качества сгенерированных изображений. Сюда входят расширения, дополняющие или изменяющие работу механизма Self-Attention, метод, модифицирующий процесс генерации, а также несколько разных способов избежать «выгорания» картинки при использовании высоких значений CFG.
Механизм внутреннего внимания
В этом разделе мы поговорим о расширениях, направленных на улучшение качества мелких деталей и взаимосвязей между элементами изображения. Таких расширений несколько; некоторые из них конфликтуют, но другие прекрасно дополняют друг друга. Какие‑то методы предустановлены в reForge (это sd_forge_freeu, sd_forge_sag), остальные доступны в расширении sd-perturbed-attention:
git clone https://github.com/pamparamm/sd-perturbed-attention.git
Механизм внутреннего внимания нейросетей, или механизм Self-Attention, — это набор алгоритмов для анализа взаимосвязей между различными частями данных. Механизм внутреннего внимания позволяет модели учитывать контекст элементов изображения, даже если они находятся далеко друг от друга, что помогает в создании реалистичных теней и правдоподобных визуальных эффектов.
Механизм Self-Attention встроен в SDXL, но его работа несовершенна, особенно если речь идет о создании изображений со множеством мелких деталей. Его архитектура — компромисс между качеством и производительностью. Расширения позволяют вмешиваться в работу этого механизма на разных уровнях и обходить некоторые ограничения, в итоге повысив качество изображения за счет снижения скорости.
В reForge доступны следующие расширения: Self-Attention Guidance, Perturbed Attention Guidance, Smoothed Energy Guidance и Sliding Window Guidance. Кратко их работу можно описать таким образом.
- Self-Attention Guidance усиливает акцент на значимых областях изображения, помогая модели фокусироваться на важных деталях, например на лицах или — опять! — руках.
- Perturbed Attention Guidance добавляет в механизм внимания небольшие возмущения, что должно увеличить вариабельность результатов и устранить артефакты.
- Smoothed Energy Guidance, наоборот, сглаживает процесс внимания, устраняя возмущения, что делает изображение более сбалансированным и, опять же, устраняет артефакты.
- Sliding Window Guidance разделяет изображение на небольшие области (окна) и применяет механизм внутреннего внимания локально, улучшая детали без потери глобальной согласованности. Этот метод — единственный, который не оказывает влияния на контраст и насыщенность изображения.
У этих расширений есть и обратная сторона: они потребляют дополнительные ресурсы, и, следовательно, скорость генерации падает на 25–30%. Кроме того, большинство расширений Self-Attention (кроме SWG) демонстрируют визуальный эффект, аналогичный эффекту от повышения CFG, — рост контраста и насыщенности изображения. Впрочем, в настройках плагинов сразу представлен вариант решения — ползунок Rescale, аналогичный механизму RescaleCFG и позволяющий купировать эффект выгорания.
Какой механизм выбрать? И не стоит ли включить сразу все? Здесь открывается широкая область для экспериментов. Рекомендую начать с SEG и SWG.
Бесплатный ланч
Расширение FreeU уже встроено в reForge. Не будем подробно описывать его параметры — благо их всего четыре, а названия говорят сами за себя: B1, B2, S1 и S2. В теории проект FreeU (Free Lunch in Diffusion U-Net) отличается тем, что не фокусируется только на Self-Attention. Вместо этого он оптимизирует архитектуру U-Net, используемую в диффузионных моделях, чтобы лучше обрабатывать данные на этапе генерации. FreeU устраняет «шумы» в промежуточных слоях U-Net, что улучшает резкость и качество изображений без значительных вычислительных затрат (потому, собственно, «ланч» и назвали бесплатным).
Авторы проекта решили использовать потенциал архитектуры U-Net для улучшения качества картинки. По мнению разработчиков, основная часть U-Net отвечает за шумоподавление, а пропуски (skip connections) добавляют мелкие детали, но иногда мешают учитывать общий смысл изображения. На основе этой теории они разработали метод FreeU, который должен улучшить качество генерации, просто перенастраивая баланс между вкладом основной части и пропусков U-Net. Метод легко интегрируется в существующие модели, требуя настройки всего двух пар параметров.

Это была теория. На практике же механизм FreeU не стал особо популярным в силу своей капризности. Для каждой модели, каждого набора параметров генерации и даже для разных стилей (реалистичного или аниме) нужно подбирать свои значения параметров B1, B2, S1 и S2, и значения эти могут сильно отличаться.
В reForge установлен некий усредненный набор параметров, который как‑то влияет на генерацию (картинки, полученные с FreeU и без него, отличаются), но я не могу с уверенностью сказать, что всегда в лучшую сторону. Впрочем, «ланч» действительно «бесплатный» — на скорость генерации использование FreeU не влияет, так почему бы не попробовать?
Кстати, даже на демонстрационных изображениях видно, что FreeU повышает контраст и насыщенность изображения. Дефолтные настройки в reForge подобраны так, чтобы избежать этого эффекта, но он все равно проявляется в некоторых изображениях.
Выводы
Я попытался описать здесь лишь самые полезные плагины для reForge и подробно остановился на их настройке и особенностях работы. Однако многообразие примочек, конечно, намного больше, и если у тебя есть время на эксперименты, то ты наверняка найдешь что‑то интересное. Не забудь поделиться находками в комментариях!
В следующей статье мы с тобой попробуем поэкспериментировать и покрутить такие настройки Stable Diffusion XL, которые, по мнению разработчиков, крутить не следует, и посмотрим, что из этого выйдет.