ComfyUI Upscale + FaceDetailer: ordem e ajustes
Ordem correta: upscale antes do FaceDetailer, com guide_size e force_inpaint desligado para evitar repintura total.
On this page
ComfyUI Upscale + FaceDetailer: ordem e ajustes
TL;DR
Rode o upscale primeiro e depois o FaceDetailer. Ajuste guide_size para a resolução desejada do recorte do rosto e mantenha force_inpaint: false — isso ignora rostos já maiores que guide_size, evitando repintura do frame inteiro. Pipeline: T2I → upscale → detectar rostos (YOLO+BBOX+SAM) → FaceDetailer → passe opcional em mãos.
FaceDetailer: os parâmetros que controlam as repinturas
O tutorial de Detailers lista as opções herdadas por todas as variantes de nó Detailer (incluindo FaceDetailer):
| Parâmetro | O que faz |
|---|---|
guide_size | Tamanho de referência; SEGS menores que isso são ampliados para corresponder; SEGS maiores são ignorados |
guide_size_for | bbox usa a caixa do detector; crop_region usa a região de recorte expandida |
max_size | Limite rígido no lado maior do recorte |
force_inpaint | Desativa o skip — inpainta mesmo se o SEG já for ≥ guide_size |
noise_mask | Aplica máscara de ruído durante o inpainting |
inpaint_model | Deve ser true ao usar checkpoint dedicado de inpainting com denoise < 1.0 |
noise_mask_feather | Suaviza a borda da máscara; pode criar artefatos |
refiner_ratio | Proporção de etapas do refiner SDXL |
cycle | Número de iterações de detalhe por SEG |
Ideia-chave: o comportamento de "skip" está embutido em guide_size. Se o recorte de um rosto detectado já for ≥ guide_size, o Detailer não o amplia e não o inpainta — a menos que force_inpaint esteja ativado. É esse ajuste que impede um passe de repintar o frame inteiro: deixe force_inpaint desligado, defina guide_size na resolução em que você quer os rostos inpaintados, e qualquer rosto maior que isso na imagem ampliada será deixado de lado.
Grafo mínimo de nós
Load Checkpoint → KSampler (T2I)
↓
UpscaleModelLoader → ImageUpscaleWithModel
↓
UltralyticsDetectorProvider (bbox/face_yolov8m.pt) → BBoxDetectorForEach
↓
SAMLoader (sam_vit_b_01ec64.pth) → SAMDetectorCombined
↓
FaceDetailer
├─ model, clip, vae, positive, negative (ou DETAILER_PIPE)
├─ guide_size_for: bbox
├─ force_inpaint: false
├─ noise_mask: true
└─ cycle: 1
↓
Save Image
Para um segundo passe em mãos, alimente a mesma imagem ampliada em uma cadeia paralela que troca o modelo BBOX para bbox/hand_yolov8n.pt (ou segm/person_yolov8n-seg.pt + SAM) e roda outro FaceDetailer (ou Detailer (SEGS)) com guide_size_for: bbox. Veja Hand detailing workflows para alternativas. Para detalhes de instalação, veja ComfyUI Manager essentials e Impact Pack tutorials.
Instalando os packs e modelos necessários
| Componente | Fonte | Método de instalação |
|---|---|---|
| ComfyUI-Impact-Pack | GitHub ltdrdata/ComfyUI-Impact-Pack | ComfyUI-Manager → Install Custom Nodes → buscar "Impact Pack" |
| ComfyUI-Impact-Subpack | GitHub ltdrdata/ComfyUI-Impact-Subpack | Manager → buscar "Impact Subpack" (fornece UltralyticsDetectorProvider) |
| Modelos BBOX (rosto, mão) | HuggingFace Bingsu/adetailer ou assets Ultralytics | Baixar arquivos .pt para models/ultralytics/bbox/ |
| Modelos SEGM (pessoa) | HuggingFace Bingsu/adetailer | Baixar para models/ultralytics/segm/ |
| Modelo SAM | Facebook segment-anything | sam_vit_b_01ec64.pth → models/sams/ |
Atalho do Manager: se um workflow carregar com badges vermelhos de "missing node", abra o menu do Manager e clique em Install Missing Custom Nodes — ele escaneia o JSON do workflow, associa tipos de nó desconhecidos ao seu registro e oferece instalação com um clique para Impact Pack, Impact Subpack e outras extensões faltantes.
Configurando extra_model_paths.yaml para os modelos aparecerem
No Windows (ComfyUI Desktop), o arquivo fica na pasta da instância mostrada em Manager → Manage → Storage → MODELS/Use Shared Models. Se existir apenas extra_model_paths.yaml.sample, copie-o, renomeie para extra_model_paths.yaml e edite (UTF-8, apenas espaços — sem tabs):
ultralytics_bbox: D:/ComfyUI/models/ultralytics/bbox
ultralytics_segm: D:/ComfyUI/models/ultralytics/segm
O README do Impact Subpack documenta as chaves como ultralytics_bbox e ultralytics_segm; barras normais funcionam no Windows, barras invertidas não foram testadas. Reinicie o ComfyUI após salvar.
Nota sobre o modelo RedOlives (SDXL vs SD 1.5)
O workflow do artigo 3898 foi construído para o merge RedOlives (modelo Civitai 283810). A API do Civitai retorna um campo baseModel vazio para esse modelo; a descrição faz referência ao SDXL-Lightning no nome de uma versão. Se você trocar para um checkpoint SD 1.5, deve trocar também o VAE — o artigo 3898 afirma isso explicitamente.
Erros comuns e correções
| Sintoma | Causa | Correção |
|---|---|---|
Modelos BBOX/SEGM baixados mas invisíveis no dropdown do UltralyticsDetectorProvider | extra_model_paths.yaml sem entradas ultralytics_bbox / ultralytics_segm | Adicionar paths apontando para models/ultralytics/bbox e models/ultralytics/segm; reiniciar o ComfyUI |
Nó UltralyticsDetectorProvider não encontrado no menu de nós | Apenas o Impact Pack instalado, não o Impact Subpack | Instalar ComfyUI-Impact-Subpack separadamente (Manager → "Impact Subpack") |
| "Install missing nodes" não óbvio no Manager | Botão é chamado Install Missing Custom Nodes no menu do Manager | Abrir menu do Manager → clicar em Install Missing Custom Nodes |
| Erro de parse do YAML na inicialização | Tabs ou indentação incorreta em extra_model_paths.yaml | Usar apenas espaços (sem tabs); validar com um linter YAML |
FAQ
Qual ordem os nós de upscale e face detail devem ter em um workflow ComfyUI? Rode o upscale primeiro e depois o FaceDetailer. O workflow documentado no artigo 4237 usa T2I → upscale → face detail → hand detail, e a documentação do Impact Pack confirma que o FaceDetailer inpainta apenas as regiões SEGS detectadas no tamanho atual de pixel.
Como o FaceDetailer evita repintar a imagem inteira em vez de apenas o rosto? O FaceDetailer trabalha com SEGS (regiões de detecção), não com o frame inteiro. Ele recorta cada rosto detectado, opcionalmente redimensiona o recorte para guide_size, inpainta esse recorte e cola de volta. Regiões maiores que guide_size são ignoradas, a menos que force_inpaint esteja ativado.
Qual a diferença entre os nós FaceDetailer e FaceDetailerPipe? FaceDetailer é um nó de passe único. FaceDetailer (pipe) aceita e emite um bundle DETAILER_PIPE (model, CLIP, VAE, positive, negative) para que o mesmo pipe possa ser reusado em vários passes de detalhe ou encadeado com outros nós baseados em pipe.
Como configurar extra_model_paths.yaml para modelos YOLO BBOX no ComfyUI? Adicione as chaves ultralytics_bbox e ultralytics_segm apontando para seus diretórios models/ultralytics/bbox e models/ultralytics/segm. Use espaços (não tabs) para indentação; barras normais funcionam no Windows.
O ComfyUI Manager tem um recurso "install missing nodes"? Sim — o menu do Manager contém Install Missing Custom Nodes. Ele escaneia o workflow atual por tipos de nó não reconhecidos, associa-os ao seu registro e oferece instalação com um clique.
Por que preciso tanto do Impact Pack quanto do Impact Subpack? O Impact Pack contém os nós FaceDetailer e Detailer. O Impact Subpack contém o UltralyticsDetectorProvider, que carrega os modelos YOLO BBOX/SEGM usados pelo FaceDetailer para detecção. São mantidos como pacotes separados.
Posso rodar o face detail antes do upscale? Pode, mas o recorte de inpainting será menor (limitado pela região de rosto pré-upscale). O upscale subsequente esticará aqueles pixels inpaintados. Não existe comparação A/B publicada, mas os workflows documentados colocam o upscale primeiro.