reconocimiento de expresiones faciales … fileemociones humanas. el ... reconocimiento de...
TRANSCRIPT
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- I -
RECONOCIMIENTO DE EXPRESIONES FACIALES MEDIANTE
IMÁGENES ADQUIRIDAS CON CÁMARA KINECT
Autor: Ruiz Martín, Rodrigo
Directores: Palacios Hielscher, Rafael.
Muñoz San Roque, Antonio.
RESUMEN DEL PROYECTO
El objetivo de este proyecto es el desarrollo de una herramienta capaz de
reconocer las expresiones de alegría (risa o sonrisa) y desagrado en el rostro de las
personas, de forma automática e intuitiva, basándose para ello en la adquisición de
información facial por parte de la cámara Kinect de Microsoft. La herramienta está
compuesta por tres entornos que se corresponden con la adquisición de información,
procesado de datos y análisis de resultados. Como base para el reconocimiento de las
expresiones se han empleado los estudios del psicólogo Paul Ekman, pionero en el
reconocimiento de expresiones y microexpresiones faciales.
Introducción
En la actualidad el campo de la psicología ha alcanzado un grado de madurez
elevado en cuanto al reconocimiento de expresiones faciales. Un gran número de
prestigiosos psicólogos han realizado estudios en profundidad obteniendo información
sólida sobre el reconocimiento de expresiones faciales y su vinculación con las
emociones humanas. El reconocimiento automático de expresiones faciales resulta
especialmente interesante porque permite detectar sentimientos y estados de ánimo en
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- II -
las personas, y el reconocimiento de estos estados de ánimo se puede aplicar en
campos tan diversos como la psicología, la enseñanza o el marketing.
Por otro lado, los avances tecnológicos acontecidos en los últimos años
permiten llevar a cabo tareas que en el pasado hubieran sido impensables. La
capacidad de procesamiento y de cálculo de las máquinas se ha incrementado de forma
exponencial, por lo que la tendencia actual es mecanizar y automatizar la mayor
cantidad posible de procesos, permitiendo a los expertos concentrar sus esfuerzos en
tareas menos triviales.
El objetivo del proyecto surge de la unión lógica de estos dos hechos, ya que las
condiciones actuales de madurez de ambas áreas son propicias para el desarrollo de
una herramienta informática capaz de reconocer automáticamente la ubicación del
rostro de una persona, y analizar sus expresiones faciales a lo largo de un período de
tiempo determinado.
Estado del Arte
La literatura al respecto muestra estudios en dos direcciones. La primera de
ellas en el campo de la psicología, para entender el grado de comprensión actual
existente acerca de las expresiones faciales y los rasgos que las caracterizan.
La identificación y clasificación de las emociones se basa eminentemente en el
trabajo del psicólogo Paul Ekman, considerado uno de los psicólogos más influyentes
del siglo XX. Sus estudios acerca de las expresiones faciales comenzaron en el año
1965[PAUL_EKMAN] y su culminación se alcanzó en el año 2002 con la publicación de
un manual que permite determinar las emociones sentidas por una persona a partir de
sus expresiones faciales codificadas mediante una serie de características llamadas
Action Units.[EKMA02]
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- III -
En el campo del reconocimiento automático de las expresiones faciales destaca
el trabajo realizado por el profesor Ifran A. Essa [ESSA97] por haber obtenido
resultados muy exactos basados en el análisis de secuencias de imágenes. No obstante,
a día de hoy no existe una herramienta de reconocimiento de expresiones faciales lo
suficientemente sencilla, asequible, automática y completa como para poder ser
empleada satisfactoriamente por una persona no experta en el campo de la psicología.
Asimismo, la gran versatilidad de una herramienta de estas características en cuanto a
sus posibles campos de aplicación supone una motivación añadida.
Implementación
La herramienta se ha descompuesto a su vez en tres herramientas dedicadas a:
La adquisición de información facial en forma de imágenes y parámetros en
tiempo real.
El tratamiento de dicha información y extracción de conclusiones.
El análisis gráfico de los resultados obtenidos.
Esta descomposición se ha realizado para aprovechar al máximo las
características de los distintos lenguajes de programación, con el fin de obtener el
mayor rendimiento posible y conseguir un alto grado de compatibilidad.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- IV -
Tecnología empleada
Como mecanismo de adquisición de la información facial y las imágenes se ha
escogido la cámara Kinect para Xbox360 de Microsoft debido a sus características
especialmente enfocadas a la captación y seguimiento del rostro y el cuerpo humano
[KINECT], lo que facilita en gran medida la adquisición de los datos necesarios para
realizar el análisis de las expresiones faciales.
La herramienta de adquisición de la información facial se ha desarrollado en C#
para sacar el mayor partido posible a las librerías de Microsoft para Kinect. C# es una
versión ampliada del lenguaje C enfocada a la programación visual y orientada a
objetos, que actualmente es ampliamente usado por su versatilidad en diversos
ámbitos, entre los que destaca Windows Phone.
El análisis de datos y clasificación de resultados son llevados a cabo mediante
una serie de funciones elaboradas en Matlab. La principal razón de que haya sido este
el entorno elegido para esta fase de la aplicación es que Matlab es una plataforma
enfocada al cálculo matemático y al procesamiento de grandes cantidades de datos,
actividades que constituyen el pilar fundamental de esta parte de la herramienta.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- V -
Para la elaboración de los árboles clasificadores de la alegría y el desagrado se
ha empleado el programa de clasificación y aprendizaje automático Weka.
Posteriormente, los clasificadores obtenidos con Weka han sido implementados dentro
de funciones Matlab.
La fase final del ciclo de vida de la herramienta lo constituye una aplicación
visual de análisis de resultados. Esta aplicación permitirá observar y comparar la
información inicial con la respuesta proporcionada, así como la evolución temporal de
los parámetros relevantes. El lenguaje elegido para el desarrollo de esta herramienta es
C#, ya que su potencia visual permite crear interfaces de gran complejidad.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- VI -
Resultados Obtenidos
Para obtener los datos faciales y visuales necesarios se organizaron nueve
sesiones de grabación con voluntarios, que visualizaron un vídeo dividido en cuatro
secuencias ideadas para generar diferentes emociones. Con los datos recogidos se
realizó una clasificación manual fotograma a fotograma en función de la presencia o
ausencia de alegría y desagrado. Posteriormente se empleó esos datos en la
conformación de los árboles clasificadores en un proceso de tres iteraciones en el que se
añadían al conjunto de entrenamiento casos nuevos que anteriormente hubiesen sido
clasificados erróneamente.
Tras la optimización de los árboles de clasificadores en las tres iteraciones, éstos
han alcanzado la capacidad de reconocer de forma automática las expresiones de
desagrado y alegría presentes en el rostro de una persona con un porcentaje de acierto
del 96% para el desagrado y un 97.5% para la alegría.
Tras haber realizado la adquisición de la información facial y visual, y de haber
procesado dicha información, la herramienta permite realizar dos análisis diferentes de
dichos resultados. Por un lado, la herramienta diseñada en C# sirve para analizar las
expresiones faciales de desagrado o sonrisa presentes en la persona fotograma a
fotograma.
Por otro lado, se puede emplear una función Matlab para detectar la
predominancia de la alegría y el desagrado en intervalos de un segundo (diez
fotogramas), lo que permite obtener una idea general del estado de ánimo de la
persona, así como corregir errores puntuales. También han sido elaboradas una serie
de funciones que aportan información del conjunto de sesiones en suma, y del
porcentaje de tiempo que cada emoción es manifestada para cada secuencia de vídeo
mostrada.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- VII -
Conclusiones
A modo de conclusión, el resultado final de este proyecto consiste en un
conjunto de herramientas basadas en el uso de la cámara Kinect como mecanismo de
adquisición de información facial, que permiten reconocer de forma precisa las
expresiones de alegría y desagrado.
Los resultados obtenidos permiten demostrar la viabilidad de Kinect como
mecanismo de adquisición de información facial y visual y ,por otro lado, se ha podido
apreciar su concordancia con la teoría darwiniana de las expresiones faciales.
Además, se han elaborado una serie de funciones y una aplicación que
proporcionan información detallada y completa para realizar el análisis de los datos y
los resultados extraídos. Esta información puede ser proporcionada fotograma a
fotograma o por secciones del vídeo y también puede analizarse de forma individual o
para la suma de todos los voluntarios del experimento,
Referencias
[EKMA02] – “Facial Action Coding System”. Paul Ekman, Wallace V. Friesen, Joseph
C. Hager. Estados Unidos 2002.
[PAUL_EKMAN] - http://www.paulekman.com/
[ESSA97] "Coding, Analysis Interpretation, Recognition of Facial Expressions". I. Essa,
A. Pentland. Julio 1997.
[KINECT] - http://www.microsoft.com/en-us/kinectforwindows/
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- VIII -
FACIAL EXPRESSIONS RECOGNITION THROUGH IMAGES
ACQUIRED WITH KINECT CAMERA
Author: Ruiz Martín, Rodrigo
Supervisors: Palacios Hielscher, Rafael.
Muñoz San Roque, Antonio.
PROJECT ABSTRACT
The main goal of this project is the development of an application capable of
recognizing the expressions of joy (laughter or smile) and displeasure on people’s faces
in an automatic and intuitive way, basing on the facial information acquired using the
Microsoft Kinect camera. The application consists of three tools which respectively
acquire facial information, process data and analyze the results. The facial expression
recognition system developed is based on the research done by the psychologist Paul
Ekman, which is a pioneer on facial expression and micro expression recognition
Introduction
At the present time psychology has reached a high degree of development in
facial expression recognition. A great number of prestigious psychologists have done
deep research obtaining detailed information about facial expression recognition and
its bond with human emotions. Automatic facial expression recognition is especially
interesting because it allows detecting the feelings and mood of people, and
recognizing this can be used in a very wide range of fields such as psychology,
teaching or marketing.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- IX -
On the other hand, technology has evolved so fast in the last years that now we
can perform tasks that once would have been unconceivable. Processing and
computing capabilities of computers have increased exponentially, so the actual trend
is to automatize as much processes as possible, allowing the experts to focus their
efforts on less trivial tasks.
The aim of this project comes from the logical union of these two facts, because
now both areas have reached a progress state suitable for developing a computing tool
capable of recognizing automatically the location of a person’s face and analyzing its
facial expressions for a specific amount of time.
State of Art
Literature shows two main research directions. The first one has been done in
the field of psychology, in order to perceive the understanding level that has been
reached about facial expressions and the main features that characterize them.
Identification and classification of emotions is mainly based on psychologist
Paul Ekman’s research, considered as one of the most influential psychologists of the
twentieth century. His research about facial expressions began in
1965[PAUL_EKMAN] and their apex was reached in the year 2002 when he published
a complete guide on how to determine the feelings felt by a person from its facial
expressions coded using a series of facial features called Action Units.[EKMA02].
In the field of automatic facial expressions recognition, the most relevant
research has been made by Ifran A. Essa [ESSA97], which has achieved very accurate
results based on image sequence analysis. However, in the present time there hasn’t
been developed a facial expression recognition tool easy to use, affordable, automatic
and complete enough to be able to be used successfully by a non-expert in the field of
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- X -
psychology. Furthermore, the great versatility that a tool with these characteristics can
offer about its possible uses creates an extra motivation.
Implementation
The application has been divided into three tools, which are mainly focused on:
Gathering real-time facial information as images and parameters.
Dealing with that information and extracting conclusions.
Showing graphical information to allow users to analyze the results achieved and
compare them with the inputs of the camera.
This breakdown has been made to take the most advantage possible of the
characteristics of each programming language and environment, looking to get the best
performance possible and achieve a high compatibility.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- XI -
Technology used
As facial information acquisition mechanism, Microsoft’s Kinect for Xbox360
has been chosen due to its features, mainly focused on detecting and following human
body and face [KINECT], which makes it easier to acquire the necessary data to
analyze facial expressions.
The facial information acquisition tool has been developed using C# in order to
take the most of Microsoft’s libraries designed to be used with Kinect. C# is an
extended and more complex version of C language focused on visual programming
and object-oriented, which now is widely used due to its versatility in a wide range of
fields, especially Windows Phone applications.
Data analysis and results classification are done using a series of functions
programmed using Matlab. The main reason why this was the chosen environment for
developing this phase of the application is because Matlab is a platform focused on
mathematic computation and processing great amounts of data, activities that form the
main goal of this part of the tool.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- XII -
In the development of the classifying trees of joy and displeasure the program
chosen was Weka, specially focused on classifying data and machine learning.
Subsequently, the classifiers built using Weka have been implemented into Matlab
functions.
The final phase of the application’s lifecycle consists of a visual tool for
analyzing the results obtained. This tool allows the user to see and compare the inputs
acquired by the camera with the classification given, and also how relevant parameters
change with time. The programming language chosen to create this tool is C#, because
its visual capabilities are ideal for easily creating complex user interfaces.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- XIII -
Results
To obtain the necessary visual and facial data nine recording sessions were
organized with volunteers, who were shown a video divided into four scenes designed
to generate different emotions. With the data acquired, each frame was manually
classified depending on the presence or absence of joy and displeasure. Afterwards,
these data were used in the development of the classifying trees in a process of three
iterations in which the previously incorrectly classified instances were added to the
training set.
Having optimized the classifying trees through the three iterations, they
reached the capability of recognizing automatically the expressions of displeasure and
joy featured in the faces of people with a success rate of 96% for displeasure
recognition and 97.5% for joy.
After having acquired the facial and visual information, and having processed
that information, the tool allows the users to do two different types of analysis from the
results gathered. On one hand, the application developed using C# can be used to
analyze the facial expressions of smile and displeasure detected in a person frame by
frame.
On the other hand, there have been created a series of Matlab functions to
detect the main expressions of joy and displeasure noticed for each second of recording
and to see the graphics of a whole recording at a glance, or even the sum of all of the
recordings done. This makes it possible to get a general idea of a person’s mood and
correct isolated errors.
Reconocimiento de expresiones faciales mediante imágenes adquiridas con cámara Kinect
- XIV -
Conclusions
To summarize all that has been said before, the final result of this project
consists of a set of tools based on the Kinect camera as a mechanism of facial
information acquisition, capable of recognizing the expressions of displeasure and joy
in different people in a very accurate way.
Results achieved have allowed to demonstrate the viability of Kinect as a
mechanism of facial and visual information acquisition and, on the other hand, it was
possible to confirm that the results agreed with Darwin’s theory about facial
expressions.
Besides, a group of functions and an application have been developed with the
aim of providing detailed and complete information to analyze the data and results
obtained. This information can be given for each frame or for each complete scene of
the video, and can also be analyzed individually or for the sum of all the volunteers of
the experiment.
References
[EKMA02] – “Facial Action Coding System”. Paul Ekman, Wallace V. Friesen, Joseph
C. Hager. United States 2002.
[PAUL_EKMAN] - http://www.paulekman.com/
[ESSA97] "Coding, Analysis Interpretation, Recognition of Facial Expressions". I. Essa,
A. Pentland. July 1997.
[KINECT] - http://www.microsoft.com/en-us/kinectforwindows/