Estás leyendo la publicación: Una guía para el análisis de expresiones faciales usando Py-FEAT
El análisis de la expresión facial es el acto de detectar, recopilar y analizar automáticamente el movimiento y los cambios de los músculos faciales que reflejan ciertos estados y situaciones mentales humanos. Hablaremos de esta técnica en este artículo, así como de una utilidad basada en Python llamada Py-FEAT, que ayuda a identificar, preprocesar, analizar y visualizar datos de expresión facial. A continuación se presentan los puntos principales que vamos a discutir en este artículo.
Tabla de contenido
- El análisis de la expresión facial.
- ¿Cómo Py-FEAT hace el análisis?
- Implementando Py-FEAT
Primero entendamos el análisis de la expresión facial.
El análisis de la expresión facial.
Una expresión facial se compone de uno o más movimientos o posturas de los músculos debajo de la piel de la cara. Estos movimientos, según un conjunto de ideas controvertidas, comunican el estado emocional de un individuo a los observadores. Las expresiones faciales son un ejemplo de comunicación no verbal. Son el medio más frecuente por el cual los humanos intercambian información social, pero también se encuentran en la mayoría de los otros mamíferos y en algunas otras especies.
Las expresiones faciales pueden revelar información sobre el estado mental interno de un individuo y proporcionar canales no verbales para la comunicación interpersonal y entre especies. Obtener un consenso sobre cómo retratar y medir de manera efectiva las expresiones faciales ha sido uno de los aspectos más difíciles de investigar. El Sistema de Codificación de Afecto Facial (FACS) es una de las técnicas más utilizadas para medir con precisión la intensidad de agrupaciones de músculos faciales conocidas como unidades de acción (AU).
Se han desarrollado métodos automatizados basados en técnicas de visión por computadora como una herramienta potencial para extraer representaciones de emociones faciales a partir de imágenes, videos y cámaras de profundidad tanto dentro como fuera del laboratorio. Los participantes pueden liberarse de los molestos cables y participar en tareas como ver una película o conversar informalmente.
Además de las AU, los enfoques de visión por computadora han introducido espacios alternativos para representar expresiones faciales, como puntos de referencia faciales o representaciones latentes de menor dimensión. Estas técnicas pueden predecir la intensidad de las emociones y otros estados afectivos como el dolor, discernir entre expresiones genuinas y falsas, detectar signos de depresión, inferir cualidades como la personalidad o las orientaciones políticas y anticipar el desarrollo de las relaciones interpersonales.
¿Cómo Py-FEAT hace el análisis?
Python Facial Expression Analysis Toolbox (Py-Feat), software gratuito y de código abierto para analizar datos de expresión facial. Al igual que OpenFace, proporciona herramientas para extraer características faciales, pero también incluye módulos para preprocesar, analizar y mostrar datos de expresión facial (consulte la canalización en la Figura siguiente). Py-Feat está destinado a atender a tipos únicos de usuarios. Py-Feat ayuda a los investigadores de visión por computadora al permitirles comunicar sus modelos de vanguardia a una audiencia más amplia y comparar rápidamente sus modelos con otros.
El análisis facial comienza con la captura de fotografías o videos faciales utilizando un dispositivo de grabación como cámaras web, videocámaras, cámaras montadas en la cabeza o cámaras 360, como se ve arriba. Después de grabar el rostro, Py-Feat se utiliza para detectar atributos faciales, como puntos de referencia faciales, unidades de acción y emociones, y los resultados se pueden comparar mediante superposiciones de imágenes y gráficos de barras.
Se pueden extraer características adicionales de los datos de detección, como el histograma de gradientes orientados o la descomposición de ondículas múltiples. Luego, los datos se pueden evaluar utilizando métodos estadísticos como pruebas t, regresiones y correlaciones entre sujetos dentro de la caja de herramientas.
Las imágenes faciales se pueden generar a partir de modelos de activaciones de unidades de acción utilizando herramientas de visualización que muestran campos vectoriales que indican movimientos emblemáticos y mapas de calor de activaciones de músculos faciales.
Py-Feat ofrece un módulo Detector para detectar características de expresión facial (como rostros, puntos de referencia faciales, activaciones de AU y expresiones emocionales) en imágenes y videos de rostros, así como una clase de datos Fex con métodos para preprocesar, analizar y visualizar rostros. datos de expresión. En la siguiente sección, veremos cómo podemos obtener detalles de expresión facial para algunas de las escenas de la película.
Implementando Py-FEAT
Usando la clase Detector, intentaremos detectar emociones de varias escenas de películas en esta sección. Esta clase toma modelos para
- descubrir un rostro en una imagen o cuadro de video.
- localizar puntos de referencia faciales.
- detectar activaciones de las unidades de acción de los músculos faciales, y
- detectar muestras de emociones emocionales estándar como atributos.
Estos modelos son de naturaleza modular, lo que permite a los usuarios elegir qué algoritmos aplicar para cada tarea de detección en función de sus requisitos de precisión y velocidad. Ahora comencemos instalando e importando dependencias.
!pip install py-feat import os from PIL import Image import matplotlib.pyplot as plt from feat.tests.utils import get_test_data_path from feat import Detector
Defina la clase de detector como se muestra a continuación,
# definir los modelos face_model = “retinaface” landmark_model = “mobilenet” au_model = “rf”emotion_model = “resmasknet” detector = Detector(face_model = face_model, landmark_model = landmark_model, au_model = au_model, emoción_modelo = emoción_modelo)
Ahora carga la imagen,
# cargar y visualizar la imagen test_image = os.path.join(‘/content/’, “home_alone4.jpg”) f, ax = plt.subplots() im = Image.open(test_image) ax.imshow(im)
Ahora podemos inicializar la clase de detector por su método para la inferencia basada en imágenes por detectar_imagen()
# obtener predicción
image_prediction = detector.detect_image(test_image)
Ahora, con esto, podemos acceder a las diversas unidades de acción que ha detectado el modelo y también a las emociones que el detector está infiriendo.
De manera similar, el método no solo hace la inferencia para uno solo sino también para múltiples archivos de imagen y video. Se incluyen ejemplos en el cuaderno.
Ultimas palabras
Este artículo ha explorado qué es el análisis de la expresión facial y cómo se puede utilizar en una variedad de aplicaciones. Hemos visto Py-Feat, un marco de trabajo completo de código abierto escrito en Python para realizar análisis de expresiones faciales desde la detección hasta el preprocesamiento, el análisis y la visualización. Este paquete le permite escribir nuevos algoritmos para identificar rostros, puntos de referencia faciales, unidades de acción y emociones.