Mapas del rostro
Son dos documentos distintos, y confundirlos es el error más común sobre la lectura facial. El primero es el diccionario del movimiento del rostro; el segundo, la gramática que combina esos movimientos. Aquí están uno junto al otro — y junto a cada uno está lo que el motor de FROID calcula de verdad a partir de él.
La distinción
Ambos muestran el mismo rostro y usan los mismos números — AU1, AU4, AU12. Pero responden preguntas que no se sustituyen entre sí.
Pregunta que responde: ¿qué es, por separado, cada movimiento posible del rostro?
Cada Unidad de Acción (AU) es un músculo o grupo muscular con nombre, con un movimiento observable y nada más. AU4 es el descenso de las cejas (corrugador, prócer). AU12 es la tracción de las comisuras de los labios hacia arriba (cigomático mayor). Son entradas de diccionario: ninguna de ellas significa una emoción, del mismo modo que ninguna palabra aislada es una frase.
Pregunta que responde: ¿qué combinaciones de AU asocia la literatura del FACS a cada emoción y a cada disonancia?
Aquí las entradas del diccionario se vuelven frases. AU6+AU12 es la sonrisa de Duchenne; AU23+AU24 es la compresión labial de la hostilidad contenida; AU1+AU2+AU5 es la firma de sobresalto del miedo. Es la gramática — y de ella sale cualquier lectura, porque la combinación carga un sentido que la pieza sola no carga.
Mapa 1 · El explicativo unitario
El Facial Action Coding System, de Paul Ekman y Wallace Friesen, descompone el movimiento facial en unidades anatómicas. El mapa siguiente es el catálogo completo de esas unidades — incluidas las que FROID no calcula. Haga clic para ampliar.
El navegador del paciente ejecuta el modelo MediaPipe FaceLandmarker (ARKit) sobre el vídeo local y produce 52 coeficientes de blendshape — valores de 0 a 1 que describen deformaciones del rostro. Solo esos 52 números viajan: ninguna imagen, ningún fotograma de vídeo y ningún punto facial sale del equipo de quien atiende.
En el servidor, cada Unidad de Acción es la media simple de los blendshapes que la componen. Cuando la AU tiene par izquierdo y derecho, ambos lados se promedian para dar la intensidad bilateral. Una AU se considera activa a partir de 0,30.
| AU | Nombre FACS | Músculo | Movimiento | Blendshapes que la componen |
|---|---|---|---|---|
| AU1 | Inner Brow Raiser | Frontalis (pars medialis) | Elevación de la parte interna de las cejas | browInnerUp |
| AU2 | Outer Brow Raiser | Frontalis (pars lateralis) | Elevación de la parte externa de las cejas | browOuterUpLeft · browOuterUpRight |
| AU4 | Brow Lowerer | Corrugator, Depressor supercilii, Procerus | Descenso y aproximación de las cejas | browDownLeft · browDownRight |
| AU5 | Upper Lid Raiser | Levator palpebrae superioris | Elevación del párpado superior, con exposición de la esclerótica | eyeWideLeft · eyeWideRight |
| AU6 | Cheek Raiser | Orbicularis oculi (pars orbitalis) | Elevación de las mejillas y patas de gallo | cheekSquintLeft · cheekSquintRight |
| AU7 | Lid Tightener | Orbicularis oculi (pars palpebralis) | Tensión de los párpados | eyeSquintLeft · eyeSquintRight |
| AU9 | Nose Wrinkler | Levator labii sup. alaeque nasi | Arrugamiento de la nariz y elevación de las alas nasales | noseSneerLeft · noseSneerRight |
| AU10 | Upper Lip Raiser | Levator labii superioris | Elevación del labio superior | mouthUpperUpLeft · mouthUpperUpRight |
| AU12 | Lip Corner Puller | Zygomaticus major | Tracción de las comisuras de los labios hacia arriba (sonrisa) | mouthSmileLeft · mouthSmileRight |
| AU14 | Dimpler | Buccinator | Comisuras de la boca hacia dentro (hoyuelos) | mouthDimpleLeft · mouthDimpleRight |
| AU15 | Lip Corner Depressor | Depressor anguli oris | Descenso de las comisuras de la boca | mouthFrownLeft · mouthFrownRight |
| AU17 | Chin Raiser | Mentalis | Elevación de la piel del mentón | mouthShrugLower · mouthShrugUpper |
| AU20 | Lip Stretcher | Risorius + Platysma | Estiramiento horizontal de los labios | mouthStretchLeft · mouthStretchRight |
| AU23 | Lip Tightener | Orbicularis oris | Estrechamiento y tensión de los labios | mouthRollLower · mouthRollUpper |
| AU24 | Lip Pressor | Orbicularis oris | Compresión de los labios entre sí | mouthPressLeft · mouthPressRight |
| AU26 | Jaw Drop | Relajación del Masseter | Caída de la mandíbula | jawOpen |
Las 11 restantes aparecen en el mapa y no se calculan: AU8, AU11, AU13, AU16, AU18, AU19, AU21, AU22, AU25, AU27 y AU28. Tampoco se calculan los Descriptores de Acción (AD) — dirección de la mirada, parpadeo, inclinación y rotación de la cabeza. El motivo es el mismo en todos los casos: el conjunto de 52 blendshapes de MediaPipe no expone un coeficiente que corresponda a esas unidades con fidelidad suficiente, y derivarlas por aproximación produciría número donde no hubo medida.
Cuatro de las 16 calculadas — AU9, AU17, AU20 y AU26 — se miden en cada fotograma y hoy no entran en ninguna regla de composición. Existen en el cálculo y aún no tienen lector. Queda registrado aquí porque la alternativa sería que esta página sugiriera que toda AU calculada participa de la lectura, y no participa.
Mapa 2 · El explicativo de la composición
Una AU aislada no sostiene ninguna lectura. Lo que la sostiene es la coocurrencia: qué unidades aparecen juntas, con qué intensidad, y si aparecen en ambos lados del rostro o solo en uno. Haga clic para ampliar.
En cada lectura facial, el motor coteja las AU activas contra seis reglas de composición. Cada regla que se dispara marca disonancia facial en una de las 12 Zonas de Percepción y escribe, en la pantalla del profesional, qué AU la dispararon y qué describe ese patrón. Disonancia tiene aquí un sentido preciso: el rostro contradiciendo o enmascarando el afecto — la coocurrencia de unidades que no deberían estar juntas.
| Zona | Combinación exigida | Patrón que FROID registra |
|---|---|---|
| Zona 3 | AU15 y AU12 | Tristeza enmascarada — descenso de las comisuras labiales bajo un esfuerzo de sonrisa: afecto negativo encubierto. Zona 3 — Tristeza vs. Paz Interior |
| Zona 6 | AU14 activa con asimetría ≥ 0,25, o AU10 activa con sonrisa (AU12) asimétrica ≥ 0,25 | Desprecio — expresión facial unilateral: distanciamiento afectivo enmascarado. Es la única lectura del motor que depende de que un lado del rostro difiera del otro. Zona 6 — Amor Condicional vs. Amor Incondicional |
| Zona 7 | AU12 y (AU23 o AU24) | Supresión de aversión — sonrisa social superpuesta a compresión labial involuntaria: el rostro enmascara la hostilidad. Zona 7 — Ira vs. Aceptación del Cambio |
| Zona 8 | AU1 y AU2 y AU5 | Miedo contenido — firma de cejas y párpados de sobresalto durante habla controlada. Zona 8 — Miedo y Sobrecarga vs. Responsabilización |
| Zona 9 | AU23 y AU24 y expresividad global < 0,20 | Supresión expresiva — labios presionados y tensos con rostro aplanado: retención de lo que se diría. Zona 9 — Expresión Emocional Suprimida vs. Autoexpresión Adecuada |
| Zona 12 | AU4 y AU7 | Conflicto interno — cejas contraídas con párpados tensos: incongruencia entre discurso y estado. Zona 12 — Creencias y Acciones Conflictivas vs. Congruentes |
"Activa" significa intensidad ≥ 0,30. La expresividad global de la Zona 9 es la media de las intensidades de AU1, AU2, AU5, AU6, AU12 y AU15 — las AU emocionales. AU26 (caída de la mandíbula) queda deliberadamente excluida de esa media porque la conduce el habla, no la emoción: incluirla inflaba la expresividad durante el discurso y enmascaraba la contención justo cuando más importa.
Los dos umbrales son parámetros de producto FROID, elegidos como franja conservadora de presencia sobre la escala 0–1 de los blendshapes ARKit — no son constantes publicadas en la literatura del FACS. Trátelos como heurística de ingeniería calibrable.
La intensidad atribuida a una disonancia es el mínimo entre las AU que la componen (la más débil limita la evidencia); en la Zona 6, el máximo entre AU14 y AU10. Cuando dos reglas se postulan para la misma zona en el mismo fotograma, prevalece la de mayor intensidad — la zona guarda un solo patrón. La intensidad es interna: sirve para esa priorización y no se publica en el payload, que expone las AU activas, el texto del patrón y la procedencia.
Sin blendshapes no hay AU, sin AU no hay disonancia facial, y los campos faciales salen nulos con la procedencia declarada. No existe modo simulado: el generador fue retirado el 03/09/2026, y la ausencia de medida nunca se convierte en número.
froid-server/froid_facs.py (conversión y reglas) y froid-dashboard/src/lib/froid-face.ts (captura en el navegador).La cadena completa
Siete pasos separan el rostro del paciente de una marca en el panel del profesional. Ninguno de ellos inventa un valor: donde no hubo medida, la cadena se detiene y declara que se detuvo.
El modelo se ejecuta localmente sobre el vídeo del paciente y produce los blendshapes. Solo se envían los coeficientes — imagen y vídeo nunca salen del equipo.
Media simple por AU, lados izquierdo y derecho promediados, asimetría guardada aparte para AU12 y AU14.
Intensidad ≥ 0,30. Por debajo, la AU existe como número y no cuenta como presente — el umbral está para descartar micro-movimiento involuntario.
Las AU activas se cotejan contra las seis combinaciones. Cada disparo marca disonancia facial en una Zona de Percepción.
En una zona marcada, la desviación acústica de esa zona se multiplica por 2,5. Es aquí — y solo aquí — donde rostro y voz se encuentran: el rostro no genera lectura por sí solo, pondera la lectura vocal.
Un pico de un solo ciclo no se convierte en registro. La disonancia solo se da por confirmada cuando se sostiene en 2 de los últimos 3 ciclos de análisis.
Forma binaria — no hay forma continua implementada. El valor 2,5 es un parámetro de producto FROID, no derivado de un estudio publicado.
El motor de disonancia recibe la desviación sin M_fac. Sin esa separación, un único evento facial dispararía a la vez el marcador facial y el marcador de zona extrema — doble conteo de una sola señal, correlacionada por construcción, inflando la confianza de la alerta.
La lectura facial corre a cerca de 3 fotogramas por segundo por defecto (intervalo mínimo de 150 ms). Es una cadencia elegida para no competir con el procesamiento de audio ni con la videollamada, y delimita lo que es observable: ver Lo que estos mapas no afirman.
froid-server/froid_core.py → calculate_multimodal_deviation(). Confirmación temporal en froid-server/froid_dissonance.py. El montaje del IDM y del IPM está en Tecnología, Etapa 5.La frontera
Un mapa de referencia muestra lo que el FACS describe. No es un inventario de lo que este software hace. Donde ambos divergen, vale lo que está aquí.
El mapa de la composición lista siete emociones universales. FROID no emite ninguna de ellas como resultado. No existe una salida "felicidad", "sorpresa" o "asco" en ningún lugar del producto. Lo que sale es una marca de disonancia por zona, con las AU que la produjeron. Las matrices de felicidad, sorpresa y asco están en el cuadro como referencia del FACS y no tienen regla correspondiente en el motor.
Las tres fases temporales de una expresión — inicio, pico y término — son metodología madura en visión por computadora, y FROID no las implementa. No hay modelo de Markov, no hay confianza de apex, no hay duración de AU. Cada fotograma se evalúa aisladamente; la única memoria temporal del sistema es la confirmación de disonancia en 2 de los últimos 3 ciclos.
Una microexpresión dura entre 1/25 y 1/5 de segundo. La captura facial de FROID corre a cerca de 3 fotogramas por segundo — la mayor parte de una microexpresión cabe entre dos fotogramas. La cadencia es una elección de ingeniería, y su consecuencia es esta: la microexpresión no es objeto de medida de este sistema.
La disonancia es la coocurrencia de unidades faciales que rara vez van juntas, cruzada con la desviación acústica de la misma zona. Es una señal para que el profesional mire, no un veredicto sobre la sinceridad. La hipótesis clásica de la sonrisa de Duchenne (AU6 ausente = sonrisa forzada) está contestada por investigación reciente — ver Ciencia, Pilar 4.
El mapa de la composición destaca cuatro patrones de disonancia subconsciente. Confrontados con las seis reglas implementadas:
La divergencia se publica en vez de corregirse en la figura porque el cuadro es un documento del FACS, con valor propio como referencia. Lo que no puede ocurrir es que el lector salga de aquí creyendo que cada casilla del mapa corresponde a un comportamiento del software.