Corrija qualquer parte de uma imagem com inpainting do Flux no ComfyUI, uma região por vez

Pinte uma máscara suave, deixe o Flux Dev re-renderizar só aquela área em resolução maior com o SEGS detailer, depois salve, envie de novo e passe para a próxima parte. Os ajustes que funcionam, e por que máscaras pequenas vencem as grandes.

Anton Tenitsky13 de outubro de 20266 min de leituraVersão em vídeo abaixo

Este guia foi traduzido do inglês com IA e pode conter erros. Leia o original.

Um comparador de imagens no ComfyUI dividindo um personagem com um taco de beisebol numa rua da cidade, antes e depois do inpainting do Flux no rosto e nos braços

A maioria das imagens de IA está quase certa. O rosto está estranho, uma manga derreteu, uma mão está errada. O inpainting re-renderiza só a parte que você mascara e deixa o resto em paz. Este fluxo faz isso com o Flux Dev e o SEGS detailer do Impact Pack, que amplia a área mascarada antes de re-renderizá-la, então até uma região pequena volta com detalhe de verdade.

A técnica funciona com qualquer assunto. Aqui pego uma imagem de personagem que gerei a partir de um esboço (veja esboço em arte com o Flux) e a corrijo parte por parte: rosto, mangas, pernas, tronco e o taco de beisebol.

Em resumo

  • Mascare uma região no Mask Editor, com um pincel suave (hardness perto de zero).
  • MASK to SEGS → Detailer (SEGS): a área mascarada é ampliada a 512 px, re-renderizada com o Flux Dev e misturada de volta.
  • Ajustes: Flux guidance 3,5, 20 steps, denoise 0,60–0,70.
  • Uma parte por vez. Salve, baixe, envie de novo, mascare a próxima parte.
  • Espere repetir: de 10 a 15 vezes para um rosto é normal.

Para um olhar mais atento a cada nó, e um truque de pintura por cima para as mãos mais difíceis, veja corrigindo mãos de IA no ComfyUI. Este guia trata de usar a mesma configuração numa imagem inteira.

O fluxo

O fluxo de inpainting no ComfyUI: Load Image, MASK to SEGS, Load Diffusion Model, Load VAE, DualCLIPLoader, um prompt positivo e FluxGuidance alimentando um nó Detailer (SEGS)
O Load Image e sua máscara passam pelo MASK to SEGS até o detailer, com o Flux Dev, seu VAE e dois codificadores de texto.
  • Load Image: envie a imagem que quer corrigir. Clique com o botão direito e escolha Open in Mask Editor para pintar a máscara.
  • MASK to SEGS (Impact Pack) transforma a máscara num segmento, isolando aquela área para que possa ser ampliada.
  • Detailer (SEGS) é o nó principal onde tudo se junta. Ele pega a área mascarada, que pode ter só 100 × 100 pixels, a amplia para 512 × 512 e a re-renderiza ali. Mais pixels permitem criar um resultado melhor. A imagem original o guia, então você não precisa de muito prompt; ele já lê o que está ali. Conecte também a imagem original, não só os segmentos.
  • Load Diffusion Model: o modelo Flux Dev completo. A primeira geração leva cerca de um minuto e meio enquanto ele carrega; depois disso uma execução levou cerca de 16 segundos.
  • Load VAE: o pequeno autoencoder do Flux, que decodifica a imagem do espaço latente.
  • DualCLIPLoader: o Flux precisa de dois codificadores de texto, clip_l e t5xxl.
  • Prompt positivo → FluxGuidance: o Flux guidance define com que força o prompt controla a imagem. 3,5 é o padrão e funciona bem. Conecte a entrada negativa também, mas deixe-a vazia: o Flux não funciona bem com prompts negativos, então descreva tudo no positivo.
  • Image Comparer e Save Image no final.

Pinte uma máscara suave

No Mask Editor, defina o tamanho do pincel com o controle deslizante e depois reduza a hardness para perto de zero. O padrão é muito duro, e uma borda dura deixa bordas e emendas visíveis. Pinte sobre a área e clique em Save.

O Mask Editor do ComfyUI com uma máscara preta pintada sobre o tronco do personagem e os ajustes do pincel à direita
Uma máscara só sobre o tronco. Mantenha cada máscara numa única parte da imagem.

Mascare uma parte por vez: braços, pernas, cintura, tronco, rosto, cabelo, o taco. Se você tenta fazer os braços e as pernas de uma vez, a máscara fica grande demais e estraga a imagem. Simplesmente não faz um bom trabalho.

Prompt e ajustes

O prompt pode ser bem simples. Para o rosto digitei «young beautiful female face, red lips». Só acrescente mais detalhe se ele continuar errando algo.

No detailer:

  • Seed: aleatória a cada execução. Guarde uma seed se quiser recriar uma imagem: com o mesmo prompt e ajustes, outra pessoa obtém exatamente o mesmo resultado.
  • Steps: 20. A faixa usual é 20–50, com retornos decrescentes acima de 50. O Flux é bem lento, e 20 é rápido e de alta qualidade.
  • CFG: 1,0. O guidance já vem do nó FluxGuidance, então o CFG não tem efeito aqui; deixe como está.
  • Denoise: 0,60–0,70. O quanto a área pode mudar. Essa faixa dá ao modelo liberdade suficiente sem mudar demais nem de menos. Cheguei a ela por experimentação, depois de centenas ou milhares de gerações.
Ajustes do detailer: steps 20, cfg 1.0, sampler euler, scheduler normal, denoise 0.70, feather 5, noise_mask e force_inpaint ativados
Os ajustes do detailer: 20 steps, CFG 1,0, denoise 0,70.

Execute, salve, envie de novo, repita

Cada execução dá um rosto diferente, então continue rodando até um funcionar. Os resultados vão para a pasta output do ComfyUI; o prefixo de nome de arquivo do nó de salvamento (usei flux_gen) facilita encontrá-los.

Para trabalhar na próxima parte, o resultado atual precisa virar a entrada. Baixo a imagem e a envio de novo no Load Image. (Se você conhece um jeito melhor de reutilizá-la dentro do RunComfy, me diga.) Enviar uma imagem nova apaga a máscara, então abra o Mask Editor e pinte a próxima área.

O comparador num braço com inpainting, com o lado esquerdo melhor, o direito irregular e tatuagens indesejadas na perna
Uma passada nas mangas: boa de um lado, errada do outro, e tatuagens que ninguém pediu.

Nas mangas, a primeira tentativa foi boa de um lado e ruim do outro. A máscara estava um pouco grande demais; uma máscara mais estreita ao longo do braço foi melhor, embora ainda tenha acrescentado tatuagens que não pedi. Um prompt mais específico («white cotton sleeves») provavelmente ajudaria. Às vezes você precisa repintar a máscara porque ela pegou partes que você não queria.

Como a imagem completa foi tomando forma

  • Pernas: «smooth legs, high heels, red boots». A primeira geração ficou ótima.
  • Tronco e mangas juntos: uma máscara grande, e problemas. A cintura se fundiu com o braço, então dividi em máscaras separadas.
  • Só os braços: bem bom de primeira. Não era o branco-prateado que eu queria, mas bom o bastante.
  • Rosto: de 10 a 15 gerações.
  • Tronco e cintura: mais umas 10 iterações.
  • Taco de beisebol: uma máscara bem pequena e algumas iterações.
A imagem final no comparador: a personagem com um taco de beisebol no ombro, com rosto e braços mais nítidos
A imagem final depois de todas as passadas, comparada com a original.

Dá um bom trabalho: baixar, enviar de novo, rodar de novo. Refazer boa parte de uma imagem pode levar uma hora. Se for só o rosto e as mãos, é muito mais rápido.

Onde rodar

O Flux Dev precisa de uma GPU forte. Gravei isto no RunComfy, onde o fluxo está configurado e pronto, com cerca de 15 minutos grátis para testar. Hoje rodo esse tipo de trabalho no RunPod; veja minha introdução ao RunPod. O fluxo também está no meu Patreon.

O link do RunComfy é um link de indicação. Se você experimentar o RunPod, meu link de indicação dá a novas contas que se cadastram com o Google de US$ 5 a US$ 500 em crédito após seus primeiros US$ 10, e eu recebo uma pequena comissão.

Assista à versão em vídeo (10:15)

Tudo o que está acima também está no vídeo, se você preferir acompanhar na tela. O vídeo está em inglês.

Perguntas frequentes

Que denoise devo usar para inpainting com o Flux?

Entre 0,60 e 0,70. Isso dá ao modelo liberdade suficiente para interpretar a área sem mudá-la demais nem de menos; cheguei a isso depois de centenas de gerações.

Por que meu inpainting dá errado quando mascaro uma área grande?

Uma máscara grande cobrindo várias partes (braços, tronco e pernas de uma vez) dá ao modelo coisa demais para mudar e ele estraga a imagem. Trabalhe uma parte por vez, com uma máscara pequena e suave.

Devo escrever um prompt negativo para o Flux?

Não. O Flux não usa bem prompts negativos. Descreva o que quer no prompt positivo e mantenha simples; acrescente detalhe só se ele continuar errando algo.

Anton Tenitsky é artista 3D com mais de 15 anos em computação gráfica, que trabalhou com Nickelodeon, Gameloft, Marvel Rivals e muitos outros clientes. Mais sobre mim

Guias relacionados