sistema para el aprendizaje del lenguaje de señas

64
Universidad de La Salle Universidad de La Salle Ciencia Unisalle Ciencia Unisalle Ingeniería en Automatización Facultad de Ingeniería 2018 Sistema para el aprendizaje del lenguaje de señas colombiano Sistema para el aprendizaje del lenguaje de señas colombiano usando visión por computador usando visión por computador Iván Camilo Triviño López Universidad de La Salle, Bogotá Follow this and additional works at: https://ciencia.lasalle.edu.co/ing_automatizacion Part of the Computer Engineering Commons, and the Engineering Education Commons Citación recomendada Citación recomendada Triviño López, I. C. (2018). Sistema para el aprendizaje del lenguaje de señas colombiano usando visión por computador. Retrieved from https://ciencia.lasalle.edu.co/ing_automatizacion/159 This Trabajo de grado - Pregrado is brought to you for free and open access by the Facultad de Ingeniería at Ciencia Unisalle. It has been accepted for inclusion in Ingeniería en Automatización by an authorized administrator of Ciencia Unisalle. For more information, please contact [email protected].

Upload: others

Post on 07-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistema para el aprendizaje del lenguaje de señas

Universidad de La Salle Universidad de La Salle

Ciencia Unisalle Ciencia Unisalle

Ingeniería en Automatización Facultad de Ingeniería

2018

Sistema para el aprendizaje del lenguaje de señas colombiano Sistema para el aprendizaje del lenguaje de señas colombiano

usando visión por computador usando visión por computador

Iván Camilo Triviño López Universidad de La Salle, Bogotá

Follow this and additional works at: https://ciencia.lasalle.edu.co/ing_automatizacion

Part of the Computer Engineering Commons, and the Engineering Education Commons

Citación recomendada Citación recomendada Triviño López, I. C. (2018). Sistema para el aprendizaje del lenguaje de señas colombiano usando visión por computador. Retrieved from https://ciencia.lasalle.edu.co/ing_automatizacion/159

This Trabajo de grado - Pregrado is brought to you for free and open access by the Facultad de Ingeniería at Ciencia Unisalle. It has been accepted for inclusion in Ingeniería en Automatización by an authorized administrator of Ciencia Unisalle. For more information, please contact [email protected].

Page 2: Sistema para el aprendizaje del lenguaje de señas

SISTEMA PARA EL APRENDIZAJE DEL LENGUAJE DE SEÑAS

COLOMBIANO USANDO VISIÓN POR COMPUTADOR

IVÁN CAMILO TRIVIÑO LÓPEZ

UNIVERSIDAD DE LA SALLE

FACULTAD DE INGENIERÍA

INGENIERÍA EN AUTOMATIZACIÓN

BOGOTÁ, D.C.

2018

Page 3: Sistema para el aprendizaje del lenguaje de señas

SISTEMA PARA EL APRENDIZAJE DEL LENGUAJE DE SEÑAS

COLOMBIANO USANDO VISIÓN POR COMPUTADOR

IVÁN CAMILO TRIVIÑO LÓPEZ

TRABAJO DE GRADO PARA OPTAR POR EL TITULO DE INGENIERO EN

AUTOMATIZACIÓN

Director

CESAR HERNÁN RODRÍGUEZ GARAVITO, PhD.

UNIVERSIDAD DE LA SALLE

FACULTAD DE INGENIERÍA

INGENIERÍA EN AUTOMATIZACIÓN

BOGOTÁ, D.C.

2018

Page 4: Sistema para el aprendizaje del lenguaje de señas

Nota de aceptación

Firma del presidente del jurado

Firma del jurado

Firma del jurado

Bogotá D.C.

Page 5: Sistema para el aprendizaje del lenguaje de señas

DEDICATORIA Y AGRADECIMIENTOS

Dedico este trabajo a mis padres Martha López y Camilo Triviño que con su esfuerzo

hicieron todo lo posible para permitirme comenzar y culminar este proceso y ayudarme a

lograr mis objetivos. Agradezco su apoyo, sus consejos y su preocupación por hacerme

crecer como persona y como profesional día a día.

Agradezco a mi hermano Edwin Triviño, a mi abuela Flor López y a mi novia Vanessa

Aristizabal, quienes contribuyeron durante este proceso formativo con sus consejos, su

apoyo incondicional y su compañía.

Agradezco a mi director de trabajo de grado Cesar Rodríguez por todas sus enseñanzas

a lo largo del desarrollo de este trabajo de grado; todo el conocimiento que me compartió

sin duda me hizo crecer como persona y como profesional.

Por último, comparto este logro con las personas anteriormente mencionadas y con to-

dos los profesores, compañeros y amigos que estuvieron presentes a lo largo de este

proceso.

Page 6: Sistema para el aprendizaje del lenguaje de señas

TABLA DE CONTENIDOS

pág.

INTRODUCCIÓN 1

1. VISIÓN POR COMPUTADOR 10

1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.2. Representación de una imagen . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.2.1. Espacio de color RGB . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.2.2. Espacio de color YCrCb . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3. Descriptores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.3.1. Local Binary Patterns (LBP) . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.2. Histograma de Orientación de Gradientes (HOG) . . . . . . . . . . . 17

1.3.3. Firma del contorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.3.4. Trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2. DETECCIÓN Y SEGUIMIENTO 22

2.1. Adquisición de la imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2. Pre-procesamiento y detección de la mano . . . . . . . . . . . . . . . . . . 24

2.3. Seguimiento o tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3. RESULTADOS DE CLASIFICACIÓN 30

3.1. Métricas empleadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.1.1. Exactitud o accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

III

Page 7: Sistema para el aprendizaje del lenguaje de señas

3.1.2. Precisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.1.3. Sensibilidad o Recall . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.1.4. F1-Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2. Clasificación de señas estáticas . . . . . . . . . . . . . . . . . . . . . . . . 32

3.3. Clasificación de señas dinámicas . . . . . . . . . . . . . . . . . . . . . . . . 36

4. DESARROLLO DE LA APLICACIÓN 39

4.1. Resultados de encuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5. CONCLUSIONES 44

5.1. TRABAJO FUTURO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

REFERENCIAS 47

A. Matrices de confusión de señas estáticas 50

B. Matrices de confusión de señas dinámicas 52

C. Formato de encuesta 53

IV

Page 8: Sistema para el aprendizaje del lenguaje de señas

LISTA DE FIGURAS

pág.

1. Ejemplo de interfaz Humano-Maquina aplicado al proyecto Linux . . . . . . 1

2. Diagrama de funcionamiento del sistema diseñado. . . . . . . . . . . . . . 4

3. Representación de una imagen mediante un histograma . . . . . . . . . . . 11

4. Representación matricial del espacio RGB . . . . . . . . . . . . . . . . . . 12

5. Imágenes tomadas para ejemplo . . . . . . . . . . . . . . . . . . . . . . . . 14

6. Ejemplo de cálculo de descriptor LBP . . . . . . . . . . . . . . . . . . . . . 15

7. Patrones LBP uniformes en una imagen . . . . . . . . . . . . . . . . . . . . 16

8. Ejemplo de características LBP . . . . . . . . . . . . . . . . . . . . . . . . . 16

9. Ejemplo de características HOG . . . . . . . . . . . . . . . . . . . . . . . . 18

10. Ejemplo de características de Firma Contorno . . . . . . . . . . . . . . . . 19

11. Ejemplo de descriptor de trayectoria . . . . . . . . . . . . . . . . . . . . . . 21

12. Superposición de imágenes del sensor de profundidad y el sensor RGB

sin calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

13. Diagrama de descripción de las etapas de pre-procesamiento y detección

de la mano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

14. Posiciones de la mano detectadas por el clasificador Haar Cascade pre-

entrenado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

15. Validación de la mano detectada por el clasificador Haar Cascade . . . . . 26

16. Segmentación por color de piel . . . . . . . . . . . . . . . . . . . . . . . . . 27

17. Ilustración de los vecinos que son seleccionados por cada pixel. . . . . . . 28

V

Page 9: Sistema para el aprendizaje del lenguaje de señas

18. Representación genérica de la matriz de confusión. . . . . . . . . . . . . . 30

19. Tablas de precisión de señas estáticas. . . . . . . . . . . . . . . . . . . . . 33

20. Gráficas de precisión de señas estáticas. . . . . . . . . . . . . . . . . . . . 34

21. Exactitud de clasificación de señas estáticas. . . . . . . . . . . . . . . . . . 34

22. Métricas F1-Score promedio para cada descriptor. . . . . . . . . . . . . . . 35

23. Tabla de precisión de señas dinámicas . . . . . . . . . . . . . . . . . . . . . 36

24. Tabla de precisión de señas dinámicas . . . . . . . . . . . . . . . . . . . . . 37

25. Tabla de resultados de la métrica F1-Score de señas dinámicas . . . . . . . 37

26. Gráfica de resultados promedio de la métrica F1-Score para señas dinámicas 38

27. Tabla de resultados de exactitud para señas dinámicas . . . . . . . . . . . 38

28. Vistas de la aplicación desarrollada . . . . . . . . . . . . . . . . . . . . . . 39

29. Distribución de la vista de práctica . . . . . . . . . . . . . . . . . . . . . . . 40

30. Tiempo promedio de ejecución de cada componente de la aplicación . . . 41

31. Resultados de las encuestas . . . . . . . . . . . . . . . . . . . . . . . . . . 42

32. Matrices de confusión para el clasificador de Naive bayes. . . . . . . . . . . 50

33. Matrices de confusión para el clasificador de SVM. . . . . . . . . . . . . . . 50

34. Matrices de confusión para el clasificador de ANN. . . . . . . . . . . . . . . 51

35. Matrices de confusión para el clasificador de KNN. . . . . . . . . . . . . . . 51

36. Matriz de confusión para el clasificador de Naive bayes. . . . . . . . . . . . 52

37. Matriz de confusión para el clasificador de KNN. . . . . . . . . . . . . . . . 52

38. Matriz de confusión para el clasificador de Random Forest. . . . . . . . . . 52

39. Matriz de confusión para el clasificador de SVM. . . . . . . . . . . . . . . . 52

VI

Page 10: Sistema para el aprendizaje del lenguaje de señas

LISTA DE ALGORITMOS

pág.

1. Proceso de remuestreo sobre la trayectoria. . . . . . . . . . . . . . . . . . . 21

2. Pseudocódigo del algoritmo Region growing. . . . . . . . . . . . . . . . . . . 29

VII

Page 11: Sistema para el aprendizaje del lenguaje de señas

RESUMEN

El reconocimiento de gestos con las manos es un área de investigación que ha capturado

la atención de muchos investigadores para el desarrollo de aplicaciones de interacción

Humano-Máquina (HCI, por sus siglas en inglés), entre las que se pueden encontrar

realidad virtual, realidad aumentada, juegos, aplicaciones educativas, entre otras.

En el presente proyecto de investigación se desarrolló un sistema para el apoyo de la

enseñanza del lenguaje de señas a través de una aplicación HCI que emplea visión

por computador; el sistema propuesto le indica al usuario a través de una imagen o

un videoclip, qué seña debe ejecutar y de qué manera debe hacerlo, posteriormente

le permite ejecutar la seña mientras la captura con un dispositivo Microsoft Kinect para

luego, haciendo uso de procesamiento de imágenes digitales y algoritmos de inteligencia

artificial, determinar si el usuario ha ejecutado la seña de manera correcta.

La aplicación desarrollada es capaz de clasificar un conjunto de siete señas estáticas,

con un total de 3.600 muestras y cuatro señas dinámicas, con un total de 1.800 muestras;

para el análisis de las señas estáticas se tuvieron en cuenta tres descriptores: HOG,

U-LBP y Firma del contorno, junto con cuatro clasificadores: Naive Bayes, SVM, ANN

y KNN, obteniendo que el mejor descriptor es HOG, con una precisión promedio de

clasificación de 0, 9795 con el clasificador SVM y asimismo que el mejor clasificador es

SVM con una exactitud de clasificación de 0, 9800 y un resultado de F1-Score de 0, 9798

junto con el descriptor HOG. Por otro lado, para las señas dinámicas se tuvo en cuenta un

descriptor basado en la trayectoria junto con cuatro clasificadores: Random Forest, SVM,

KNN y Naive Bayes, obteniendo que el mejor clasificador es el SVM con una exactitud

de clasificación de 0, 9400, una precisión promedio de 0, 9400 y un resultado de F1-Score

de 0, 9390.

El desarrollo de la aplicación así como las pruebas, se realizaron en un computador con

procesador Intel Core i5 de 2,5 GHz con TurboBoost 3,1GHz y 8GB de memoria RAM.

Palabras clave: visión por computador, seguimiento de la mano, Microsoft Kinect, ma-

chine learning, Interfaz Humano-Maquina

Page 12: Sistema para el aprendizaje del lenguaje de señas

INTRODUCCIÓN

El reconocimiento de gestos con las manos es un área de investigación que ha cap-

turado la atención de muchos investigadores independientes y empresas a lo largo del

mundo, para el desarrollo de aplicaciones de interacción Humano-Máquina (HCI, por sus

siglas en inglés), entre estas podemos encontrar aplicaciones de realidad virtual, reali-

dad aumentada, juegos, aplicaciones educativas, entre otras. En la Figura 1 se observa

un ejemplo de cómo funciona una aplicación HCI; por un lado se tiene al usuario, quien a

través de sus sentidos interactúa con el hardware que se encarga de traducir las peticio-

nes del usuario a lenguaje de máquina, el cual es interpretado por una pieza de software

que retorna una respuesta la cual se presenta al usuario a través del hardware nueva-

mente.

Figura 1: Ejemplo de interfaz Humano-Maquina aplicado al proyecto Linux.

Fuente: Otto Traian (2014)

1

Page 13: Sistema para el aprendizaje del lenguaje de señas

Lenguaje de señas

El lenguaje por el cual se expresan las personas hipoacúsicas es llamado lenguaje de

señas, el cual es el objeto de estudio de este trabajo; los elementos del lenguaje de señas

son la configuración, la posición y la orientación de las manos en relación con el cuerpo

y con el individuo, de los cuales también se tiene en cuenta el espacio, la dirección y la

velocidad, entre otros elementos, para transmitir el significado del mensaje (Insor, 2018).

El lenguaje de señas en el mundo occidental tiene sus inicios formales a partir del año

1755, cuando el abad francés Charles Michel de l’Épée funda en París la primera escuela

pública para sordos, donde desarrolla un alfabeto y crea signos que posteriormente se

adaptaron a una estructura gramatical parecida al idioma francés; ese primer lenguaje

de señas posteriormente dio inicios a otros lenguajes de señas como el Lenguaje de

Señas Americano (ASL, por sus siglas en inglés), Lenguaje de señas Mexicano (LSM),

el Lenguaje de señas Brasileño (LIBRAS, por sus siglas en brasileño), entre otros (Cruz,

2008). A partir de la extensión del lenguaje de señas alrededor del mundo, cada país

lo adoptó de una manera particular teniendo en cuenta su cultura y su idioma natal

(aunque sin embargo es importante aclarar que el lenguaje de señas en un país no

es dependiente de su idioma natal y no necesariamente guarda estrecha relación con el

mismo); el lenguaje de señas adoptado para la realización de este trabajo es el Lenguaje

de Señas Colombiano (LSC).

La comunidad de personas hipoacúsicas está conformada por individuos pertenecientes

a diferentes condiciones personales y sociales, haciéndola heterogénea; sin embargo,

la imposibilidad de comunicación verbal genera una limitante en la integración social y

participación en actividades laborales, académicas, entre otras; asimismo, quienes no

padecen de dicha patología no son formados para establecer comunicación mediante el

Lenguaje de Señas (Tovar, 2015). Dado el problema anterior, se decidió realizar el pre-

sente proyecto de investigación con el fin de aportar al desarrollo de una aplicación HCI

que despierte el interés de las personas para aprender lenguaje de señas, enseñándoles

algunos elementos básicos del mismo. Todo esto se realizó a través de una aplicación

de visión por computador que además de enseñarle al usuario cómo se ve una seña, lo

2

Page 14: Sistema para el aprendizaje del lenguaje de señas

incentiva a realizarla, validando si la está ejecutando de manera correcta.

Para abordar el problema anterior, se dividió el sistema en tres módulos principales: un

primer módulo de captura y pre-procesamiento de imágenes, en este módulo se captura

la imagen por medio del sensor y se le aplica una serie de filtros para disminuir el ruido

en la escena, el cual puede surgir como consecuencia de las características físicas del

sensor o de las condiciones medioambientales y se compone de una variación de color

aleatoria en la imagen; un segundo módulo para procesar las imágenes y extraer los

elementos de interés que van a ser posteriormente analizados, a esto se le denomina

segmentación y extracción de características (también conocidas como descriptores); fi-

nalmente un último módulo que se encarga de pasar las características por algoritmos

de aprendizaje automático (machine learning) y determinar si la respuesta obtenida con-

cuerda con la seña que se le está solicitando al usuario.

En la Figura 2 se muestra un diagrama que describe el funcionamiento general de la

aplicación diseñada; inicialmente se capturan las imágenes con el sensor Microsoft Ki-

nect (tanto RGB como de profundidad), posteriormente se extrae el fondo y se busca una

mano abierta en la escena, cuando la mano es encontrada se clasifica la seña ingresada

usando el modelo de machine learning previamente entrenado y por último se le entrega

al usuario el resultado de clasificación cuando este es exitoso.

Para el desarrollo e implementación de este proyecto se utilizó un computador Macbook

Pro con procesador Intel Core i5 dual core de 2,5 GHz, 8 GB de memoria RAM y un

sensor óptico Microsoft Kinect V1. En cuanto al software se empleó el driver que ofrece

OpenKinect mediante su librería libfreenect para establecer conexión con el sensor Ki-

nect y capturar datos, la librería OpenCV (Bradski, 2000) para realizar procesamiento de

imágenes digitales, las librerías scikit-learn (Pedregosa et al., 2011) y TensorFlow (Aba-

di et al., 2015) para estandarización de descriptores y algoritmos de machine learning,

NumPy (Oliphant, 2006) para computación científica y manejo de matrices, Cython (Beh-

nel et al., 2011) para optimización de módulos de python y PyQt para realizar la interfaz

gráfica.

El conjunto de datos utilizado se creó desde ceros, ya que era necesario extraer los des-

3

Page 15: Sistema para el aprendizaje del lenguaje de señas

Figura 2: Diagrama de funcionamiento del sistema diseñado.

Fuente: El autor. Imágenes tomadas de Freepik.

criptores y entrenar los algoritmos de machine learning con las imágenes y trayectorias

obtenidas luego del procesamiento de las imágenes capturadas para prevenir que se

propagara un error de clasificación; asimismo, se recopilaron imágenes propias ya que

no existen bancos de datos libres para el Lenguaje de Señas Colombiano. Para la clasifi-

cación de las señas estáticas se capturaron en total 3.600 imágenes pertenecientes a 9

diferentes categorías: letra A, letra B, letra E, letra L, letra V, letra W, letra Y, Fondo y Pal-

ma abierta. Para la clasificación de las señas dinámicas de capturaron 800 trayectorias

pertenecientes a 4 diferentes categorías: Decidir, Diferente, Hacer y Jugar.

El desarrollo de la aplicación se realizó para el Lenguaje de Señas Colombiano, sin

embargo los métodos de pre-procesamiento, seguimiento y segmentación de la mano,

extracción de descriptores y entrenamiento de clasificadores son aplicables a cualquier

lenguaje de señas, siempre y cuando se cuente con un conjunto de datos de las señas

de interés.

4

Page 16: Sistema para el aprendizaje del lenguaje de señas

Trabajos relacionados

Particularmente, en el análisis de gestos para el reconocimiento del lenguaje de señas

se han realizado varias investigaciones y desarrollos tanto a nivel nacional como a nivel

internacional. Es importante aclarar que el lenguaje de señas no es universal; es decir,

cada país e incluso cada ciudad/region puede adoptar señas diferentes, lo que hace que

centrarse en el desarrollo de un único software no sea suficiente para abarcar la gran

magnitud de señas y es ahí donde radica la importancia del estudio particular por cada

país en el área. A continuación se exponen algunos trabajos relevantes relacionados a

este proyecto de investigación.

RIVERA et al. (2013) en su trabajo “IDENTIFICACIÓN DE LA PUNTA DE LOS DEDOS

DE LA MANO EN UN PLANO 2D BASADO EN KINECT” presenta un sistema de reco-

nocimiento de la ubicación del centro de la palma de la mano y a través de la técnica de

Alineamiento Temporal Dinámico (DTW por sus siglas en inglés) encuentra la ubicación

de los dedos con ayuda del sensor de profundidad de la Kinect. Debido a variables como

la luminosidad y distorsión de contornos, la exactitud del reconocimiento de la mano se

ve afectada, por lo que a través de un modelo se procede a encontrar la ubicación más

acertada de los dedos de la mano, pero no se tiene distinción de cuál de los dedos de los

extremos corresponde al meñique y cuál corresponde al pulgar. Por otro lado, Rodríguez

et al. (2013) en su trabajo “Software que captura, por medio de Kinect, los datos de las

señas manuales y los traduce a texto” captura los puntos de la escena con el sensor de

profundidad de la Kinect y mediante procedimientos de filtrado de la imagen elimina los

datos no deseados, reconstruyendo finalmente una en 2D que contiene los datos desea-

dos. Para el análisis de la imagen resultante captura el gesto realizado y lo compara con

la base de datos para encontrar similitudes con algún dato y presentar los resultados

finales. Concluyen, que empleando la librería OpenCV es posible realizar el filtrado de

las imágenes, en escala de grises para este caso particular, sin un elevado coste compu-

tacional. Se entrena una red neuronal para llevar a cabo la clasificación de los elementos

de entrada del sistema. Si bien ambos trabajos emplean el sensor de profundidad para

determinar la ubicación de la mano, el primer trabajo distingue la posición de cada de-

do de la mano mientras el segundo trabajo toma la imagen segmentada y binarizada, y

5

Page 17: Sistema para el aprendizaje del lenguaje de señas

la analiza con la base de datos. Si bien puede resultar más fácil segmentar la imagen

y realizar la posterior identificación, para el desarrollo de este proyecto es de gran im-

portancia conocer la posición de la mano para acertar en el signo que el usuario está

introduciendo, aunque no precisamente realizando aproximaciones mediante modelos.

Vargas et al. (2010) presenta un sistema de reconocimiento de patrones de imágenes es-

táticas empleando redes neuronales para la identificación de las señas del Lenguaje de

Señas Colombiano; consiste en una red neuronal multicapa con un algoritmo de retropro-

pagación. Se capturan las imágenes y se les realiza un procesamiento para adaptarlas a

la red con el fin de discriminar patrones de mejor forma. El sistema presentó un desem-

peño favorable para el reconocimiento de señas estáticas mediante redes neuronales.

En este trabajo se presenta al sistema la seña en un ambiente controlado, por lo que la

influencia de las perturbaciones lumínicas medioambientales se reduce en gran medida,

pero se limita el uso del software a un ambiente particular.

Plaza (2015) realiza una herramienta computacional capaz de capturar una secuencia de

imágenes, correspondientes a los gestos que ingresa el usuario; el software se encarga

de analizar el gesto introducido para emitir el texto correspondiente a su significado.

El software permitió identificar correctamente los signos en diferentes ambientes. Se

empleó el algoritmo convexhull para detectar adecuadamente el contorno de la mano

y apoyar el proceso de identificación del significado del signo ingresado; también se

empleó el algoritmo k-nearest para el entrenamiento del clasificador.

Sánchez and Hurtado (2015) emplean la API ofrecida por Microsoft para el sensor Kinect,

que proporciona las posiciones de las articulaciones del cuerpo humano en un espacio

bidimensional. Con las posiciones se usa la técnica DWT para realizar la traducción del

LSC a texto, para lo cual se obtuvo un 98,2 % de acierto. Este trabajo está orientado

únicamente al reconocimiento de señas dinámicas, principalmente debido a la técnica

empleada; los resultados de este trabajo dejan ver que la técnica DWT resulta ser una

opción adecuada para el análisis de señas dinámicas dado su porcentaje de éxito.

A nivel nacional, el trabajo realizado hasta el momento presenta mayor similitud es el

realizado por Londoño (2015), el cual se titula “Aplicativo para apoyar el proceso de

6

Page 18: Sistema para el aprendizaje del lenguaje de señas

aprendizaje del lenguaje de señas hacia un oyente mediante Microsoft Kinect”. El trabajo

presenta un aplicativo que por medio de un sensor de tipo RGB-D procesa las imágenes

capturadas y a través de inteligencia artificial enseña al usuario conceptos básicos sobre

el lenguaje de señas colombiano. Se hizo énfasis en el filtrado de la imagen de entrada

para eliminar variables de luminosidad y contraste, esto con el fin de evitar calibrar el

sistema cada vez que se iniciase. Se concluyó que el entrenamiento juega un papel

crucial, ya que los valores de convergencia de los estados de la cadena de Markov están

ligados con las secuencias de entrenamiento, por lo que con puntos parecidos el sistema

no sabe a cuál converger.

Vogler and Metaxas (2001) propone un framework para el reconocimiento del lenguaje de

señas americano que consiste en la descomposición de los signos en sus fonemas que

emplea Modelos Paralelos Ocultos de Markov para así obtener aspectos simultáneamen-

te de forma independiente; con lo cual se logra que se pueda realizar el entrenamiento

de forma independiente sin requerir la consideración de las diferentes combinaciones.

Se realizó el experimento para 22 signos diferentes del Lenguaje de Señas Americano

y se demostró la eficiencia de los Modelos Paralelos Ocultos de Markov frente a los

convencionales.

Chana and Jakkree (2016) propone una técnica de reconocimiento de la postura de la

mano con fondos complejos, aprovechando las características del sensor Microsoft Ki-

nect para evitar interferencias del entorno como el color de la piel. Se emplean histogra-

mas de gradiente orientado para extraer las características de los signos introducidos,

que posteriormente son pasadas por una red neuronal artificial para el entrenamiento y

reconocimiento. Se observó que el método propuesto es robusto en cuanto a la detec-

ción de signos introducidos en entornos con fondos complejos. Se obtuvo un porcentaje

de reconocimiento del 84,05 % para el reconocimiento de 24 signos diferentes.

Yamashita and Watasue (2014) propone una metodología en la que se divide la comple-

ja arquitectura de la mano; por un lado se realiza la extracción de la forma de la mano

con fondos complejos y cambios de iluminación y por otro lado el reconocimiento de la

postura de la mano por medio de una imagen binarizada. Según lo anterior, se propone

la implementación de una red neuronal convolucional con capas especiales para la ex-

7

Page 19: Sistema para el aprendizaje del lenguaje de señas

tracción de características de imágenes binarizadas. Se obtuvieron mejores resultados

en comparación con con el método base (esto es, sin incluir las capas especializadas en

extracción de características de las imágenes binarizadas). PÉREZ (2012) propone en

su tesis de maestría un sistema que contiene dos módulos principales: uno de aprendi-

zaje y uno de reconocimiento. Emplea un sensor Microsoft Kinect para capturar los datos

y compararlos con los patrones almacenados en la base de conocimiento del sistema.

Cuando se ingresa un signo con una similitud menor al 90 % se acciona el módulo de

aprendizaje que almacena el nuevo signo ingresado. Con el primer método se reconocen

20 signos diferentes invariantes a rotaciones , escalamiento y traslaciones del lenguaje

de señas mexicano; para este método se requiere de un fondo negro, condiciones de

iluminación controladas y que la mano se sitúe a 50cm del sensor óptico. Se encontró

que el problema más recurrente es identificar la ubicación de la muñeca, ya que el an-

tebrazo afecta el reconocimiento de la mano. Con el segundo método se reconocieron

25 señas del Lenguaje de Señas Mexicano; con este método se obtuvo una tolerancia

ante las rotaciones y deformaciones de la mano durante la ejecución, además de que no

requiere de aprendizaje previo. Se observó que capturar la mano con el sensor Kinect

presenta una ventaja para el proceso de segmentación, pero debido a la resolución de la

cámara (para la versión 1) no se puede distinguir la transición entre señas realizadas rá-

pidamente debido al efecto motion blur. Para el proceso de aprendizaje-reconocimiento

del segundo método se requirió definir un umbral de reconocimiento para discriminar

adecuadamente cuando se trata de una seña del Leguaje según los datos de la base de

conocimiento; dicho umbral debe ser menor o igual al 10 % para un resultado correcto.

A nivel internacional, uno de los trabajos más representativos en el campo de hand trac-

king es el presentado por POUDEL (2014) en su tesis doctoral. En esta se propone una

técnica basada en regiones para la detección del color de la piel, que contrasta con

las técnicas empleadas actualmente basadas en pixeles y según el autor supera los re-

sultados obtenidos; se basa en una técnica de segmentación llamada superpixels que

agrupa varios pixeles del mismo color. El framework propuesto consta de 3 módulos:

segmentación de regiones de la mano, estimación de la postura mediante regresiones y

seguimiento de la mano empleando estimación de la posición, prioridad cinemática e in-

8

Page 20: Sistema para el aprendizaje del lenguaje de señas

formación temporal. Empleando la técnica propuesta se obtuvo un resultado del 91,17 %

de aciertos, frente a un 13,12 % de falsos negativos. El trabajo realizado en esta tesis fue

publicado en la propuesta de código abierto para liberación del SDK’s del sensor Kinect

para el sistema operativo Microsoft.

9

Page 21: Sistema para el aprendizaje del lenguaje de señas

1. VISIÓN POR COMPUTADOR

1.1. Introducción

La visión artificial, también conocida como visión por computador (CV, por sus siglas

en inglés), es un campo de la inteligencia artificial en el cual por medio de análisis de

imágenes se obtiene una descripción de los objetos capturados en una escena. Dentro

de los campos en los que se utiliza la visión por computador se encuentran aplicaciones

militares, de control de calidad industrial, robótica, agricultura, biomedicina, seguridad,

control de tráfico, etc.

Para lograr el correcto funcionamiento de una aplicación de visión artificial es necesa-

rio inicialmente preparar la imagen para ser leída de manera adecuada, resaltando las

características principales que se desean obtener mediante filtros, y posteriormente ex-

traer los datos de interés mediante diferentes técnicas que varían según la aplicación en

concreto. (de la Escalera, 2001)

1.2. Representación de una imagen

Una imagen digital se compone de un conjunto de valores numéricos que van típica-

mente de 0 a 255, cada valor es denominado pixel y su posición dentro de la imagen se

determina a través de coordenadas X y Y que se sitúan en los ejes horizontal y vertical

con límites en el ancho y alto de la imagen respectivamente, siendo el eje X horizontal y

positivo en dirección derecha y el eje Y vertical y positivo hacia abajo. De forma general,

considerando un modelo de imagen simple f(x, y) compuesta únicamente de valores de

intensidad luminosa (imagen en escala de grises), donde el valor f(x, y) es el valor de

intensidad en el pixel (x, y), se tiene que f(x, y) ∈ [0,∞) debido a que la luz es una forma

de energía (Muñoz P., 2009).

La intensidad luminosa de la imagen f(x, y) se puede caracterizar por dos componen-

tes: la cantidad de luz que incide en la escena denotada por I(x, y) ∈ [0,∞) y la cantidad

de luz reflejada por los objetos de la escena denotada por r(x, y) ∈ [0, 1], de manera que:

10

Page 22: Sistema para el aprendizaje del lenguaje de señas

f(x, y) = I(x, y)× r(x, y) (1)

De la Ecuación 1 se obtiene que una imagen tiene una representación matricial y por

tanto es susceptible de ser computada con otras imágenes por medio de operaciones

como suma, resta o multiplicación; asimismo, una imagen digital puede ser representa-

da mediante histogramas, los cuales son funciones que indican la frecuencia con la que

aparecen los valores de intensidad que pueden tomar los pixeles, como se muestra en

la Figura 3; sin embargo, es necesario tener en cuenta que esta representación no pro-

porciona información espacial de la imagen, por lo que dos imágenes diferentes podrían

llegar a tener un mismo histograma, razón por la cual esta representación no suele ser

utilizada como una descripción de la imagen (de la Escalera et al., 2016).

Figura 3: Representación de una imagen mediante un histograma.

Fuente: Girod (2013)

Además de la intensidad, los objetos presentes en una escena se caracterizan principal-

mente por el color. Un espacio de color es una interpretación que a partir de un conjunto

de ecuaciones matemáticas permite describir los colores de una imagen y descomponer-

los en canales. Existen multiples espacios de color que según su composición pueden

ser empleados en diferentes contextos para resaltar ciertas características, entre algunos

11

Page 23: Sistema para el aprendizaje del lenguaje de señas

de los más populares se encuentran el RGB, el HSV y el YCrCb.

1.2.1. Espacio de color RGB

Es el más extendido y el que utilizan dispositivos como cámaras de video y cámaras fo-

tográficas para construir imágenes de color, motivo por el cual es ampliamente utilizado

como sistema de referencia en aplicaciones de visión por computador, ya que trabajar

con el mismo espacio de color en que vienen las imágenes desde el sensor disminu-

ye la aparición de ruido y previene la alteración de las propiedades del color durante

operaciones sobre la imagen.

En el espacio de color RGB los colores están definidos por la mezcla de los valores de

intensidad de tres colores primarios, rojo, verde y azul (Red-Green-Blue), de manera que

cada pixel de una imagen RGB está compuesto por una tupla de 3 componentes, cada

uno correspondiente a un canal de color (ver Figura 4).

Figura 4: Representación matricial del espacio RGB.

Fuente: El autor.

1.2.2. Espacio de color YCrCb

Surge de una codificación no lineal del espacio RGB; la componente Y representa la

luminancia y las componentes Cr y Cb representan la crominancia o tono de color, Cb

12

Page 24: Sistema para el aprendizaje del lenguaje de señas

toma colores en una escala entre el azul y el amarillo y Cr toma colores en una escala

entre el rojo y el verde. La transformación entre el espacio RGB y YCrCb se puede reali-

zar mediante la Ecuación 2 (Molinero D., 2010).

Y

Cb

Cr

=

65, 481 128, 553 24, 966

−39, 797 −74, 203 112

112 −93, 786 −18, 214

∗R

G

B

+

16

128

128

(2)

Las componentes RGB están codificadas en un byte (de 0 a 255), mientras que la lumi-

nancia se define en 220 niveles y las crominancias en 224 niveles, por lo que es necesa-

rio escalar las componentes para que puedan ser almacenadas dentro de un byte como

un número sin signo.

1.3. Descriptores

Una imagen digital puede contener cientos de características inmersas en la escena, pa-

ra extraer correctamente las características de las imágenes previamente presentadas

al sistema se hace uso de los descriptores (Cuenca, 2008); estos son características

extraídas del resultado de modelos matemáticos aplicados a las imágenes digitales, los

cuales resumen y simplifican el contenido de estas. Existen diferentes tipos de descrip-

tores que varían según su complejidad; entre estos se pueden encontrar histogramas de

color o intensidad, descriptores LBP, HOG, etc.

En la Figura 5 se muestran tres diferentes señas tomadas aleatoriamente del conjunto

de datos, sobre las cuales serán aplicados los descriptores propuestos en este trabajo

de grado para evidenciar cómo se comporta cada uno sobre una misma imagen.

13

Page 25: Sistema para el aprendizaje del lenguaje de señas

Figura 5: Imágenes tomadas para ejemplo.

Fuente: El autor.

1.3.1. Local Binary Patterns (LBP)

LBP es un descriptor de textura invariante a la iluminación que se construye a partir de

un histograma de patrones que se calculan sobre una región por los niveles de grises

relativos de los pixeles vecinos (Heikkilä et al., 2009).

Para realizar el cálculo del descriptor LBP inicialmente se divide la imagen en celdas;

se compara cada pixel de cada celda con sus vecinos, los cuales se determinan a partir

de un radio que puede ir desde 1 hasta n ∈ N+ con n < image.size (ej. si el radio es

1 toma los 8 pixeles contiguos al pixel actual); si el pixel central es mayor al vecino se

toma un valor de 0 para la posición del vecino, de lo contrario se toma un valor 1, lo

anterior genera un byte que se suele representar en base decimal, el cual reemplaza al

valor del pixel central; finalmente, se normaliza el histograma resultante de cada celda y

se concatenan sucesivamente para formar el vector descriptor. La Figura 6 muestra un

ejemplo del cálculo del descripto LBP para una posición, tomando un radio R = 1.

14

Page 26: Sistema para el aprendizaje del lenguaje de señas

Figura 6: Ejemplo de cálculo de descriptor LBP.

Fuente: El autor.

(255 ∗ 0) + (128 ∗ 1) + (64 ∗ 0) + (32 ∗ 1) + (16 ∗ 1) + (8 ∗ 0) + (4 ∗ 0) + (2 ∗ 1) = 178

obteniendo un valor de 178 para la posición X.

En términos generales, el operador LBP se describe con la Ecuación 3.

LBPR,N (x, y) =

N−1∑i=0

s(ni − nc)2i, s(x) =

1, x ≥ 0

0, otherwise

(3)

Donde nc corresponde al valor del pixel central y ni corresponde al nivel de gris de los

pixeles del vecindario en el radio R.

El descriptor LBP en su versión original no es invariante a la rotación, por lo que una

leve inclinación del objeto en la imagen puede provocar que el histograma resultante sea

completamente diferente al original; para hacer el descriptor LBP invariante a la rotación

se puede emplear la variación U-LBP (Uniform Local Binary Pattern), cuyo patron “U"

hace referencia al número de transiciones de 0 a 1 y viceversa, de manera que el LBP

es considerado uniforme si tiene máximo dos patrones uniformes. En la Figura 7 se

muestran cinco ejemplos de patrones uniformes que corresponden a características en

la imagen.

15

Page 27: Sistema para el aprendizaje del lenguaje de señas

Figura 7: Patrones LBP uniformes en una imagen.

Fuente: Pietikäinen et al. (2011)

De forma general, la Ecuación 4 indica el número de patrones uniformes que se pueden

obtener con P vecinos; por ejemplo, para un vecindario de 8 puntos se obtienen 59 patro-

nes uniformes, lo que genera una reducción dimensional del 76,95 % (de 256 patrones

para el LBP original a 59 para el U-LBP).

P (P − 1) + 3 (4)

Debido a lo anterior, para este descriptor se decidió utilizar la variación U-LBP, ya que

el LBP original introduce muchas dimensiones al vector descriptor y las características

más importantes de la imagen están localizadas en los contornos y las esquinas, entre

otras que son correctamente localizadas con la variación U-LBP; de acuerdo con eso, se

utilizó un radio R = 8 y P = 24 puntos. En la Figura 8 se muestra el resultado de aplicar

el algoritmo U-LBP sobre las tres señas de muestra de la Figura 5.

Figura 8: Ejemplo de características LBP.

Fuente: El autor.

16

Page 28: Sistema para el aprendizaje del lenguaje de señas

1.3.2. Histograma de Orientación de Gradientes (HOG)

En visión por computador, un gradiente indica el cambio de dirección en la intensidad de

una imagen y se define mediante 2 valores: dirección del cambio de intensidad (desde

0 hacia 255) y magnitud del cambio de dirección. A continuación se describe la forma

más elemental del cálculo del gradiente: en primer lugar se calculan las diferencias en

los ejes de coordenadas comparando el valor de intensidad de un pixel contra el de sus

vecinos, de manera que las diferencias en los ejes se calculan empleando la Ecuación 5

donde I es el mapa de intensidad.

dx = I(x+ 1, y)− I(x− 1, y)

dy = I(x, y + 1)− I(x, y − 1)(5)

En segundo lugar se determina el ángulo del gradiente de acuerdo con las diferencias

empleando la Ecuación 6.

θ(x, y) = tan−1

(dy

dx

)(6)

Finalmente, se calcula la magnitud empleando la Ecuación 7.

g(x, y) =√dx2 + dy2 (7)

A partir del cálculo del gradiente es posible definir un descriptor que pueda brindar in-

formación global de la imagen, conocido como histograma de orientación de gradientes

(HOG por sus siglas en inglés), para lo cual hay que dividir la imagen en un número fijo de

celdas y para cada celda se obtiene un histograma de las orientaciones de los gradientes

y finalmente todos los histogramas se combinan para formar el descriptor (López P. et al.,

2015).

Para el descriptor HOG se seleccionó una configuración de bloques de 16x16 px, tamaño

de celdas de 8x8 px y 9 bins. En la Figura 9 se muestra el resultado de aplicar el des-

criptor HOG sobre las imágenes de la Figura 5. Se puede identificar que cada seña tiene

17

Page 29: Sistema para el aprendizaje del lenguaje de señas

una orientación de gradientes diferente y se evidencia particularmente en el contorno de

la mano y los bordes de los dedos.

Figura 9: Ejemplo de características HOG.

Fuente: El autor.

1.3.3. Firma del contorno

La firma de un contorno es una representación unidimensional del contorno, que con-

siste en un vector donde cada elemento se compone de la distancia desde el centroide

del objeto hasta el contorno y el ángulo que forma con respecto al eje horizontal. Para

calcular la firma de un contorno es necesario extraer el contorno del objeto, para ello se

puede realizar una binarización de la imagen y posteriormente una extracción del con-

torno. Para facilitar el cálculo del centroide de un objeto se hace uso de los momentos

de la imagen. Los momentos de orden p + q de una imagen I(x, y) se describen por la

Ecuación 8.

Mp,q =N∑

x=1

M∑y=1

xpyqI(x, y) (8)

En particular se sabe que M0,0 es el área A del objeto (reemplazando p y q por cero en

la Ecuación 8), con ello se calcula el centroide con las formulas de la Ecuación 9.

18

Page 30: Sistema para el aprendizaje del lenguaje de señas

x =

N∑x=1

M∑y=1

xI(x, y)

A=M1,0

M0,0

y =

N∑x=1

M∑y=1

yI(x, y)

A=M0,1

M0,0

(9)

Finalmente, a cada punto del contorno se le resta el valor del centroide encontrado y se

pasa de coordenadas cartesianas a coordenadas polares tomando como (0, 0) el punto

del centroide. En la Figura 10 se muestra un ejemplo del descriptor obtenido para las

señas de la Figura 5.

Figura 10: Ejemplo de características de Firma Contorno.

Fuente: El autor.

1.3.4. Trayectorias

Una seña dinámica puede ser descrita por diferentes características tales como la tra-

yectoria, la velocidad, la aceleración, la orientación y combinaciones entre las anteriores

(Meng et al., 2014); en este trabajo se tomó la trayectoria como descriptor de las se-

ñas dinámicas y se eliminaron las componentes de velocidad y aceleración mediante un

proceso de remuestreo para mejorar la similitud entre una seña y otra.

Una trayectoria se compone de un conjunto de puntos C ordenados en el espacio con

coordenadas, en este caso, X, Y y Z; la cantidad de puntos de una trayectoria depende

19

Page 31: Sistema para el aprendizaje del lenguaje de señas

del intervalo de tiempo en que es capturada, del sensor empleado, la velocidad con la

que se mueve el objeto y la cantidad de operaciones realizadas durante el tiempo de

captura. Para este trabajo, las trayectorias se capturaron durante un intervalo de tiempo

de 4 segundos para cada muestra.

Debido a que la longitud de una trayectoria puede variar, para hacer dos trayectorias

directamente comparables se realiza un procedimiento de remuestreo de los puntos ori-

ginales en N puntos equidistantes; si bien el remuestreo no es la única técnica, ha de-

mostrado tener buenos resultados sobre trayectorias (Wobbrock et al., 2007). El número

de puntos N más adecuado depende del tipo de trayectoria que se esté trabajando, y si

bien no existe una formula para definir la cantidad más adecuada, se tiene como regla

general que una cantidad N de puntos muy baja puede generar perdida de precisión a

la hora de comparar dos trayectorias, mientras que una cantidad N de puntos muy alta

le agrega mayor dimensionalidad al vector, lo cual no necesariamente genera una ma-

yor precisión pero si suma tiempo de procesamiento al generar un vector más largo. La

longitud máxima de las trayectorias capturadas en este trabajo fue de 156 puntos, por

lo que se probaron diferentes combinaciones de ese valor hacia abajo en potencias con

base dos, encontrando que el valor más adecuado es de 64 puntos.

Para realizar el proceso de remuestreo inicialmente se calcula la longitudM de los puntos

de la trayectoria original y se divide la cantidad de puntos por N − 1, obteniendo el

incremento I (ver Ecuación 10).

I =M

N − 1(10)

Conociendo el incremento I se itera la trayectoria original con saltos de I y se va agre-

gando cada elemento a un nuevo vector, como se observa en el Algoritmo 1.

Una vez remuestreada la trayectoria se calcula su centro y se traslada al origen del plano

coordenado X-Y , esto se hace con el fin de normalizar el vector y hacerlo invariante

a traslaciones en el espacio, de manera que cada seña pueda ser reconocida por el

clasificador independientemente del lugar donde esté ubicada la persona que la ejecuta.

Finalmente, para hacer más robusta la descripción se calcula un descriptor sobre la

20

Page 32: Sistema para el aprendizaje del lenguaje de señas

M = length(trajectory);I = M / (N-1);i = 0;for j in 0:I:m-1 do

reshaped[i] = trajectory[j];i++;

end

Algoritmo 1: Proceso de remuestreo sobre la trayectoria.

trayectoria que relaciona cada puntoN con el puntoN+1 como se observa en el ejemplo

de la Figura 11, calculando la relación angular entre ambos siendo X el eje principal (ver

Ecuación 11).

θt = arctan

(yt−+1 − ytxt+1 − xt

), t = 1, 2, ..., T − 1 (11)

Figura 11: Ejemplo de descriptor de trayectoria.

Fuente: El autor.

21

Page 33: Sistema para el aprendizaje del lenguaje de señas

2. DETECCIÓN Y SEGUIMIENTO

2.1. Adquisición de la imagen

Las cámaras convencionales permiten retratar el mundo desde una perspectiva bidimen-

sional, pero para un correcto análisis del entorno es necesario capturar la imagen por

medio de una representación tridimensional. La terminología en sensores ópticos hoy en

día permite el análisis tridimensional del entorno por medio de sensores de tipo RGB-D.

Ahora bien, la forma en que es almacenada la información de este tipo de sensores es

por medio de nubes de puntos; una nube de puntos es un arreglo de datos sobre un

sistema coordenado X, Y y Z (Kadambi et al., 2014). Para generar la nube de puntos es

necesario que el sensor óptico empleado cuente con dos elementos principales: sensor

de profundidad y cámara RGB; la cámara permitirá captar características esenciales en

los elementos de la escena mientras que el sensor de profundidad permitirá definir la

ubicación en el espacio de dichos elementos. Además de contar con el sensor RGB-D,

es necesario realizar una calibración debido a que los dos sensores ofrecen resoluciones

diferentes y asimismo se encuentran separados físicamente uno del otro, lo que genera

traslación de una imagen a otra (ver Figura 12).

Figura 12: Superposición de imágenes del sensor de profundidad y el sensor RGB sincalibración, el borde azul representa el contorno de la mano en el mapa de profundidad.

Fuente: El autor.

22

Page 34: Sistema para el aprendizaje del lenguaje de señas

El método más común para hallar los parámetros es el modelo de pinhole, donde la

escena se forma proyectando los puntos 3D en un plano empleando transformaciones

geométricas; la forma general de este modelo se describe por la Ecuación 12.

u

v

w

=

fx 0 cx

0 fy cy

0 0 1

r11 r12 r13 t1

r21 r22 r23 t2

r31 r32 r33 t3

X

Y

Z

1

(12)

El driver de la librería libfreenect incorpora un método que se encarga de realizar el re-

gistro basado en los parámetros que trae incorporados el sensor Kinect de fabrica, lo que

resume la Ecuación 12 en la Ecuación 13; gracias a eso se puede asumir por simplicidad

que ambos sensores cuentan con los mismos parámetros.

u

v

w

=

fx 0 cx

0 fy cy

0 0 1

X

Y

Z

(13)

En la Ecuación 13 las coordenadas u, v y w corresponden a las coordenadas en la

imagen dadas en pixeles; X, Y y Z corresponden a las coordenadas espaciales en milí-

metros (ver Ecuación 14); fx y fy son las distancias focales expresadas en pixeles; cx y

cy son las coordenadas del centro de la imagen en pixeles. Como se observa en la Ecua-

ción 13 w = Z, esto es porque el sensor fue configurado desde el driver para devolver la

profundidad en milímetros.

w = Z ⇒ Z = w

u = fxX + CxZ ⇒ X =Z(u− cx)

fx

v = fyY + CyZ ⇒ Y =Z(v − cy)

fy

(14)

23

Page 35: Sistema para el aprendizaje del lenguaje de señas

2.2. Pre-procesamiento y detección de la mano

A continuación, en la Figura 13 se muestra un diagrama que describe las etapas de pre-

procesamiento y detección de la mano.

Figura 13: Diagrama de descripción de las etapas de pre-procesamiento y detección dela mano.

Fuente: El autor.

La rutina de la Figura 13 ocurre únicamente previo a la detección de la mano, una vez

la mano ha sido detectada se procede a correr la rutina de seguimiento o tracking hasta

que se detenga el programa.

La rutina de pre-procesamiento inicia adquiriendo tanto la imagen RGB como el mapa

de profundidad; gracias a que el driver empleado entrega las dos imágenes alineadas,

24

Page 36: Sistema para el aprendizaje del lenguaje de señas

el tratamiento se realiza como si se tratara de una única nube de puntos en el espacio.

Inicialmente se toma el punto más cercano al dispositivo de captura, el sensor de profun-

didad tiene un rango de operación de 0, 7 a 4, 0 metros, de modo que la distancia mínima

del sensor a la mano debe ser de 0, 7 metros para lograr un resultado correcto; luego de

obtener el punto más cercano se extraen los elementos que estén 80 milímetros hacia

atrás en el eje Z de ese punto.

Con la imagen segmentada mediante el proceso descrito anteriormente se emplea un

clasificador Haar Cascade pre-entrenado para identificar la mano en la escena; el clasi-

ficador es capaz de detectar las posiciones mostradas en la Figura 14. Para clasificar la

imagen primero es necesario realizar un proceso de binarización donde el fondo debe

quedar en color negro y el blob a analizar de color blanco.

Figura 14: Posiciones de la mano detectadas por el clasificador Haar Cascade pre-entrenado.

Fuente: Imagen tomada de Freepik.

Como el clasificador Haar Cascade es capaz de detectar la mano en 5 diferentes posicio-

nes, es susceptible de generar falsos positivos, debido al efecto de motion blur y la auto

oclusión de la mano; para prevenir la propagación de errores se realiza una validación de

la mano detectada, donde sólo se admite como entrada la palma completamente abierta.

El proceso de validación consiste en hallar la envolvente convexa, también conocida

como convex-hull, sobre la mano (línea verde en la Figura 15) con lo que se obtienen

los puntos de los dedos que corresponden a los puntos de inflexión de la envolvente

(puntos rojos en la Figura 15). La librería OpenCV permite encontrar los defectos de la

envolvente convexa, que son los puntos más alejados de contorno (puntos amarillos en

25

Page 37: Sistema para el aprendizaje del lenguaje de señas

la Figura 15), con los cuales se puede calcular el ángulo de apertura que hay entre un

dedo y otro. Sólo los defectos que se encuentran en medio de dos dedos deben ser

tomados como válidos y para que un defecto sea tomado como el punto de unión entre

dos dedos, el ángulo que debe haber entre ambos no debe ser mayor a 90 grados (para

que la mano sea validada debe tener entre 3 y 4 defectos).

Figura 15: Validación de la mano detectada por el clasificador Haar Cascade.

Fuente: El autor. Imagen tomada de Freepik.

2.3. Seguimiento o tracking

Con la detección de la mano se obtiene la región de interés (ROI, por sus siglas en

inglés) que indica su ubicación en el plano X − Y , cuyo centro se utiliza como punto

de partida para hacer el seguimiento de la mano; el proceso de seguimiento tiene como

objetivo segmentar activamente la mano del resto de la escena sin necesidad de realizar

el proceso de reconocimiento por cada frame.

Se evaluaron dos métodos de segmentación de la mano, uno basado en la segmentación

del color de la piel y otro basado en un algoritmo de Region Growing, los cuales reciben

como entrada el ROI entregado por la etapa de validación.

El procedimiento de segmentación por color de piel consta de 3 etapas: obtención del

modelo de color, extracción del fondo y segmentación de la piel dentro de la escena.

Para obtener el modelo de color de la mano se toma el blob dentro del ROI y se hace

26

Page 38: Sistema para el aprendizaje del lenguaje de señas

un procedimiento de inpaint, con lo que se obtiene una nueva imagen cuyos pixeles se

corresponden con el color de la piel; el procedimiento de inpaint permite corregir marcas

o imperfecciones en una imagen con base en los pixeles vecinos de las mismas, dichas

imperfecciones para el objeto de este trabajo se toman como el fondo de la imagen, con lo

cual se logra que los pixeles del fondo sean reemplazados por los pixeles obtenidos como

color de piel. Para realizar la extracción del fondo se retiran todos los elementos que se

encuentren a más de 1, 5m del sensor y finalmente para extraer la piel de la escena se

realiza una operación de backprojection entre el histograma de la imagen que contiene

el modelo de color y la imagen de la escena; el backprojection compara los histogramas

de dos imágenes (una imagen base y otra de muestra) y extrae los pixeles de la imagen

de muestra que se asemejen a los de la imagen base, lo anterior se puede entender

como un procedimiento de filtrado o umbralización adaptativo basado en histogramas.

Todo el procedimiento anterior se realiza empleando el espacio de color YCrCb ya que

ha demostrado tener un mejor resultado en segmentación de piel (Khamar et al., 2015).

En la Figura 16 se observa el resultado de realizar la segmentación basada en el color

de piel.

Figura 16: Segmentación por color de piel.

Fuente: El autor.

27

Page 39: Sistema para el aprendizaje del lenguaje de señas

Por otro lado, Region Growing es un método utilizado en visión por computador para

segmentar elementos de forma local partiendo de un punto semilla y propagándose por

una región homogénea o con características similares (Puneet Kumar and Seba, 2013).

El algoritmo desarrollado para este trabajo parte del punto semilla y toma en cuenta los

puntos superior, inferior y laterales como se observa en el ejemplo de la Figura 17, donde

el cuadro verde corresponde al punto semilla y los cuadros azules corresponden a los

vecinos tomados en cuenta; su funcionamiento se puede asemejar al de un algoritmo

convencional de búsqueda, donde se tiene una lista de candidatos y se evalúa cada uno

para determinar si pertenece o no a la región que se quiere delimitar; el criterio para

definir si el candidato corresponde a la región es que se encuentre dentro de la ventana

del ROI de la mano y que el nivel de profundidad se encuentre dentro del umbral, que

para este caso es de 20 milímetros y corresponde a la distancia máxima que puede

haber entre los extremos de la mano en perspectiva.

Figura 17: Ilustración de los vecinos que son seleccionados por cada pixel.

Fuente: El autor.

A continuación, en el Algoritmo 2 se muestra un pseudocódigo donde se describe el

funcionamiento del algoritmo de Region Growing desarrollado.

Debido a que el algoritmo consiste en una serie de operaciones cíclicas anidadas, sobre

una imagen de 640 x 480 pixeles toma un tiempo de ejecución variable del orden de

cientos de milisegundos y una carga computacional alta debido a que el script de Python

es interpretado. Para solucionar el problema y mejorar el rendimiento del algoritmo se

hace uso de Cython, un compilador optimizado para lenguaje de programación Python,

Cython (el cual es un lenguaje extendido) y C, que al ser ejecutado retorna un módulo

28

Page 40: Sistema para el aprendizaje del lenguaje de señas

Input: threshold, depthMap, windowseed = window.center;meanDepth = depthMap[seed.x, seed.y];queue = depthMap.resize(1, depthMap.width*depthMap.height);while length(queue) != 0 do

item = getFirstElementInTheQueue(queue);dropFirstElementInTheQueue(queue);neighbors = getNeighbors(item);for neighbor in neighbors do

if isMember(neighbor, meanDepth) thenregion.add(neighbor);

endend

endOutput: region

Algoritmo 2: Pseudocódigo del algoritmo Region growing.

compilado que puede ser usado tanto desde lenguaje C/C++ como Python. Luego de

realizar la optimización del algoritmo escrito en su gran mayoría en lenguaje Cython se

obtuvo que el tiempo de ejecución descendió al orden de cientos de nanosegundos, así

como también la carga computacional.

De acuerdo con los resultados obtenidos, se decidió utilizar el algoritmo de Region Gro-

wing, ya que si bien el método de segmentación por piel arroja buenos resultados en

terminos de extracción de las zonas que contienen piel, deja pasar regiones que no

corresponden a piel y asimismo devuelve regiones correspondientes a los brazos y el

rostro, lo que hace necesario adicionar una sub-etapa más de segmentación, mientras

que el algoritmo de Region Growing permite obtener directamente la region segmentada

de la escena y es invariante a la iluminación al trabajar únicamente sobre el mapa de

profundidad.

Por último, sobre la región segmentada se realiza el seguimiento con el algoritmo de

meanshift ofrecido en la librería de OpenCV, el cual recibe como argumento el ROI y

devuelve la predicción de la siguiente posición de la mano.

29

Page 41: Sistema para el aprendizaje del lenguaje de señas

3. RESULTADOS DE CLASIFICACIÓN

3.1. Métricas empleadas

Luego de extraer las características y entrenar el modelo de machine learning es nece-

sario evaluar el rendimiento del clasificador para determinar la viabilidad del mismo; una

de las métricas más usadas a la hora de evaluar un algoritmo de clasificación es la Matriz

de Confusión (de ahora en adelante MC). La MC por sí sola no da información relevante

acerca del rendimiento del clasificador, pero a partir de ella se extraen otras métricas que

dan información veraz del mismo.

La MC consta de cuatro partes fundamentales como se muestra en la Figura 18, donde

en las columnas se ubican las clases ya establecidas y en las filas las clases de prueba.

Figura 18: Representación genérica de la matriz de confusión.

Fuente: El autor.

Verdaderos positivos (TP por sus siglas en inglés): es el número de clasifica-

ciones verdaderas correctas.

Verdaderos negativos (TN por sus siglas en inglés): es el número de clasifica-

ciones falsas correctas.

Falsos positivos (FP por sus siglas en inglés): es el número de clasificaciones

verdaderas incorrectas.

30

Page 42: Sistema para el aprendizaje del lenguaje de señas

Falsos negativos (FN por sus siglas en inglés): es el número de clasificaciones

falsas incorrectas.

A partir de las cuatro partes fundamentales de la matriz de confusión es posible extraer

la exactitud, la precisión, la sensibilidad, entre otras métricas importantes.

3.1.1. Exactitud o accuracy

Evalúa el número total de clasificaciones correctas frente al total de muestras clasifica-

das, esto en la matriz de confusión se describe en la Ecuación 15. La exactitud toma

valores de cero a uno (o cero a cien si se representa como porcentaje) siendo cero una

exactitud muy baja y uno una exactitud muy alta.

Accuracy =TP + TN

TP + FP + FN + TN(15)

La exactitud únicamente debe ser utilizada cuando el número de muestras tanto de entre-

namiento como de prueba es similar para cada clase, de lo contrario la métrica siempre

tendrá un sesgo hacia la clase que tenga mayor número de muestras.

3.1.2. Precisión

Evalúa el número de clasificaciones correctas para cada clase de prueba; es decir, cuán-

tas clasificaciones verdaderas son realmente verdaderas para cada clase, esto en la MC

se describe en la Ecuación 16. La precisión al igual que la exactitud, toma valores de

cero a uno (o cero a cien si se representa como porcentaje) siendo cero una precisión

muy baja y uno una precisión muy alta.

Precision =TP

TP + FP(16)

31

Page 43: Sistema para el aprendizaje del lenguaje de señas

3.1.3. Sensibilidad o Recall

Indica qué número de muestras que corresponden a una clase fueron clasificadas dentro

de ella para cada muestra evaluada; es decir, cuántas clasificaciones que debían ser ver-

daderas fueron clasificadas como verdaderas, esto en la MC se describe en la Ecuación

17. La sensibilidad también toma valores de cero a uno (o cero a cien si se representa

como porcentaje) siendo cero una sensibilidad muy baja y uno una sensibilidad muy alta.

Recall =TP

TP + FN(17)

A primera vista la precisión y la sensibilidad parecen ser iguales, pero la diferencia radica

en que la precisión tiene en cuenta los falsos positivos mientras que la sensibilidad tiene

en cuenta los falsos negativos.

3.1.4. F1-Score

Para conocer el rendimiento general del modelo habitualmente se calcula la relación en-

tre las medidas de precisión y sensibilidad mediante una media harmonica, este indicador

es conocido como F1-Score y es calculado mediante la Ecuación 18

F1 Score = 2 · Precision ·RecallPrecision+Recall

(18)

3.2. Clasificación de señas estáticas

En el Apéndice A se muestran las matrices de confusión para las señas estáticas. Para

cada matriz de confusión se analizaron las cuatro métricas mencionadas en la sección

anterior, determinando mediante la precisión qué descriptor es el más adecuado y, me-

diante la exactitud y la métrica F1-Score qué clasificador es el más adecuado.

En la Figura 19 se observan las tablas de precisión extraídas de las matrices de con-

fusión del Apéndice A para cada seña versus los tres descriptores empleados por cada

32

Page 44: Sistema para el aprendizaje del lenguaje de señas

clasificador y en la Figura 20 se observan gráficamente los datos de las tablas de la Fi-

gura 19.

Figura 19: Tablas de precisión de señas estáticas.

(a) Precisión Naive Bayes (b) Precisión SVM

(c) Precisión ANN (d) Precisión KNN

Fuente: El autor.

Para el clasificador de Naive Bayes se obtiene una alta precisión con el descriptor U-LBP

sobre los otros dos descriptores (ver Figura 20); sin embargo, los valores obtenidos no

superan el umbral de 0,86 como se observa en su respectiva tabla en la Figura 19. Por

otro lado, para los clasificadores SVM, ANN y KNN se obtienen resultados superiores

tanto con el descriptor HOG como con el descriptor U-LBP, como se puede observar en

las líneas de color azul de las gráficas de la Figura 20. Descartando el descriptor de

Firma del Contorno por sus bajos resultados y asimismo el clasificador de Naive Bayes

que igualmente presenta una precisión más baja que los demás clasificadores, se tiene

que para el clasificador SVM la precisión promedio del descriptor HOG es de 0, 97 y

la del descriptor U-LBP es de 0,91; para el clasificador ANN la precisión promedio del

33

Page 45: Sistema para el aprendizaje del lenguaje de señas

Figura 20: Gráficas de precisión de señas estáticas.

(a) Gráfica precisión Naive Bayes (b) Gráfica precisión SVM

(c) Gráfica precisión ANN (d) Gráfica precisión KNN

Fuente: El autor.

descriptor HOG es de 0, 90 y la del descriptor U-LBP es de 0, 83; para el clasificador KNN

la precisión promedio del descriptor HOG es de 0, 94 y la del descriptor U-LBP es de

0, 88.

Por otro lado, en la Figura 21 se muestra la tabla de los resultados de exactitud calculados

con las matrices de confusión del Apéndice A de cada descriptor contra cada clasificador.

Figura 21: Exactitud de clasificación de señas estáticas.

Fuente: El autor.

En la tabla de la Figura 21 se observa nuevamente que el rendimiento tanto del clasifica-

dor Naive Bayes como del descriptor de Firma del Contorno es considerablemente bajo

34

Page 46: Sistema para el aprendizaje del lenguaje de señas

con respecto a los demás datos. Omitiendo los datos anteriores se tiene que la exactitud

más baja es de 0, 8389 para el descriptor U-LBP con el clasificador ANN y la exactitud

más alta es de 0, 9806 para el descriptor HOG con el clasificador SVM.

Finalmente, se calcula la métrica F1-Score mediante la Ecuación 18 empleando las ma-

trices de confusión del Apéndice A y se extrae el promedio para cada clasificador, obte-

niendo como resultado las gráficas de la Figura 22.

Figura 22: Métricas F1-Score promedio para cada descriptor.

Fuente: El autor.

Se observa que para el descriptor HOG el resultado más alto se obtiene con el clasifica-

dor SVM con un puntaje de 0, 97 y el resultado más bajo se obtiene con el clasificador

Naive Bayes con un puntaje de 0, 48; para el descriptor U-LBP el resultado más alto tam-

bién se obtiene con el clasificador SVM con un puntaje de 0, 91 y el resultado más bajo

igualmente con el clasificador Nave Bayes con un puntaje de 0, 75; finalmente, para el

descriptor Firma del Contorno el resultado más alto se obtiene con el clasificador KNN

con un puntaje de 0, 32 y el resultado más bajo se obtiene con el clasificador Naive Bayes

con un puntaje de 0, 08.

Debido a que la métrica F1-Score permite conocer la exactitud obtenida de la clasifica-

ción sobre un conjunto de prueba teniendo en cuenta la precisión y la sensibilidad, de

la Figura 22 se observa que el clasificador SVM logra clasificar correctamente un mayor

35

Page 47: Sistema para el aprendizaje del lenguaje de señas

número de muestras con respecto a los demás clasificadores y además se observa que

el descriptor HOG junto con el clasificador SVM permite una mejor clasificación de las

muestras de prueba.

3.3. Clasificación de señas dinámicas

En el Apéndice B se encuentran las matrices de confusión de los resultados de clasifi-

cación para las señas dinámicas. Para el análisis de las señas dinámicas se tuvo en en

cuenta la precisión de las señas, la exactitud y la métrica F1-Score para cada clasificador.

En la Figura 23 se observa la tabla de precisión extraída de las matrices de confusión

del Apéndice B.

Figura 23: Tabla de precisión de señas dinámicas

Fuente: El autor.

En la Figura 24 se muestran gráficamente los resultados para la tabla de la Figura 23. De

igual forma, en la Figura 24 se observa que los cuatro clasificadores presentan resultados

similares salvo la seña de "diferente"; sin embargo, calculando la precisión promedio para

cada clasificador se obtiene para el clasificador Random Forest 0, 805, para el clasificador

SVM 0, 940, para el clasificador KNN 0, 880 y para el clasificador Naive Bayes 0, 885 de

precisión. Como resultado se evidencia que tanto en la precisión promedio como en la

línea color naranja en la Figura 24 el clasificador SVM tiene una precisión más alta sobre

los otros tres clasificadores.

36

Page 48: Sistema para el aprendizaje del lenguaje de señas

Figura 24: Tabla de precisión de señas dinámicas

Fuente: El autor.

Por otro lado, en la Figura 25 se muestra la tabla para la métrica F1-Score obtenida de

las matrices de confusión del Apéndice B y en la Figura 26 se muestra una gráfica con

los resultados promedio obtenidos para cada clasificador.

Figura 25: Tabla de resultados de la métrica F1-Score de señas dinámicas

Fuente: El autor.

De la gráfica de la Figura 26 se observa que el clasificador SVM tiene el mayor resultado

para la métrica F1-Score con 0,939 frente a los demás clasificadores cuyos resultados

son 0, 794, 0, 879 y 0, 879 para los clasificadores Random Forest, KNN y Naive Bayes

respectivamente.

Finalmente, en la Figura 27 se muestra la tabla de resultados de exactitud para cada

clasificador.

37

Page 49: Sistema para el aprendizaje del lenguaje de señas

Figura 26: Gráfica de resultados promedio de la métrica F1-Score para señas dinámicas

Fuente: El autor.

Figura 27: Tabla de resultados de exactitud para señas dinámicas.

Fuente: El autor.

Al igual que para el caso de las señas estáticas se obtiene que el clasificador SVM

tiene una mayor exactitud de clasificación con un puntaje de 0, 9400 frente a los demás

clasificadores que tienen una exactitud de 0, 8050, 0, 8800 y 0, 8850 para Random Forest,

KNN y Naive Bayes respectivamente; de manera que se selecciona el clasificador SVM.

38

Page 50: Sistema para el aprendizaje del lenguaje de señas

4. DESARROLLO DE LA APLICACIÓN

La interfaz gráfica de la aplicación fue desarrollada empleando el framework Qt con el

wrapper PyQt que permite usar el framework con Python. En la Figura 28 se muestran

las tres vistas principales de la aplicación.

Figura 28: Vistas de la aplicación desarrollada.

(a) Vista principal (b) Vista para señas estáticas

(c) Vista para señas dinámicas

Fuente: El autor.

Inicialmente se presenta al usuario una vista de bienvenida y se le da a elegir la opción

de practicar señas estáticas o dinámicas. El layout de las vistas de práctica se compone

de dos secciones principales, como se observa en la Figura 29; en la sección del lado

izquierdo se encuentran los botones de iniciar/detener el programa y un cuadro con un

fondo por defecto donde se muestra lo que el sensor está capturando cuando se oprime

el botón de iniciar; en la sección del lado derecho se encuentra un selector para que el

39

Page 51: Sistema para el aprendizaje del lenguaje de señas

usuario elija la seña que desea practicar, un recuadro donde se muestra el ejemplo de la

seña que el usuario debe ejecutar (que es un video para el caso de las señas dinámicas

y una fotografía para el caso de las estáticas) y las instrucciones de ejecución.

Figura 29: Distribución de la vista de práctica.

Fuente: El autor.

Si bien la aplicación está escrita en Python, los tiempos de ejecución son cortos debido

a que gran parte de los componentes están hechos con Cython o C/C++ y se comunican

con Python a través de wrappers y módulos compilados, lo que se traduce en un ren-

dimiento similar al de un programa compilado, con una penalización del 3 % al 10 % en

tiempo de ejecución y uso de recursos durante los procedimientos de mayor demanda

computacional; lo anterior permite no solo proporcionarle al usuario una mejor experien-

cia durante el uso de la aplicación, sino también que la aplicación pueda ser utilizada en

equipos con menores prestaciones de hardware siempre y cuando cuenten con todas las

dependencias de software necesarias.

En la Figura 30 se observa una tabla con el tiempo de ejecución promedio de los prin-

cipales componentes de la aplicación; los valores presentados pueden variar según la

cantidad de puntos que haya en las imágenes analizadas entre el 10 % y 15 % del valor

40

Page 52: Sistema para el aprendizaje del lenguaje de señas

presentado hacia arriba o hacia abajo. En el cálculo del tiempo de clasificación tanto de

las señas estáticas como las dinámicas se tuvo en cuenta la extracción de descriptores,

la normalización de los vectores, la reducción dimensional con PCA y la clasificación.

Figura 30: Tiempo promedio de ejecución de cada componente de la aplicación

Fuente: El autor.

De acuerdo con los datos de la tabla de la Figura 30, el tiempo de ejecución de la apli-

cación durante la práctica de señas estáticas es de aproximadamente 233, 7315 ms y

durante la práctica de las señas dinámicas es de 375,1995 ms, lo anterior sin tener en

cuenta el tiempo que el usuario tarda en ejecutar la seña ni el tiempo de arranque de la

aplicación que pueden variar entre diferentes personas y equipos respectivamente.

Como se observa, las etapas más críticas son las de búsqueda y validación de la mano,

con una duración de 188, 0412 ms y la clasificación de las señas dinámicas con una du-

ración de 186, 7470 ms; lo anterior puede ser optimizado empleando un clasificador más

robusto que se encargue de detectar y validar la mano en una sola operación, aunque

eso puede suponer un mayor costo computacional y optimizando la extracción del des-

criptor de las señas dinámicas. Sin embargo, con los valores obtenidos se garantiza que

el usuario puede obtener una respuesta casi inmediata durante el uso de los diferentes

componentes de la aplicación.

41

Page 53: Sistema para el aprendizaje del lenguaje de señas

4.1. Resultados de encuestas

Para evaluar la aplicación desde la perspectiva de la experiencia de usuario, se selec-

cionaron diez voluntarios que utilizaron la aplicación y posteriormente respondieron la

encuesta del Apéndice C que permite conocer información principalmente los tiempos

de ejecución, la precisión de clasificación y el diseño de la interfaz desde la perspectiva

del usuario.

Cada pregunta de la encuesta tiene tres posibles respuestas categóricas: Malo, Regular

y Bueno; luego de obtener las respuestas de los usuarios se extrajo el porcentaje para

cada tipo respuesta por pregunta y se representó en una gráfica para analizar las dife-

rentes variables. En la Figura 31 se muestran los resultados obtenidos.

Figura 31: Resultados de las encuestas.

Fuente: El autor.

En cuanto al tiempo que toman los dos procesos más críticos en términos computaciona-

les, de la gráfica de la Figura 31 se observa que el 60 % de los encuestados consideran

que la aplicación tiene un buen tiempo de arranque mientras que el 40 % restante con-

sidera que tiene un tiempo de arranque regular; por otro lado, el 80 % considera que el

tiempo de reconocimiento es bueno mientras que el 20 % considera que es regular. De

los resultados anteriores se observa que un gran porcentaje de los encuestados conside-

42

Page 54: Sistema para el aprendizaje del lenguaje de señas

ra que la aplicación tiene un buen tiempo de arranque y de reconocimiento de las señas;

es importante tener en cuenta que algunos voluntarios experimentaron el tiempo de car-

ga inicial de la aplicación que toma más tiempo en comparación con los demás inicios,

principalmente por el tiempo que tarda en cargar los modelos que deben ser leídos de

archivos de texto plano y cargados a la RAM al inicio de la aplicación.

En cuanto al diseño de la interfaz y la usabilidad de la aplicación, 90 % de los encuestados

consideran que la navegación buena mientras que el 10 % considera que es regular; 80 %

considera que la forma en que se presentan los ejemplos de las señas es buena y 20 %

que es regular; 10 % considera que el diseño de la aplicación (en términos gráficos) es

buena, 80 % que es regular y 10 % que es malo. De los resultados anteriores se observa

que la aplicación es intuitiva para los usuarios, los ejemplos son mostrados de forma

correcta pero debe ser mejorado el aspecto gráfico de la misma.

En cuanto a la precisión de clasificación, 40 % considera que la precisión de clasificación

de señas estáticas es buena, 50 % que es regular y 10 % que es mala; por otro lado,

80 % considera que la precisión de clasificación de señas dinámicas es buena y 20 % que

es regular. De los resultados anteriores se observa que las señas estáticas tienen más

tendencia a fallar frente a las señas dinámicas, debido principalmente a que el descriptor

empleado para las señas estáticas es dependiente de la iluminación, de manera que la

oscuridad y la sobre-exposición pueden alterar los resultados obtenidos.

Por último, 80 % de los encuestados considera que la cantidad de señas disponibles es

regular y el 20 % que es mala; y el 70 % considera que es una aplicación adecuada para

aprender de forma rápida y efectiva mientras que el 30 % considera que es regular. De los

resultados anteriores se observa que es recomendable ampliar la base de datos de las

señas disponibles con el fin de brindar un abanico de posibilidades mayor a los usuarios,

pero sin embargo la metodología para enseñarles es adecuada y les permite percibir la

aplicación como una buena plataforma de aprendizaje.

43

Page 55: Sistema para el aprendizaje del lenguaje de señas

5. CONCLUSIONES

Se desarrolló una aplicación para el apoyo de la enseñanza del Lenguaje de Señas

Colombiano, tanto para señas estáticas como para señas dinámicas, haciendo especial

énfasis en el análisis de los algoritmos de machine learning, las técnicas de análisis de

datos y las técnicas de análisis de imágenes mediante algoritmos de visión por compu-

tador, lo que permite que la aplicación sea fácilmente adaptable a otros lenguajes de

señas, siempre y cuando se cuente con un conjunto de datos de las señas de interés.

La aplicación desarrollada fue escrita en Python y hace uso de módulos optimizados con

Cython, lo que permite que pueda ser usada en tiempo real sin comprometer la experien-

cia de usuario y previniendo un alto impacto en el consumo de recursos computacionales.

En cuanto a la segmentación de la mano se evaluaron dos técnicas, una basada en

segmentación por color de piel y otra basada en segmentación de regiones mediante un

algoritmo de Region Growing; se observó que el algoritmo de segmentación basado en

el color de piel es altamente dependiente de la iluminación (aunque se empleó el espacio

de color YCrCb que permite prescindir de la iluminación y tener en cuenta únicamente las

componentes de crominancia) y deja pasar regiones que no corresponden con la mano,

lo que hace necesario introducir una sub-etapa de segmentación adicional; por otro lado,

el algoritmo de Region Growing tiene un rendimiento superior ya que permite segmentar

regiones locales y no es dependiente de la iluminación al trabajar sobre el mapa de

profundidad, por lo que se decidió emplear el algoritmo de Region Growing, que aunque

implica un mayor costo computacional (que se disminuye realizando la optimización del

código con Cython) ofrece mejores resultados.

Para el análisis de clasificación de las señas estáticas se analizaron los descriptores

HOG, U-LBP y Contour Signature junto con los clasificadores SVM, ANN, KNN y Naive

Bayes, obteniendo los más altos resultados de precisión con el descriptor HOG y la

mayor exactitud con el par HOG-SVM con un puntaje de 0, 9806 junto con un valor F1-

Score promedio más alto igualmente con el par HOG-SVM de 0, 9798; por otro lado, para

las señas dinámicas, se desarrolló un descriptor basado en la trayectoria junto con los

clasificadores SVM, Random Forest, KNN y Naive Bayes, obteniendo la exactitud más

44

Page 56: Sistema para el aprendizaje del lenguaje de señas

alta con el clasificador SVM con un puntaje de 0, 9400 junto con el valor de F1-Score más

alto para el mismo clasificador con un puntaje de 0, 9390. De acuerdo con lo anterior,

para la clasificación de las señas estáticas se eligió el clasificador HOG junto con el

clasificador SVM y para las señas dinámicas se empleó el descriptor propuesto basado

en la trayectoria junto con el clasificador SVM.

Por último, de acuerdo con las encuestas realizadas a los voluntarios, se comprobó que

la aplicación tiene un tiempo de respuesta bastante bueno tanto en el arranque con un

60 % de aceptación como en el reconocimiento de las señas con un 80 % de aceptación, la

precisión de las señas dinámicas tiene muy buenos resultados con un 80 % de aceptación

pero para las señas estáticas se presentan fallas debido principalmente a los cambios

fuertes de iluminación, que la aplicación es intuitiva y fácil de manejar pero sin embargo

es importante mejorar el diseño gráfico y que la aplicación diseñada representa una

buena herramienta para el aprendizaje.

5.1. TRABAJO FUTURO

El rendimiento de la aplicación en términos de la efectividad de clasificación fue medido

con un conjunto de datos relativamente grande (3.600 muestras de señas estáticas y

1.800 muestras de señas dinámicas), aunque a nivel individual la cantidad de muestras

por cada seña puede aumentarse en tamaño y diversidad con el objetivo de mejorar el

rendimiento del sistema de clasificación en general; asimismo, con los algoritmos de ma-

chine learning convencionales se tiene un límite de rendimiento máximo dada su cons-

trucción, por lo que eventualmente el crecimiento del conjunto de datos podría generar

mejoras insignificantes en el sistema, de manera que podrían emplearse algoritmos más

complejos basados en el estado del arte de los algoritmos de aprendizaje automático

(Deep Learning), sacrificando el costo computacional.

En cuanto a los descriptores de las señas estáticas, es necesario tener en cuenta que

si bien el HOG demostró entregar mejores resultados con respecto a los demás descrip-

tores, no es invariante a la iluminación, por lo que en condiciones de iluminación preca-

rias puede generar la propagación de falsos positivos y falsos negativos en el sistema

y también que el sensor Microsoft Kinect no puede ser usado en exteriores puesto que

45

Page 57: Sistema para el aprendizaje del lenguaje de señas

entornos con abundante luz natural pueden causar sobre-exposición de las imágenes

RGB y generar ruido en el mapa de profundidad; de modo que emplear un sensor más

robusto y proponer un descriptor basado únicamente en información tridimensional (co-

mo descriptores sobre la nube de puntos de la mano) podría mejorar considerablemente

el rendimiento de la aplicación en cualquier entorno, aunque igualmente se sacrificaría

costo computacional.

Finalmente, de acuerdo con la retroalimentación de los voluntarios, es recomendable

modificar la interfaz de usuario de la aplicación, haciéndola ver más moderna y adaptable

a diferentes resoluciones de pantalla.

46

Page 58: Sistema para el aprendizaje del lenguaje de señas

Referencias

Abadi, M., Agarwal, A., Barham, P., Brevdo, E., Chen, Z., Citro, C., Corrado, G. S., Davis,

A., Dean, J., Devin, M., Ghemawat, S., Goodfellow, I., Harp, A., Irving, G., Isard, M., Jia,

Y., Jozefowicz, R., Kaiser, L., Kudlur, M., Levenberg, J., Mané, D., Monga, R., Moore,

S., Murray, D., Olah, C., Schuster, M., Shlens, J., Steiner, B., Sutskever, I., Talwar, K.,

Tucker, P., Vanhoucke, V., Vasudevan, V., Viégas, F., Vinyals, O., Warden, P., Watten-

berg, M., Wicke, M., Yu, Y., and Zheng, X. (2015). TensorFlow: Large-scale machine

learning on heterogeneous systems.

Behnel, S., Bradshaw, R., Citro, C., Dalcin, L., Seljebotn, D. S., and Smith, K. (2011).

Cython: The best of both worlds. Computing in Science and Engineering, 13(31–39).

Bradski, G. (2000). The opencv library. Dr. Dobb’s Journal of Software Tools.

Chana, C. and Jakkree, S. (2016). Hand gesture recognition for thai sign language in

complex background using fusion of depth and color video. University of Technology

Thanyaburi, Department of Electronics and Telecommunication Engineering.

Cruz, M. (2008). Gramática de la lengua de señas mexicana.

Cuenca, J. S. (2008). Reconocimiento de objetos por descriptores de forma. Universitat

de Barcelona, Facultat de Matemàtiques, Barcelona.

de la Escalera, A. (2001). Visión por Computador. Fundamentos y métodos. Prentice

Hall.

de la Escalera, A., Armingol, J. M., García, F., Gómez, D. M., and Al-Kaff, A. H. (2016).

Introducción a la visión por computador: desarrollo de aplicaciones con opencv.

Girod, B. (2013). Digital image processing.

Heikkilä, M., Pietikäinen, M., and Schmid, C. (2009). Description of interest regions with

local binary patterns. Pattern Recognition, 42(3):425 – 436.

Insor (2018). ¿qué es la lengua de señas?. Tomado de:

http://www.insor.gov.co/ninos/que-es-la-lengua-de-senas/.

47

Page 59: Sistema para el aprendizaje del lenguaje de señas

Kadambi, A., Bhandari, A., and Raskar, R. (2014). 3d depth cameras in vision: Benefits

and limitations of the hardware.

Khamar, S., Ganesan, P., Kanlist, V., Sathish, B. S., and Merlin, J. (2015). Comparative

study of skin color detection and segmentation in hsv and ycbcr color space.

Londoño, R. S. (2015). Aplicativo para apoyar el proceso de aprendizaje del lenguaje de

señas hacia un oyente mediante microsoft kinect.

López P., A., Valveny, E., and Vanrell, M. (2015). Detección de objetos.

Meng, H., Furao, S., and Jinxi, Z. (2014). Hidden markov models based dynamic hand

gesture recognition with incremental learning method.

Molinero D., G. (2010). Segmentación de imágenes en color basada en el crecimiento

de regiones.

Muñoz P., J. (2009). Procesameinto de imágenes.

Oliphant, T. (2006). A guide to numpy.

Otto Traian, S. C. (2014). Human-machine interface, tomado de:

https://commons.wikimedia.org/w/index.php?curid=31693853.

Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel,

M., Prettenhofer, P., Weiss, R., Dubourg, V., Vanderplas, J., Passos, A., Cournapeau,

D., Brucher, M., Perrot, M., and Duchesnay, E. (2011). Scikit-learn: Machine learning

in python. Journal of Machine Learning Research, 12:2825–2830.

PÉREZ, F. P. (2012). Reconocimiento de imágenes del lenguaje de señas mexicano.

INSTITUTO POLITÉCNICO NACIONAL, CENTRO DE INVESTIGACIÓN EN COMPU-

TACIÓN.

Pietikäinen, M., Hadid, A., Zhao, G., and Ahonen, T. (2011). Computer Vision Using Local

Binary Patterns. Springer Science and Business Media.

Plaza, J. A. (2015). Intérprete de lenguaje de signos para la comunicación de perso-

nas con discapacidad auditiva empleando el procesamiento de imágenes. Revista de

investigación - Universidad del Quindío.

48

Page 60: Sistema para el aprendizaje del lenguaje de señas

POUDEL, R. P. (2014). 3d hand tracking. Bournemouth University.

Puneet Kumar, J. and Seba, S. (2013). An adaptative single seed based region growing

algorithm for color image segmentation.

RIVERA, S. C., ÁLVAREZ, D. J., and RODRIGUEZ, R. J. (2013). Identificación de la

punta de los dedos de la mano en un plano 2d basado en kinect.

Rodríguez, C. P., Pineda, J. A., and Sánchez, D. F. (2013). Software que captura, por

medio de kinect, los datos de las señas manuales y los traduce a texto.

Sánchez, R. A. and Hurtado, J. I. (2015). Sistema intérprete del lengaje de señas colom-

biano (lsc) usando el sensor kinect.

Tovar, L. A. (2015). La importancia del estudio de las lenguas de señas.

Vargas, L., Barba, L., and Mattos, L. (2010). Sistema de identificación de lenguaje de

señas usando redes neuronales artificiales.

Vogler, C. and Metaxas, D. (2001). A framework for recognizing the simultaneous aspects

of american sign language. University of Pennsylvania, Department of Computer and

Information Science.

Wobbrock, J. O., Wilson, A. D., and Li, Y. (2007). Gestures without libraries, toolkits or

training: A $1 recognizer for user interface prototypes.

Yamashita, T. and Watasue, T. (2014). Hand posture recognition based on bottom-up

structured deep convolutional neural network with curriculum learning.

49

Page 61: Sistema para el aprendizaje del lenguaje de señas

APÉNDICES

A. Matrices de confusión de señas estáticas

(a) HOG (b) U-LBP

(c) SIGNATURE

Figura 32: Matrices de confusión para el clasificador de Naive bayes.

(a) HOG (b) U-LBP

(c) SIGNATURE

Figura 33: Matrices de confusión para el clasificador de SVM.

50

Page 62: Sistema para el aprendizaje del lenguaje de señas

(a) HOG (b) U-LBP

(c) SIGNATURE

Figura 34: Matrices de confusión para el clasificador de ANN.

(a) HOG (b) U-LBP

(c) SIGNATURE

Figura 35: Matrices de confusión para el clasificador de KNN.

51

Page 63: Sistema para el aprendizaje del lenguaje de señas

B. Matrices de confusión de señas dinámicas

Figura 36: Matriz de confusión para el clasificador de Naive bayes.

Figura 37: Matriz de confusión para el clasificador de KNN.

Figura 38: Matriz de confusión para el clasificador de Random Forest.

Figura 39: Matriz de confusión para el clasificador de SVM.

52

Page 64: Sistema para el aprendizaje del lenguaje de señas

C. Formato de encuesta

Malo Regular Bueno

1Cómoconsideraeltiempodearranquedelaaplicación

2

3

4

5

6

7

8

9

Encuestadeexperienciaconlaaplicación

Acontinuaciónencontraráunaencuestadenueve(9)preguntasqueresumensuexperienciaconlaaplicaciónenterminosdeefectividadyvelocidaddelaaplicacióndesarrollada.

Consideraqueelaplicativopermiteaprenderdeformarápidayefectiva

Cómoconsideralacantidaddeseñasdisponibles

Cómoconsideraeldiseñodelainterfazdeusuario

Puntaje

Cómoconsideralaformaenquesepresentanlosejemplosparaseñasestáticasydinámicas

Consideraquelainterfázdeusuarioesfacildeusarydenavegar

Cómoconsideraqueeslaprecisióndereconocimientodeseñasdinámicas

Cómoconsideralostiemposdereconocimientodelasseñas

Cómoconsideraqueeslaprecisióndereconocimientodeseñasestáticas

No. Pregunta

Cadapreguntacuentacontresposiblesrespuestas:Malo,RegularyBueno.Porfavorrespondalaspreguntasdeacuerdoconsuexperienciaconelusodelaaplicación

53