Quem avalia prova de vida costuma perguntar quanto custa em reais por verificação. A pergunta que decide o desenho é outra: quanto custa em milissegundos de processamento por quadro analisado. Prova de vida não é um modelo que se liga ou desliga: é uma fusão de camadas, detecção de rosto, classificador de ataque de apresentação, sinais temporais, coerência geométrica, e cada uma consome uma fatia de um orçamento finito, porque do outro lado tem uma pessoa esperando a tela responder.
Este artigo abre esse orçamento com números publicados por quem mantém os modelos abertos e pela avaliação pública do NIST, o instituto de padrões dos Estados Unidos, sempre com a condição de medição ao lado do número. A condição importa tanto quanto o valor: boa parte da confusão comercial do setor nasce de comparar número de GPU de laboratório com número de CPU de produção.
A unidade certa é milissegundo por quadro
Uma verificação por selfie não analisa uma imagem: analisa uma sequência curta. Cada quadro passa por decodificação, redimensionamento, detecção de rosto, recorte e classificação, e o custo total é o custo por quadro vezes o número de quadros, mais o custo fixo da requisição.
Para a primeira camada existe número público com condição de medição declarada. O projeto OpenCV publica, na tabela oficial de benchmark da sua coleção de modelos, que um detector de rosto leve, com entrada de 160 por 120, leva 0,69 milissegundo por inferência num Intel Core i7-12700K, 6,23 milissegundos num Raspberry Pi 4B e 41,13 milissegundos numa placa RISC-V StarFive VisionFive 2. O repositório declara o que o número contém: inferência completa, com pré e pós-processamento, média de dez execuções após aquecimento. Quase sessenta vezes de diferença entre a primeira e a terceira medida, mesmo modelo, mesma entrada.
Para a segunda camada, o classificador de ataque de apresentação, a documentação de um classificador aberto e leve informa 0,081 GFLOPs e 0,435 milhão de parâmetros, e que o modelo do aplicativo de demonstração roda em 20 milissegundos, com a tabela por processador detalhando 19 milissegundos num Kirin 990 5G, 24 num Snapdragon 845 e 90 num RK3288. Somando as duas camadas publicadas, chega-se à ordem de grandeza que interessa a quem vai comprar: detecção mais classificação na casa da dezena de milissegundos por quadro em CPU, e uma sequência de dez quadros fechando na casa das centenas de milissegundos.
O que não entra na conta do modelo
Em CPU, o trabalho fora do modelo compete de igual para igual com ele. Decodificar o JPEG, converter espaço de cor e redimensionar podem custar tanto quanto a propagação de uma rede pequena. Threads mudam tudo: o benchmark que você leu rodou numa máquina de vinte threads, e seu contêiner tem uma ou duas. E a primeira inferência carrega grafo e aloca memória, então medir sem aquecimento infla o número. A regra que resolve os três de uma vez é medir a requisição inteira, mediana e percentil 95, com o limite de CPU real aplicado.
A camada de profundidade custa o orçamento inteiro, várias vezes
A tentação de quem quer endurecer o liveness é acrescentar profundidade: se um rosto real tem relevo e uma foto é plana, por que não estimar profundidade da imagem? A resposta começa pelo preço. Uma referência aberta de profundidade monocular, de 2024, lista em sua documentação oficial quatro escalas, de 24,8 milhões de parâmetros na menor a 1,3 bilhão na maior, e traz um detalhe que muita avaliação ignora: só a menor tem licença Apache 2.0; as outras três são CC-BY-NC-4.0, licença que exclui uso comercial.
A comparação de tamanho, toda ela pública, já diz o bastante: a menor escala desse estimador de profundidade tem 24,8 milhões de parâmetros, a maior tem 1,3 bilhão, e o classificador de ataque citado acima tem 0,435 milhão. São de quase sessenta a três mil vezes mais parâmetros, rodando por quadro analisado, dentro de um orçamento que as duas camadas publicadas já ocupam na casa da dezena de milissegundos. Quanto isso vira de segundos no seu contêiner, só a medição da seção anterior responde, com o limite de CPU real aplicado.
A camada cara também responde à pergunta errada
Se o preço fosse o único problema, bastaria mais hardware. O problema maior é que profundidade estimada a partir de uma imagem plana é, por construção, um sinal que o atacante controla.
Há pesquisa revisada por pares sobre isso. Em DepthFake: Spoofing 3D Face Authentication with a 2D Photo, de Zhihao Wu, Yushi Cheng, Jiahui Yang, Xiaoyu Ji e Wenyuan Xu (IEEE Symposium on Security and Privacy, 2023), os autores estimam a profundidade do rosto da vítima a partir de uma única foto 2D e projetam padrões de pontos construídos com essa profundidade para forjar a leitura de câmeras de luz estruturada. Contra três serviços comerciais de autenticação facial e um dispositivo de controle de acesso, com 50 usuários, relatam 79,4% de sucesso no ataque à camada de profundidade e 59,4% na decisão combinada de cor e profundidade.
A leitura correta é estrutural: relevo reconstruído a partir de uma foto plana é plausível o bastante para satisfazer quem confia nele. Vale lembrar como a literatura clássica usava profundidade: em Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision, de Yaojie Liu, Amin Jourabloo e Xiaoming Liu, apresentado no CVPR 2018, a profundidade aparece como alvo de supervisão pixel a pixel durante o treino, junto de sinais de rPPG, não como etapa cara de inferência acoplada ao fluxo.
A alternativa geométrica custa quase nada
A pergunta que a profundidade tentava responder, este objeto tem volume, tem resposta geométrica muito mais barata. Entre dois quadros com um pequeno movimento de cabeça, pontos a distâncias diferentes da câmera se deslocam em magnitudes diferentes: a ponta do nariz anda mais que o contorno do rosto. Uma superfície plana, foto impressa ou tela, se transforma como um plano, com deslocamento coerente em todos os pontos. Medir isso reaproveita os pontos de referência que o detector já produziu: aritmética sobre algumas dezenas de coordenadas, desprezível diante de qualquer propagação de rede.
O limite precisa ser dito: sem movimento não há evidência, e ausência de sinal não é sinal de ataque. Por isso a camada entra como peso na decisão, ao lado de textura e sinais temporais, nunca como veredito solitário. Sinal temporal barato tem tradição: em Exposing digital forgeries in video by detecting duplication, de Weihong Wang e Hany Farid (workshop de Multimídia e Segurança da ACM, 2007), a detecção de trechos duplicados já mostrava que repetição de conteúdo é pista forte e computacionalmente modesta.
Como ler a latência que um fornecedor cita
A melhor fonte pública para calibrar expectativa é o relatório NISTIR 8491, do programa FATE do NIST, que avaliou 82 algoritmos de detecção passiva de ataque de apresentação, termo definido pela ISO/IEC 30107-1, de 45 desenvolvedores. O apêndice de tempo traz a mediana de duração de cada chamada, sobre mil invocações, com uma única imagem de 1280 por 960 pixels, em máquina de classe servidor sem carga concorrente. A dispersão é o dado interessante: a chamada mais rápida fica na casa de 17 milissegundos e a mais lenta passa de 10 segundos, mais de seiscentas vezes de diferença entre implementações que resolvem o mesmo problema.
Daí saem as perguntas que separam número honesto de número decorativo. A latência citada é de GPU ou de CPU, e de qual máquina? É latência por quadro ou vazão agregada de um lote paralelo, que não se converte em tempo de resposta? Quantos quadros o fluxo analisa por verificação? O tempo inclui decodificação e pré-processamento? É mediana ou percentil 95, e sob qual concorrência? O próprio NIST delimita o escopo do relatório: só detecção passiva por software, sem 3D, sem infravermelho e sem desafio interativo, e explicitamente silente sobre ataques de injeção, que não passam pela lente.
A ordem que evita o arrependimento é fixar o orçamento por verificação antes de escolher os modelos, e exigir que cada camada candidata caiba nele medida em CPU, na condição em que vai rodar. Latência é conversão, e camada cara que responde à pergunta errada é o pior dos dois mundos.
Fontes citadas
- Projeto OpenCV, tabela oficial de benchmark da coleção de modelos, com as condições de medição
- Documentação oficial de um classificador aberto de ataque de apresentação
- Documentação oficial de um estimador aberto de profundidade monocular de 2024
- Wu, Cheng, Yang, Ji e Xu, DepthFake: Spoofing 3D Face Authentication with a 2D Photo, IEEE S&P 2023, p. 917 a 933: doi.org/10.1109/SP46215.2023.10179429
- Liu, Jourabloo e Liu, Learning Deep Models for Face Anti-Spoofing, CVPR 2018: openaccess.thecvf.com
- Wang e Farid, Exposing digital forgeries in video by detecting duplication, ACM Multimedia and Security 2007: doi.org/10.1145/1288869.1288876
- NIST, NISTIR 8491, FATE Part 10, sobre PAD passivo por software, 2023: nvlpubs.nist.gov e a página do programa em pages.nist.gov
- ISO/IEC 30107-1 e 30107-3, vocabulário e metodologia de avaliação de PAD, normas citadas pelo relatório do NIST
