0% found this document useful (0 votes)
84 views

Proyecto IA2

This document discusses using deep convolutional neural networks for emotion recognition from facial expressions. It begins with an introduction on artificial intelligence and machine learning research using neural networks. It then discusses previous work on facial recognition and advances in emotion recognition. The objective is to experiment with different approaches from literature to build a neural network model that can interpret human facial expressions and derive emotions from images. The document outlines the steps taken, including a literature review on facial expressions and suitable network types, structuring and training the neural networks, and evaluating the results.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
84 views

Proyecto IA2

This document discusses using deep convolutional neural networks for emotion recognition from facial expressions. It begins with an introduction on artificial intelligence and machine learning research using neural networks. It then discusses previous work on facial recognition and advances in emotion recognition. The objective is to experiment with different approaches from literature to build a neural network model that can interpret human facial expressions and derive emotions from images. The document outlines the steps taken, including a literature review on facial expressions and suitable network types, structuring and training the neural networks, and evaluating the results.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Reconocimiento de emociones usando Redes neuronales

convolucionales profundas

INTEGRANTES
Bonilla Juan José
Paredes Damian
Sabando José
Santana Steven
Urdanigo Yandri
Zambrano Saltos Isaac

In [8]:

#Importamos las diferentes librerías con las que trabajaremos


import numpy as np
import argparse
import cv2
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Flatten
from keras.layers.convolutional import Conv2D
from keras.optimizers import Adam
from keras.layers.pooling import MaxPooling2D
from keras.preprocessing.image import ImageDataGenerator
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt

In [6]:

# Definimos los argumentos que entrarán vía línea de comando


#ap = argparse.ArgumentParser()
#ap.add_argument("--mode",help="train/display")
#a = ap.parse_args()
#mode = a.mode
mode="display"
In [10]:

#Plot es el método que nos permitirá representar mediante gráficos, los valores de exac
titud y pérdidas
def plot_model_history(model_history):
"""
Plot Accuracy and Loss curves given the model_history
"""
fig, axs = plt.subplots(1,2,figsize=(15,5))
# summarize history for accuracy
axs[0].plot(range(1,len(model_history.history['acc'])+1),model_history.history['ac
c'])
axs[0].plot(range(1,len(model_history.history['val_acc'])+1),model_history.history[
'val_acc'])
axs[0].set_title('Model Accuracy')
axs[0].set_ylabel('Accuracy')
axs[0].set_xlabel('Epoch')
axs[0].set_xticks(np.arange(1,len(model_history.history['acc'])+1),len(model_histor
y.history['acc'])/10)
axs[0].legend(['train', 'val'], loc='best')
# summarize history for loss
axs[1].plot(range(1,len(model_history.history['loss'])+1),model_history.history['lo
ss'])
axs[1].plot(range(1,len(model_history.history['val_loss'])+1),model_history.history
['val_loss'])
axs[1].set_title('Model Loss')
axs[1].set_ylabel('Loss')
axs[1].set_xlabel('Epoch')
axs[1].set_xticks(np.arange(1,len(model_history.history['loss'])+1),len(model_histo
ry.history['loss'])/10)
axs[1].legend(['train', 'val'], loc='best')
fig.savefig('plot.png')
plt.show()
In [12]:

# Definimos las variables que usaremos como generadores de data


train_dir = 'data/train'
val_dir = 'data/val'

num_train = 28709
num_val = 7178
batch_size = 64
num_epoch = 50

train_datagen = ImageDataGenerator(rescale=1./255)
val_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(48,48),
batch_size=batch_size,
color_mode="grayscale",
class_mode='categorical')

validation_generator = val_datagen.flow_from_directory(
val_dir,
target_size=(48,48),
batch_size=batch_size,
color_mode="grayscale",
class_mode='categorical')

Found 28709 images belonging to 7 classes.


Found 7178 images belonging to 7 classes.
In [13]:

# Creamos el modelo
model = Sequential()

model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(48,48,1)))


model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))


model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(1024, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(7, activation='softmax'))

WARNING:tensorflow:From C:\Users\JB ELECTRONIC\Anaconda3\lib\site-packages


\tensorflow\python\framework\op_def_library.py:263: colocate_with (from te
nsorflow.python.framework.ops) is deprecated and will be removed in a futu
re version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From C:\Users\JB ELECTRONIC\Anaconda3\lib\site-packages
\keras\backend\tensorflow_backend.py:3445: calling dropout (from tensorflo
w.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a
future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1
- keep_prob`.
In [14]:

# Si desea entrenar el mismo modelo, en el argumento que pasaremos será el valor “ — mo


de train”
if mode == "train":
model.compile(loss='categorical_crossentropy',optimizer=Adam(lr=0.0001, decay=1e-6
),metrics=['accuracy'])

model_info = model.fit_generator(
train_generator,
steps_per_epoch=num_train // batch_size,
epochs=num_epoch,
validation_data=validation_generator,
validation_steps=num_val // batch_size)

plot_model_history(model_info)
model.save_weights('model.h5')
# Las emociones se mostrarán en el área identificada como cara (rostro) desde la transm
isión de la cámara web.
elif mode == "display":
model.load_weights('model.h5')

# prevents openCL usage and unnecessary logging messages


cv2.ocl.setUseOpenCL(False)

# dDiccionario que asigna a cada etiqueta una emoción


emotion_dict ={0: "Angry", 1: "Disgusted", 2: "Fearful", 3: "Happy", 4: "Neutral",
5: "Sad", 6: "Surprised"}
# INICIAMOS LA CAPTURA MEDIANTE LA CAMARA WEB
cap = cv2.VideoCapture(0)
while True:

ret, frame = cap.read()


if not ret:

break
#Carga archivo con los valores delimitadores de un rostro
facecasc = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = facecasc.detectMultiScale(gray,scaleFactor=1.3, minNeighbors=5)
if len(faces)>0:
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y-50), (x+w, y+h+10), (255, 0, 0), 2)
roi_gray = gray[y:y + h, x:x + w]
cropped_img = np.expand_dims(np.expand_dims(cv2.resize(roi_gray, (48, 4
8)), -1), 0)
prediction = model.predict(cropped_img)
maxindex = int(np.argmax(prediction))
cv2.putText(frame, emotion_dict[maxindex], (x+20, y-60), cv2.FONT_HERSH
EY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)
cv2.putText(frame, 'Es de un humano el rostro', (10, 1* 20 + 20), cv2.F
ONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)

else :
cv2.putText(frame, 'No se detecta rostro humano', (10, 1* 20 + 20), cv2.FON
T_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)

cv2.imshow('Video', cv2.resize(frame,(1600,960),interpolation = cv2.INTER_CUBIC


))
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Reconocimiento de emociones usando Redes neuronales
convolucionales profundas
Introducción Desde que se desarrollaron las computadoras, los científicos e ingenieros pensaron en
sistemas artificialmente inteligentes que son mental y / o físicamente equivalentes a los humanos. En las
últimas décadas, el aumento de la potencia computacional generalmente disponible proporcionó una mano
de ayuda para desarrollar máquinas de aprendizaje rápido, mientras que Internet proporcionó una enorme
cantidad de datos para la capacitación. Estos dos desarrollos impulsaron la investigación sobre sistemas
inteligentes de autoaprendizaje, con redes neurales entre las técnicas más prometedoras.

Antecedentes

Una de las principales aplicaciones actuales de inteligencia artificial utilizando redes neuronales es el
reconocimiento de rostros en fotos y videos. La mayoría de las técnicas procesan datos visuales y buscan
patrones generales presentes en rostros humanos. El reconocimiento de rostros puede ser utilizado con
fines de vigilancia por parte de los agentes de la ley, así como en la gestión de multitudes. Otro actual

Las aplicaciones implican desenfoque automático de caras en imágenes de Google Streetview y


reconocimiento automático de amigos de Facebook en fotos. Un desarrollo aún más avanzado en este
campo es el reconocimiento de emociones. Además de solo identificar caras, la computadora usa la
disposición y la forma de, p. cejas y labios para determinar la expresión facial y, por lo tanto, la emoción de
una persona. Una posible aplicación para esto radica en el área de vigilancia y análisis de comportamiento
por cumplimiento de la ley. Además, estas técnicas se utilizan en cámaras digitales para tomar fotografías
automáticamente cuando el usuario sonríe. Sin embargo, las aplicaciones más prometedoras implican la
humanización de los sistemas de inteligencia artificial. Si las computadoras pueden realizar un seguimiento
del estado mental del usuario, los robots pueden reaccionar ante esto y comportarse adecuadamente. El
reconocimiento de las emociones, por lo tanto, juega un papel clave en la mejora de la interacción hombre-
máquina.

Objetivo de la investigación

En esta investigación, nos centramos principalmente en sistemas basados en redes neuronales


artificialmente inteligentes capaces de derivar la emoción de una persona a través de imágenes de su rostro.
Se experimentarán diferentes enfoques de la literatura existente y se evaluarán los resultados de varias
opciones en el proceso de diseño. Por lo tanto, la pregunta principal de investigación dice lo siguiente:
¿Cómo se puede usar una red neuronal artificial para interpretar la expresión facial de un humano? El resto
de este artículo describe los diversos pasos dados para responder a la pregunta principal de investigación,
es decir, las subpreguntas. En la sección 2, una encuesta bibliográfica aclarará cuál es el papel de las
expresiones faciales en el reconocimiento de emociones y qué tipos de redes son adecuadas para la
clasificación automática de imágenes. La tercera sección explica cómo se estructuran las redes neuronales
consideradas y cómo se entrenan las redes. La Sección 4 describe cómo funciona el modelo final, después
de lo cual se siguen una conclusión y algunas recomendaciones en la última sección. Cabe señalar que el
objetivo de nuestro trabajo no es diseñar un reconocedor de emociones desde cero, sino más bien revisar
las opciones de diseño y mejorar las técnicas existentes con algunas ideas nuevas.

Emociones humanas

Una característica clave en la interacción humana es la universalidad de las expresiones faciales y el


lenguaje corporal. Ya en el siglo XIX, Charles Darwin publicó sobre expresiones faciales compartidas
globalmente que juegan un papel importante en la comunicación no verbal [3]. En 1971, Ekman y Friesen
declararon que los comportamientos faciales están universalmente asociados con emociones particulares
[5]. Aparentemente, los humanos, pero también los animales, desarrollan movimientos musculares similares
que pertenecen a cierto estado mental, a pesar de su lugar de nacimiento, raza, educación, etc. Por lo tanto,
si se modela adecuadamente, esta universalidad puede ser una característica muy conveniente en la
interacción hombre-máquina: un sistema bien entrenado puede comprender las emociones,
independientemente de quién sea el sujeto. Hay que tener en cuenta que las expresiones faciales no son
necesariamente traducibles directamente en emociones, ni viceversa. La expresión facial es, además, una
función de p. estado mental, mientras que las emociones también se expresan a través del lenguaje corporal
y la voz [6]. Por lo tanto, los sistemas de reconocimiento de emociones más eficientes también deberían
incluir estas dos últimas contribuciones. Sin embargo, esto está fuera del alcance de esta investigación y
seguirá siendo una recomendación para trabajos futuros. Los lectores interesados en la investigación sobre
la clasificación de las emociones a través del reconocimiento de voz se refieren a Nicholson et al. [14] Como
último punto de atención, las emociones no deben confundirse con el estado de ánimo, ya que el estado de
ánimo se considera un estado mental a largo plazo. En consecuencia, el reconocimiento del estado de
ánimo a menudo implica un análisis de larga data del comportamiento y las expresiones de alguien y, por lo
tanto, se omitirá en este trabajo. Técnicas de clasificación de imágenes El crecimiento de la potencia
computacional disponible en las computadoras de consumo a principios del siglo XXI impulsó el desarrollo
de algoritmos utilizados para interpretar imágenes. En el campo de la clasificación de imágenes, se pueden
distinguir dos puntos de partida. Por un lado, los extractores de funciones preprogramados se pueden usar
para analizar analíticamente varios elementos de la imagen para clasificar el objeto que se muestra.
Directamente opuestas a este enfoque, las redes neuronales de autoaprendizaje proporcionan una forma de
técnica de identificación de "caja negra". En este último concepto, el sistema mismo desarrolla reglas para la
clasificación de objetos mediante la capacitación sobre datos de muestra etiquetados. Fasel y Luettin [6]
ofrecen una amplia descripción de los extractores de características analíticas y los enfoques de redes
neuronales para el reconocimiento de la expresión facial. Se puede concluir que al momento de escribir, a
principios del siglo XXI, ambos enfoques funcionan aproximadamente igual de bien. Sin embargo, dada la
disponibilidad actual de datos de entrenamiento y potencia computacional, se espera que el rendimiento de
los modelos basados en redes neuronales se pueda mejorar significativamente ahora. Algunos logros
recientes se enumerarán a continuación.

(i) Krizhevsky y Hinton [9] ofrecen una publicación innovadora sobre la clasificación automática de imágenes
en general. Este trabajo muestra una red neuronal profunda que se asemeja a la funcionalidad de la corteza
visual humana. Utilizando una colección etiquetada de 60000 imágenes desarrollada por uno mismo en más
de 10 clases, llamada conjunto de datos CIFAR-10, se obtiene un modelo para clasificar objetos a partir de
imágenes. Otro resultado importante de la investigación es la visualización de los filtros en la red, de modo
que se pueda evaluar cómo el modelo desglosa las imágenes. (ii) En otro trabajo que adopta el conjunto de
datos CIFAR-10 [2], se desarrolla una arquitectura de red muy amplia y profunda, combinada con soporte de
GPU para disminuir el tiempo de entrenamiento. En conjuntos de datos populares, como las digitaciones
manuscritas MNIST, los caracteres chinos y las imágenes CIFAR-10, se logra un rendimiento casi humano.
Las tasas de error extremadamente bajas superan significativamente los resultados anteriores del estado del
arte. Sin embargo, debe mencionarse que la red utilizada para el conjunto de datos CIFAR-10 consta de 4
capas convolucionales con 300 mapas cada una, 3 capas de agrupación máxima y 3 capas de salida
completamente conectadas. Como resultado, aunque se utilizó una GPU, el tiempo de entrenamiento fue de
varios días.

(iii) En 2010, la introducción del desafío anual de Imagenet [4] impulsó la investigación sobre la clasificación
de imágenes y el gigantesco conjunto de datos etiquetados a menudo se utiliza en publicaciones desde
entonces. En un trabajo posterior de Krizhevsky et al. [10], una red con 5 convolucionales, 3 agrupaciones
máximas y 3 capas completamente conectadas se entrena con 1,2 millones de imágenes de alta resolución
del concurso ImmanetNet LSVRC-2010. Después de implementar técnicas para reducir el sobreajuste, los
resultados son prometedores en comparación con los modelos de estado anteriores. Además, se realizan
experimentos para reducir el tamaño de la red, indicando que el número de capas se puede reducir
significativamente mientras que el rendimiento se reduce solo un poco.
(iv) Con respecto al reconocimiento de la expresión facial en particular, Lv et al. [13] presentan una red de
creencias profundas específicamente para usar con la Expresión Facial Femenina Japonesa (JAFFE) y las
bases de datos extendidas de Cohn-Kanade (CK +). La característica más inexistente de la red es el
concepto jerárquico de análisis de caras, es decir, la imagen se pasa a través de la red varias veces para
detectar primero la cara, luego los ojos, la nariz y la boca, y finalmente la emoción correspondiente. Los
resultados son comparables con la precisión obtenida por otros métodos en la misma base de datos, como
Support Vector Machine (SVM) y Learning Vector Quantization (LVQ). (v) Otro trabajo en la base de datos
Cohn-Kanade [1] utiliza el filtrado de Gabor para el procesamiento de imágenes y la Máquina de vectores de
soporte (SVM) para la clasificación. Un filtro Gabor es particularmente adecuado para el reconocimiento de
patrones en imágenes y se afirma que imita la función del sistema visual humano. Las precisiones de
reconocimiento de emociones son altas, que varían de 88% en ira a 100% en sorpresa. Sin embargo, una
gran desventaja del enfoque es que se requiere un procesamiento previo muy preciso de los datos, de modo
que cada imagen cumpla con un formato estricto antes de introducirla en el clasificador. (vi) Uno de los
estudios más recientes sobre el reconocimiento de emociones describe una red neuronal capaz de
reconocer raza, edad, género y emoción a partir de imágenes de rostros [7]. El conjunto de datos utilizado
para esta última categoría se origina en el Desafío de reconocimiento de expresiones faciales (FERC-2013).
Una red profunda claramente organizada que consta de 3 capas convolucionales, 1 capa completamente
conectada y algunas capas pequeñas en el medio obtuvieron una precisión promedio del 67% en la
clasificación de emociones, que es igual a las publicaciones anteriores de última generación. en el mismo
conjunto de datos. Además, esta tesis establece un análisis valioso del efecto de ajustar el tamaño de la red,
la agrupación y el abandono. Subrayado por otra literatura, el concepto más prometedor para el análisis de
expresión facial es el uso de redes neuronales convolucionales profundas. Sin embargo, la red de [2] (ii) se
considera demasiado pesada para nuestra cantidad limitada de recursos de procesamiento disponibles. La
red original de [10] (iii) también es grande, pero se afirma que las versiones más pequeñas son igualmente
adecuadas. Además, debido a sus enfoques algo analíticos y poco convencionales, no evaluaremos [13] (iv)
y [1] (v). Por lo tanto, en la siguiente sección, tres arquitecturas profundas en total se someterán a un
problema de clasificación de emociones. Estas arquitecturas se derivan de las redes descritas en los ítems i,
iii y vi, pero no necesariamente iguales.

Figura 1: Muestras de los conjuntos de datos FERC-2013 (izquierda), CK + (centro) y RaFD (derecha)

Configuración del experimento

Para evaluar los tres enfoques mencionados anteriormente sobre su capacidad de reconocimiento de
emociones, desarrollamos tres redes basadas en los conceptos de [9], [10] y [7]. Esta sección describe los
datos utilizados para la capacitación y las pruebas, explica los detalles de cada red y evalúa los resultados
obtenidos con los tres modelos.

*Conjunto de datos

Las redes neuronales, y las redes profundas en particular, son conocidas por su necesidad de grandes
cantidades de datos de entrenamiento. Además, la elección de las imágenes utilizadas para la formación es
responsable de una gran parte del rendimiento del modelo eventual. Esto implica la necesidad de un
conjunto de datos tanto cualitativo como cuantitativo. Para el reconocimiento de emociones, hay varios
conjuntos de datos disponibles para la investigación, que varían desde unos cientos de fotos de alta
resolución hasta decenas de miles de imágenes más pequeñas. Los tres que discutiremos son el Desafío de
Reconocimiento de Expresión Facial (FERC-2013) [8], Extended Cohn-Kanade (CK +) [12] y Radboud
Faces Database (RaFD) [11], todos mostrados en la figura 1. Los conjuntos de datos difieren principalmente
en la cantidad, calidad y "limpieza" de las imágenes. El conjunto FERC-2013, por ejemplo, tiene
aproximadamente 32000 imágenes de baja resolución, donde el RaFD proporciona 8000 fotos de alta
resolución. Además, se puede notar que las expresiones faciales en CK + y RaFD se plantean (es decir,
"limpias"), mientras que el conjunto FERC-2013 muestra emociones 'en estado salvaje'. Esto hace que las
imágenes del conjunto FERC-2013 sean más difíciles de interpretar, pero dado el gran tamaño del conjunto
de datos, la diversidad puede ser beneficiosa para la solidez de un modelo. Razonamos que, una vez
capacitados sobre el conjunto FERC-2013, las imágenes de los conjuntos de datos "limpios" pueden
clasificarse fácilmente, pero no al revés. Por lo tanto, para las tres redes bajo consideración, la capacitación
se realizará utilizando 9000 muestras de los datos de FER-2013 (ver figura 2) con otras 1000 nuevas
muestras para validación. Posteriormente, se realizarán pruebas con 1000 imágenes del conjunto RaFD
para obtener una indicación del rendimiento en datos limpios de alta calidad. Este último conjunto tiene una
distribución uniforme sobre todas las emociones.

Figura 2: Número de imágenes por emoción en el conjunto de entrenamiento. Tenga en cuenta que las caras
no frontales y las imágenes con la etiqueta despectiva se toman de los datos de RaFD, ya que no están
representados en el conjunto de capacitación FERC-2013. Además, con el uso del clasificador en cascada
basado en características de Haar dentro del marco OpenCV [15], todos los datos se procesan previamente.
Para cada imagen, solo la parte cuadrada que contiene la cara se toma, se vuelve a escalar y se convierte
en una matriz con valores de escala de grises de 48x48.

Redes

Las redes se programan con el uso de la biblioteca TFLearn en la parte superior de TensorFlow, que se
ejecuta en Python. Este entorno reduce la complejidad del código, ya que solo deben crearse las capas
neuronales, en lugar de cada neurona. El programa también proporciona comentarios en tiempo real sobre
el progreso y la precisión de la capacitación, y facilita guardar y reutilizar el modelo después de la
capacitación. Se pueden encontrar más detalles sobre este marco en la referencia [16].

(A) La primera red para probar se basa en la investigación descrita anteriormente por Krizhevsky y Hinton
[9]. Esta es la red más pequeña de las tres, lo que significa que tiene las demandas informáticas más bajas.
Dado que una de las aplicaciones futuras podría ser la forma de reconocimiento de emociones en vivo en
sistemas integrados, los algoritmos de trabajo rápido son benéficos.

La red consta de tres capas convolucionales y dos capas totalmente conectadas, combinadas con capas de
agrupación máxima para reducir el tamaño de la imagen y una capa de caída para reducir la posibilidad de
un ajuste excesivo. Los hiperparámetros se eligen de manera tal que el número de cálculos en cada capa
constitucional permanezca aproximadamente igual. Esto asegura que la información se conserva en toda la
red. La capacitación se realiza utilizando diferentes números de filtros convolucionales para evaluar su
efecto en el rendimiento.

(B) En 2012, se desarrolló la red convolucional AlexNet para clasificar imágenes en más de 1000 clases
diferentes, utilizando 1,2 millones de imágenes de muestra del conjunto de datos ImageNet. Debido al hecho
de que en esta investigación el modelo solo tiene que distinguir siete emociones, y debido a nuestros
recursos informáticos limitados, el tamaño de la red original se considera demasiado grande. Por lo tanto, en
lugar de 5 capas convolucionales, aplicamos 3, y en las siguientes 3 capas completamente conectadas, el
número de nodos de cada uno completamente conectado se redujo de 4096 a 1024. Si bien la red original
se dividió para entrenamiento paralelo, fue observó que no era necesario para la versión más pequeña. La
red también utiliza la normalización local para acelerar las capas de entrenamiento y abandono para reducir
el sobreajuste. (C) Los últimos experimentos se realizan en una red basada en el trabajo de Gudi [7]. Dado
que esta investigación también tuvo como objetivo reconocer 7 emociones utilizando el conjunto de datos
FERC-2013, la arquitectura debería ser un buen punto de partida para nuestra investigación. La red original
comienza con una capa de entrada de 48 por 48, que coincide con el tamaño de los datos de entrada. A
esta capa le sigue una capa convolucional, una capa de normalización de contraste local y una capa de
agrupamiento máximo, respectivamente. La red está terminada con dos capas convolucionales más y una
capa completamente conectada, conectada a una capa de salida soft-max. El abandono se aplicó a la capa
totalmente conectada y todas las capas contienen unidades ReLu. Para nuestra investigación, se aplica una
segunda capa de maxpooling para reducir el número de parámetros. Esto reduce la intensidad
computacional de la red, mientras que se dice que la reducción en el rendimiento es solo del 1-2%. Además,
se ajusta la tasa de aprendizaje. En lugar de disminuir linealmente la tasa de aprendizaje como lo hizo Gudi
[7], creemos que una tasa de aprendizaje que hace uso del momento convergería más rápido, ya que el
momento aumenta la tasa de aprendizaje cuando el graduado continúa entrando La misma dirección.
Evaluación Todas las redes están entrenadas durante 60 épocas con los datos mencionados en la sección
3.1. La Figura 3 y la tabla 1 muestran varios detalles del proceso de capacitación y el modelo final. Para la
red A, la precisión final en los datos de validación es de alrededor del 63%. Ya después de 10 épocas, la
precisión aumentó por encima del 60%, lo que indica capacidades de aprendizaje rápido. Además, es
notable que el ajuste de la dimensión del filtro no tuvo una gran influencia en la precisión, aunque sí en el
tiempo de procesamiento. Esto significa que se pueden hacer modelos rápidos con un rendimiento muy
razonable.

Figura 3: Precisión en el conjunto de validación durante las épocas de entrenamiento.

Table 1: Detalles de las redes entrenadas.


**RED** **PRECISIÓN** **TAMAÑO**.

**Validation** **RaFD**.

A 63% 50% **Pequeño**.

B 53% 46% **Grande**.

C 63% 60% **Medio**.

Sorprendentemente, la segunda red, mucho más grande, también aprende rápidamente, pero converge con
una precisión de aproximadamente el 54%. Aparentemente, reducir el tamaño de la red rompe el
rendimiento prometedor de la red original más de lo esperado. Junto con la intensidad computacional mucho
más alta y, por lo tanto, un rendimiento en vivo más lento, este modelo no es un retador digno de las otras
dos arquitecturas. La red C muestra una curva de aprendizaje algo más lenta, pero la precisión final en el
conjunto de validación es similar a la de la red A. Las demandas de procesamiento están en el medio de las
otras redes, por lo que, en base a este hecho, la red A parece ser El enfoque más prometedor para nuestra
tarea de reconocimiento de emociones. Sin embargo, el rendimiento de la red C en el conjunto de pruebas
RaFD adicional es significativamente mejor (60%) que el de la red A (50%). Esto indica mejores
capacidades de generación, lo cual es muy importante para futuras aplicaciones. Por lo tanto, en el próximo
capítulo, el modelo de la red C será investigado y probado más a fondo.

Modelo final

Se observó que la última red descrita en la sección 3.2 tenía el rendimiento más prometedor para
aplicaciones prácticas. En la figura 4 se muestra una descripción general de su arquitectura. Los archivos
fuente de esta red, así como otros scripts utilizados para este proyecto, se pueden encontrar en
https://github.com/isseu/emotion- (https://github.com/isseu/emotion-) Recognition-Neural-Networks . Como
se puede ver en la figura 3, la precisión todavía parece aumentar en las últimas épocas. Por lo tanto,
entrenaremos la red durante 100 épocas en la ejecución final, para asegurarnos de que la precisión converja
al óptimo. En un intento por mejorar aún más el modelo final, la red se entrenará en un conjunto más grande
que el descrito anteriormente. En lugar de 9000 imágenes, la capacitación se realizará con 20000 imágenes
del conjunto de datos FERC-2013. Las proporciones de las emociones presentes en este conjunto se dan en
la figura 5. La validación recién compuesta (2000 imágenes) y los conjuntos de prueba (1000 imágenes) del
conjunto de datos FERC-2013 también se utilizan, junto con la prueba RaFD bien equilibrada conjunto del
experimento anterior.

Figura 5: Número de imágenes por emoción en el conjunto de entrenamiento final


Figura 4: Descripción general de la arquitectura de red del modelo final Las tasas de precisión del modelo
final se dan en la tabla 2. En todos los conjuntos de validación y prueba, la precisión fue mayor que durante
las ejecuciones anteriores, lo que subraya que más datos y una capacitación más prolongada pueden
mejorar el rendimiento de una red. Dado que las redes de vanguardia de investigaciones anteriores
obtuvieron alrededor del 67% en los conjuntos de pruebas, y teniendo en cuenta nuestros recursos
limitados, los resultados son bastante buenos. Es notable la precisión en el conjunto de pruebas RaFD, que
contiene imágenes completamente diferentes que los datos de entrenamiento. Esto ilustra las poderosas
capacidades de generalización de este modelo final. Tabla 2: Precisión de las redes.

**Network** **FERC-2013** **RaFD**.


**Prueba de validación**.
A 63% 50% .

B 53% 46% .

C 63% 60% .
**Final** **66%** **63%** **71%** .

Figura 6: Matriz de rendimiento del modelo final. Verticalmente la entrada, horizontalmente la salida. Para
ver cómo funciona el modelo por emoción, se genera una tabla, representada en la figura 6 Se obtienen
tasas de precisión muy altas en feliz (90%), neutral (80%) y sorprendido (77%). De hecho, estas son las
expresiones faciales más distinguibles según los humanos también. Triste, temeroso y enojado a menudo
también se clasifican erróneamente como neutrales. Aparentemente, estas emociones se parecen mucho.
La precisión más baja se obtiene en triste (28%) y temeroso (37%). Finalmente, es digno de mención que
aunque el porcentaje de datos con etiqueta disgustada en el conjunto de entrenamiento es bajo, la tasa de
clasificación es muy razonable. En general, la diagonal principal, que muestra la clasificación correcta, se
puede distinguir claramente.

Aplicación en vivo

Como ya se mencionó, el reconocimiento de emociones en vivo a través del video es uno de los puntos
clave más importantes en la interacción hombre-máquina. Para mostrar las capacidades de la red obtenida,
se desarrolla una aplicación que puede procesar directamente el metraje de la cámara web a través del
modelo final. Con el uso del mencionado programa de reconocimiento de rostros OpenCV [15], se rastrea,
extrae y escala la mayor cara que aparece del video en tiempo real a una entrada utilizable de 48x48. Estos
datos se envían a la entrada del modelo de red neuronal, que a su vez devuelve los valores de la capa de
salida. Estos valores representan la probabilidad de que cada emoción sea representada por el usuario. Se
supone que la salida con el valor más alto es la emoción actual del usuario, y se representa con un emoticón
a la izquierda de la pantalla. Aunque es difícil de evaluar objetivamente, la aplicación en vivo muestra un
rendimiento prometedor. Sin embargo, encuentra problemas cuando hay sombras presentes en la cara del
sujeto. Una vez más, esto enfatiza el poder de usar modelos basados en redes neuronales para
aplicaciones futuras en el reconocimiento de emociones.

Referencias
[1] T. Ahsan, T. Jabid, and U.-P. Chong. Facial expression recognition using local transitional pattern on
gabor filtered facial images. IETE Tech-nical Review, 30(1):47–52, 2013. [2] D. Ciresan, U. Meier, and J.
Schmidhuber.Multicolumn deep neural networks for imageclassification. In Computer Vision and Pattern
Recognition (CVPR), 2012 IEEE Confer- ence on, pages 3642–3649. IEEE, 2012. [3] C. R. Darwin. The
expression of the emotions in man and animals. John Murray, London, 1872. [4] J. Deng, W. Dong, R.
Socher, L.-J. Li, K. Li, and L. Fei-Fei. Imagenet: A large-scale hierar- chical image database. In Computer
Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on, pages 248–255. IEEE, 2009. [5] P.
Ekman and W. V. Friesen. Constants across cultures in the face and emotion. Journal of personality and
social psychology, 17(2):124, 1971. [6] B. Fasel and J. Luettin. Automatic facial expression analysis: a
survey. Pattern recognition,36(1):259–275, 2003. [7] A. Gudi. Recognizing semantic features in faces using
deep learning. arXiv preprint arXiv:1512.00743, 2015. [8] Kaggle. Challenges in representation learning:
Facial expression recognition challenge, 2013. [9] A. Krizhevsky and G. Hinton. Learning multiple layers of
features from tiny images, 2009. [10] A. Krizhevsky, I. Sutskever, and G. E. Hinton.Imagenet classification
with deep convolutionalneural networks. In Advances in neural information processing systems, pages 1097–
1105, 2012. [11] O. Langner, R. Dotsch, G. Bijlstra, D. H. Wig- boldus, S. T. Hawk, and A. van Knippenberg.
Presentation and validation of the radboud faces database. Cognition and emotion, 24(8):1377–1388, 2010.

[12] P. Lucey, J. F. Cohn, T. Kanade, J. Saragih, Z. Ambadar, and I. Matthews. The extended cohn-kanade
dataset (ck+): A complete dataset for action unit and emotion-specified expression. In Computer Vision and
Pattern Recognition Workshops (CVPRW), 2010 IEEE Computer Society Conference on, pages 94–101.
IEEE,2010. [13] Y. Lv, Z. Feng, and C. Xu. Facial expression recognition via deep learning. In Smart Comput-
ing (SMARTCOMP), 2014 International Con- ference on, pages 303–308. IEEE, 2014. [14] J. Nicholson, K.
Takahashi, and R. Nakatsu.Emotion recognition in speech using neural networks. Neural computing &
applications, 9(4):290–296, 2000. [15] OpenSourceComputerVision. Face detection using haar cascades.

In [ ]:

You might also like