atenci on al cliente por medio de reconocimiento facial
Embed Size (px)
TRANSCRIPT

Atencion al cliente por medio de reconocimiento facial
Adelaida Zuluaga Cajiao
Universidad de Los Andes
Facultad de Ingenierıa, Departamento de Ingenierıa Electrica y Electronica
Bogota, Colombia
2019


Atencion al cliente por medio de reconocimiento facial
Adelaida Zuluaga Cajiao
Universidad de Los Andes
Presentado en cumplimiento parcial de los requisitos para el grado de:
Ingeniera Electronica
Asesor:
Fernando Enrique Lozano, Carolina Higuera
Diciembre 17, 2019
Universidad de Los Andes
Facultad de Ingenierıa, Departamento de Ingenierıa Electrica y Electronica
Bogota, Colombia
2019


A mi abuela Blanca Helena, quien tiene un gusto
especial por los robots.

vi
Agradecimientos
En primer lugar, quiero agradecer a mis asesores
Fernando Lozano y Carolina Higuera, por todo
el apoyo que me brindaron y el conocimiento
que me transmitieron, pues esto hizo posible la
realizacion del proyecto.
A mi novio, Juan Jose Garcıa quien me brindo
una ayuda fundamental. El proyecto no fue facil,
pero el estuvo ahı motivandome y ayudandome
en todo momento.
A toda mi familia por su paciencia y apoyo in-
condicional.

vii
Abstract
Due to the rapid progress in artificial intelligence and algorithms applied to machine learning,
social robotics is now part of the most important technological advances that have been
reached today. Hence, the biggest challenge facing this field is figuring out how to get robots
into human environments [1], therefore research in natural interaction between humans and
robots is growing. Nowadays, robots are used to assist with the performance of daily life tasks
in areas such as education, health, entertainment, security, customer services, among many
others. Because of this, social robots must acquire the ability of interacting with people
in a natural way, this is called Natural Language Processing. The first step to reach this
capacity is to detect and recognize people in a natural way. Because of this, through this
undergraduate dissertation a customer service application, focused on detection and face
recognition, will be developed.
Keywords: Robotics, Artificial Intelligence, Social robots, Natural Language Processing, Human-
robot interaction

Tabla de contenido
Lista de figuras X
Lista de tablas XI
1 Introduccion 1
1.1 Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Estructura del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Objetivos 3
2.0.1 Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.0.2 Objetivos especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Marco teorico 5
3.1 Robotica social . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Robots sociales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Interaccion humano-robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 Lenguaje natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.5 Deteccion facial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6 Reconocimiento facial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.7 ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.8 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.9 Scikit-Learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Propuesta metodologica 13
4.1 Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Propuesta metodologica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Analisis de resultados 18
5.1 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.1.1 Deteccion facial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.1.2 Reconocimiento facial . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.1.3 Integracion de los dos modulos . . . . . . . . . . . . . . . . . . . . . . 24
6 Conclusiones 25

Tabla de contenido ix
Bibliografıa 26

Lista de figuras
3-1 Pepper:robot semi humanoide [6] . . . . . . . . . . . . . . . . . . . . . . . . 6
3-2 Formas de interaccion humano-robot[4] . . . . . . . . . . . . . . . . . . . . . 7
3-3 Pasos para el desarrollo de Viola Jones . . . . . . . . . . . . . . . . . . . . . 8
3-4 Estructura de un grafo de ROS[16] . . . . . . . . . . . . . . . . . . . . . . . 11
4-1 Grafo implementado para la aplicacion . . . . . . . . . . . . . . . . . . . . . 14
5-1 Multiples personas detectadas . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5-2 Deteccion de rostros para dos personas . . . . . . . . . . . . . . . . . . . . . 20
5-3 Preprocesamiento: alineamiento de las imagenes . . . . . . . . . . . . . . . . 21
5-4 Varianza vs numero de componentes . . . . . . . . . . . . . . . . . . . . . . 21
5-5 Eigenfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5-6 SVM con kernel RBF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5-7 SVM One vs All . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5-8 Proceso de reconocimiento facial . . . . . . . . . . . . . . . . . . . . . . . . . 24

Lista de tablas
4-1 Criterios de evaluacion del modelo . . . . . . . . . . . . . . . . . . . . . . . . 16
5-1 Primeros resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5-2 Resultados optimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1 Introduccion
1.1. Motivacion
Debido a los grandes avances a los que se ha llegado en el campo de la Inteligencia Artificial
y Machine Learning, la robotica social se ha convertido en uno de los avances tecnologicos
mas importantes a los que se ha llegado hoy en dıa. Aun ası, el reto mas grande que presenta
este campo de investigacion es como integrar los robots a los ambientes humanos. Por este
motivo, la investigacion en la interaccion natural humano robot esta creciendo significati-
vamente. Hoy en dıa los robots tienen un rol de asistentes en aplicaciones del dıa a dıa de
las personas como por ejemplo en la educacion, en temas de la salud, de entretenimiento,
seguridad, atencion al cliente, entre otros. En este orden de ideas, una de las metas que
se tiene hoy en dıa es permitir que los robots sociales tengan una buena relacion con las
personas y alcancen un papel beneficioso en la cotidianidad. Para ello se requiere desarrollar
habilidades cognitivas y sociales que sean aplicadas al comportamiento de los robots, dentro
de las cuales se encuentran la identificacion y el reconocimiento facial.
En efecto, el reconocimiento facial es trascendental para la cotidianidad de las personas, pues
es la habilidad que permite entablar relaciones interpersonales, razon por la cual mediante
este proyecto de grado se busca trabajar alrededor de este tema. Si los robots llegan a tener
la capacidad de reconocer y recordar las personas con las cuales interactuan, serıan capaces
de aprender sus caracterısticas especıficas a medida que interactuan con estos. Eventual-
mente, esto mejorarıa, en gran medida, la relacion entre los humanos y los robots. Ası pues,
el proyecto propuesto consiste en la implementacion y desarrollo de un sistema que pueda
ser de gran utilidad para oficinas, hoteles, universidades, entre otros, pues es una aplicacion
que permitira brindar atencion al cliente. La aplicacion sera implementada en un robot se-
mi humanoide, con el fin de apropiarse del contexto de interaccion entre el robot y los clientes.
Se propone utilizar el robot semi-humanoide Pepper creado por Softbank Robotics, el cual se
encuentra en uno de los laboratorios de la Universidad de los Andes. El prototipo se desa-
rrollara utilizando modelos pre-entrenados y tecnicas de Machine Learning. Adicionalmente,
se creara una base de datos con imagenes de estudiantes de la Universidad de los Andes,
con el fin de probar la aplicacion a desarrollar. El modelo a implementar de reconocimiento
facial se entrenara con esta base de datos y se espera que el robot sea capaz de reconocer la
persona con la cual interactua. En caso de que el robot no conozca a la persona, es decir que
no se encuentre en la base de datos, el robot tomara una serie de imagenes de la persona y

2 1 Introduccion
se reentrenara el modelo, de manera tal que esta persona pueda ser reconocida por el robot
en futuras interacciones. El producto final sera una prueba en tiempo real con el robot, el
cual se encargara de detectar una o mas personas en el lugar de prueba y podra, despues de
interactuar con las personas, reconocer a los que se encuentren allı.
1.2. Estructura del documento
El informe de esta tesis esta dividido en seis capıtulos los cuales se distribuyen de la siguien-
te manera, el primer capıtulo se centra en la presentacion de la motivacion del proyecto. El
segundo capıtulo presenta los objetivos y el alcance del proyecto.
El tercer capıtulo proveera informacion relacionada con el marco teorico e historico. Se ini-
ciara con el concepto de interaccion humano robot, seguido de un resumen de las teorıas y
principios involucrados en el desarrollo del proyecto, incluyendo tecnicas de Machine Lear-
ning utilizadas para el procesamiento de imagenes y reconocimiento de rostros. Luego, se
describira, analizara y compararan diferentes referencias sobre trabajos previos relacionados
con la problematica desarrollada.
En el cuarto capıtulo se define la propuesta metodologica. Para ello se planteara el problema
a abordar, el cual consiste en un sistema de deteccion y reconocimiento facial. Seguido de
esto, se procede a plantear la propuesta de la solucion, es decir como se busca resolver el
problema incluyendo los supuestos y criterios utilizados.
El quinto capıtulo es una recopilacion de los resultados obtenidos. En este se encontrara
el caso de estudio, la comparacion de los resultados ante variaciones en los modelos y un
analisis de lo que se pudo observar al finalizar la solucion del problema.
Finalmente, en el sexto capıtulo se concluye el proyecto, incluyendo la retroalimentacion so-
bre lo que se desarrollo a lo largo de la tesis, enfatizando en los objetivos que se alcanzaron,
los que no y en las posibles mejoras y trabajo futuro.

2 Objetivos
2.0.1. Objetivo general
Desarrollar un sistema de atencion al cliente, con el cual un robot semi-humanoide sea capaz
de detectar y reconocer personas. Adicionalmente, el robot debe interactuar con el cliente
para brindarle un buen servicio.
2.0.2. Objetivos especıficos
El proyecto busca alcanzar los siguientes objetivos especıficos:
1. Evaluar, integrar y adaptar modelos y herramientas existentes para deteccion facial.
2. Investigar diferentes tecnicas de reconocimiento facial.
3. Integrar y adaptar modelos para reconocer y etiquetar personas
4. Construir base de datos para el reconocimiento facial.
5. Evaluar el desempeno del sistema utilizando el robot.
6. Construir un sistema de interaccion con las personas que detecta y reconoce el robot.
2.1. Alcance
Para el desarrollo del proyecto se tuvieron en cuenta algunas restricciones y se definieron
los alcances del mismo. Mediante este proyecto se busca disenar una aplicacion para que el
robot semi-humanoide pueda brindar un servicio personalizado para clientes en un escenario
especıfico. Para ello, el sistema a desarrollar cuenta con dos modulos, uno para deteccion de
rostros y el otro para reconocimiento facial. Se pretende que el sistema sea rapido y auto-
matizado, lo cual permitira que el robot interactue con la persona a la cual esta atendiendo.
Se utilizara el procesador del robot para la ejecucion de la aplicacion, por lo cual se debio
tener en cuenta las limitaciones del mismo para la construccion de los modulos del siste-
ma. Esto quiere decir que se debe buscar algoritmos con bajo costo computacional para el
desarrollo de la aplicacion. En cuanto al desarrollo del sistema, se busca utilizar Python
como el lenguaje de programacion y librerıas como OpenCV y Sklearn para el desarrollo

4 2 Objetivos
de la aplicacion. Adicionalmente, el sistema debe ser implementado mediante un sistema
operativo robotico, conocido como ROS. Finalmente, las pruebas y resultados obtenidos y
presentados en este documento seran obtenidos en la Universidad de los Andes, al igual que
la construccion de la base de datos.

3 Marco teorico
3.1. Robotica social
La robotica juega un papel fundamental dentro de los desarrollos tecnologicos que se han
alcanzado actualmente, pues su estudio busca aportar un apoyo en el desarrollo de tareas
que representen alguna dificultad para los humanos y por lo tanto ofrece una mejora en
la vida cotidiana [2]. En este campo de estudio se encuentran aquellos robots disenados y
programados para interactuar con otras personas en entornos asistenciales, urbanos o en
general en el sector de servicios; a estos robots se les denomina robots sociales [3].
Los estudios y avances entorno a la robotica social han hecho posible que estas maquinas
sean integradas al dıa a dıa de las personas. Esto significa que mediante estos robots se ha
buscado alcanzar la interaccion con los humanos, lo cual permite incluir poco a poco a estas
maquinas en la vida social humana. Aun ası, para que los robots alcancen una inteligencia
social se debe trabajar en desarrollar su capacidad de autonomıa y dotarlos de capacidades de
aprendizaje y adaptabilidad a ambientes dinamicos[2]. En este orden de ideas, integrar estas
maquinas a la vida cotidiana de las personas permitirıa brindarles a estos ultimos un apoyo en
escenarios como el hogar, almacenes, hospitales, en situaciones donde se requiera vigilancia
o apoyo en la seguridad, entre otros. Los mecanismos de interaccion entre los humanos y los
robots implican un nuevo paradigma de trabajo en el campo de la robotica, dando lugar a
nuevas tecnologıas, estrategias y metodos encaminados a permitir una comunicacion entre
la maquina y las personas atendiendo normas sociales [4].
3.2. Robots sociales
Segun [5], los robots sociales son robots autonomos o semiautonomos que interactuan y se
comunican con los humanos siguiendo las normas dadas por estos ultimos. Los robots sociales
pueden ser humanoides o semihumanoides, por lo cual estan disenados especialmente para
mantener una conversacion, empatizar, ser amigables, identificar a las personas y reconocer
lenguajes verbales y gestos. Actualmente, los robots sociales mas populares del mercado son
ASIMO, Qrio, NAO, Maggie, Romeo y Pepper [5]. Cada uno de ellos contiene caracterısti-
cas de hardware y software que difieren segun su objetivo. Aun ası, cada uno de ellos debe
ser equipados con un conjunto de sensores. Estos les permiten obtener informacion visual,
por medio de camaras, informacion de distancia con el uso de sensores tipo sonar o laser e

6 3 Marco teorico
informacion auditiva con el uso de microfonos [4]. Para el proyecto de grado se utilizara al
robot Pepper, por lo cual a continuacion se presentan sus especificaciones.
En la figura 3-1 se presenta al robot semi humanoide utilizado para el proyecto de grado.
Pepper es un robot semi-humanoide de 120 centımetros, programable y disenado para in-
Figura 3-1: Pepper:robot semi humanoide [6]
teractuar con personas. Cuenta con sensores, actuadores y camaras, cuya informacion es
adquirida con base en la documentacion facilitada por la empresa SoftBank. En cuanto a
las camara con las que cuenta, estas facilitan el reconocimiento del entorno en el que se
encuentra el robot y de los objetos y personas que se encuentren cerca de este. En cuanto
a los actuadores, el robot cuenta con 5 tipos diferentes de motores que permiten realizar el
movimiento de articulaciones. Adicionalmente, cuenta con LED’s, microfonos, parlantes y
camaras 2D y de profundidad. A continuacion se hablara mas en detalle de los elementos
relevantes para el proyecto.
Camara de profundidad: Se encuentra en el ojo derecho del robot, cuyo angulo de
vision es de 58◦. Alcanza una velocidad de 20 Frames por Segundo.
Camaras 2D: Estan ubicadas en la frente y boca de Pepper. Tienen una resolucion
de 5MP. Dependiendo de la resolucion se alcanza una velocidad de 30 Frames por
Segundo. Su angulo de vision es de 55,20◦.
Por otro lado, Pepper cuenta con una tablet para facilitar la interaccion con personas. Cuenta
con una memoria RAM de 1GB y una Flash de 4 GB. Hablando sobre los sensores, Pepper
cuenta con acelerometro, giroscopio, laseres, sensores infra-rojos, sonares y encoders de rota-
cion magnetica. Adicionalmente, tiene un sensor tactil en la cabeza y una tablet en el pecho
para facilitar su interaccion [7].

3.3 Interaccion humano-robot 7
Figura 3-2: Formas de interaccion humano-robot[4]
3.3. Interaccion humano-robot
La informacion adquirida por medio de los sensores del robot es procesada para poder entrar
en la etapa de procesamiento la informacion y de comunicacion con el ser humano. En la
figura 3-2 se presentan algunas formas de interaccion entre los humanos y los robots. El
robot es considerado como el receptor de los mensajes o senales enviadas por el humano. Los
mecanismos de interaccion se centran en la deteccion de gestos, expresiones y reconocimiento
de voz [4]. Como se puede ver en la figura 3-1, mediante gestos o palabras la persona puede
presentarle alguna solicitud al robot, el cual reconocera el gesto o el audio para tomar una
u otra decision segun la forma en la que se procese el mensaje. Adicionalmente, mediante el
reconocimiento de expresiones el robot puede pronosticar el estado actual de la persona y
con algun sistema de reconocimiento facial, la maquina podra determinar si la persona con
la cual se encuentra interactuando es conocida o desconocida para el mismo.
3.4. Lenguaje natural
Para mejorar las interacciones entre los robots y los humanos con el paso del tiempo, el
sistema debe ser capaz de aprender de sus experiencias, sus errores y las retroalimentaciones
ofrecidas por el usuario. El objetivo a largo plazo de la interaccion entre las maquinas y los
humanos, es lograr las capacidades de autoaprendizaje de las maquinas.
El procesamiento de lenguajes naturales, abreviado PLN, es un campo de la inteligencia ar-
tificial que estudia las interacciones entre los computadores y el lenguaje humano [13]. Este
campo busca disenar una comunicacion que no solo se base en la comprension del lenguaje,
sino en aspectos generales cognitivos. Para esto, la maquina debe adquirir la capacidad de
comprender el significado de la informacion que recibe e integrarla con lo ya conocido.
3.5. Deteccion facial
Un sistema de deteccion facial busca identificar automaticamente si en una imagen de tamano
arbitrario se encuentra un rostro humano, y de ser ası, debe identificar donde esta. Para que

8 3 Marco teorico
esto se pueda lograr, se utiliza una base de datos con millones de fotos positivas y negativas,
es decir fotos con informacion sobre personas y otras que no contengan esta informacion.
Para que un modelo, o clasificador, logre aprender a detectar personas en diferentes espacios
y situaciones, se asume un escenario totalmente supervisado y para ello se proporcionan
imagenes positivas y negativas con etiquetas. A continuacion se presentan algunos de los
algoritmos mas implementados para la aplicacion de deteccion facial.
Viola-Jones
El algoritmo de Viola-Jones, implementado por Paul Viola y Michael Jones [8], se destaca por
su bajo costo computacional y su baja posibilidad de clasificar erroneamente. El algoritmo
se basa en una serie de clasificadores debiles llamados Haar-like features, las cuales son
calculadas a partir de una imagen integral. Con el fin de trabajar sobre un clasificador fuerte,
se agrupan varios clasificadores debiles en cascada empleando un algoritmo de aprendizaje
conocido como AdaBoost, o Adaptive Boosting [9].
En la figura 3-3 se presentan los pasos requeridos para que el
algoritmo de Viola-Jones detecte personas en tiempo real.
Caracterısticas Haar:
Las caracterısticas Haar son similares a los wavelet de Haar
que se describe como un conjunto de ladrillos, los cuales se
encargan de reconstruir o representar una funcion, senal o
imagen [10]. Cada caracterıstica, encontrada en la imagen
a analizar, constituye la diferencia de intensidades lumino-
sas entre regiones rectangulares adyacentes [9]. Las carac-
terısticas son definidas por unos rectangulos y su posicion es
relativa a la ventana de busqueda. En el trabajo de Viola-
Jones las caracterısticas se definen sobre una ventana de
busqueda de 24x24 pıxeles, lo que resulta en aproximada-
mente 180,000 caracterısticas [9].
Imagen integral :
Las imagenes integrales son una manera intermedia de re-
presentar una imagen. La imagen integral en un punto (x,y)
contiene la suma de todos los pıxeles de los rectangulos en-
contrados para las caracterısticas haar, que se encuentran
arriba y a la izquierda de ese punto en la imagen. La ima-
gen integral es finalmente, una representacion mas sencilla
de la imagen original, construida por la suma por regiones
de los pıxeles de la imagen original.
Figura 3-3: Pasos para el
desarrollo de
Viola Jones

3.6 Reconocimiento facial 9
Adaptive Boosting:
Mediante un algoritmo basado en AdaBoost, se lleva acabo el entrenamiento super-
visado necesario para crear la cascada de clasificadores. El boosting consiste en crear
un clasificador robusto a partir de la integracion de clasificadores debiles. Este pro-
ceso consiste en corregir, para clasificadores subsecuentes, los errores cometidos por
clasificadores anteriores. Esto se logra mediante la asignacion de pesos a cada ejemplo
de entrenamiento, luego se entrena el clasificador y se elige el mejor. Se actualizan
los pesos de acuerdo al error de clasificacion, los ejemplos que obtuvieron una etique-
ta erronea obtienen mayor peso para darle mayor importancia y poder ser clasificado
correctamente por el siguiente clasificador.
Clasificadores en cascada:
Una vez se obtiene el clasificador fuerte, o preciso se construyen clasificadores mas
pequenos y mas simples. El procedimiento consiste en dividir las imagenes en sub
ventanas para facilitar la clasificacion. Los clasificadores pequenos buscan entonces
rechazar las sub ventanas que no contengan informacion sobre rostros. De esta manera
se desea enfocar el clasificador en aquellas sub ventanas positivas, es decir en aquellas
que contienen informacion sobre rostros. De esta manera se obtiene un clasificador en
cascada, donde cada clasificador es entrenado con AdaBoost [9].
Identificacion de personas:
Las imagenes usadas para el entrenamiento son normalizadas, por lo cual la imagen
que se clasifica tambien debe ser normalizada. De esta manera se garantiza una mini-
mizacion de los efectos de diferentes condiciones de iluminacion. Una vez normalizada,
comienza el proceso de deteccion de rostros teniendo en cuenta el proceso mencionado
previamente.
3.6. Reconocimiento facial
Una de las aplicaciones del reconocimiento facial es identificar y etiquetar a una persona
en un cuadro de imagen o video con su nombre. Segun [11], los metodos de reconocimiento
facial se dividen en procesos geometricos y fotometricos. Los primeros se encargan de extraer
caracterısticas especıficas de la imagen de una persona. Con este metodo se puede analizar
particularidades como dimension, forma y posicion relativa de los ojos, la nariz, la boca,
entre otros. La segunda categorıa utiliza una base de datos de imagenes y se extraen las
caracterısticas o datos de los rostros, se normalizan y se comprimen. De esta manera, con el
metodo estadıstico la imagen a analizar es cuantificada con los mismos terminos.
Entre los metodos mas implementados para reconocimiento facial se encuentra el metodo
Eigenfaces, el algoritmo Fisherfaces, el modelo de Markov Oculto, entre otros. Para este

10 3 Marco teorico
proyecto se desarrollo el metodo Eigenfaces para el modulo de reconocimiento facial, el cual
sera descrito a continuacion.
Eigenfaces
El termino eigen hace referencia a un conjunto de vectores propios. Una de las ventajas de
este metodo es que se puede representar un conjunto de imagenes usando una base formada
de imagenes eigen cuya dimension es mucho menor a la del conjunto original [12]. El patron
que representa a cada imagen debe estar compuesto por los elementos mas importantes
de la imagen, lo cual permite reducir los datos usados en el proceso de clasificacion. Por
otro lado, esta tecnica es comunmente utilizada porque presenta una gran simplicidad en
su implementacion y los resultados obtenidos son altamente precisos. A continuacion, para
comprender mejor el que se lleva acabo en este metodo de reconocimiento, se explicara el
paso a paso del modelo.
1. Un set de n imagenes {x1, x2, ...xn} toma valores en una imagen de espacio n-dimensional,
y cada imagen pertenece a una de c clases {X1, X2, ...Xc}
2. Se hace una transformacion lineal, que mapea la imagen original n-dimensional en una
m-dimensional, donde se cumple:
m < n.
Para hacer esta reduccion de dimensionalidad se utiliza una tecnica conocida como
PCA o analisis de componentes principales. Mediante esta tecnica se debe calcular la
matriz de covarianza de los datos, es decir la covarianza de la matriz que contiene la
informacion de todas las imagenes de la base de datos, y se considera el vector propio
mas grande de esa matriz. A este vector se le conoce como eigen vector. Sobre este
vector se proyectan los datos para reducir sus dimensiones, creando nuevos vectores
caracterısticos yk definidos por la siguiente ecuacion:
yk = wTxk (3-1)
Al seleccionar el vector con mayor dispersion, se retienen los aspectos mas imporantes
de los datos y para el clasificador es mas facil hacer una buena prediccion sobre unos
datos dispersos que sobre unos acumulados.
Con esta tecnica de reduccion de dimensionalidad se logran extraer los elementos esenciales
de las imagenes y rechazar las caracterısticas o segmentos de las imagenes que son menos
crıticos.

3.7 ROS 11
3.7. ROS
ROS o Robot Operating System es una coleccion de frameworks para el desarrollo del software
de los robots. Esta basado en una arquitectura de grafos que ocurre en los nodos, los cuales
pueden recibir y mandar mensajes. Las areas mas relevantes que incluye ROS son [15]:
Nodo principal de coordinacion
Publicacion o subscripcion de flujo de datos. Pueden ser imagenes, mensajes tipo en-
tero, caracteres, etc.
Creacion y destruccion de nodos
La comunicacion entre nodos permite la ejecucion de tareas especıficas, y esta comunicacion
se lleva acabo mediante la publicacion de mensajes en algo llamado topicos.En la figura 3-4
se presenta un ejemplo de la comunicacion entre nodos. Uno de los nodos invoca el servicio
del nodo que envıa la informacion, este ultimo publica mensajes a traves de topicos y el otro
nodo se subscribe a estos. De esta manera se garantiza que la informacion llegue de un nodo
a otro.
Figura 3-4: Estructura de un grafo de ROS[16]
3.8. OpenCV
Open Source Computer Vision, OpenCV es una librerıa de vision por computaor que, como
lo indica su nombre, es de libre acceso. Permite ejecutar analisis de imagen y aprendizaje
automatico [14]. Para ello, la librerıa dispone de multiples algoritmos que permiten reco-
nocer objetos, clasificarlos, detectar movimientos de manos, detectar rostros, entre otros.
Adicionalmente, es una librerıa multiplataforma disponible para diferentes sistemas opera-
tivos como Windows, Mac, Linux y Android.
3.9. Scikit-Learn
Segun [18], Scikit-Learn es una de las librerıas mas utilizadas para Machine Learning en
Python. Al igual que OpenCV, es de codigo abierto y se utiliza en diferentes contextos,

12 3 Marco teorico
proporcionando una amplia gama de algoritmos supervisados y no supervisados. Algunos
de los algoritmos de Machine Learning desarrollados por esta librerıa son regresion lineal,
maquinas de vectores de soporte (SVM),arboles de decision, entre otros.

4 Propuesta metodologica
4.1. Planteamiento del problema
La propuesta del proyecto de grado es desarrollar una aplicacion de atencion al cliente,
mediante la cual el robot semi humanoide Pepper pueda interactuar con los usuarios y
brindarles un servicio agradable. El proyecto se enfoco en el desarrollo de dos modulos, el
primero consiste en deteccion facial el cual se baso en el modelo Viola-Jones. Adicionalmente,
para la integracion de Viola-Jones al proyecto se utilizaron las librerıas de OpenCV, mas
especıficamente las librerıas enfocadas en identificacion de personas.
El segundo modulo le corresponde al reconocimiento facial, para el cual se construyo una
base de datos con imagenes de multiples personas, etiquetadas con su nombre, para luego
desarrollar el modelo de Eigenfaces para reconocer a las personas que se encuentran en la
base de datos. Para esto se utilizaron las librerıas de Scikit-Learn. Adicionalmente, se busca
que Pepper interactue y hable con las personas mientras el modelo determina si el usuario
con el cual interactua el robot se encuentra o no en la base de datos, lo cual equivale a decir
que es conocido o desconocido. Ahora bien, para construir toda una herramienta de servicio
al cliente, se utilizo ROS para integrar los modulos y poder acceder a la informacion de los
sensores y las camaras del robot.
4.2. Propuesta metodologica
Para obtener un buen desempeno con los modelos construidos para la aplicacion, se propuso
la implementacion de un sistema en ROS que facilitara el envıo y recepcion de mensajes
por parte del robot. El grafo del sistema en ROS se presenta en la figura 4-1. Mediante la
explicacion de cada uno de los elementos del grafo se pretende exponer la metodologıa que
se llevo acabo para la realizacion del proyecto.
Nodo principal:
En primer lugar, como se menciono en el Capıtulo 3 , uno de los elementos mas rele-
vantes en un grafo de ROS es el nodo principal o de coordinacion. En este caso, ese
nodo corresponde al robot toolkit. El Robot Toolkit es una herramienta desarrollada
por la Alianza SinfonIA [17] que busca gestionar y facilitar la comunicacion con los
componentes del hardware del robot Pepper. Esta herramienta contiene cinco modu-
los, cada uno de ellos se encarga de agrupar los topicos, suscriptores y los servicios de

14 4 Propuesta metodologica
Figura 4-1: Grafo implementado para la aplicacion
ROS necesarios para gestionar de manera correcta cada una de las funcionalidades del
robot. Los modulos corresponden a:
• Herramienta de navegacion: incluye las funcionalidades necesarias para la aplica-
cion de navegacion autonoma
• Herramienta de vision: incluye una serie de herramientas para el uso de las dife-
rentes camaras del robot
• Herramienta de audio: incluye las funcionalidades necesarias para el uso de los
microfonos y el habla del robot.
• Herramientas de movimiento: incluye las funciones necesarias para mover el robot
• Herramienta de interaccion: contiene funcionalidades para interactuar
Como se puede ver en la figura 4-1, para este proyecto las herramientas utilizadas del
Robot Toolkit son las de vision y audio, pues mediante estas se adquiere la informacion
de las camaras, se accede al microfono y se procesa la informacion que escucha el robot.
Nodo face detection:
En este nodo se desarrollo el algoritmo para deteccion facial. Como se menciono en
el Capıtulo 3, el algoritmo implementado fue Viola-Jones. Siguiendo el procedimiento
presentado en la figura 3-3 y con ayuda de las librerıas de OpenCV se programo el
nodo de deteccion facial, el cual funciona de la siguiente manera: se activa el servicio
de las camaras de Pepper, lo cual se le solicita al Robot Toolkit y en tiempo real el
algoritmo de Viola-Jones se encarga de detectar la presencia de personas en el rango de
vision de Pepper. Una vez se encuentra una persona, se determina el bounding box que
encierra el rostro de la personas. Mediante este algoritmo tambien es posible conocer el
numero de personas presentes, en caso de que sea mas de una. El nodo face detection
publica un bool para indicar si se detecta o no alguna persona, y adicionalmente guarda
la imagen de la o las personas detectadas. En el diagrama, el topico de la imagen se
denomino /face.

4.2 Propuesta metodologica 15
Nodo face recognition:
En este nodo se desarrollo el algoritmo de Eigenfaces para el reconocimiento facial.
Para que esto fuera posible, antes se construyo una base de datos con estudiantes de la
Universidad de los Andes. Esta base de datos contiene 150 imagenes de 12 estudiantes
que componen el conjunto de datos. Las imagenes fueron tomadas explotando dos
observaciones:
• Todas las imagenes son obtenidas desde el campo visual del robot, pero bajo
diferentes condiciones de luz
• Hay variaciones en las condiciones de luz y en las expresiones faciales
Por este motivo, las 150 imagenes fueron tomadas en 3 grupos de 50 imagenes, pues
cada uno de ellos contenıa una condicion de luz diferente.
Ahora bien, continuando con la explicacion del algoritmo de reconocimiento facial, en
el Capıtulo 3 se explico el procedimiento necesario para la construccion del modelo de
Eigenfaces. Teniendo en cuenta estos pasos y con la ayuda de Scikit-Learn se desarrollo
el modelo de reconocimiento facial. En primera instancia se realizo toda la importacion
de los datos, que corresponde a las imagenes de la base de datos. Luego se construyo
el sistema de reduccion de dimensionalidad o PCA y finalmente el clasificador imple-
mentado fue un SVM, mas especıficamente One vs All.
Por otro lado, la prediccion del modelo se realiza con base en la imagen publicada en
/face, por el nodo face detection. Una vez se procesa la imagen, el nodo face recognition
publica informacion al nodo bot, indicando si la persona es conocida o desconocida
(/k u). Esto se repite para todas las imagenes enviadas por el nodo face detection.
Nodo bot :
Este nodo es encargado de toda la parte de interaccion con el usuario. Mas especıfi-
camente, utiliza las herramientas de audio e interaccion proporcionadas por el toolkit.
Segun los mensajes que recibe este nodo, por ejemplo si la persona detectada por Pep-
per es conocida o desconocida, el bot activara los servicios de speech para hablar con el
usuario, y decirle algo como “Hola humano, parece que aun no nos conocemos” en caso
de que la persona sea desconocida, o en caso de que sea conocida saludara al usuario
con su respectivo nombre.
Existen dos casos en este proyecto, que la persona que se aproxima a Pepper es co-
nocida o desconocida. En caso que el nodo face recognition le publique a bot que la
persona es conocida, este ultimo construye el mensaje mencionado previamente con el
nombre de la persona. Mientras que si la persona es desconocida suceden dos cosas:
1. Pepper le dice a la persona que no la conoce y por lo tanto le pregunta su nombre.
En el nodo speech recognition se ejecuta una herramienta conocida como ALS-
peechRecognition [19]. Esta herramienta le da al robot la capacidad de reconocer

16 4 Propuesta metodologica
palabras o frases predefinidas, por lo cual, dada una lista de nombres el robot es
capaz de escuchar y guardar el nombre que el usuario le comunica. Este nombre
es publicado en /text, y el bot se encarga de almacenar este nombre para poder
agregar a la persona a la base de datos.
2. Una vez se guarda el nombre, Pepper procede a tomarle 35 imagenes al usuario, las
cuales son almacenadas en la base de datos original con el nombre escuchado por
el robot. Una vez se toman las 35 fotos, se reentrena el modelo de reconocimiento
facial, para posteriormente reconocer al nuevo usuario. Idealmente, una vez el
modelo es reentrenado Pepper es capaz de llamar al usuario por su nombre, pues
ya no sera una persona desconocida.
Esto corresponde a la construccion del grafo de ROS y la integracion de cada una de las
herramientas hace posible la ejecucion de la aplicacion. Por otro lado, es relevante mencionar
que durante el proceso de construccion de los modelos, mas especıficamente los de deteccion
y reconocimiento facial, se presentaron inconvenientes y fallas en los modelos que impedıan
tener alta precision al momento de clasificar las imagenes. Por esto, a lo largo del proyecto se
utilizaron diferente criterios de evaluacion del rendimiento de los modelos, para ası definir si
se debıa modificar o mejorar algun parametro o algun procedimiento para llegar a un mayor
nivel de precision. En la tabla 4-1 se expone la manera en la cual se presentan algunos de
los criterios de evaluacion utilizados.
Prediccion
Negativo Positivo
RealNegativo real NR FP Verdadero negativo (NR/NR+FP)
Positivo real FN PR Exactitud (PR/FN+PR)
Sensibilidad Especificidad
(PR/PR+FN) (NR/NR+FP)
Tabla 4-1: Criterios de evaluacion del modelo
Especıficamente, se utilizo [9]:
Verdaderos positivos (PR): numero de detecciones acertadas.
Falsos positivos (FP): numero de detecciones que no contienen rostros.
Falsos negativos (FN): numero de detecciones de rostros que no son detectados.
Precision o exactitud: razon entre verdaderos positivos y total de detecciones realizadas.
Exactitud =PR
PR + FN(4-1)

4.2 Propuesta metodologica 17
Recall o sensibilidad: es la razon entre los verdaderos positivos y el total de detecciones
existentes.
RC =PR
PR + FN(4-2)
Ademas de estos criterios, para el modelo de reconocimiento facial se construyeron matrices
de confusion, para conocer aquellos casos en los cuales el modelo tendıa a fallar con mayor
frecuencia.

5 Analisis de resultados
5.1. Resultados obtenidos
Para presentar los resultados se hablara en primer lugar del modulo de deteccion facial y
luego del modulo de reconocimiento facial.
5.1.1. Deteccion facial
Para la implementacion de la herramienta de Viola-Jones, se utilizaron las librerıas de de-
teccion facial de OpenCV. OpenCV cuenta con clasificadores pre-entrenados para caras,
particularmente contiene archivos XML donde se almacenan los pesos correspondientes al
pre-entrenamiento para rostros. Ası pues, el detector facial construido se baso en el archivo
de pesos de OpenCV para deteccion de rostros.
Ası pues, para el desarrollo del codigo, en primer lugar se cargaron los clasificadores XML
necesarios para luego encontrar rostros en las imagenes percibidas por el robot. Si se encuen-
tra una cara, el codigo devuelve las posiciones de la misma y se pinta un recuadro alrededor
del rostro. Con el fin de evaluar el primer modelo desarrollado, se realizaron pruebas sobre
149 imagenes. El resultado obtenido se presenta en la tabla 5-1. Como se puede ver, la
Prediccion
Negativo (modelo) Positivo(modelo)
RealNegativo real 10 65 Verdadero negativo 0,133
Positivo real 44 30 Exactitud 0,405
Sensibilidad Especificidad
0,405 0,133
Tabla 5-1: Primeros resultados obtenidos
clasificacion presenta una exactitud del 40, 5 %, pues tiene un alto numero de falsos positivos
comparado con el numero de reales positivos. Para 65 imagenes en las cuales no habıa ros-
tros, el clasificador etiquetaba otro tipo de objetos como falsos positivos. Por esta razon, se
busco el clasificador optimo mediante la evaluacion del desempeno del mismo al variar ciertos
parametros. El cambio mas importante se realizo en uno de los parametros de la funcion del
clasificador en cascada creado por OpenCV. Esta funcion corresponde a detectMultiScale(),
la cual recibe como parametro la imagen a evaluar, un factor de escala, un factor de mınimos

5.1 Resultados obtenidos 19
vecinos y dos valores del tamano mınimo y maximo que puede llegar a tener la imagen . Los
dos parametros mas relevantes para efectos de precision del modelo son el factor de mınimos
vecinos y el factor de escala. El factor de escala hace referencia a que tanto es reducido el
tamano de la imagen en cada escala de la imagen. En otras palabras, el modelo tiene un
tamano fijo definido para las imagenes en el entrenamiento, el cual corresponde al tamano
de las caras detectadas en cada imagen. Por lo cual, al cambiar el tamano de la imagen de
entrada, reduce su tamano para poder facilitar su deteccion por el algoritmo. Por otro lado,
el valor correspondiente al mınimo numero de vecinos, indica cuantos vecinos debe tener
cada rectangulo o sub ventana, que sean candidatos a clasificar como verdaderos positivos.
Entre mas alto es este valor, el clasificador se vuelve mas exigente al momento de clasificar
un rostro, pues debe encontrar el mınimo numero de vecinos que tambien sean candidatos a
clasificar como rostro, para tener una buena clasificacion.
Para los resultados de la tabla 5-1 no se tuvo en cuenta ninguno de los dos parametros des-
critos para la funcion detectMultiScale(), pero al identificar la importancia de estos valores
se encontro experimentalmente que los mejores valores, para este caso son:
Factor de escala (scaleFactor) = 1.3
Mınimo numero de vecinos (minNeighbors) = 5
Modificando estos parametros, se obtuvo el resultado presentado en la tabla 5-2. Para un
Prediccion
Negativo (modelo) Positivo(modelo)
RealNegativo real 10 2 Verdadero negativo 0,83
Positivo real 1 95 Exactitud 0,99
Sensibilidad Especificidad
0,99 0,83
Tabla 5-2: Resultados optimos
total de 108 muestras, el modelo tuvo una exactitud del 99 %, presentando unicamente 2
casos en los cuales se clasifico un objeto negativo como positivo, es decir falsos positivos.
Comparando los dos resultados, se puede decir que el desempeno del modelo mejoro signi-
ficativamente gracias a la inclusion de los dos parametros de la funcion de OpenCV. Con
esta modificacion, el modelo es capaz de detectar multiples personas en una misma imagen,
como se puede ver en la figura 5-1.

20 5 Analisis de resultados
Figura 5-1: Multiples personas detectadas Figura 5-2: Deteccion de rostros para dos
personas
En las figuras 5-1 y 5-2 se puede ver que dentro de las posibilidades del clasificador de
OpenCV, se puede identificar caracterısticas como el perfil, los ojos y el contorno del rostro
de las personas. Las caracterısticas mas relevantes son el contorno de la cara y el perfil, pues
al tener en consideracion estas dos caracterısticas se puede garantizar que el modelo seguira
identificando a las personas aun cuando su rostro es rotado o cuando se encuentra de lado a
la camara del robot. Por esto, se decidio trabajar con estas dos caracterısticas al momento
de detectar personas.
5.1.2. Reconocimiento facial
Ahora bien, el segundo modulo de la aplicacion consiste en el desarrollo del algoritmo de
Eigenfaces explicado en el Capıtulo 3. A continuacion se presenta la explicacion de la imple-
mentacion practica del clasificador [21].
1. Primero se realizo la division de la base de datos en entrenamiento y prueba, con
un porcentaje del 70 % y 30 % respectivamente.
2. Luego, se procedio a preparar el conjunto de entrenamiento. Cada imagen se
trata como un vector, concatenando las filas de pıxeles en la imagen original, resul-
tando en una sola columna por cada imagen. Ası, todas las imagenes del conjunto de
entrenamiento se almacenan en una sola matriz T.
3. Para el pre procesamiento, se busca estandarizar las variables. En primer lugar se
calcula la imagen media y luego se alinean las imagenes originales, mediante la resta
de la media. Es decir:
φj = xj − µ (5-1)
Donde φj representa la imagen j alineada. A la imagen original xj se le resta la media
µ. En la figura 5-3 se representan algunos ejemplos de imagenes alineadas.

5.1 Resultados obtenidos 21
Figura 5-3: Preprocesamiento: alineamiento de las imagenes
Con base en estas imagenes se procede al siguiente paso en el reconocimiento.
4. Despues de esto se lleva acabo el proceso de reduccion de dimensionalidad, PCA.
Esto con el fin de obtener un numero mas reducido de dimensiones sobre el cual se
presentara el conjunto de vectores de imagenes. Existen dos formas de encontrar el
numero optimo de dimensiones al cual se busca reducir la base de datos. En primer
lugar se puede determinar la matriz de covarianza, encontrar sus vectores propios y
luego, ordenando de mayor a menor los valores y vectores propios, se selecciona el
mayor vector propio de la matriz de covarianza. Sobre el vector propio mas grande
se proyectan los datos para reducir sus dimensiones. Al seleccionar el vector propio
mas grande, se retienen los aspectos mas importantes de las imagenes lo cual facilita
la clasificacion de cada una de ellas. La segunda opcion, que resulta mas sencilla,
es encontrar el numero de componentes a considerar de cada imagen que garantice
maxima varianza entre las imagenes. Gracias a las herramientas de Scikit-Learn, esto
se puede hacer graficamente.
Figura 5-4: Varianza vs numero de componentes
En la figura 5-4 se presenta el comportamiento de la varianza de la base de datos
respecto al numero de componentes a considerar. Como se puede ver, al alcanzar 200
componentes la varianza se estabiliza en 1. Esto es lo que se busca con la reduccion
de dimensionalidad, pues al seleccionar el numero de caracterısticas que permita tener

22 5 Analisis de resultados
maxima varianza entre los datos, quiere decir que hay mayor dispersion entre los datos
y esto representa una ventaja al momento de clasificar las imagenes. Adicionalmente,
se hace un blanqueamiento de datos lo cual garantiza que los datos resultantes tengan
varianza unitaria.
5. Al hacer la reduccion de dimensionalidad, se obtienen las eigenfaces, que corresponden
a la reduccion de dimension de la imagen original, a partir de la proyeccion con el vector
propio mas grande o eigenvector. En la figura 5-5 se presentan algunos ejemplos de
las eigenfaces obtenidas.
Figura 5-5: Eigenfaces
Como se puede ver en la figura 5-5 se resaltan las caracterısticas mas importantes
de cada rostro, por ejemplo los ojos, la boca y las cejas.
6. Luego de esto, se pasa a entrenar el clasificador. Para esto se utilizo el SVM de Scikit-
Learn. El clasificador se construyo con las siguientes caracterısticas:
Parametro de penalizacion o regularizacion C : indica que tanto se quiere evitar
error en la clasificacion. Entre mas grande es este valor, menor es el error en la
clasificacion. Por este motivo, se selecciono un C=1000.
Gamma γ: determina las fronteras de decision. Con un menor gamma existe ma-
yor distancia entre las observaciones que separan los espacios del SVM. Por esto,
se selecciono un gamma pequeno, para evitar ignorar aquellos puntos que se en-
cuentren lejos del lımite de decision. Se definio γ = 0,01.
Adicionalmente, debido a la gran cantidad de clases se definio un kernel RBF, o
Radial Basis Function. Este ofrece mayor flexibilidad con las fronteras de decision,
lo cual se requiere para poder seleccionar, dentro de las 12 clases de la base de
datos, cual de ellas es la correcta segun la imagen de prueba.
7. Ahora bien, la primera estrategia o modelo construido corresponde a un SVM con
base a un kernel RBF, por lo cual unicamente hay un clasificador para las 12 clases
existentes. En la figura 5-6 se presentan los resultados obtenidos para este caso.
Como se puede ver, las precisiones oscilan entre 50 % y 20 %, lo cual no es muy bueno.
Adicionalmente, para el caso del usuario desconocido presenta una mayor cantidad
de desaciertos, por lo cual la aplicacion no podra tener un buen desempeno con este
modelo.

5.1 Resultados obtenidos 23
Figura 5-6: SVM con kernel RBF
Analizando estos resultados, se opto por construir un SVM One vs All. Esta estrategia
consiste en ajustar un clasificador por clase. Para cada clasificador, la clase se ajusta a
las otras clases restantes. Este metodo resulta eficiente computacionalmente y ademas
solo se requiere n clasificadores, correspondientes a las n clases existentes. Dado que
cada clase esta representada por un unico clasificador, obtener conocimiento sobre
una clase corresponde a inspeccionar su clasificador correspondiente [22]. Esto permite
alcanzar una precision mucho mayor al momento de etiquetar las imagenes. El resultado
se presenta en la figura 5-7.
Figura 5-7: SVM One vs All
Como se puede ver en la figura, hay una mejora significativa en la precision del modelo.
Con la estructura de One vs All se alcanzan precisiones por clase cerca al 60 %, 70 %
y 80 %.
Teniendo en cuenta los resultados obtenidos, se puede decir que la estructura optima del
SVM, manteniendo los parametros de C, γ y el kernel mencionado, es utilizar una estructura
de One vs All. Esto permite tener menor error en el momento de clasificar a los usuarios
percibidos por el robot.

24 5 Analisis de resultados
5.1.3. Integracion de los dos modulos
Recopilando los modelos disenados para los dos modulos de la aplicacion y seleccionando las
estructuras optimas, se obtiene una aplicacion de atencion al cliente enfocada en la deteccion
y el reconocimiento facial. El funcionamiento de los dos modulos en conjunto es presentado en
la figura 5-8 Teniendo en cuenta esta figura y el diagrama de ROS presentado en la figura
Figura 5-8: Proceso de reconocimiento facial
4-1 sobre el cual se desarrolla toda la aplicacion, se puede ver que en primera instancia se
desarrolla la clasificacion con Viola-Jones para detectar una persona, esto se logra mediante
los servicios de la camara que se solicitan al Robot Toolkit. Seguido de esto, se guarda la
imagen de la persona detectada y luego es pre procesada por PCA para luego ser clasificada
con el SVM implementado. Finalmente, con base a la base de datos construida se etiqueta
al usuario que se encuentra frente al robot.

6 Conclusiones
En primer lugar, es relevante resaltar que la optimizacion de los modelos y clasificadores
desarrollados para cada uno de los modulos hizo posible que la integracion de estos mismos
fuera exitosa. Se aseguro que la deteccion de las personas tuviera el mejor desempeno sin
importar las variaciones en la orientacion del rostro o en el movimiento de las personas,
mientras que para el modulo de reconocimiento seleccionando el clasificador One vs All se
evidencio una mejora significativa en el desempeno del mismo. Se trabajo sobre cada parte
y clasificador de la aplicacion para poder tener el mejor desempeno en el producto final. De
esta manera, el robot es capaz de brindar una atencion personalizada y de alta calidad al
usuario con el cual interactua. Desafortunadamente, el sistema de reconocimiento facial pre-
senta fallas y errores cuando hay grandes variaciones de luz y con cambios en la orientacion
del rostro de las personas. Esto se debe al tipo de metodo de clasificacion seleccionado, si
bien la prioridad era alcanzar una aplicacion robusta y confiable, una de las restricciones mas
grandes del proyecto es el procesador del robot sobre el cual se debe ejecutar el aplicativo,
lo cual impide tener la maxima exactitud en la clasificacion. Debido a esta restriccion, la
seleccion de Eigenfaces se realizo debido al bajo costo computacional, pero por esto mismo
el modelo no logra ser lo suficientemente robusto como para reconocer a los usuarios ante
variaciones o perturbaciones del entorno.
Por otro lado, existen diferentes cambios que se pueden realizar sobre el sistema construido
para generar una mejora significativa en el desempeno de la aplicacion de atencion al cliente.
En primer lugar, si se pudiera contar con un procesador externo al robot con mayor capa-
cidad de almacenamiento y procesamiento, se podrıa implementar metodos de clasificacion
mucho mas robustos. La idea serıa mejorar la capacidad de computo de Pepper anadiendole
una unidad de procesamiendo adicional. Es decir, poder extender la capacidad de procesa-
miento del robot a traves una GPU. Por ejemplo, los estudiantes de la universidad de Chile,
para el mundial de robotica del 2019 [23] crearon un sistema embebido para el robot Pepper,
a traves del cual aumentan su capacidad de procesamiento del procesador actual. Con este
sistema, se podrıa implementar una red neuronal convolucional, con la cual se garantiza que
con un numero mas reducido de imagenes en la base de datos y sin necesidad de entrenar el
modelo con diferentes condiciones de luz, el robot sera capaz de clasificar con mayor precision
al usuario con el cual interactua incluso cuando el rostro tiene variaciones en su orientacion.
Adicionalmente, serıa ideal trabajar con tecnologıa mas avanzada por ejemplo con camaras
3D para capturar datos sobre los rostros de las personas. Con estas camaras no existe sensi-

26 6 Conclusiones
bilidad a los cambios de luz ni a diferentes expresiones faciales, pues se concentra en detalles
del rostro que una camara 2D no es capaz de detectar.
Finalmente, otro de los problemas que presenta la aplicacion de atencion al cliente es el tiem-
po que tarda el robot en procesar la informacion y el tiempo de interaccion entre el robot y
el usuario. Por ejemplo, cuando el usuario es desconocido Pepper debe tomar aproximada-
mente 35 imagenes para poder garantizar que con estas, al reentrenar el modelo el robot sera
capaz de identificar al nuevo usuario sin problema. Este proceso toma aproximadamente 2 o
3 minutos, lo cual no representa una interaccion natural entre el robot y el humano. En este
sentido, a futuro se busca trabajar en el lenguaje natural del robot, logrando que procesos
como estos tomen un tiempo razonable, algo similar al tiempo que le tomarıa a una persona
recordar a otra que acaba de conocer.

Bibliografıa
[1] The next frontier in robotics: social, collaborative robots — Andrea Thomaz — TEDx-
Peachtree
[2] A.Castro Gonzalez, J.C.Castillo , F.A.Martın, M.A. Salichs. “Evolucion de la robotica
social y nuevas tendencias”
[3] C.Torras “Robots sociales. Un punto de encuentro entre ciencia y ficcion”
[4] P.Nunez, P.Bachiller, P.Bustos, I.Garcıa Varea “Robots sociales para mejorar la calidad
de vida de las personas”
[5] Alisys “Los robots mas populares del mercado” Obtenido de:
https://www.alisys.net/es/blog/los-robots-sociales-mas-populares-del-mercado
[6] SOLTEQ. “Pepper Robot” Obtenido de:https://www.solteq.com/en/solutions/pepper-
robot?
[7] Pepper. “Pepper Robot Discover its technical specifications” Obtenido de:
https://www.generationrobots.com/pepper/technical-specifications.html?lang=e
[8] P. Viola and M. Jones, “Robust real-time face detection”. In Proc. Of IEEE Workshop
on Statistical and Computational Thories of Vision, 2001.
[9] E.Parra Barrero “Aceleracion del algoritmo de Viola-Jones mediante rejillas de procesa-
miento masivamente paralelo en el plano focal”
[10] J.A.Cortes, J.A.Chavez Osorio. “APLICACION DE LA WAVELET HAAR PARA RE-
CONSTRUIR LA FUNCION f(t)=t SOBRE EL INTERVALO [-3,3] EN DIFERENTES
GRADOS DE RESOLUCION ” 2008.
[11] P.Viorica Andreea “Aplicacion para deteccion y reconocimiento facial en interiores”
Sevila, 2016.
[12] F.G.Caballero Julian, M.Vidal Reyes, A.L.Sanchez, C.A.J.Rıos. “Reconocimiento facial
por el metodo de eigenfaces” Mexico, 2017
[13] Medium. “Episodio 1:Procesamiento de lenguaje natural”, 2018. Obtenido de:
https://planetachatbot.com/1-procesamiento-de-lenguaje-natural-1443ff471ed0

28 Bibliografıa
[14] Robologs, “OpenCV”, 2019. Obtenido de: https://robologs.net/tutoriales/tutoriales-
opencv/
[15] D.Ortego Delgado “¿Que es ROS?” Obtenido de:https://openwebinars.net/blog/que-
es-ros/
[16] P.Lepej “ROS tutorial”, 2013. Obtenido de: http://lsi.vc.ehu.es/pablogn/investig/ROS/lepejROSTutorialSS2014.pdf
[17] Alianza SinfonIA https://gitlab.com/sinfonia-sspl-robocup-team/sinfonia-robot-
toolkit/robottoolkit/wikis/home
[18] L.GOnzalez. “Introduccion a la librerıa Scikit-Learn de Python”, 2018.Obtenido de:
http://ligdigonzalez.com/libreria-scikit-learn-de-python/
[19] SoftBank Robotics Documentation “What’s new in NAOqi 2,5?” Obtenido
de:http://doc.aldebaran.com/2-5/naoqi/audio/alspeechrecognition.html
[20] OpenCV. “Cascade Classification”, 2014. Obtenido de:
https://docs.opencv.org/2.4/modules/objdetect/doc/cascadeclassification.html
[21] S.Ansari “Eigenfaces Vs Fisherfaces” Indian Institute of Technology Kharagpur, 2016
[22] Scikit-Learn “Multiclass and mulitlabel algorithms” Obtenido de:https://scikit-
learn.org/stable/modules/multiclass.html
[23] UChile Robotics Team. “Universidad de Chile’s RoboCup”. Obtenido
de:http://www.robocup.cl/