Blog / Engenharia

Um detector de rostos uma vez restaurou a calça de uma criança

· atualizado em 24 de agosto com as medições do piso de detecção · dados: implementação, testes unitários, bancada de laboratório

Durante os primeiros testes, o detector de rostos relatou uma detecção confiante em um instantâneo de família e o pipeline obedientemente a “restaurou”, só que a detecção era a calça de veludo cotelê de uma criança pequena. As dobras do tecido pareceram um rosto para o detector, e o modelo de rostos então as repintou como um. A falha nos ensinou que, em fotografias antigas, a confiança do detector sozinha não é um sinal utilizável, e produziu o crivo geométrico pelo qual todo rosto candidato agora precisa passar. Esta revisão acrescenta a outra metade da história, medida: quão pequeno um rosto pode ser e ainda ser encontrado pelo detector. O piso fica entre 14 e 20 pixels no letterbox, e a famosa fotografia da Conferência de Solvay de 1927, cujos 29 rostos medem 21–27 px, o supera com todos os participantes encontrados, sem exceção.

29 / 29rostos de Solvay 1927 encontradoscom 21–27 px de altura no letterbox
14–20 pxo piso de detecçãofalha abaixo, encontra acima
27 / 29com divisão ingênua em 2×2rostos na fronteira somem; a sobreposição importa
3regras de geometria no crivoconfiança, faixa dos olhos, boca abaixo dos olhos

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: e5_detect.json.

1 · Por que fotos antigas quebram detectores de rostos

Os detectores são treinados sobretudo em imagens modernas e bem expostas. Digitalizações antigas apresentam texturas que o conjunto de treinamento raramente contém: trama de tecido, renda, folhagem, danos por água e grão, todas capazes de produzir falsas detecções com alta confiança. Elas também apresentam o problema oposto: rostos reais que são pequenos, desbotados e de baixo contraste. Um limiar de confiança sozinho não consegue separar os dois, porque os falsos positivos frequentemente pontuam mais alto que os rostos pequenos reais. Nosso detector é o SCRFD-2.5G[1], decodificado 1:1 a partir da implementação de referência do FaceFusion[2]: a foto é colocada em letterbox numa entrada de 640×640, e cada candidato volta com uma caixa, cinco pontos de referência e uma pontuação de confiança.

2 · O crivo

Em vez de confiar na pontuação, testamos se os pontos de referência da detecção estão dispostos como um rosto: aritmética barata sobre os pontos dos olhos e da boca:

passa ⇔ pontuação ≥ 0.55  ∧  0.25 < deyes/w < 0.75  ∧  ymouth > ȳeyes + 0.2·deyes(1)
caixa de detecção, largura wdistância entre olhos dboca> 0.2 × d abaixo dos olhoscrivo: 0.25 < d / w < 0.75 · confiança ≥ 0.55
Figura 1. O crivo de plausibilidade. Os pontos de referência precisam estar dispostos como um rosto (olhos a uma distância de rosto entre si, relativa à caixa; boca claramente abaixo da linha dos olhos) antes de qualquer restauração rodar.
RegraLimiarO que rejeita
Confiança do detector≥ 0.55Detecções marginais que não valem mais testes.
Distância entre olhos vs. largura da caixa0.25 – 0.75Aglomerados de pontos apertados ou largos demais para serem dois olhos numa caixa do tamanho de um rosto: a geometria típica dos falsos positivos de dobras de tecido.
Boca abaixo dos olhosem ≥ 0.2 × distância entre olhosDisposições de pontos invertidas e embaralhadas.

Os limiares são deliberadamente frouxos: descrevem qualquer rosto humano plausível, incluindo vistas inclinadas e de três quartos, enquanto excluem disposições que nenhum rosto pode ter. Desde que o crivo entrou em produção, a classe de falha da calça não voltou a ocorrer nas nossas fotos de teste.

3 · Novo: o piso de detecção, medido

00.250.50.7515204080120200altura do rosto no letterbox de 640 px (px)confiança da detecçãocrivo ≥ 0.55
Figura 2. Confiança da detecção vs altura do rosto no letterbox de 640×640. Confortável de ~200 px até ~28, degradando abaixo disso, morta entre 20 e 14: todo rosto com 14 px ou menos foi perdido de imediato. A linha tracejada é o piso de confiança de 0.55 do crivo.
A fotografia de grupo da Conferência de Solvay de 1927 com caixas de detecção desenhadas ao redor de todos os vinte e nove rostos
Figura 3. Todos os 29 participantes da Conferência de Solvay de 1927 detectados na escala do quadro inteiro (caixas desenhadas pelo script de laboratório, pós-NMS, depois do crivo geométrico). Os rostos no letterbox medem 20.9–27.1 px de altura, pairando logo acima do penhasco da Figura 2.

O resultado de Solvay cai exatamente onde a escada prevê, do lado bom: todos os 29 de 29 participantes detectados na escala do quadro inteiro, confiança 0.734–0.864, cada um sobrevivendo ao crivo geométrico. E um controle que vale publicar por ser contraintuitivo: dividir ingenuamente a mesma foto em 2×2 (mais pixels por rosto) encontra só 27 de 29. Dois rostos ficam a cavalo das fronteiras dos blocos e nenhum bloco os vê inteiros; uma grade 3×3 por acaso corta em outro lugar e recupera todos os 29. Essa assimetria é o motivo de a passagem de rostos pequenos do motor do navegador detectar no quadro inteiro e em quadrantes sobrepostos, fundindo candidatos por interseção sobre união: a detecção em blocos precisa de sobreposição, não só de resolução.

A leitura prática para fotos de grupo: um rosto menor que cerca de 3% do lado maior da foto é invisível para o detector. Recorte mais apertado antes de restaurar (os mesmos pixels voltam maiores pelo letterbox, do lado seguro do penhasco) e veja a nota sobre renderização de rostos para o que acontece com rostos pequenos depois da detecção.

4 · Limitações

Um crivo geométrico só consegue rejeitar disposições impossíveis. Um falso positivo que por acaso tenha forma de rosto (uma boneca, uma estátua, um retrato na parede) passa, e talvez devesse mesmo, já que restaurá-lo é inofensivo. A tarefa do crivo é estreita: nunca mais repintar a roupa de alguém como um rosto. As medições do piso são um retrato e uma foto de grupo: o bastante para localizar o penhasco entre 14 e 20 px, não para mapear sua forma exata entre poses e iluminações; e a confiança entre 20 e 28 px é visivelmente mais ruidosa do que acima, então rostos nessa faixa devem ser considerados em risco, não seguros.

Referências

  1. Guo, J., Deng, J., Lattas, A., & Zafeiriou, S. (2021). Sample and Computation Redistribution for Efficient Face Detection. arXiv:2105.04714. arxiv.org
  2. FaceFusion (open-source face processing platform): the reference implementation our SCRFD decode and model preprocessing are ported from, 1:1. github.com
  3. Couprie, B. (1927). Photograph of the Fifth Solvay International Conference: 29 attendees, the densest concentration of physics Nobel laureates ever photographed. Public domain, via Wikimedia Commons. commons.wikimedia.org
  4. Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
  5. ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai