Доводка второй моделью

<!-- lesson: refine -->

Урок «refine» в группе Картинки: первые шаги списка уроков. Шагов: 11.

Чему вы научитесь

Готовую картинку перерисует вторая модель: композиция от первой, фактура и стиль от второй.

Что понадобится

  • Урок продолжает Первая картинка из текста. Карточка говорит об этом; это подсказка, а не замок.
  • Файлы моделей, которые урок проверяет:
    • модель для картинок (SD 1.5, SDXL, Pony, Illustrious, Flux и подобные), а не видео-модель: models/checkpoints, например juggernautXL_v9.safetensors.
  • Ноды: Load Checkpoint, CLIP Text Encode (Prompt), KSampler, VAE Decode, Save Image / Preview Image, VAE Encode.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

Слова каждого шага, как их показывает урок. Имена нод выделены.

  1. Что такое доводка (чтение)

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

    Вторая модель начинает не с чистого шума. К готовой картинке добавляют часть шума, и модель убирает его по-своему. Чем больше шума добавлено, тем сильнее меняется картинка.

    В этом уроке вы пристроите вторую модель к графу с картинкой.

  2. Нужен граф с картинкой

    Этот урок продолжает граф из урока «Первая картинка из текста». На холсте должны быть ноды Load Checkpoint, KSampler, VAE Decode и Save Image со связями между ними.

    Подойдёт и граф из урока «Две модели в одном графе»: в нём есть та же часть с картинкой.

    Если этих нод нет, сначала пройдите первый урок.

  3. Добавьте вторую модель

    Добавьте вторую ноду Load Checkpoint и выберите в поле ckpt_name другую модель: ту, чья фактура или стиль вам нужны.

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

  4. Дайте второй модели свои тексты

    Добавьте две новые ноды CLIP Text Encode (Prompt) и подключите ко входу clip каждой выход CLIP второй модели. В поле text одной опишите ту же картинку в манере, которую понимает вторая модель.

    Тексты первой модели сюда подключать нельзя: их читала другая модель. Промпт можно скопировать, если обе модели читают одинаково, и переписать, если по-разному.

  5. Переведите картинку для второй модели

    Добавьте ноду VAE Encode. Ко входу pixels подключите выход IMAGE ноды VAE Decode, ко входу vae выход VAE второй модели.

    Каждая модель работает со своим сжатым видом картинки. Эта нода сжимает готовую картинку так, как нужно второй модели, поэтому VAE здесь от неё.

  6. Добавьте второй сэмплер

    Добавьте вторую ноду KSampler и подключите к ней:

    • ко входу model выход MODEL второй модели;
    • ко входам positive и negative два её текста;
    • ко входу latent_image выход ноды VAE Encode.

    Второй сэмплер получает не пустую заготовку, а вашу картинку в сжатом виде.

  7. Задайте силу доводки

    В поле denoise второго сэмплера поставьте 0.5.

    Это число говорит, какую часть картинки модель перерисует. При 1 она рисует с нуля и первая картинка пропадает. При 0.2 меняются только мелкие детали. От 0.3 до 0.5 композиция остаётся, а фактура и лица становятся такими, как рисует вторая модель.

    В полях steps и cfg поставьте то, что советует автор второй модели.

  8. Сохраните результат

    Добавьте ещё по одной ноде VAE Decode и Save Image. Ко входу samples ноды VAE Decode подключите выход второго сэмплера, ко входу vae выход VAE второй модели. Её выход идёт во вход images новой ноды Save Image.

    Теперь граф сохраняет две картинки: до доводки и после. Сравнивайте их, пока подбираете denoise.

  9. Если модели из одного семейства (чтение)

    Модели одного семейства работают с одним и тем же сжатым видом картинки. Тогда разворачивать и снова сжимать её не нужно: выход LATENT первого сэмплера подключают прямо ко входу latent_image второго. Так теряется меньше деталей.

    К одному семейству относятся, например, SDXL и модели на её основе: Pony, Illustrious. Или две модели SD 1.5. Семейство файла показывает его карточка во вкладке «Модели».

    Между разными семействами так делать нельзя: вторая модель получит числа, которых не понимает, и выдаст шум или ошибку. Через картинку, как в этом уроке, работает всегда.

  10. LoRA в графе с двумя моделями (чтение)

У каждой модели свои LoRA. LoRA первой модели ставят между первой нодой Load Checkpoint и первым сэмплером, LoRA второй между второй нодой Load Checkpoint и вторым сэмплером.

Слова LoRA пишут в промпт той модели, в пути которой она стоит.

Если на первом проходе LoRA задаёт героя, а второй проход его размывает, уменьшите denoise или поставьте во второй путь LoRA того же героя, сделанную для второй модели.

  1. Граф готов (чтение)

Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.

Что попробовать:

  • denoise 0.3 и 0.5: насколько вторая модель меняет картинку;
  • поменять модели местами: кто лучше строит композицию, а кто доводит.

Если после картинки идёт видео, ко входу start_image подключите выход IMAGE новой ноды VAE Decode: тогда ролик начнётся с доведённой картинки.

Что проверяет урок

Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:

  • Шаг 2, Нужен граф с картинкой:
    • нода Load Checkpoint.
    • нода CLIP Text Encode (Prompt).
    • нода CLIP Text Encode (Prompt).
    • нода KSampler.
    • нода VAE Decode.
    • нода Save Image или Preview Image.
    • 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).
    • CONDITIONING ноды CLIP Text Encode (Prompt) (промпт) во вход positive ноды KSampler (сэмплер).
    • CONDITIONING ноды CLIP Text Encode (Prompt) (негатив) во вход negative ноды KSampler (сэмплер).
    • LATENT ноды KSampler (сэмплер) во вход samples ноды VAE Decode (превращение в кадры).
    • IMAGE ноды VAE Decode (превращение в кадры) во вход images ноды Save Image или Preview Image (сохранение).
  • Шаг 3, Добавьте вторую модель:
    • нода Load Checkpoint.
    • ckpt_name ноды Load Checkpoint (вторая модель): не тот же файл, что в поле ckpt_name ноды Load Checkpoint (первая модель).
    • в поле ckpt_name ноды Load Checkpoint (вторая модель) стоит файл такого вида: модель для картинок (SD 1.5, SDXL, Pony, Illustrious, Flux и подобные), а не видео-модель; такой файл лежит в models/checkpoints, например juggernautXL_v9.safetensors.
  • Шаг 4, Дайте второй модели свои тексты:
    • нода CLIP Text Encode (Prompt).
    • нода CLIP Text Encode (Prompt).
    • 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).
    • text ноды CLIP Text Encode (Prompt) (промпт второй модели): не меньше 3 знаков.
  • Шаг 5, Переведите картинку для второй модели:
    • нода VAE Encode.
    • IMAGE ноды VAE Decode (превращение в кадры) во вход pixels ноды VAE Encode.
    • VAE ноды Load Checkpoint (вторая модель) во вход vae ноды VAE Encode.
  • Шаг 6, Добавьте второй сэмплер:
    • нода KSampler.
    • MODEL ноды Load Checkpoint (вторая модель) во вход model ноды KSampler (сэмплер второй модели) (можно через Load LoRA или LoraLoaderModelOnly).
    • CONDITIONING ноды CLIP Text Encode (Prompt) (промпт второй модели) во вход positive ноды KSampler (сэмплер второй модели).
    • CONDITIONING ноды CLIP Text Encode (Prompt) (негатив второй модели) во вход negative ноды KSampler (сэмплер второй модели).
    • LATENT ноды VAE Encode во вход latent_image ноды KSampler (сэмплер второй модели).
  • Шаг 7, Задайте силу доводки:
    • denoise ноды KSampler (сэмплер второй модели): от 0.2 до 0.5; «Сделать за меня» ставит 0.5. Почему: это доля картинки, которую перерисует вторая модель. При 0.5 композиция остаётся, а фактура меняется.
  • Шаг 8, Сохраните результат:
    • нода 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 (сохранение второй модели).

Частые ошибки

  • Сжать картинку VAE первой модели: вторая модель получит латент, который не может прочесть.
  • Подать во второй сэмплер текстовые ноды первой модели.
  • denoise 1: первая картинка теряется целиком.
  • Передать LATENT между разными семействами: шум или ошибка.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/lessons/Refine.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.