Refiner
refiner — специализированная модель для позднего этапа генерации
Refiner — отдельная модель или стадия, которая принимает промежуточный результат base и дорабатывает его в позднем диапазоне denoising. Такой этап может уточнять детали, но не является обязательным, универсальным улучшателем или upscaler.
Коротко
Refiner — второй специалист в многостадийной генерации. Base выполняет раннюю часть работы, а refiner принимает совместимое промежуточное состояние и продолжает denoising в более позднем диапазоне шума.
На инфографике обе фотопластины имеют одинаковый размер и показывают одного самоеда в той же позе. Левая уже содержит сцену и композицию, но мелкие фактуры ещё мягкие. Правая сохраняет структуру и уточняет шерсть, снег и отражения. Между ними передаётся тот же latent, а не увеличенная картинка.
Формула «base строит композицию, refiner рисует детали» полезна для первого знакомства, но остаётся упрощением. Ранняя модель уже создаёт детали, а поздняя способна менять не только резкость, но и форму, стиль и содержание.
Откуда взялась идея нескольких denoiser
Диффузионная модель решает разные задачи на разных уровнях шума. В начале, когда сигнал слабый, особенно важны общая структура и соответствие условию. Ближе к чистому изображению возрастает роль локальных границ и высокочастотных деталей.
Вместо одной сети для всего диапазона можно использовать несколько экспертов. Работа eDiff-I описывает ensemble of expert denoisers: специализированные модели отвечают за разные участки итеративного процесса.
Широко известный пример — архитектура из технического отчёта SDXL. Помимо base, авторы обучили отдельную latent diffusion model на качественных данных и применяли её для refinement. Но слово refiner не принадлежит одной архитектуре: так можно назвать похожую вторую стадию и в другом pipeline, если она действительно обучена или настроена на доработку результата.
Два способа передать работу
Под одним названием часто скрываются две близкие, но не одинаковые схемы.
Прямое переключение по уровню шума
Base начинает с шумного состояния и останавливается до завершения denoising. Промежуточный latent передаётся refiner, который продолжает с согласованного timestep или sigma.
шум → base → промежуточный latent → refiner → готовый latent → VAE decode
В этом варианте два denoiser образуют одну непрерывную траекторию. Граница особенно важна: конец base и начало refiner должны описывать один и тот же уровень шума.
Отдельный img2img-подобный проход
Base может сначала завершить изображение. Затем результат снова частично зашумляется и проходит через refiner как новая стадия редактирования.
base → готовый результат → частичное зашумление → refiner → новый результат
Здесь уже появляется отдельная сила изменения. Чем больше шума возвращается, тем свободнее refiner может перестроить исходную сцену. Такая схема ближе к SDEdit/img2img и не эквивалентна прямому handoff между экспертами.
Что означает «совпасть по уровню шума»
Если base остановился в точке t, refiner должен получить состояние, соответствующее той же точке в своей шкале. Одинаковый процент в интерфейсе ещё не гарантирует совпадение: реализации могут по-разному считать timesteps, spacing и конечные точки.
Для корректной передачи согласуются:
- noise schedule и выбранные timesteps или sigmas;
- prediction type модели;
- направление и границы последовательности;
- latent scaling и представление VAE;
- shape и разрешение latent;
- conditioning, которое ожидает вторая модель.
В API Diffusers непрерывная связка base/refiner задаётся парой границ denoising_end и denoising_start; документация SDXL показывает передачу latent без промежуточного декодирования. Конкретные имена параметров могут меняться, но принцип совпадающей границы остаётся.
Почему произвольный checkpoint не становится refiner
Две модели могут принимать latent одинаковой формы и всё равно быть плохой парой. Refiner должен понимать распределение промежуточных состояний, которые создаёт base, и корректно работать в переданном диапазоне шума.
Совместимость включает не только архитектуру, но и:
- способ обучения на поздних состояниях;
- tokenizer и text encoder;
- дополнительные условия и embeddings;
- VAE и масштаб latent;
- scheduler config;
- ожидаемую параметризацию прогноза.
Обычная text-to-image модель, поставленная на последние шаги, может что-то изменить, но это ещё не делает её специализированным refiner. Результат способен сдвинуть палитру, лицо, стиль и смысл prompt.
Refiner не равен upscaler
Upscaler увеличивает пространственное разрешение. Refiner дорабатывает состояние на определённом этапе генерации. Он может работать с latent того же размера, как две одинаковые фотопластины на инфографике.
Pipeline вправе объединить оба действия: сначала увеличить latent или изображение, затем провести дополнительный denoising. Но тогда присутствуют две операции:
- изменение размера;
- refinement содержания.
Их полезно оценивать отдельно. Иначе улучшение от большей сетки легко приписать второй модели, а изменение стиля — алгоритму увеличения.
Не то же самое, что восстановление лица
Face restoration обычно работает после генерации с уже декодированным изображением и специализировано на найденных лицах. Refiner продолжает generative/denoising-процесс и может менять всю сцену.
От обычного второго прохода той же base-моделью refiner отличается специализацией. Повторный img2img способен добавлять детали, но в нём используется прежний denoiser; отдельный refiner обучен или настроен на другую часть задачи.
Что refiner способен изменить
В удачной связке он может улучшить:
- локальные текстуры;
- тонкие границы;
- материал ткани, шерсти или кожи;
- мелкие световые переходы;
- согласованность деталей на позднем этапе.
Но возможны и нежелательные изменения:
- потеря естественной фактуры;
- другое лицо или выражение;
- сдвиг цвета и контраста;
- ослабление prompt adherence;
- появление артефактов из-за несовместимой границы;
- стилистический конфликт между стадиями.
Поэтому слово refiner не обещает автоматического улучшения. Оно описывает роль в pipeline.
Как сравнивать base и refiner
Содержательное сравнение сохраняет одинаковыми prompt, seed, размер, VAE и общую noise-траекторию. Затем рассматриваются как минимум два результата:
- base, корректно доведённый до конца самостоятельно;
- согласованная связка base + refiner.
Нельзя сравнивать незавершённый шумный latent base с готовым изображением refiner и заключать, что второй «качественнее»: первая сторона просто не прошла последние шаги.
Полезна небольшая сетка разных сюжетов. Модель, которая удачно прорабатывает шерсть, может менять лица или текст. Несколько seed показывают устойчивость эффекта.
Prompt и conditioning второй стадии
Refiner может получать тот же prompt, отдельный prompt или уже рассчитанные embeddings. Выбор зависит от архитектуры. Новый текст способен направить позднюю стадию, но чем больше свободы получает refiner, тем выше риск изменить содержание, а не только детали.
Дополнительные адаптеры тоже должны подключаться осознанно. LoRA, обученная для base denoiser, не обязана подходить refiner с другими слоями. То же относится к ControlNet-подобным условиям и embeddings разных текстовых энкодеров.
Цена второй модели
Отдельный refiner добавляет вычисления и хранение весов. Однако фиксированное число гигабайт или процентов времени быстро устаревает: runtime может держать обе модели в памяти, выгружать их по очереди, использовать quantization или разделять компоненты.
Практический выбор строится вокруг трёх величин:
- насколько стабильно улучшается целевая проверочная сетка;
- сколько дополнительных вычислений требуется;
- усложняет ли вторая стадия воспроизводимость и поддержку workflow.
Если base уже даёт нужный результат, отсутствие refiner не является неполным pipeline.
Частые вопросы
Refiner нужен каждой diffusion-модели?
Нет. Это архитектурное или workflow-решение. Многие модели рассчитаны на один denoiser во всём диапазоне шума.
Refiner исправит плохую композицию base?
Иногда поздняя стадия меняет структуру, особенно при сильном повторном зашумлении. Но специализированный low-noise refiner обычно получает уже сложившуюся сцену. Отсутствующий объект или грубую ошибку надёжнее исправлять раньше или отдельным редактированием.
Нужно ли передавать изображение или latent?
Прямой ensemble обычно передаёт latent. Отдельный refinement-проход может начинаться с изображения, которое снова кодируется и зашумляется. Ответ определяется pipeline.
Должен ли refiner использовать тот же prompt?
Не обязательно, но одинаковое условие снижает риск смыслового сдвига. Другой prompt превращает позднюю стадию в более выраженное редактирование.
Чем refiner отличается от hires-прохода?
Hires-проход включает увеличение размера. Refiner обозначает специализацию модели или стадии. Они могут использоваться вместе, но не являются синонимами.
Главное
Refiner — второй специалист, который продолжает или повторно запускает denoising на позднем участке. Он полезен, когда совместим с base и стабильно улучшает нужные детали.
Ключевые проверки — совпадение уровня шума, latent-представления и conditioning. Refiner не обязан увеличивать разрешение и не считается обязательным завершением любой генерации.