Mapas da face
São dois documentos diferentes, e confundi-los é o erro mais comum sobre leitura facial. O primeiro é o dicionário do movimento da face; o segundo, a gramática que combina esses movimentos. Nesta página os dois estão lado a lado — e ao lado de cada um está o que o motor do FROID de fato calcula a partir dele.
A distinção
Os dois mostram o mesmo rosto e usam os mesmos números — AU1, AU4, AU12. Mas respondem a perguntas que não se substituem.
Pergunta que responde: o que é, isoladamente, cada movimento possível da face?
Cada Unidade de Ação (AU) é um músculo ou grupo muscular nomeado, com um movimento observável e nada além disso. AU4 é o abaixamento das sobrancelhas (corrugador, prócero). AU12 é a tração dos cantos dos lábios para cima (zigomático maior). São entradas de dicionário: nenhuma delas significa uma emoção, do mesmo modo que nenhuma palavra isolada é uma frase.
Pergunta que responde: quais combinações de AUs a literatura do FACS associa a cada emoção e a cada dissonância?
Aqui as entradas do dicionário viram frases. AU6+AU12 é o sorriso de Duchenne; AU23+AU24 é a compressão labial da hostilidade contida; AU1+AU2+AU5 é a assinatura de sobressalto do medo. É a gramática — e é dela que sai qualquer leitura, porque a combinação carrega sentido que a peça sozinha não carrega.
Mapa 1 · O explicativo unitário
O Facial Action Coding System, de Paul Ekman e Wallace Friesen, decompõe o movimento facial em unidades anatômicas. O mapa abaixo é o catálogo completo dessas unidades — inclusive as que o FROID não calcula. Clique para ampliar.
O navegador do paciente executa o modelo MediaPipe FaceLandmarker (ARKit) sobre o vídeo local e produz 52 coeficientes de blendshape — valores de 0 a 1 que descrevem deformações da face. Só esses 52 números viajam: nenhuma imagem, nenhum quadro de vídeo e nenhum ponto facial sai do equipamento de quem atende.
No servidor, cada Unidade de Ação é a média simples dos blendshapes que a compõem. Quando a AU tem par esquerdo e direito, os dois lados são promediados para dar a intensidade bilateral. Uma AU é considerada ativa a partir de 0,30.
| AU | Nome FACS | Músculo | Movimento | Blendshapes que a compõem |
|---|---|---|---|---|
| AU1 | Inner Brow Raiser | Frontalis (pars medialis) | Elevação da parte interna das sobrancelhas | browInnerUp |
| AU2 | Outer Brow Raiser | Frontalis (pars lateralis) | Elevação da parte externa das sobrancelhas | browOuterUpLeft · browOuterUpRight |
| AU4 | Brow Lowerer | Corrugator, Depressor supercilii, Procerus | Abaixamento e aproximação das sobrancelhas | browDownLeft · browDownRight |
| AU5 | Upper Lid Raiser | Levator palpebrae superioris | Elevação da pálpebra superior, com exposição da esclera | eyeWideLeft · eyeWideRight |
| AU6 | Cheek Raiser | Orbicularis oculi (pars orbitalis) | Elevação das bochechas e "pés de galinha" | cheekSquintLeft · cheekSquintRight |
| AU7 | Lid Tightener | Orbicularis oculi (pars palpebralis) | Tensionamento das pálpebras | eyeSquintLeft · eyeSquintRight |
| AU9 | Nose Wrinkler | Levator labii sup. alaeque nasi | Enrugamento do nariz e elevação das asas nasais | noseSneerLeft · noseSneerRight |
| AU10 | Upper Lip Raiser | Levator labii superioris | Elevação do lábio superior | mouthUpperUpLeft · mouthUpperUpRight |
| AU12 | Lip Corner Puller | Zygomaticus major | Tração dos cantos dos lábios para cima (sorriso) | mouthSmileLeft · mouthSmileRight |
| AU14 | Dimpler | Buccinator | Cantos da boca para dentro (covinhas) | mouthDimpleLeft · mouthDimpleRight |
| AU15 | Lip Corner Depressor | Depressor anguli oris | Depressão dos cantos da boca | mouthFrownLeft · mouthFrownRight |
| AU17 | Chin Raiser | Mentalis | Elevação da pele do queixo | mouthShrugLower · mouthShrugUpper |
| AU20 | Lip Stretcher | Risorius + Platysma | Estiramento horizontal dos lábios | mouthStretchLeft · mouthStretchRight |
| AU23 | Lip Tightener | Orbicularis oris | Estreitamento e tensão dos lábios | mouthRollLower · mouthRollUpper |
| AU24 | Lip Pressor | Orbicularis oris | Compressão dos lábios entre si | mouthPressLeft · mouthPressRight |
| AU26 | Jaw Drop | Relaxamento do Masseter | Queda da mandíbula | jawOpen |
As 11 restantes aparecem no mapa e não são calculadas: AU8, AU11, AU13, AU16, AU18, AU19, AU21, AU22, AU25, AU27 e AU28. Também não são calculados os Descritores de Ação (AD) — direção do olhar, piscada, inclinação e rotação da cabeça. O motivo é o mesmo em todos os casos: o conjunto de 52 blendshapes do MediaPipe não expõe um coeficiente que corresponda a essas unidades com fidelidade suficiente, e derivá-las por aproximação produziria número onde não houve medida.
Quatro das 16 calculadas — AU9, AU17, AU20 e AU26 — são medidas a cada quadro e hoje não entram em nenhuma regra de composição. Elas existem no cálculo e ainda não têm leitor. Está registrado aqui porque a alternativa seria a página sugerir que toda AU calculada participa da leitura, e ela não participa.
Mapa 2 · O explicativo da composição
Uma AU isolada não sustenta leitura nenhuma. O que sustenta é a co-ocorrência: quais unidades aparecem juntas, com que intensidade, e se aparecem nos dois lados do rosto ou só num. Clique para ampliar.
A cada leitura facial, o motor confere as AUs ativas contra seis regras de composição. Cada regra que dispara marca dissonância facial numa das 12 Zonas de Percepção e escreve, na tela do profissional, quais AUs a dispararam e o que aquele padrão descreve. Dissonância aqui tem sentido preciso: o rosto contradizendo ou mascarando o afeto — a co-ocorrência de unidades que não deveriam estar juntas.
| Zona | Combinação exigida | Padrão que o FROID registra |
|---|---|---|
| Zona 3 | AU15 e AU12 | Tristeza mascarada — depressão dos cantos labiais sob esforço de sorriso: afeto negativo encoberto. Zona 3 — Tristeza vs. Paz Interior |
| Zona 6 | AU14 ativa com assimetria ≥ 0,25, ou AU10 ativa com sorriso (AU12) assimétrico ≥ 0,25 | Desprezo — expressão facial unilateral: distanciamento afetivo mascarado. É a única leitura do motor que depende de um lado do rosto diferir do outro. Zona 6 — Amor Condicional vs. Amor Incondicional |
| Zona 7 | AU12 e (AU23 ou AU24) | Supressão de aversão — sorriso social sobreposto a compressão labial involuntária: o rosto mascara a hostilidade. Zona 7 — Raiva vs. Aceitação da Mudança |
| Zona 8 | AU1 e AU2 e AU5 | Medo contido — assinatura de sobrancelhas e pálpebras de sobressalto durante fala controlada. Zona 8 — Medo e Sobrecarga vs. Responsabilização |
| Zona 9 | AU23 e AU24 e expressividade global < 0,20 | Supressão expressiva — lábios pressionados e tensos com face aplainada: retenção do que seria dito. Zona 9 — Expressão Emocional Suprimida vs. Autoexpressão Adequada |
| Zona 12 | AU4 e AU7 | Conflito interno — sobrancelhas contraídas com pálpebras tensionadas: incongruência entre discurso e estado. Zona 12 — Crenças e Ações Conflitantes vs. Congruentes |
"Ativa" significa intensidade ≥ 0,30. A expressividade global da Zona 9 é a média das intensidades de AU1, AU2, AU5, AU6, AU12 e AU15 — as AUs emocionais. AU26 (queda da mandíbula) é deliberadamente excluída dessa média porque é conduzida pela fala, não pela emoção: incluí-la inflava a expressividade durante o discurso e mascarava a contenção justamente quando ela mais importa.
Os dois limiares são parâmetros de produto FROID, escolhidos como faixa conservadora de presença sobre a escala 0–1 dos blendshapes ARKit — não são constantes publicadas na literatura do FACS. Trate-os como heurística de engenharia calibrável.
A intensidade atribuída a uma dissonância é o mínimo entre as AUs que a compõem (a mais fraca limita a evidência); na Zona 6, o máximo entre AU14 e AU10. Quando duas regras candidatam a mesma zona no mesmo quadro, prevalece a de maior intensidade — a zona guarda um padrão só. A intensidade é interna: serve para essa priorização e não é publicada no payload, que expõe as AUs ativas, o texto do padrão e a procedência.
Sem blendshapes não há AU, sem AU não há dissonância facial, e os campos faciais saem nulos com a procedência declarada. Não existe modo simulado: o gerador foi removido em 03/09/2026, e a ausência de medida nunca vira número.
froid-server/froid_facs.py (conversão e regras) e froid-dashboard/src/lib/froid-face.ts (captura no navegador).A cadeia completa
Sete passos separam o rosto do paciente de uma marca no painel do profissional. Nenhum deles inventa valor: onde não houve medida, a cadeia para e declara que parou.
O modelo roda localmente sobre o vídeo do paciente e produz os blendshapes. Só os coeficientes são enviados — imagem e vídeo nunca saem do equipamento.
Média simples por AU, lados esquerdo e direito promediados, assimetria guardada à parte para AU12 e AU14.
Intensidade ≥ 0,30. Abaixo disso a AU existe como número e não conta como presente — o limiar existe para descartar micro-movimento involuntário.
As AUs ativas são conferidas contra as seis combinações. Cada disparo marca dissonância facial numa Zona de Percepção.
Numa zona marcada, o desvio acústico daquela zona é multiplicado por 2,5. É aqui — e só aqui — que face e voz se encontram: a face não gera leitura sozinha, ela pesa a leitura vocal.
Um pico de um único ciclo não vira registro. A dissonância só é dada como confirmada quando se sustenta em 2 dos últimos 3 ciclos de análise.
Forma binária — não há forma contínua implementada. O valor 2,5 é parâmetro de produto FROID, não derivado de estudo publicado.
O motor de dissonância recebe o desvio sem M_fac. Sem essa separação, um único evento facial dispararia ao mesmo tempo o marcador facial e o marcador de zona extrema — dupla contagem de um sinal só, correlacionada por construção, inflando a confiança do alerta.
A leitura facial roda a cerca de 3 quadros por segundo por padrão (intervalo mínimo de 150 ms). É uma cadência escolhida para não competir com o processamento de áudio nem com a videochamada, e ela delimita o que é observável: ver O que estes mapas não afirmam.
froid-server/froid_core.py → calculate_multimodal_deviation(). Confirmação temporal em froid-server/froid_dissonance.py. A montagem do IDM e do IPM está em Tecnologia, Etapa 5.A fronteira
Um mapa de referência mostra o que o FACS descreve. Ele não é um inventário do que este software faz. Onde os dois divergem, vale o que está aqui.
O mapa da composição lista sete emoções universais. O FROID não emite nenhuma delas como resultado. Não existe saída "felicidade", "surpresa" ou "nojo" em lugar algum do produto. O que sai é uma marca de dissonância por zona, com as AUs que a produziram. As matrizes de felicidade, surpresa e nojo estão no quadro como referência do FACS e não têm regra correspondente no motor.
As três fases temporais de uma expressão — início, pico e término — são metodologia madura em visão computacional, e o FROID não as implementa. Não há modelo de Markov, não há confiança de apex, não há duração de AU. Cada quadro é avaliado isoladamente; a única memória temporal do sistema é a confirmação de dissonância em 2 dos últimos 3 ciclos.
Uma microexpressão dura entre 1/25 e 1/5 de segundo. A captura facial do FROID roda a cerca de 3 quadros por segundo — a maior parte de uma microexpressão cabe entre dois quadros. A cadência é uma escolha de engenharia, e a consequência dela é esta: microexpressão não é objeto de medida deste sistema.
Dissonância é a co-ocorrência de unidades faciais que raramente andam juntas, cruzada com o desvio acústico da mesma zona. É um sinal para o profissional olhar, não um veredito sobre sinceridade. A hipótese clássica do sorriso de Duchenne (AU6 ausente = sorriso forçado) é contestada por pesquisa recente — ver Ciência, Pilar 4.
O mapa da composição destaca quatro padrões de dissonância subconsciente. Confrontados com as seis regras implementadas:
A divergência está publicada em vez de corrigida na figura porque o quadro é um documento do FACS, com valor próprio como referência. O que não pode acontecer é o leitor sair daqui achando que cada caixa do mapa corresponde a um comportamento do software.