O IC-Light reilumina uma foto a partir de um prompt de texto ou de uma máscara de luz. Faz mais do que mover a luz: também faz um retoque muito bom, perto do nível profissional, e você pode dar a ele qualquer foto tosca sua, da sua família ou de uma paisagem. Roda no ComfyUI em quase qualquer notebook gamer, em casa, de graça, sem enviar suas fotos a lugar nenhum.
O IC-Light é do lllyasviel, o autor do ControlNet (IC-Light no GitHub). Existe também um IC-Light v2, que dá resultados melhores, mas quando fiz isto só estava disponível como serviço pago e não comercial no próprio site, e não no ComfyUI. Aqui uso a v1.
Em resumo
- Nós: ComfyUI-IC-Light (Kijai), KJNodes, Essentials, rgthree. Modelo: iclight_sd15_fc.
- Grafo: checkpoint → Load And Apply IC-Light → KSampler; prompts e VAE → IC-Light Conditioning → KSampler; sua foto, redimensionada e codificada pelo VAE, como o foreground.
- Descreva a luz no prompt: «daylight», «foggy morning», «neon light», «spotlight».
- Mantenha o rosto: Detail Transfer a partir da imagem original.
- Máscaras de luz substituem o latente vazio; suavize-as ou a imagem queima.
Novo no ComfyUI? Comece pelas noções básicas do ComfyUI. O fluxo e as minhas máscaras de luz estão gratuitos no meu Patreon.
Instalação
- Manager → Custom Nodes Manager, busque IC-Light. Há dois pacotes, o de Kijai e o IC-Light Native de huchenlei. Os dois são úteis; instalo os dois e uso o de Kijai aqui.
- Instale também o KJNodes (nós utilitários do Kijai). Reinicie e recarregue a página.
- Manager → Model Manager, busque IC-Light. Há três modelos; você só precisa de um:
- FC (foreground conditioned): o que eu uso.
- FBC (foreground e background).
- FCON: segundo a documentação, ligeiramente pior que o FC.
- Depois do download, é só atualizar a página (Ctrl+R); não precisa reiniciar.
Monte o fluxo
Comece pelo fluxo padrão e troque o checkpoint para o epiCPhotoGasm. Renomeie os prompts como «Positive» e «Negative» e pinte-os de verde e vermelho.
- Load And Apply IC-Light: o modelo do checkpoint passa por ele até o KSampler. Ele pega o modelo FC automaticamente.
- IC-Light Conditioning: conecte o prompt positivo, o prompt negativo e o VAE; as saídas positive e negative dele vão ao KSampler.
- O foreground: Load Image com sua foto → Image Resize (Essentials) → VAE Encode → a entrada foreground do conditioning.
O nó de conditioning também tem uma entrada opt_background. Testei imagens de fundo e nunca ficaram boas, então parei; descreva o fundo no prompt. Ele tem também uma saída empty_latent, igual a um nó Empty Latent Image. Mantenho um Empty Latent Image separado, porque essa entrada é onde as máscaras de luz entram depois.
Digite uma iluminação no prompt positivo, como daylight ou foggy morning, e aperte Ctrl+Enter. Cada execução é um pouco diferente; aumente a contagem do lote para ver muitas variações. Algumas serão horríveis, outras boas para trabalhar. Escolha a dedo.
Compare e mantenha o rosto com o Detail Transfer
Adicione o Image Comparer do rgthree com o resultado como imagem A e o original redimensionado como imagem B. Arraste o controle deslizante e você verá que ele muda um pouco o rosto. Esse é o lado do retoque: ele «melhora» você. Você não fica exatamente igual depois, o que mais vezes é ruim do que bom.
Para trazer o detalhe de volta, adicione o Detail Transfer: a saída reiluminada em target, a imagem original em source. Funciona como um truque de passa-altas / máscara de nitidez do Photoshop, e pode ser demais; reduza o blend factor para controlá-lo.
Fixe a seed enquanto ajusta
Com a seed em randomize, toda mudança reexecuta tudo e dá uma imagem nova. Mudar para fixed também não congela a imagem atual, porque a próxima seed já foi definida. O que faço: defino a seed em increment, começando em 1, para cada imagem ter um número conhecido. Volte ao número de que gostou (digamos 3), execute e depois mude para fixed. Agora, ao mudar os ajustes do Detail Transfer, só esse nó reexecuta, em alguns segundos.
Máscaras de luz
No lugar de um latente vazio, dê ao KSampler uma máscara de luz: uma imagem em preto e branco em que o branco é luz. Carregue a máscara, passe pelo VAE Encode e conecte ao latent_image do KSampler. Desenhei um conjunto de máscaras (redonda, listras, linhas diagonais e outras); estão no meu Patreon.
Máscaras duras queimam a imagem. Uma máscara pura em preto e branco dá um contraste altíssimo, e uma máscara redonda produziu uma luz muito forte que também atingiu os olhos. Para suavizá-la, adicione o Remap Image Range entre a máscara e o VAE Encode, com uma pré-visualização: aumente o mínimo e reduza o máximo. Desci até cerca de 20 por cento. Não é em tempo real como no Photoshop; você executa o grafo para ver até a pré-visualização.
Com máscaras, o prompt importa muito. «Spotlight» deu luz dura; «neon light» deu neon. Costumo enfileirar seis ou oito de cada vez. (Clicar no número de um nó de pré-visualização mostra todas as pré-visualizações de execuções anteriores, um recurso novo do ComfyUI; atualize o ComfyUI de vez em quando.)
Multiplicador: o padrão 0,182 do IC-Light Conditioning é bom. Em 0,155 ficou mais escuro; em 0,25 queimou a imagem quase até um visual estilizado.
Resultados em preto e branco
Às vezes ele devolve imagens em preto e branco e não sei por quê. Pôr «black and white» no prompt negativo fez a saturação enlouquecer. Testar o modelo Photon também produziu muitas imagens em preto e branco no começo. Meu laptop de 4 GB as fez com muito mais frequência que meu PC de 24 GB, que quase sempre dá cor. Um prompt como «50% saturated» pode ajudar. No fim escolhi a dedo mais do que usei muitos prompts; mantenho os prompts mínimos.
Resolução maior
O SD 1.5 e o IC-Light são treinados em 512 × 512. Você ainda pode alimentar uma imagem de 1024 × 1024, desde que a máscara tenha o mesmo tamanho (use um nó de redimensionamento). O resultado ficou um pouco queimado e mais estilizado, mas de maior qualidade. Pode valer a pena, porque os upscalers às vezes suavizam a pele de um jeito plástico.
Pinte a luz à mão
Você também pode pintar uma máscara de luz diretamente:
- Botão direito no Load Image → Open in Mask Editor e pinte onde a luz deve cair (testei um visual noir dos anos 1950 num rosto).
- Convert Mask to Image, depois no VAE Encode.
- Se o resultado ficar borrado, confira os tamanhos: quando a máscara não combina exatamente com a imagem de 512 × 512, tudo quebra.
- Suavize: Mask Blur (Essentials) antes de converter em imagem (usei 66), depois o Remap Image Range em cerca de 30 por cento com os brancos reduzidos.
Grupos e paisagens
O IC-Light também funciona com várias pessoas. Numa foto de família gerada, «daylight» deu resultados interessantes. Uma máscara de feixe de luz na criança, ou «beam of light» no prompt, criou uns feixes de luz malucos; talvez seja preciso ajustar o multiplicador.
Numa foto de paisagem da Austrália, «daylight» deu resultados interessantes, «sunset» deixou tudo vermelho demais e assustador, e «afternoon» às vezes trocou o mar por uma paisagem que não estava lá, mas às vezes fez um bom trabalho. É preciso brincar com os prompts.
Ampliando o resultado
Uma imagem reiluminada de 512 px pode chegar a 8K com o meu fluxo de upscaling gratuito. O resultado nem sempre foi incrível; muitas vezes achei melhor a imagem reiluminada de 512. Mas se você precisa da resolução, ainda dá um resultado decente.
Assista à versão em vídeo (19:19)
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
Posso usar o IC-Light v2 no ComfyUI?
Não quando fiz isto. O IC-Light v2 só estava disponível como serviço pago e não comercial no próprio site. Este guia usa o IC-Light v1, que roda localmente.
Que modelo do IC-Light devo baixar?
O modelo FC (foreground-conditioned) é só o que uso. O modelo FBC também recebe um fundo; testei imagens de fundo e nunca ficaram boas, então descrevo o fundo no prompt.
Por que minhas imagens reiluminadas saem estouradas ou em preto e branco?
Máscaras de luz duras em preto e branco queimam a imagem: suavize-as com o Remap Image Range e um blur de máscara. Resultados em preto e branco apareceram com frequência no meu laptop de 4 GB e raramente no meu PC de 24 GB; um prompt do tipo «50% saturated» pode ajudar.
Que multiplicador devo usar no IC-Light Conditioning?
O padrão 0,182 funciona bem. 0,155 ficou mais escuro; 0,25 queimou a imagem quase até um visual estilizado.
