Второй проход после увеличения (hires fix)
Урок «hires-fix» в группе Картинки: приёмы списка уроков. Шагов: 10.
Чему вы научитесь
Увеличенную картинку модель рисует ещё раз: чёткие детали в размере, который ей не нарисовать за один раз.
Что понадобится
- Урок продолжает Увеличение моделью. Карточка говорит об этом; это подсказка, а не замок.
- Ноды: Load Checkpoint, CLIP Text Encode (Prompt), KSampler, VAE Decode, Save Image / Preview Image, Load Upscale Model, Upscale Image (using Model), Upscale Image, VAE Encode.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Зачем два прохода (чтение)
Модель хорошо рисует только около того размера, на котором её учили. Картинку больше делают в два прохода: нарисовать в обычном размере, увеличить, а потом дать модели нарисовать большую картинку заново с частью шума. Композиция приходит из первого прохода, детали из второго.
Это называют «hires fix». Урок продолжает «Увеличение моделью».
Нужен граф с увеличением
На холсте должны быть граф с картинкой, Load Checkpoint, CLIP Text Encode (Prompt), CLIP Text Encode (Prompt), KSampler, VAE Decode, Save Image, а после VAE Decode ноды Load Upscale Model и Upscale Image (using Model).
Если их нет, сначала пройдите «Увеличение моделью».
Приведите к нужному размеру
Добавьте ноду Upscale Image и подключите выход ноды Upscale Image (using Model) к её входу
image. Вwidthиheightпоставьте вдвое больше первой картинки: 2048 для картинки 1024 у SDXL, 1024 для картинки 512 у SD 1.5. 0 в одном из полей сохраняет пропорции.Модель 4x даёт в четыре раза больше. Для второго прохода хватит вдвое, а каждый лишний пиксель стоит памяти.
Переведите в латент
Добавьте ноду VAE Encode: выход ноды Upscale Image в её вход
pixels, выходVAEноды Load Checkpoint во входvae.Второй сэмплер
Добавьте вторую ноду KSampler и подключите к ней:
- к
modelвыходMODELноды Load Checkpoint, через загрузчики LoRA, если они есть; - к
positiveиnegativeте же два текста; - к
latent_imageвыход ноды VAE Encode.
Та же модель и то же описание заново рисуют свою же картинку, теперь большую.
- к
Решите, сколько рисовать заново
Поставьте
denoiseноды KSampler на 0.5.При 0.5 композиция остаётся, а каждая деталь рисуется заново в большом размере. При 0.3 изменения слабые. Выше 0.6 модель начинает дорисовывать новые предметы, а в размере, на котором её не учили, повторяет их: две головы, лишние окна.
Сохраните результат
Добавьте VAE Decode и Save Image: выход ноды KSampler в
samples,VAEноды Load Checkpoint вvae, картинку вimages.Сохранялки прежних проходов можно заменить нодами Preview Image, чтобы на диск писалась только итоговая картинка.
Другой путь: в латенте (чтение)
В ComfyUI есть второй вид hires fix, без модели увеличения: нода Upscale Latent между первым и вторым сэмплером и второй сэмплер на
denoise0.5. Это быстрее, но увеличенный латент размыт, и второму проходу приходится это дорисовывать, поэтомуdenoiseсильно не опустить. Шаблоны ComfyUI показывают оба пути.Очень большие картинки (чтение)
Когда второму проходу не хватает памяти:
- VAE Decode (Tiled) и VAE Encode (Tiled) переводят картинку в латент и обратно по кускам;
- пак ComfyUI_UltimateSDUpscale перерисовывает большую картинку плитками, каждую в удобном модели размере;
- Impact Pack делает то же своими нодами плиток.
Пак нод запускает на вашем компьютере чужой код. Ставьте его сами через менеджер ComfyUI, с его официальной страницы, и только если доверяете авторам. Приложение ничего не устанавливает.
Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Что попробовать: denoise 0.35 и 0.55 при одном seed.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Нужен граф с увеличением:
- нода Load Checkpoint.
- нода CLIP Text Encode (Prompt).
- нода CLIP Text Encode (Prompt).
- нода KSampler.
- нода VAE Decode.
- нода Save Image или Preview Image.
- нода Load Upscale Model.
- нода Upscale Image (using Model).
CLIPноды Load Checkpoint во входclipноды CLIP Text Encode (Prompt) (промпт) (можно через Load LoRA или CLIP Set Last Layer).CLIPноды Load Checkpoint во входclipноды CLIP Text Encode (Prompt) (негатив) (можно через Load LoRA или CLIP Set Last Layer).MODELноды Load Checkpoint во входmodelноды KSampler (первый проход) (можно через Load LoRA или LoraLoaderModelOnly или DifferentialDiffusion или ModelSamplingAuraFlow или ModelSamplingFlux или CFGNorm или IPAdapter Unified Loader или IPAdapter или IPAdapterAdvanced или IPAdapterStyleComposition).CONDITIONINGноды CLIP Text Encode (Prompt) (промпт) во входpositiveноды KSampler (первый проход) (можно через Apply ControlNet или InpaintModelConditioning или Conditioning (Combine) или ConditioningSetArea или ConditioningSetAreaPercentage или ConditioningSetMask или Apply Style Model или FluxGuidance или ConditioningZeroOut или FluxKontextMultiReferenceLatentMethod).CONDITIONINGноды CLIP Text Encode (Prompt) (негатив) во входnegativeноды KSampler (первый проход) (можно через Apply ControlNet или InpaintModelConditioning или Conditioning (Combine) или ConditioningSetArea или ConditioningSetAreaPercentage или ConditioningSetMask или Apply Style Model или FluxGuidance или ConditioningZeroOut или FluxKontextMultiReferenceLatentMethod).LATENTноды KSampler (первый проход) во входsamplesноды VAE Decode (первый проход).VAEноды Load Checkpoint во входvaeноды VAE Decode (первый проход).IMAGEноды VAE Decode (первый проход) во входimagesноды Save Image или Preview Image (первая картинка).UPSCALE_MODELноды Load Upscale Model во входupscale_modelноды Upscale Image (using Model).IMAGEноды VAE Decode (первый проход) во входimageноды Upscale Image (using Model).
- Шаг 3, Приведите к нужному размеру:
- нода Upscale Image.
IMAGEноды Upscale Image (using Model) во входimageноды Upscale Image.
- Шаг 4, Переведите в латент:
- нода VAE Encode.
IMAGEноды Upscale Image во входpixelsноды VAE Encode.VAEноды Load Checkpoint во входvaeноды VAE Encode.
- Шаг 5, Второй сэмплер:
- нода KSampler.
MODELноды Load Checkpoint во входmodelноды KSampler (второй проход) (можно через Load LoRA или LoraLoaderModelOnly или DifferentialDiffusion или ModelSamplingAuraFlow или ModelSamplingFlux или CFGNorm или IPAdapter Unified Loader или IPAdapter или IPAdapterAdvanced или IPAdapterStyleComposition).CONDITIONINGноды CLIP Text Encode (Prompt) (промпт) во входpositiveноды KSampler (второй проход) (можно через Apply ControlNet или InpaintModelConditioning или Conditioning (Combine) или ConditioningSetArea или ConditioningSetAreaPercentage или ConditioningSetMask или Apply Style Model или FluxGuidance или ConditioningZeroOut или FluxKontextMultiReferenceLatentMethod).CONDITIONINGноды CLIP Text Encode (Prompt) (негатив) во входnegativeноды KSampler (второй проход) (можно через Apply ControlNet или InpaintModelConditioning или Conditioning (Combine) или ConditioningSetArea или ConditioningSetAreaPercentage или ConditioningSetMask или Apply Style Model или FluxGuidance или ConditioningZeroOut или FluxKontextMultiReferenceLatentMethod).LATENTноды VAE Encode во входlatent_imageноды KSampler (второй проход).
- Шаг 6, Решите, сколько рисовать заново:
denoiseноды KSampler (второй проход): от 0.3 до 0.6; «Сделать за меня» ставит 0.5.
- Шаг 7, Сохраните результат:
- нода VAE Decode.
- нода Save Image или Preview Image.
LATENTноды KSampler (второй проход) во входsamplesноды VAE Decode (второй проход).VAEноды Load Checkpoint во входvaeноды VAE Decode (второй проход).IMAGEноды VAE Decode (второй проход) во входimagesноды Save Image или Preview Image (второй проход).