Os campos de primeiro nível
As chaves de resultado são strings
Cada bloco de resultado vem indexado pelo número da imagem como texto JSON:"0", "1"… A matriz biométrica é body.biometric["0"]["1"], não [0][1]. Em linguagens tipadas, desserialize como Map<String, …>.
"0" vs "0") sempre vale 100: é cada rosto contra si mesmo. Se você também enviou faceVectors, os vetores continuam a numeração depois das imagens: 1 imagem + 1 vetor ⇒ chaves "0" (a imagem) e "1" (o vetor).
Referências medidas com vu_v4 sobre as fotos de teste da equipe: mesma pessoa ≈ 93–95 · pessoas diferentes ≈ 19. Com as mesmas duas fotos, cosine dá 78 e euclidean_l2 dá 66: nunca compare pontuações de metodologias diferentes.
inferenceConfidence muda de forma
Aparece para cada imagem, sempre, mas com duas formas:
Tipifique
code e confidence como opcionais. O mapeamento é fixo: 200 = high, 202 = medium, 406 = low.
O que degrada o veredito: máscara, olhos fechados, desfoque, pose não frontal, maquiagem extrema e — automaticamente — qualquer imagem abaixo de 360 px de lado.
Os 16 atributos de faceFeatures
Cada atributo é uma pontuação 0–100 em que mais alto = mais presente: blurry, eyeglasses, sunglasses, faceMask, leftEyeClosed, rightEyeClosed, mouthOpen, beard, mustache, smiling, heavyMakeup, hat, earrings, necklace, necktie, lipstick. Use-os para guiar o usuário («tire os óculos de sol»), não como condições de identidade.
headPoseEstimation traz a pose em graus: leftRight (guinada) e upDown (arfagem). Zero é frontal perfeito; um rosto útil para biometria costuma estar dentro de ±15°.
O antispoofing vem aninhado e com escala própria
antiSpoofingFace["0"] contém a resposta completa do serviço de Antispoofing Facial, aninhada tal como é:
spoofing (booleano). Não decida pelo code nem pelo confidence internos: eles carregam a semântica do serviço de antispoofing, não a do Face Analysis.
Particularidades do desserializador
- Os blocos de resultado são indexados por string (
"0","1"), não por inteiro. inferenceConfidencetem duas formas:codeeconfidencesão opcionais.antiSpoofingFace[i]pode ser um objeto ounull.confidencesduplicabiometric: ignore-o, mas não falhe quando aparecer.- Com
faceVectors, a numeração dos resultados inclui os vetores depois das imagens. - Os
500chegam com corpo em texto puro, não JSON — veja Erros.
Próximo: Erros
Códigos de erro, os
500 em texto puro, o aborto de lote com imageNumber e o que pode ser repetido.