Blog / Engenharia

Por que rostos restaurados por IA parecem personagens de videogame

· atualizado em 24 de agosto com a ablação quantitativa · corpus: 11 digitalizações da Biblioteca do Congresso, 35 rostos (bancada visual) + 4 retratos em domínio público, 120 execuções medidas (bancada de métricas)

Modelos de restauração de rostos podem fazer um rosto de uma foto danificada parecer uma renderização de videogame antigo: pele de plástico, olhos pintados, um rosto nítido mas que não é bem a pessoa. Comparamos oito variantes de renderização em 11 fotografias de domínio público para isolar as causas: são três, são separáveis e nenhuma se resolve com um “modelo melhor”. Esta revisão acrescenta o que a bancada original não tinha: números. Medir de novo a renderização escolhida com um embedding de reconhecimento facial[4] confirma quantitativamente a seleção feita a olho (cada ajuste da renderização “natural” compra identidade mensurável, cortando pela metade o imposto de identidade da restauração), e uma varredura completa do controle de fidelidade mostra por que ele sai de fábrica em 0.7 mesmo com todas as curvas sendo monótonas rumo a 1.0.

3causas separáveis do aspecto de plásticosubstituição total, desvio de cor, rostos pequenos
0.950identidade da entrada degradadaa régua contra a qual toda restauração deve ser julgada
0.868 → 0.909identidade, renderização clássica → naturala ablação, medida em w = 0.7
−0.041imposto de identidade da renderização em produçãometade dos −0.082 do renderizador clássico

Cada número desta nota foi medido no código do pipeline de produção: os mesmos modelos, a mesma matemática. Registros brutos por imagem: e2v2_face.json · e2_face.json.

Digitalização suave e granulada, em preto e branco, de 1862, de três homens em pé junto a uma tendaAntesA mesma digitalização restaurada: rostos mais nítidos e detalhe recuperado, com cor naturalDepois
Figura 1. Uma restauração feita pela ferramenta deste site em uma das fotografias do corpus (Lincoln em Antietam, digitalização de 1862 da Biblioteca do Congresso): rostos reconstruídos e a imagem inteira aprimorada, com o grão e o caráter de cor da própria fotografia preservados. Agosto de 2026.

1 · As três causas

1. Substituição total. O pipeline padrão cola a saída do modelo sobre o rosto original com 100% de opacidade, então cada rosto restaurado é inteiramente desenhado pelo modelo. O grão da fotografia, a textura do papel e o caráter da lente terminam em uma fronteira oval invisível ao redor de cada rosto.

2. Desvio de cor. O modelo de rostos produz a própria cor, não a da foto. Medido na nossa bancada, ele inventou olhos azuis em um ambrótipo da década de 1850 e clareou o tom de pele em um retrato de estúdio do século XIX de uma pessoa negra, um modo de falha conhecido de modelos de rostos treinados em corpora fotográficos modernos, predominantemente de pele clara[2]. Qualquer pipeline que mantenha o croma do modelo herda seus vieses.

3. Rostos pequenos são alucinações. Um rosto que ocupa menos de cerca de 100 px chega a um modelo de rostos de 512 px como uma ampliação bilinear de 5–13×, um borrão. O modelo então inventa um rosto plausível em vez de recuperar o verdadeiro. Isso é um limite da física, não do modelo: um rosto de 40 px pode ficar suave-mas-humano, nunca nítido-e-fiel.

2 · Anatomia de um reparo de rosto

Para ver onde ficam os ajustes, acompanhe um rosto pelo pipeline. A detecção (SCRFD, com o crivo de plausibilidade) produz cinco pontos de referência. O alinhamento resolve a transformação de similaridade por mínimos quadrados (escala s, rotação θ, translação t) que mapeia os pontos detectados de olhos e boca pi sobre o modelo fixo FFHQ[5] qi:

argmins,θ,t Σi ‖ sR(θ)pi + t − qi ‖²(1)

de modo que todo rosto entra na rede em 512×512 com olhos e boca em posição canônica. O modelo, CodeFormer por padrão[1], que restaura consultando rostos em um codebook aprendido em vez de regredir pixels, e expõe um peso de fidelidade w ∈ [0, 1] que dosa entre seu prior (0) e a sua entrada (1), produz um recorte restaurado. Então vem a parte de que esta nota trata: a colagem de volta. A receita clássica compõe esse recorte com opacidade total e nas cores do próprio modelo. A nossa o devolve ao lugar sob uma suavização radial m e compõe cada pixel como

out = blend · m · faceL⊕photoab + (1 − blend · m) · photo(2)

com blend = 0.75, e faceL⊕photoab significando que o modelo contribui só com a luminância (L do Lab) enquanto a fotografia mantém o próprio croma, o espelho exato do nosso colorizador, que contribui só com o croma e mantém a luminância da foto. Rostos pequenos recebem uma passagem dedicada de super-resolução ×4 na sua área de origem antes da restauração, para que o modelo veja detalhe recuperado em vez de um borrão bilinear.

3 · A bancada visual que escolheu a variante H

Oito variantes, cada uma uma execução completa do pipeline sobre o corpus, variando o peso de fidelidade, a opacidade da colagem de volta, a fonte da cor e a SR de rostos pequenos. As saídas foram comparadas lado a lado com os originais em zoom de 100%:

VariantePesoColagem de voltaFonte da corSR de rostos pequenos
A (a de então)0.70100%modelo
B0.90100%modelo
C0.7070%modelo
D0.70100%fotografia
E0.7075%fotografia
F0.8575%fotografia
G0.7050%fotografia
H (selecionada)0.7075%fotografiasim

A H entrou em produção como renderização padrão. A colagem de volta só de luminância acrescenta menos de meio segundo por foto; a passagem de rostos pequenos acrescenta um a dois segundos só por rosto elegível. A seção de limitações original admitia a fraqueza óbvia: a seleção foi por julgamento humano lado a lado em 35 rostos, não por uma métrica. Então construímos a bancada de métricas.

4 · Novo: a ablação, quantificada

Um número enquadra tudo: a própria entrada degradada pontua 0.950 de identidade contra o original. O ArcFace foi treinado sob aumento de dados pesado, então enxerga através de borrão e ruído; a restauração, portanto, não ganha crédito por ser nítida; ela só é debitada quando muda quem está na foto. Todo renderizador paga uma parte desse imposto de identidade. A questão é quanto:

Renderização (todas em w = 0.7)PSNR (dB)id ArcFaceimposto de identidaderazão Tenengrad
Entrada degradada (linha de base)27.320.9500.217
Classic v2 (100% paste, model colour)26.680.8680.0820.373
+ luma-only (photo keeps its chroma)26.720.8820.0680.376
+ 75% blend (grain shows through)27.060.9010.0490.304
Natural (shipped: both + small-face SR)27.090.9090.0410.307

A bancada de métricas concorda com os olhos, ajuste por ajuste. Manter o croma da fotografia compra +0.014 de identidade (o desvio de cor era real, e mensurável). A mescla de 75% compra outros +0.019 e a maior parte do PSNR: deixar um quarto do rosto verdadeiro transparecer vale quase tanto quanto todo o ajuste de fidelidade do modelo de rostos. Juntos, eles reduzem o imposto de identidade pela metade, de −0.082 para −0.041, mantendo ainda cerca de 1.4× a nitidez da entrada. O único custo honesto: a renderização clássica é “mais nítida” pelo Tenengrad (0.373 vs 0.307), nitidez que ela gasta em parte em textura que não é da fotografia. Esse é o compromisso percepção–distorção[6] deslocado para a renderização, e nós o gastamos em identidade.

Quatro painéis do rosto de Florence Owens Thompson: original nítido, cópia degradada, a renderização clássica com pele de plástico e cor deslocada, e a renderização natural preservando grão e tom
Figura 2. A ablação em pessoa: Migrant Mother (Lange, 1936). Clássica v2 (terceiro): pele de plástico e uma dominante de cor que a fotografia nunca teve. Natural (quarto): o detalhe do modelo sob o grão e o tom da própria fotografia. Identidade: 0.868 vs 0.909 contra o original.
Quatro painéis do retrato de Lincoln: original, degradado, a renderização clássica com um desvio de cor frio, e a renderização natural mantendo o tom quente da chapa
Figura 3. Mesma ablação, Lincoln O-77 (1863). A renderização clássica (terceiro) drena o tom quente da chapa e esfria o rosto inteiro: causa 2, desvio de cor, num relance. A renderização natural mantém a cor da fotografia por construção: o modelo só tem permissão para contribuir com luminância.

5 · O controle de fidelidade, varrido de ponta a ponta

O peso w do CodeFormer dosa entre o prior do codebook (0) e a deferência à sua entrada (1)[1]. Nós o varremos em onze passos sob o renderizador natural:

0.60.70.80.9100.250.50.71peso de fidelidade w do CodeFormercosseno ArcFace vs originalentrada degradadaprodução
Figura 4. Identidade ArcFace vs peso de fidelidade sob o renderizador em produção, média de quatro retratos, degradação ×4. Monótona de 0.710 (um estranho plausível) a 0.932, e nunca alcançando a linha de base tracejada da entrada em 0.950: o controle define a alíquota do imposto de identidade, não consegue tornar o imposto negativo. PSNR (25.5 → 27.3 dB) e SSIM são monótonos da mesma forma.

Entramos esperando uma curva de compromisso com um ótimo interior que justificasse 0.7 como “o joelho”. Os dados recusaram: nos números, w = 1.0 domina, em toda severidade:

×2 (mild)×4 (standard)×8 (severe)
0.50.60.70.80.9100.30.50.71peso de fidelidade w do CodeFormercosseno ArcFace vs originalprodução
Figura 5. A interação com a severidade: identidade vs peso em degradação ×2 / ×4 / ×8, renderizador natural. Um w maior vence em toda parte, até em ×8, onde a própria linha de base da entrada caiu para 0.826. No ajuste de produção, o imposto de identidade fica em −0.042 (leve), −0.041 (padrão), −0.068 (severa); em w = 0 chega a −0.27: quando pouca informação sobrevive, o prior preenche o vácuo com as próprias opiniões.

Então por que sair de fábrica em 0.7 e não em 1.0? Porque as métricas são necessárias, não suficientes. O ArcFace mede quem; é quase cego a idade e textura; o mesmo treinamento que o torna robusto ao borrão o torna tolerante à suavização. A observação original da bancada se sustenta pela própria evidência: no 0.5 habitual do modelo, os pés de galinha visivelmente amaciam em Migrant Mother: Florence Owens Thompson tinha 32 anos e carregava a Depressão no rosto, e o prior preferiria que não. Em w = 1.0 o codebook se curva tanto a uma entrada arruinada que lixo de compressão começa a sobreviver. 0.7 mantém quase todo o valor da métrica (0.909 vs 0.932) enquanto as imagens mantêm sua idade. E o painel s8 abaixo é o argumento para nunca deixar w perto de 0 em fotos históricas danificadas:

Três painéis: Lincoln severamente degradado, um rosto liso e mais jovem quase irreconhecível com peso zero, e uma semelhança mais próxima com peso um
Figura 6. Degradação ×8, Lincoln. A partir desta entrada (esquerda), w = 0 (meio) reconstrói com confiança um homem mais liso, mais jovem, diferente: identidade 0.585, perto de cara ou coroa. w = 1 (direita) continua reconhecivelmente Lincoln em 0.788. Quando a evidência é escassa, as opiniões do prior dominam, exatamente quando você quer o controle alto.

6 · Os outros modelos, mesmo renderizador

Modelo de rostosPSNR (dB)id ArcFacerazão Tenengradms / rosto*
CodeFormer (w = 0.7, default)27.090.9090.3077200
GFPGAN 1.427.130.9100.3286046
GPEN-BFR-25626.680.9270.3222633

*Mediana do tempo de relógio da passagem completa (detecção incluída) na máquina de bancada de 2 vCPUs. Sob o renderizador natural, os três modelos[1][2][3] convergem para dentro de 0.02 de identidade uns dos outros: o renderizador, não o modelo, é agora o termo dominante, o que é por si só um achado: o aspecto de “videogame” nunca foi realmente uma questão de qual rede você roda. O CodeFormer continua como padrão pela robustez em danos severos e pelo controle a que esta nota acabou de dedicar duas seções; o GPEN continua sendo a escolha de velocidade, a 2.6 s por rosto.

7 · Limitações

  • A bancada visual tem 35 rostos; a bancada de métricas tem 4 retratos × 120 execuções. As formas monótonas se mantiveram em cada retrato individualmente; essa é a afirmação em que nos apoiamos; os valores absolutos vão variar com o sujeito e a digitalização.
  • O ArcFace é um único árbitro, o padrão, com a ressalva da tolerância ao borrão que exploramos como linha de base. Um estudo perceptual humano sobre milhares de rostos é o instrumento que falta, e a observação sobre as linhas de idade se apoia em olhos, não em embeddings.
  • Degradação sintética. Danos reais de caixa de sapatos acrescentam riscos e espelhamento de prata que a pilha de corrupção não modela; a etapa de danos trata deles separadamente.
  • O limite dos rostos pequenos se mantém: abaixo de cerca de 40 px de rosto, nenhum ajuste produz um rosto nítido e fiel, e a saída honesta é um rosto suave.

Referências

  1. Zhou, S., Chan, K. C. K., Li, C., & Loy, C. C. (2022). Towards Robust Blind Face Restoration with Codebook Lookup Transformer. NeurIPS 35. arXiv:2206.11253. arxiv.org
  2. Wang, X., Li, Y., Zhang, H., & Shan, Y. (2021). Towards Real-World Blind Face Restoration with Generative Facial Prior. CVPR. arXiv:2101.04061. arxiv.org
  3. Yang, T., Ren, P., Xie, X., & Zhang, L. (2021). GAN Prior Embedded Network for Blind Face Restoration in the Wild. CVPR. arXiv:2105.06070. arxiv.org
  4. Deng, J., Guo, J., Xue, N., & Zafeiriou, S. (2019). ArcFace: Additive Angular Margin Loss for Deep Face Recognition. CVPR. arXiv:1801.07698. arxiv.org
  5. Karras, T., Laine, S., & Aila, T. (2019). A Style-Based Generator Architecture for Generative Adversarial Networks (the FFHQ alignment template). CVPR. arXiv:1812.04948. arxiv.org
  6. Blau, Y., & Michaeli, T. (2018). The Perception-Distortion Tradeoff. CVPR. arXiv:1711.06077. arxiv.org
  7. FaceFusion (open-source face processing platform): the reference implementation our SCRFD decode and model preprocessing are ported from, 1:1. github.com
  8. Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
  9. Gardner, A. (1863). Abraham Lincoln, portrait O-77. Public domain, via Wikimedia Commons. commons.wikimedia.org
  10. ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai