Refiner

refiner — специализированная модель для позднего этапа генерации

Раздел
Генеративные модели
Обновлено
22.10.26

Refiner — отдельная модель или стадия, которая принимает промежуточный результат базовой модели и продолжает генерацию при небольшом уровне шума. Такой этап может уточнять детали, но не является обязательным, универсальным улучшателем или инструментом увеличения разрешения.

Коротко

Refiner — второй специалист в многостадийной генерации. Базовая модель (base) выполняет раннюю часть работы, а refiner принимает совместимое промежуточное состояние и продолжает удалять шум. Такой процесс называют denoising.

На инфографике обе фотопластины имеют одинаковый размер и показывают одного самоеда в той же позе. Левая уже содержит сцену и композицию, но мелкие фактуры ещё мягкие. Правая сохраняет структуру и уточняет шерсть, снег и отражения. Иллюстрация упрощает процесс: в прямой связке передаётся latent — сжатое внутреннее представление с оставшимся шумом, а не уже чистая увеличенная картинка. Оно не обязательно выглядит как мягкая, но готовая фотография.

Формула «base строит композицию, refiner рисует детали» полезна для первого знакомства, но остаётся упрощением. Ранняя модель уже создаёт детали, а поздняя способна менять не только резкость, но и форму, стиль и содержание.

Зачем делить работу между моделями

Диффузионная модель решает разные задачи на разных уровнях шума. В начале, когда сигнал слабый, особенно важны общая структура и соответствие условию. Ближе к чистому изображению возрастает роль локальных границ и высокочастотных деталей.

Вместо одной сети для всего диапазона можно использовать несколько экспертов. Работа eDiff-I описывает ансамбль моделей для удаления шума: специализированные модели отвечают за разные участки итеративного процесса.

Широко известный пример — архитектура из технического отчёта SDXL. Помимо base, авторы обучили отдельную диффузионную модель в латентном пространстве на качественных данных и применяли её для доработки. Но слово refiner не принадлежит одной архитектуре: так можно назвать похожую вторую стадию и в другой схеме генерации, если она действительно обучена или настроена на доработку результата.

Два способа передать работу

Под одним названием часто скрываются две близкие, но не одинаковые схемы.

Прямое переключение по уровню шума

Base начинает с шумного состояния и останавливается до завершения denoising. Промежуточный latent передаётся refiner, который продолжает с согласованного timestep или sigma.

шум → base → промежуточный latent → refiner → готовый latent → VAE decode

Здесь генерация продолжается с того уровня шума, на котором закончился первый этап. Конец base и начало refiner должны совпадать по этой границе. Однако перезапуск многошагового решателя может потерять историю предыдущих оценок — такой стык требует проверки даже при одинаковом расписании.

Отдельный img2img-подобный проход

Base может сначала завершить изображение. Затем результат снова частично зашумляется и проходит через refiner как новая стадия редактирования.

base → готовый результат → частичное зашумление → refiner → новый результат

Здесь уже появляется отдельная сила изменения. Чем больше шума возвращается, тем свободнее refiner может перестроить исходную сцену. Такая схема ближе к SDEdit/img2img и не эквивалентна прямой передаче промежуточного состояния.

Что означает «совпасть по уровню шума»

Если base остановился в точке t, refiner должен получить состояние, соответствующее той же точке в своей шкале. Одинаковый процент в интерфейсе ещё не гарантирует совпадение: реализации могут по-разному выбирать временные точки, расстояния между ними и границы процесса.

Для корректной передачи согласуются:

  • расписание шума и выбранные временные точки или значения sigma;
  • тип прогноза модели и его обработка сэмплером;
  • направление и границы последовательности;
  • масштабирование латентов и представление VAE;
  • форма и пространственный размер латентного массива;
  • условия генерации, которые ожидает вторая модель.

В API Diffusers непрерывная связка base/refiner задаётся парой границ denoising_end и denoising_start; документация SDXL показывает передачу latent без промежуточного декодирования. Конкретные имена параметров могут меняться, но принцип совпадающей границы остаётся.

Почему произвольный checkpoint не становится refiner

Две модели могут принимать latent одинаковой формы и всё равно быть плохой парой. Refiner должен понимать распределение промежуточных состояний, которые создаёт base, и корректно работать в переданном диапазоне шума.

Совместимость включает не только архитектуру, но и:

  • способ обучения на поздних состояниях;
  • токенизатор и текстовый энкодер;
  • дополнительные условия и числовые представления текста;
  • VAE и масштаб latent;
  • настройки расписания и сэмплера;
  • ожидаемую параметризацию прогноза.

Обычная text-to-image модель, поставленная на последние шаги, может что-то изменить, но это ещё не делает её специализированным refiner. Результат способен изменить палитру, лицо, стиль и соответствие описанию.

Refiner не равен upscaler

Upscaler увеличивает пространственное разрешение. Refiner дорабатывает состояние на определённом этапе генерации. Он может работать с latent того же размера, как две одинаковые фотопластины на инфографике.

Схема генерации может объединять оба действия: сначала увеличить latent или изображение, затем провести дополнительный denoising. Но тогда присутствуют две операции:

  1. изменение размера;
  2. доработка содержания.

Их полезно оценивать отдельно. Иначе улучшение от большей сетки легко приписать второй модели, а изменение стиля — алгоритму увеличения.

Не то же самое, что восстановление лица

Методы face restoration обычно обрабатывают найденные лица после генерации, в уже декодированном изображении. Refiner продолжает удалять шум и может менять всю сцену.

От обычного второго прохода той же base-моделью refiner отличается специализацией. Повторный img2img способен добавлять детали, но в нём используется прежний denoiser; отдельный refiner обучен или настроен на другую часть задачи.

Что refiner способен изменить

В удачной связке он может улучшить:

  • локальные текстуры;
  • тонкие границы;
  • материал ткани, шерсти или кожи;
  • мелкие световые переходы;
  • согласованность деталей на позднем этапе.

Но возможны и нежелательные изменения:

  • потеря естественной фактуры;
  • другое лицо или выражение;
  • сдвиг цвета и контраста;
  • худшее соответствие промпту;
  • появление артефактов из-за несовместимой границы;
  • стилистический конфликт между стадиями.

Поэтому слово refiner не обещает автоматического улучшения. Оно описывает роль в процессе генерации.

Как сравнивать base и refiner

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

  • base, корректно доведённый до конца самостоятельно;
  • согласованная связка base + refiner.

Нельзя сравнивать незавершённый шумный latent base с готовым изображением refiner и заключать, что второй «качественнее»: первая сторона просто не прошла последние шаги.

Полезна небольшая сетка разных сюжетов. Модель, которая удачно прорабатывает шерсть, может менять лица или текст. Несколько seed показывают устойчивость эффекта.

Текст и условия второй стадии

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

Совместимость дополнительных адаптеров тоже зависит от второй модели. LoRA, обученная для base denoiser, не обязана подходить refiner с другими слоями. То же относится к условиям ControlNet и эмбеддингам разных текстовых энкодеров.

Цена второй модели

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

Практический выбор строится вокруг трёх величин:

  • насколько стабильно улучшаются изображения на подобранных для сравнения сюжетах;
  • сколько дополнительных вычислений требуется;
  • усложняет ли вторая стадия воспроизводимость и поддержку workflow.

Если base уже даёт нужный результат, схема без refiner вполне закончена. В ComfyUI перед сравнением полезно проследить весь путь латента: его связь с сэмплером разобрана в гайде по KSampler, а роль декодирования — в разборе VAE.

Частые вопросы

Refiner нужен каждой diffusion-модели?

Нет. Это выбор архитектуры или схемы работы. Многие модели рассчитаны на один denoiser во всём диапазоне шума.

Refiner исправит плохую композицию base?

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

Нужно ли передавать изображение или latent?

Прямая связка обычно передаёт латент. Отдельный проход доработки может начинаться с изображения, которое снова кодируется и зашумляется. Это зависит от схемы генерации.

Должен ли refiner использовать тот же промпт?

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

Чем refiner отличается от hires-прохода?

Hires-проход включает увеличение размера. Refiner обозначает специализацию модели или стадии. Они могут использоваться вместе, но не являются синонимами.

Главное

Refiner — второй специалист, который продолжает или повторно запускает denoising на позднем участке. Он полезен, когда совместим с base и стабильно улучшает нужные детали.

Ключевые проверки — совпадение уровня шума, латентного представления и условий генерации. Refiner не обязан увеличивать разрешение и не считается обязательным завершением любой генерации.

Источники