FLUX.2 Klein Face Swap: Fluxo, Cores, Falhas
Como trocar rostos com FLUX.2 Klein usando o modo think do LanPaint e transferência de cor Lab — e onde o fluxo de trabalho quebra.
On this page
FLUX.2 Klein Face Swap: Fluxo, Correção Cor, Falhas
TL;DR
- O "modo think" do LanPaint executa 2 iterações internas de Langevin por passo de denoising, alinhando o novo rosto aos pixels vizinhos antes da saída final
- A transferência de cor Lab combina tom de pele e iluminação independentemente da estrutura facial, eliminando a aparência de recorte
- O modelo destilado de 9B precisa de guidance baixa (1.0–2.0) e apenas 2 passos de think — mais megapixels ou passos produzem rostos plásticos
Como Funciona o Pipeline de Reface do FLUX.2 Klein
FLUX.2 Klein é um transformer de fluxo retificado de 9 bilhões de parâmetros que unifica texto-para-imagem e imagem-para-imagem em um modelo, rodando em menos de 0.5 segundos em uma RTX 4090 (blog da BFL). A variante 9B requer ~29 GB de VRAM (model card). O fluxo de trabalho de face swap da comunidade constrói sobre isso adicionando três técnicas: inpainting LanPaint com modo think, transferência de espaço de cor Lab* e LoRAs direcionadas.
Modo Think do LanPaint: Iterações Internas Antes do Denoising
Inpainting padrão faz denoising uma vez por passo. O LanPaint insere um loop de dinâmica de Langevin — o "modo think" — que executa múltiplas iterações internas antes de cada passo externo de denoising. Para FLUX.2 Klein, o exemplo oficial usa 2 passos internos (reduzido do padrão 5) porque modelos destilados ficam instáveis com mais (repo do LanPaint).
Cada iteração interna calcula dois termos de score:
- Um score de regularização puxando o latente para a entrada ruidosa
- Um score de alinhamento de conteúdo puxando pixels mascarados para a região conhecida (não mascarada) e a própria previsão de imagem limpa do modelo
O balanço é controlado por LanPaint_Lambda (padrão 16.0). Lambda mais alto prende o rosto inpintado mais estritamente aos pixels vizinhos, reduzindo discrepâncias de cor e artefatos de borda. O loop interno usa um StochasticHarmonicOscillator com fricção (padrão 15.0) e pode parar antecipadamente quando a previsão de imagem limpa da região mascarada estabiliza (nodes.py do LanPaint).
Para face swap, isso significa que o modelo "pensa" em como o novo rosto deve se mesclar com o tom de pele existente, direção da iluminação e textura antes de se comprometer com o resultado final denoisado.
Transferência de Cor Lab: Separando Estrutura de Tom
Após o inpainting, o rosto trocado muitas vezes carrega o color cast da imagem fonte. O fluxo de trabalho aplica uma transferência estatística Lab* (CIELAB) baseada no algoritmo de Reinhard (color_transfer_by_lucas):
- Converter tanto a região do rosto inpintado quanto a referência alvo para espaço Lab*
- Combinar média e desvio padrão por canal (L=luminância, a=verde-vermelho, b=azul-amarelo)
- Escalar por
(ref_std / content_std)e deslocar por(ref_mean - content_mean) - Mesclar em força ajustável (0.0–1.0), então converter de volta para RGB
Como L carrega brilho e estrutura enquanto a/b* carregam oposição cromática, a transferência ajusta tom de pele e cor da iluminação sem borrar bordas ou textura facial. É por isso que o resultado para de parecer um recorte — a geometria vem do LanPaint, o contexto cromático vem do alvo.
Sampler Recomendado: Euler (Não Euler Ancestral)
O nó do LanPaint lista samplers como ["euler", "euler_ancestral", "heun", ...] com euler primeiro (nodes.py do LanPaint). O artigo original afirma que "euler_ancestral / normal parece um pouco melhor", mas nenhum benchmark específico do FLUX sustenta isso. Euler ancestral adiciona ruído estocástico a cada passo (random walk não convergente), que pode introduzir variação fina que briga com o objetivo de alinhamento de conteúdo do LanPaint. Euler determinístico (ou DPM++ 2M Karras) dá estrutura facial reproduzível — importante quando você precisa da mesma identidade entre gerações. Os exemplos oficiais do ComfyUI FLUX documentam os padrões de sampler, scheduler, CFG e FluxGuidance (exemplos do ComfyUI FLUX).
Pilha de LoRA para Textura e Consistência
| LoRA | Fonte | Modelo Base | Força Típica | Propósito |
|---|---|---|---|---|
| BFS Best Face Swap | HuggingFace | FLUX.2 Klein 9B | 0.8–1.0 | Transferência de identidade principal |
| Consistency | dx8152/Flux2-Klein-9B-Consistency | FLUX.2 Klein 9B | 0.2–1.0 | Reduz deriva de pixels entre iterações |
| Dramatic Dark Lighting | civitai.com/models/2477155 | FLUX.2 Klein 9B | 0.5–0.8 | Melhora textura e clima |
| Flux2 Anime VAE | CabalResearch | — | — | Decode mais nítido, leve viés anime |
A LoRA Consistency mira especificamente a deriva que se acumula quando você re-codifica/decodifica ou itera — fundos permanecem alinhados, reflexos se mantêm, edições repetidas não compostam deformação.
Erros Comuns e Correções
| Sintoma | Causa | Correção |
|---|---|---|
| Rosto parece plástico / ceroso | Megapixels altos (2–3) + suavização do modelo destilado; ou guidance muito alto | Mantenha Set Megapixels em 1; use guidance 1.0–2.0 conforme recomendação do LanPaint; adicione prompts de textura ("poros visíveis, acabamento matte") |
| Discrepância de cor na mandíbula / testa | Diferença de iluminação entre fonte e alvo; sem transferência de cor | Rode transferência de cor Lab após inpainting em força 0.5–0.8; combine iluminação fonte/alvo no pré-processamento |
| Borda da máscara brilhante ou quebrada | Bug oculto do LanPaint ≤ v1.4.x (pior em z-image-base) | Atualize LanPaint para v1.5.0+ (release notes) |
| Rosto pequeno perde detalhe | Recorte de rosto abaixo de ~256×256 após máscara; restrição de modelo swap 128×128 | Aumente Set Megapixels para 2–3 com 4–8 passos LanPaint; encadeie upscale do FaceDetailer ou ADetailer |
| Identidade facial diferente a cada geração | Ruído estocástico do Euler ancestral | Troque para Euler determinístico ou DPM++ 2M Karras; fixe seed |
| Fundo muda entre iterações | Deriva de pixels de encode/decode VAE repetido | Adicione Consistency LoRA em força 0.5–0.7 |
Onde o Fluxo de Trabalho Falha
Limitações do Modelo Destilado
FLUX.2 Klein 9B é destilado em passos para 4 passos de inferência. O README do LanPaint avisa explicitamente: "desempenho degradado em modelos destilados, como Flux.dev... use flux guidance baixo (1.0-2.0) para mitigar." O loop interno de Langevin assume um agendamento de ruído que a destilação comprime, então o sinal de alinhamento de conteúdo enfraquece. Variantes base (não destiladas) 9B/4B evitam isso mas precisam ~29GB VRAM e mais passos.
Rostos Pequenos na Resolução Padrão
Na resolução padrão, um rosto distante pode ficar abaixo do limiar efetivo de detalhe do modelo de face swap. Aumentar megapixels ajuda mas produz saída mais suave, menos detalhada — o visual "plástico". A correção prática é abordagem em duas passagens: inpainting em resolução mais alta com 4–8 passos de think, depois passe de refinamento do FaceDetailer.
Casos Limite da Transferência de Cor
A transferência Lab aplica as estatísticas de cor do alvo globalmente. Se o alvo tem color casts fortes (neon, golden hour, tungstênio/dia mistos), combinar estatísticas assa esses casts no rosto. Máscara manual da região de transferência ou uma segunda passagem de correção (color grading seletivo) pode ser necessário.
Componentes Não Verificados
O artigo da Civitai 27730 detalha o fluxo de trabalho reface com 4 vs 8 passos, megapixels e a pilha de LoRAs (Civitai 27730). A LoRA BFS Best Face Swap (civitai.com/models/2027766), LoRA Dramatic Dark Lighting e Flux2 Anime VAE foram citadas no artigo fonte mas não puderam ser acessadas independentemente durante a pesquisa. Seus efeitos alegados (fidelidade de identidade, melhora de textura, nitidez) permanecem de fonte única.
FAQ
Como o modo think do LanPaint melhora a qualidade do face swap? Ele executa iterações internas de Langevin que alinham a região facial mascarada aos pixels vizinhos antes de cada passo de denoising. O rosto ganha múltiplas chances de combinar tom de pele e iluminação em vez de uma passagem única.
Por que face swaps do FLUX Klein parecem plásticos em megapixels altos? O campo receptivo do modelo destilado em resolução mais alta produz saídas super-suavizadas. O modo think do LanPaint composta esse suavização. Fique em 1 megapixel padrão; se o rosto for minúsculo, use 2 megapixels com 4–8 passos de think.
Qual sampler devo usar — euler ou euler_ancestral? Use euler (determinístico). É o primeiro/padrão na lista de samplers do LanPaint. Euler ancestral adiciona ruído aleatório por passo, que pode desestabilizar identidade facial.
Como a transferência de cor Lab faz face swaps combinar iluminação? Lab separa luminância (L) de crominância (a, b). A transferência combina média e desvio padrão de cada canal independentemente, então tom de pele e cor da iluminação se adaptam enquanto a estrutura facial permanece intacta.
Qual a diferença entre FLUX.2 Klein base e destilado para inpainting? Variantes base (9B/4B) são não destiladas — mais estáveis com LanPaint, precisam ~29GB VRAM. Destilado 9B roda em 4 passos mas LanPaint degrada nele; requer guidance mais baixa (1.0–2.0) e menos passos de think (2).
Posso usar isso para rostos não-humanos? A LoRA BFS é treinada em rostos humanos. Para animais ou personagens, transferência baseada em IPAdapter com imagem de referência funciona melhor que modelos de swap ONNX.
Por que a borda da minha máscara brilha? LanPaint ≤ v1.4.x tinha um bug. Atualize para v1.5.0+.
Preciso da Consistency LoRA? Para um swap único, provavelmente não. Para iterar (re-codificar, múltiplas edições, encadear passagens), use em 0.5–0.7 para prevenir deriva composta.