Você não precisa de uma placa de 24 GB nem de um serviço online para ampliar bem uma imagem. O Ultimate SD Upscale alimenta a GPU com um tile pequeno de cada vez, então uma placa com 4 GB de VRAM consegue produzir imagens em 4K e 8K localmente, de graça e sem censura. A qualidade é muito boa. Aqui monto o fluxo do zero, explico os ajustes que importam e mostro onde funciona e onde falha.
Em resumo
- Nós: Ultimate SD Upscale e rgthree (para o image comparer).
- Modelos: um checkpoint SD 1.5 (epiCPhotoGasm) mais um modelo de upscale do OpenModelDB.
- Ajustes: 4×, 20–30 steps, dpmpp_2m_sde_gpu / karras, denoise 0,25, tiles 512 × 512, CFG 6–8.
- Velocidade com 4 GB: 512 → 2048 px em 73 segundos; 1600 → 6400 px em cerca de 11 minutos.
- Maior: encadeie dois nós para 16×.
Novo no ComfyUI? Veja noções básicas do ComfyUI e instalando o ComfyUI Manager.
O jeito rápido: carregue o fluxo
O fluxo pronto é gratuito no meu Patreon. Você também pode arrastar para o ComfyUI uma das imagens de saída dele: o fluxo fica guardado nos metadados da imagem. Instale os nós que faltarem pelo Manager e reinicie.
O fluxo lembra os nomes dos modelos, não os arquivos. Se você não tem o mesmo modelo de upscale ou checkpoint nas suas pastas, o campo mostra «undefined»; escolha o seu. Envie sua imagem no Load Image e aperte Queue.
Monte do zero
1. Instale os nós
Em Manager → Custom Nodes Manager, instale o Ultimate SD Upscale e os nós do ComfyUI do rgthree (que tem o nó de comparação que uso muito). Reinicie.
2. O nó principal e suas entradas
- Adicione o Ultimate SD Upscale. Ele tem muitos parâmetros; falo deles abaixo.
- Adicione o Load Checkpoint com um modelo SD 1.5 (uso o epiCPhotoGasm) e conecte o modelo e o VAE.
- Adicione dois nós CLIP Text Encode para as entradas positiva e negativa e deixe-os vazios. Clique no ponto cinza de cada um para recolhê-los, já que não há nada para ver.
- Adicione o Load Upscale Model e conecte.
- Adicione o Load Image com a imagem a ampliar, um Save Image para a saída e um Image Comparer do rgthree: a saída ampliada em image_a, a original em image_b.
3. Pegue modelos de upscale no OpenModelDB
O OpenModelDB é um ótimo lugar para encontrar modelos de upscale. Alguns são melhores para rostos, outros para objetos, anime ou estilos de desenho animado. Cada página mostra amostras de antes e depois, modelos parecidos e a licença, então confira-a se pretende uso comercial. Os arquivos são pequenos: megabytes, não gigabytes.
Os que uso:
| Modelo | Em que é bom |
|---|---|
| 4x-UltraSharp | Detalhe nítido; meu padrão |
| 4x-FaceUpSharpDAT | Rostos, mais nítido |
| 4x-FaceUpDAT | Rostos, mais suave e liso |
| 4x-Nomos2-hq-drct-l | Arquitetura; uso para rochas |
Coloque os arquivos em ComfyUI/models/upscale_models/ e depois Edit → Refresh Node Definitions para que apareçam na lista.
Fios mais arrumados: em Settings (canto inferior esquerdo) → LiteGraph, mude o modo de renderização dos links de spline para straight ou linear.
Os ajustes que importam
- upscale_by: 4. O nó vai até 4× o original. Você pode encadear nós para 16×, 32× e além.
- Steps: 20–30. 40–50 dá uma qualidade um pouco melhor, mas leva bem mais tempo; há um ponto de retornos decrescentes.
- Sampler: dpmpp_2m_sde_gpu, que é melhor para imagens realistas, com o scheduler karras. Vale experimentar.
- Denoise: 0,25. Isto é muito importante. Em 1,0 ele faz uma imagem totalmente nova. Em 0,2–0,25 mantém a maior parte da imagem e acrescenta um pouco de detalhe; dá a sensação de que 90% fica e 10% muda. Às vezes vou a 0,35, que é mais ou menos o máximo antes de a imagem começar a mudar.
- Largura e altura do tile: 512. O SD 1.5 foi treinado em imagens de 512 × 512, então funciona melhor em tiles de 512. O nó quebra até uma imagem enorme em muitos tiles e processa cada um separadamente, e por isso roda numa placa fraca; só leva mais tempo. Muitos outros métodos de upscaling simplesmente travam quando falta VRAM.
- CFG: 6–8. Mais baixo significa mais variação; muito baixo dá ruído. Muito alto cria artefatos como excesso de nitidez. 8 está bom.
Com um checkpoint SDXL o tile seria de 1024 × 1024. Testei: qualidade um pouco maior, mas bem mais lento. O SD 1.5 em 512 roda muito mais rápido com qualidade praticamente igual.
Teste numa foto que você conhece bem
Comece com uma imagem que você conhece muito bem. Usei uma selfie em Angkor Wat, no Camboja, com padrões ao fundo e um logo na camisa, e a reduzi de propósito para 512 × 512 para ver quão bem ele recuperaria.
A janela de comando mostra o tamanho da tela, a contagem de tiles e o progresso. 512 → 2048 em 4× são 16 tiles. Em 4K ou 8K a contagem sobe rápido: 64, 128, 300, 400 tiles.
No meu laptop de 4 GB levou 73 segundos. Arrastando o controle do comparador: o logo continua nítido e inalterado, os entalhes do teto do templo são mantidos e os óculos parecem exatamente como na vida real. Ele acrescentou uma espinha no meu nariz de que não me lembro.
Trocar para o 4x-FaceUpDAT deu um visual mais favorável e suave. Ele reduziu mais o ruído da pele e fez um ótimo trabalho nos óculos e nos olhos, talvez melhor que o UltraSharp. Mas minha barba ficou muito mais sedosa do que é de verdade, e em close extremo as paredes ao fundo ganharam traços parecidos com fios de cabelo.
Indo mais longe, e quando deixa de ajudar
Para uma imagem em 8K, o jeito mais fácil é carregar a saída de 2K de volta no Load Image e executar de novo.
Peguei uma foto de 400 × 300 de Donald Trump da Encyclopaedia Britannica. A primeira passada deu cerca de 1600 px de largura. A segunda passada, 1600 × 1200 → 6400 × 4800, precisou de 130 tiles a cerca de 4–5 segundos cada e levou 683 segundos. Computadores mais rápidos conseguem um segundo por tile ou menos. O nó mostra o tile atual, então dá para ver quanto falta e ir tomar um café.
O resultado ficou muito mais liso, e não necessariamente de um jeito bom. Num zoom ultra ficou melhor, mas num plano médio não acho que tenha melhorado muito; a pele perdeu qualidade com o excesso de redução de ruído. Para uma segunda passada pode fazer sentido trocar de modelo, por exemplo para o UltraSharp, para impedir a suavização excessiva do rosto.
Comparando o original e o final
O comparador só se atualiza quando o grafo roda, então para comparar o original minúsculo com o resultado de 6K sem ampliar de novo: selecione os nós de upscale e aperte Ctrl+B para ignorá-los, adicione dois nós Load Image (a imagem final e a original), conecte-os ao comparador e enfileire. Roda em poucos segundos.
16×: encadeie dois nós de upscale
- Selecione o nó Ultimate SD Upscale, Ctrl+C e depois Ctrl+Shift+V para colá-lo com todas as conexões.
- Conecte a saída de imagem do primeiro nó à entrada de imagem do segundo.
- Conecte a saída do segundo nó ao Save Image e ao image_a do comparador (o original continua no image_b).
- Os dois nós compartilham o checkpoint, os prompts vazios e o modelo de upscale. Para modelos de upscale diferentes em cada passada, copie também o nó Load Upscale Model.
Você pode digitar nos prompts e isso afeta o resultado, mas não funcionou bem para mim, então os deixo vazios.
No laptop isso pode levar 30 minutos. Não é uma tarefa trivial para um computador com pouca VRAM; muitos upscalers que estudei não conseguiam fazê-la de jeito nenhum, e outros acrescentam ruído demais.
Resultados: onde brilha e onde falha
Meu bule-caveira, do guia de fusão de imagem para imagem, foi de 512 px a 8K com o UltraSharp, com altíssimo detalhe até em zoom ultra. Eu imprimiria e penduraria na parede.
Originalmente entrei no upscaling de IA para o meu próprio trabalho. Num frasco de perfume que desenhei no 3D-Coat, os cortes de voxel deixam bordas ásperas; ir de 1500 a cerca de 3000 px as suavizou lindamente.
Num design de robô, o UltraSharp afiou as bordas poligonais serrilhadas do 3D-Coat. O 4x-FaceUpDAT deu linhas muito mais suaves, as que eu queria. Alguns detalhes minúsculos do rosto ficaram achatados e mudaram, um custo pequeno por um upscale ótimo e rápido de um render final.
Onde falhou: uma foto de GoPro de corais submarinos, com 2500 px de largura, levada a 10–12K. Claramente o modelo não tinha sido muito treinado em corais. Recortar um pedaço de 300 px para dar a ele mais espaço para inventar detalhes também não ajudou. Para imagens submarinas eu precisaria de um modelo de upscale completamente diferente.
Num render antigo de rochas cujo arquivo de cena eu perdi, o resultado intermediário de 2000–3000 px ficou realmente bonito. Em 8–10K ficou liso demais e com ruído removido em excesso; ainda muito melhor que o original minúsculo, mas não um visual de que gostei.
Se você conhece outras técnicas de upscaling que funcionam melhor, deixe um comentário no vídeo. Este é só o meu fluxo.
Assista à versão em vídeo (22:11)
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 ampliar imagens com apenas 4 GB de VRAM?
Sim. O Ultimate SD Upscale divide a imagem em tiles de 512 × 512 e os processa um de cada vez. Num laptop de 4 GB, uma imagem de 512 px foi a 2048 px em 73 segundos; uma saída de 6400 × 4800 levou 130 tiles a cerca de 4–5 segundos cada.
Que denoise devo usar para ampliar?
0,25 mantém a maior parte da imagem e acrescenta um pouco de detalhe. 0,35 é mais ou menos o máximo antes de a imagem começar a mudar. Em 1,0 você obtém uma imagem totalmente nova.
Qual o melhor modelo de upscale?
Depende da imagem. O 4x-UltraSharp mantém os detalhes nítidos; o 4x-FaceUpDAT é mais suave, bom para rostos e para esconder bordas serrilhadas; o Nomos2 serve para arquitetura e rochas. Nenhum se saiu bem numa foto de coral submarino.
Como amplio mais que 4×?
Passe a saída pelo nó de novo, ou encadeie dois nós Ultimate SD Upscale para 16×. Espere tempos de render bem longos e cuidado com a suavização excessiva em 8K ou mais.
