ArtificialGuyBR

Home / Blog / ComfyUI

ComfyUI modular: um gráfico para txt2img, img2img, upscale

Crie um único fluxo de trabalho do ComfyUI para txt2img, img2img e upscale usando bypass, o parâmetro denoise do KSampler e templates reutilizáveis.

6 sources cited ComfyUI

Fluxos de trabalho modulares no ComfyUI: um gráfico para txt2img, img2img, upscale

TL;DR

  • Alterne qualquer estágio com Ctrl + B. Nós em bypass permanecem na tela, mas são removidos da execução.
  • Um gráfico, três modos: EmptyLatentImage para txt2img, VAEEncode + denoise < 1.0 para img2img, UpscaleModelLoader → ImageUpscale para upscale.
  • Agrupe para clareza, não para reutilização: Ctrl + G recolhe visualmente. Para reutilização real, use templates .json ou um nó personalizado.

Por que fluxos de trabalho modulares importam

Fluxos de trabalho do ComfyUI são grafos acíclicos direcionados. Cada tarefa — carregar modelo, codificar prompt, amostrar, decodificar, aplicar upscale — é um nó discreto com entradas e saídas tipadas. Como o grafo é data-flow e não código imperativo, dá para reconectar, colocar em bypass ou duplicar ramificações sem reescrever a lógica. Um fluxo modular mantém estágios opcionais (ControlNet, IPAdapter, upscaler) em ramificações separadas e passíveis de bypass, então o mesmo .json atende text-to-image, image-to-image e high-res fix sem duplicação.


O mecanismo de alternância: bypass, não excluir

Como o bypass funciona

Selecione qualquer nó e pressione Ctrl + B. O ComfyUI o remove do grafo de execução e conecta as entradas diretamente às saídas. O nó permanece na tela (esmaecido) para que você possa reativá-lo instantaneamente com outro Ctrl + B.

Fonte: README do ComfyUI: "Ctrl + B — Bypass selected nodes (acts like the node was removed from the graph and the wires reconnected through)" [^1]

Um "Bypass Node" no botão direito pode existir em versões recentes da UI, mas o mecanismo documentado é Ctrl + B.

Quando usar bypass vs. excluir

Cenário | Ação ----------|-------- Desativação temporária | Ctrl + B Remoção permanente | Excluir e reconectar manualmente Trocar de modelo | Manter o nó, mudar a entrada do loader


Um gráfico, três modos

O pivô é o KSampler. Sua entrada latent_image e o parâmetro denoise determinam o modo de geração.

txt2img (geração pura)

EmptyLatentImage → KSampler (denoise = 1.0) → VAEDecode

EmptyLatentImage cria ruído puro na resolução alvo. denoise = 1.0 significa que o sampler ignora totalmente a estrutura latente de entrada.

img2img (transformação guiada)

LoadImage → VAEEncode → KSampler (denoise < 1.0) → VAEDecode

VAEEncode comprime a imagem de entrada no espaço latente. A documentação do KSampler diz que "lower values will maintain the structure of the initial image allowing for image to image sampling" [^2]. denoise < 1.0 preserva essa estrutura; valores mais baixos ficam mais próximos da fonte, valores mais altos permitem desvios mais criativos.

upscale (high-res fix)

KSampler → VAEDecode → UpscaleModelLoader → ImageUpscale → (opcional) VAEDecode again

UpscaleModelLoader lê um arquivo de modelo de models/upscale_models/ (por exemplo, 4x-UltraSharp.pth). Para um high-res fix real, insira um segundo KSampler após ImageScale → VAEEncode, seguindo o padrão de duas passagens ligado nos exemplos do ComfyUI [^1].


Ramos de condicionamento opcionais

ControlNet (integrado)

ControlNetApply e ControlNetApplyAdvanced são nós integrados. Eles recebem:

  • condicionamento positivo/negativo
  • modelo control_net (carregado via ControlNetLoader)
  • imagem pré-processada: Canny, OpenPose, Depth, etc.
  • strength (0–10, recomendado 0.5–1.5)

A saída é o condicionamento modificado. Para desativar: coloque ControlNetApply em bypass.

Fonte: Documentação do ControlNetApply: "Controls the strength of network adjustments, value range 0~10. Recommended values between 0.5~1.5 are reasonable." [^3]

IPAdapter (terceiros)

IPAdapter não é um nó integrado. Ele vem de pacotes de nós personalizados da comunidade (por exemplo, comfyui-ipadapter). A cadeia típica:

LoadImage → IPAdapterEncoder → IPAdapterApply → conditioning

Para desativar: coloque IPAdapterApply em bypass. O IPAdapter não tem chave liga/desliga integrada separada do bypass.


Agrupamento: apenas visual, não reutilizável

Ctrl + G cria um grupo visual recolhível. Ajuda a legibilidade, mas não cria um subgrafo chamável, não permite reutilização por arrastar e soltar e não exporta um componente independente.

Para reutilização real:

Abordagem | Como funciona | Contrapartida ----------|--------------|-------------- Templates de workflow | Salve um .json apenas com o subgrafo; importe via Workflows → Open | Conexão manual a cada vez Nó personalizado (Python) | Escreva um nó que construa internamente o subgrafo | Requer Python, API mais limpa Copiar e colar + reagrupar | Ctrl + C / Ctrl + V entre abas | Mais rápido para reutilização pontual

Fonte: README do ComfyUI: "Ctrl + G — Group selected nodes" — agrupar é um atalho de UI, não um sistema de módulos [^1].

Tabela de referência de configurações

Parâmetro | txt2img | img2img | Upscale (HR fix) | Fonte -----------|---------|---------|------------------|-------- KSampler latent_image | EmptyLatentImage | VAEEncode(LoadImage) | Primeira passagem: EmptyLatentImage; segunda passagem: VAEEncode(ImageScale) | [^2] KSampler denoise | 1.0 | qualquer valor abaixo de 1.0 | Primeira passagem: 1.0; segunda passagem: abaixo de 1.0 | [^2] ControlNet strength | 0.5–1.5 se usado | 0.5–1.5 | Normalmente desligado na passagem de upscale | [^3] Modelo de upscale | — | — | exemplo 4x-UltraSharp.pth em models/upscale_models/ | [^4] Checkpoint loader | CheckpointLoaderSimple | CheckpointLoaderSimple | compartilhado entre todas as passagens | [^5]


Erros e correções comuns

Sintoma | Causa | Correção ---------|-------|----- "Load > Load (custom nodes)" não encontrado | A instalação de nós personalizados não carrega workflows | Use Workflows → Open (Ctrl+O) ou arraste o .json para a tela [^6] Nó IPAdapter ausente | IPAdapter não é integrado | Instale um pacote de nós personalizados via ComfyUI Manager ControlNet não faz nada | Pré-processador ausente ou formato de imagem errado | Instale comfyui-controlnet-preprocessors; combine o pré-processador com o tipo de entrada UpscaleModelLoader não mostra modelos | Arquivo de modelo não está em models/upscale_models/ | Coloque .pth/.onnx lá e atualize ou reinicie [^4] img2img ignora a imagem de entrada | denoise ficou em 1.0 | Defina denoise abaixo de 1.0 [^2] Nó em bypass ainda executa | Nó não está realmente em bypass | Selecione o nó novamente, pressione Ctrl + B, verifique o esmaecimento/conexão dos fios


Perguntas frequentes (FAQ)

Como alterno um estágio do fluxo de trabalho entre ligado e desligado? Selecione o nó e pressione Ctrl + B. Pressione novamente para reativar.

Um único gráfico do ComfyUI consegue fazer txt2img, img2img e upscale? Sim. Alimente o KSampler com EmptyLatentImage para txt2img, um latente de VAEEncode com denoise < 1.0 para img2img, e encadeie UpscaleModelLoader → ImageUpscale após a decodificação para upscale. Todos os modos compartilham o mesmo checkpoint, CLIP e VAE.

"ComfyUI Modular Node System" é um nome de recurso oficial? Não. O slogan do ComfyUI é "the most powerful and modular diffusion model GUI", referindo-se à sua arquitetura de grafo de nós. Não existe produto ou API chamado "Modular Node System".

Como carregar um JSON de workflow no ComfyUI? Arraste o .json para a tela ou use Workflows → Open (Ctrl+O). O menu "Load (custom nodes)" instala pacotes de nós personalizados em Python, não workflows.

O ComfyUI tem um "Bypass Node" no botão direito? O bypass documentado é Ctrl + B. Uma opção de botão direito pode existir em versões recentes da UI, mas não está na tabela oficial de atalhos.

Os nós IPAdapter e ControlNet são integrados ao ComfyUI? ControlNetApply e ControlNetApplyAdvanced são integrados. IPAdapter é um nó personalizado de terceiros.

O que o parâmetro denoise do KSampler realmente faz? Em 1.0 (padrão), o sampler trata a entrada latente como ruído puro. Abaixo de 1.0, ele mistura a estrutura do latente de entrada com a saída sem ruído — valores mais baixos preservam mais da imagem original.

Como criar um grupo de nós verdadeiramente reutilizável? Salve um subgrafo como template .json e importe manualmente, escreva um nó personalizado em Python, ou copie e cole nós entre abas de workflow.



Fontes

[^1]: README do ComfyUI no GitHub — atalhos e arquitetura — https://github.com/Comfy-Org/ComfyUI [^2]: Documentação do nó integrado KSampler — https://docs.comfy.org/built-in-nodes/KSampler.md [^3]: Documentação do nó integrado ControlNetApply — https://docs.comfy.org/built-in-nodes/ControlNetApply.md [^4]: Documentação do nó integrado UpscaleModelLoader — https://docs.comfy.org/built-in-nodes/UpscaleModelLoader.md [^5]: Documentação do nó integrado CheckpointLoaderSimple — https://docs.comfy.org/built-in-nodes/CheckpointLoaderSimple.md [^6]: Tutorial de text-to-image do ComfyUI (carregamento de workflow) — https://docs.comfy.org/tutorials/basic/text-to-image