0% encontró este documento útil (0 votos)
108 vistas87 páginas

Sistema LSM en Tiempo Real con IA

El documento describe el desarrollo de una aplicación para la interpretación de la Lengua de Señas Mexicana (LSM) utilizando inteligencia artificial. Se diseñó una aplicación llamada "LSM Lite" que puede interpretar señas de una o dos manos en tiempo real mediante el uso de Python, MediaPipe y modelos de aprendizaje automático como árboles aleatorios entrenados con coordenadas de manos. La aplicación logró interpretar con un 90% de precisión palabras, letras, números y otros conceptos durante las pruebas con usuarios sord
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
108 vistas87 páginas

Sistema LSM en Tiempo Real con IA

El documento describe el desarrollo de una aplicación para la interpretación de la Lengua de Señas Mexicana (LSM) utilizando inteligencia artificial. Se diseñó una aplicación llamada "LSM Lite" que puede interpretar señas de una o dos manos en tiempo real mediante el uso de Python, MediaPipe y modelos de aprendizaje automático como árboles aleatorios entrenados con coordenadas de manos. La aplicación logró interpretar con un 90% de precisión palabras, letras, números y otros conceptos durante las pruebas con usuarios sord
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Instituto Tecnológico de San Juan del Río

Coordinación de Posgrado

Instituto Tecnológico de San Juan del Río


Ingeniería en Sistemas Computacionales

REPORTE DE INVESTIGACIÓN

SISTEMA DE INTERPRETACIÓN EN TIEMPO REAL DEL LENGUAJE DE


SEÑAS MEXICANO CON EL USO DE INTELIGENCIA ARTIFICIAL

P R E S E N T A N:
Melissa Naomi Guillén García
Manuel Ángel López Vázquez
Ana Paola Cerón Sánchez

A S E S O R (es):
Dra. Armida González Lorence

San Juan del Río, Querétaro a 14 de Septiembre 2023.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

Índice
1. Resumen.........................................................................................................................................

2. Introducción....................................................................................................................................

2.1 Marco Teórico..............................................................................................................................

2.2 Definición del problema...............................................................................................................

2.3 Justificación..................................................................................................................................

2.3.1 Social.....................................................................................................................................

2.3.2 Económica.............................................................................................................................

2.3.3 Tecnológica............................................................................................................................

2.3.4 Ambiental..............................................................................................................................

2.4 Hipótesis.......................................................................................................................................

2.5 Objetivos.......................................................................................................................................

2.5.1 Objetivo General....................................................................................................................

2.5.2 Objetivos Específicos............................................................................................................

3. Materiales y Métodos.....................................................................................................................

3.1 Universo / Muestra.......................................................................................................................

3.2 Definición de las variables y escalas de medición........................................................................

3.3 Metodología..................................................................................................................................

3.4 Prueba prototipo............................................................................................................................

4. Resultados.......................................................................................................................................

5. Conclusiones...................................................................................................................................

6. Fuentes de Información..................................................................................................................

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

1. Resumen

En el marco del desarrollo de la aplicación LSM Lite, se abordó la necesidad de contar con una
herramienta eficiente para la interpretación de la Lengua de Señas Mexicana (LSM) destinada a
personas con discapacidad auditiva. Los objetivos fundamentales de esta iniciativa fueron diseñar
una aplicación de fácil acceso, bajo costo y con una alta precisión en la interpretación de señas.
En la fase inicial, se seleccionaron tecnologías adecuadas como Python, MediaPipe y OpenCV para
llevar a cabo el desarrollo. Se procedió a la extracción de coordenadas y entrenamiento de la
Inteligencia Artificial (IA) mediante scikit-learn, creando modelos de árboles aleatorios para
clasificación. La detección de las coordenadas de las manos se realizó utilizando el módulo de
seguimiento de manos de MediaPipe.
Posteriormente, se desarrolló la interfaz final, incorporando la capacidad de capturar video en
tiempo real, detectar y dibujar conexiones en las manos, y emplear los modelos de aprendizaje
automático previamente entrenados para clasificar señas de una o dos manos. La aplicación
presentó las palabras o caracteres correspondientes en pantalla, con la opción de mostrar "No
Reconocido" en caso de señas no identificadas.
La fase de pruebas involucró a usuarios con discapacidad auditiva, quienes demostraron una fácil
accesibilidad y navegación intuitiva en la aplicación. Se cumplió con el objetivo de bajo costo,
evaluando diferentes recursos como equipo, personal, servicios e invitados. El presupuesto total de
desarrollo fue de $1,299 pesos mexicanos.
En cuanto a la precisión, se llevaron a cabo pruebas con un repertorio diverso de palabras
cuantificadas. La aplicación logró un nivel de precisión del 90%, superando las expectativas
iniciales del 50% y 70%. Las palabras fueron interpretadas con éxito, y se destacó la capacidad del
modelo para reconocer letras, verbos, números, personas y alimentos.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

2. Introducció n

En el vasto lienzo del progreso tecnológico, la presente investigación se abordó el desafío de


mejorar la comunicación para personas con discapacidad auditiva a través de la interpretación de la
Lengua de Señas Mexicana (LSM). La creación de la aplicación "LSM Lite" surgió como respuesta
a la necesidad de proporcionar una herramienta eficiente, accesible y asequible para facilitar la
comunicación mediante este medio visual y gestual.
La investigación se enfocó en el desarrollo de una aplicación capaz de interpretar señas de una o dos
manos, utilizando tecnologías de aprendizaje automático y visión por computadora. El problema
central era la limitada disponibilidad de herramientas accesibles y de bajo costo para la
interpretación de LSM, lo que representaba un obstáculo significativo para la inclusión de personas
con discapacidad auditiva en diversos contextos.
Desde la metodología aplicada hasta los resultados obtenidos, el trabajo se estructura de manera
coherente.
En el Capítulo 1: Metodología de Desarrollo, se describen las decisiones tomadas en la selección de
herramientas y tecnologías, destacando la elección de Python, MediaPipe y OpenCV. Se explora la
implementación de modelos de aprendizaje automático, enfocándose en la transición de TensorFlow
a scikit-learn.
En el Capítulo 2: Extracción de Coordenadas y Entrenamiento IA, se profundiza en el proceso de
extracción de coordenadas de manos mediante el módulo de seguimiento de manos de MediaPipe.
Se destaca el cambio a scikit-learn, explicando las ventajas de esta elección, y se introduce la
función de los árboles aleatorios en la interpretación de LSM.
El Capítulo 3: Interfaz Final explora el diseño y la implementación de la interfaz final de LSM Lite.
Se detalla la captura en tiempo real de video, la detección de manos con MediaPipe y la integración
de modelos de aprendizaje automático previamente entrenados, demostrando cómo la aplicación
clasifica y muestra las señas realizadas.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

En el Capítulo 4: Prueba Prototipo, se presenta una evaluación práctica de LSM Lite, utilizando una
variedad de pruebas de funcionalidad. Se analizan los materiales utilizados, se revisa el costo del
proyecto y se examina la precisión de la aplicación en situaciones de uso real.

2.1 Marco Teó rico

2.1.1. LSM

La Lengua de Señas Mexicana (por sus siglas, LSM) es la lengua que utilizan las personas
con discapacidad auditiva en México. Como otras lenguas, también posee su propia
sintaxis, gramática y léxico (CONADIS, 2016). La comunidad sorda no tiene un lenguaje
universal a nivel mundial, sino que cada país y/o región tiene una lengua de señas
específica. La LSM fue reconocida como una lengua nacional oficial el 10 de junio de 2005
(Galaz Palma, 2022).

La LSM se diferencia de la lengua oral por utilizar el canal viso-gestual en lugar del audio-
vocal (Galaz Palma, 2022), es decir, las palabras y frases del lenguaje son transmitidas
mediante gestos y movimientos por el emisor e identificadas por el receptor de manera
visual, sin ser necesarias señales auditivas.

De acuerdo a la Ley General para la Inclusión de las Personas con Discapacidad (Diario
Oficial de la Federación, 2023), la LSM se define como:

Lengua de una comunidad de sordos, que consiste en una serie de signos gestuales
articulados con las manos y acompañados de expresiones faciales, mirada intencional
y movimiento corporal, dotados de función lingüística, forma parte del patrimonio
lingüístico de dicha comunidad y es tan rica y compleja en gramática y vocabulario
como cualquier lengua oral.

En un mismo país se tienen diferencias entre la lengua de señas de la comunidad de sordos


hablada en distintas regiones del mismo, y México no es la excepción. Esto se refleja

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

también en la disparidad existente entre los diccionarios oficiales de la LSM. De acuerdo a


(Galaz Palma, 2022) “a pesar de que hay diccionarios oficiales de la lengua de señas como
Manos con voz de la ciudad de México y Manual de lengua de señas mexicanas establecido
en Puebla, estos pueden contener distintas traducciones para una misma palabra”. Un
ejemplo de lo anterior es la palabra piña, como puede apreciarse en la Figura 1.

Figura 1. Diferencia de la palabra piña en LSM (Galaz Palma, 2022) .

Otra peculiaridad de la LSM y otros lenguajes de señas es la flexibilidad de las estructuras


sintácticas. De acuerdo a (Meza Ramírez, Nava Oyorzabal, & Tlapala Escobar, 2019)
“Puede haber omisiones en el uso de artículos, preposiciones, conjunciones, pronombres o
alteraciones en los elementos de la oración (plurales, tiempos verbales, género). También
hay dificultades en la comprensión y la producción del léxico, esta es lenta, reducida e
inestable”.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

Esta flexibilidad se debe a que la LSM debe adecuarse a aspectos semánticos y pragmáticos
a los que no se enfrentan las lenguas escritas y orales, lo cual afecta también el orden de los
elementos gramáticos en esta lengua.

En la LSM, así como en otras lenguas de señas, la clase de verbos puede influir en el
orden de constituyentes que presenta. Aunque de manera general se puede decir que
en la LSM el orden de constituyentes que se observa en la mayoría de las
construcciones gramaticales es Sujeto-Verbo-Objeto (SVO), se presentan las
variaciones OSV, VOS, VSO, OVS y SOV, según el tipo de verbo que se utilice, así
como por situaciones pragmáticas y semánticas. (Meza Ramírez, Nava Oyorzabal, &
Tlapala Escobar, 2019).

Los aspectos particulares de la LSM hacen que diseñar y desarrollar un traductor en tiempo
real para la misma pueda convertirse en una tarea compleja, la que evidencia la necesidad
de apoyarse en las más avanzadas herramientas tecnológicas.

2.1.2. Inteligencia Artificial

El tema de la inteligencia artificial (por sus siglas, IA) es complejo y abarca una gran
cantidad de subtemas y conceptos que no son abarcados en este documento. Por tal motivo,
sólo es plasmada su definición y sus características principales en este apartado. Los
aspectos de la inteligencia artificial que serán utilizadas en la presente investigación, a
saber, redes neuronales y machine learning, son tratados en apartados posteriores.

Se pueden encontrar distintas definiciones de la inteligencia artificial. Según (Rouhiainen,


2018), se puede definir la IA como “La habilidad de los ordenadores para hacer actividades
que normalmente requieren inteligencia humana”, pero una definición más detallada, dada
por el mismo autor es “la capacidad de las máquinas para usar algoritmos, aprender de los
datos y utilizar lo aprendido en la toma de decisiones tal y como lo haría un ser humano”.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

Las herramientas tecnologías que utilizan la IA ya están siendo utilizadas en varios ámbitos
de la vida cotidiana y la industria para proporcionar una mayor eficiencia y rapidez en
diversas tareas. (Rouhiainen, 2018) proporciona una lista de estas tareas, algunas de las
cuales están relacionadas con los objetivos de la presente investigación:

 Reconocimiento de imágenes estáticas, clasificación y etiquetado: estas


herramientas son útiles para una amplia gama de industrias.
 Detección y clasificación de objetos: puede verse en la industria de vehículos
autónomos, aunque también tiene potencial para muchos otros campos.
 Procesamiento eficiente y escalable de datos de pacientes: esto ayudará a que
la atención médica sea más efectiva y eficiente.

Un aspecto importante de la IA es la llamada visión artificial o visión computacional (por


sus siglas, VC) que, de acuerdo a (Galaz Palma, 2022), consiste en:

El estudio para el procesamiento de imágenes para el reconocimiento y localización


de objetos de un entorno. Esto con el fin de desarrollar máquinas con la capacidad de
comprender y percibir una imagen, de forma similar a como lo realizan los seres
vivos.

El objetivo de la VC es extraer información de una imagen o secuencia de imágenes para su


interpretación automática por un sistema de cómputo. Según (Galaz Palma, 2022) hay
diferentes arquitecturas y etapas para llevar a cabo esta tarea, las cuales se escogen según la
información que se desea extraer de las imágenes; pero de forma general, se siguen las
etapas plasmadas en la Figura 2.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

Figura 2. Etapas generales de la visión por computadora (Galaz Palma, 2022) .

La VC y el procesamiento digital de imágenes pueden parecer sinónimos, ya que comparten


una serie de pasos y características en común. Sin embargo, tienen objetivos diferentes. El
procesamiento digital de imágenes altera la calidad de la imagen para que pueda ser mejor
comprendida por un ser humano o utilizada en otro proceso. Por el contrario, la VC procesa
la imagen para obtener información e interpretarla.

2.1.3. Redes neuronales

Las redes neuronales son un subconjunto de machine learning, el cual a su vez es un tipo de
inteligencia artificial que permite a un sistema aprender a través de los datos. De acuerdo a
(IBM, s.f.) las redes neuronales son también conocidas como redes neuronales artificiales
(ANN) o redes neuronales simuladas (SNN), y su nombre está inspirado por la similitud de
su estructura con la forma en que las neuronas del cerebro humano se comunican entre sí.

Las redes neuronales artificiales (ANN), se componen de capas de nodos, que


contienen una capa de entrada, una o más capas ocultas, y una capa de salida. Cada
nodo, o neurona artificial, se conecta a otro y tiene un peso y un umbral asociados. Si
la salida de cualquier nodo individual está por encima del valor de umbral

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

especificado, dicho nodo se activa, enviando datos a la siguiente capa de la red. De


lo contrario, no se pasan datos a la siguiente capa de la red. (IBM, s.f.).

Las redes neuronales utilizan una serie de datos de entrenamiento para aprender y mejorar
con el tiempo. Una vez que se han ajustado a la precisión necesaria son una gran
herramienta en el campo de la inteligencia artificial (IBM, s.f.). Las redes neuronales, como
otro tipo de aplicaciones de la inteligencia artificial, permiten realizar automáticamente
distintas tareas a gran velocidad. Según (IBM, s.f.):

Las tareas de reconocimiento de voz o reconocimiento de imágenes pueden llevar


minutos en lugar de horas en comparación con la identificación manual realizada por
expertos humanos. Una de las redes neuronales más conocidas es el algoritmo de
búsqueda de Google.

Es precisamente el reconocimiento de imágenes una aplicación de las redes neuronales que


es de interés para la realización de un traductor de LSM en tiempo real. En su investigación,
(Galaz Palma, 2022) utilizó el sistema OpenPose para detectar los movimientos que un
intérprete de LSM realizaba al comunicar una seña de este lenguaje. Según la misma autora,
OpenPose “cuenta con una red neuronal pre entrenada capaz de detectar la posición del
cuerpo humano, como también los gestos faciales y la posición de las manos”. Y de
acuerdo a la documentación de este software (Cao, y otros, s.f.), OpenPose es también “el
primer sistema multi-persona en tiempo real que detecta conjuntamente los puntos clave del
cuerpo, cara, manos y pies humanos en una única imagen”. Todo esto posible gracias a la
red neuronal con que cuentan, entrenada específicamente para detectar estos puntos clave.

En apartados posteriores se explica a detalle el funcionamiento de OpenCV, otro software


con una funcionalidad similar a OpenPose y que será utilizado para el desarrollo de la
presente investigación.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

2.1.4. Entrenamiento de redes neuronales

El entrenamiento de las redes neuronales se basa en su funcionamiento. Según (IBM, s.f.)


“cada nodo individual [es] su propio modelo de regresión lineal, compuesto por datos de
entrada, ponderaciones, un sesgo (o umbral) y una salida”. Cada nodo tiene una salida
binaria representada por la siguiente fórmula:

salida=
{1 , si ∑ w i x i +b ≥ 0
0 , si ∑ wi x i+ b<0

donde

x i es el valor de una variable de entrada,


w i es el peso o ponderación de la variable de entrada x i,
b es el sesgo o umbral del nodo.

De acuerdo a esta fórmula, si la salida excede un umbral dado, se activa un nodo, pasando
datos a la siguiente capa en la red. Esto implica que la salida de un nodo se convierte en la
entrada del siguiente. Este proceso de una red neuronal se conoce como feedforward.

Este tipo de entrenamiento de redes neuronales se puede aplicar mediante la librería Keras,
que forma parte de Tensorflow. De acuerdo a (Torres, 2018):

La función de activación rectified linear unit (ReLU) es una transformación muy


interesante que activa un solo nodo si la entrada está por encima de cierto umbral. El
comportamiento por defecto y más habitual es que mientras la entrada tenga un valor
por debajo de cero, la salida será cero, pero cuando la entrada se eleva por encima, la
salida es una relación lineal con la variable de entrada de la forma f (x) = x. La
función de activación ReLU ha demostrado funcionar en muchas situaciones
diferentes, y actualmente es muy usada.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

La Figura 3 muestra el funcionamiento de esta función:

Figura 3. Función de activación ReLU.

2.1.5. Integración de Python como lenguaje de programación

“Python es un lenguaje de programación ampliamente utilizado en la comunidad de ciencia


de datos e inteligencia artificial” (International Business school, 2023). En esta sección se
puede revisar la teoría detrás de Python y cómo puede ser utilizado como el lenguaje de
programación principal en la implementación del sistema de interpretación del lenguaje de
señas mexicano.

En palabras de la documentación de Python (Python, 2023)

Python es un lenguaje de programación potente y fácil de aprender. Tiene estructuras


de datos de alto nivel eficientes y un simple pero efectivo sistema de programación
orientado a objetos. La elegante sintaxis de Python y su tipado dinámico, junto a su
naturaleza interpretada lo convierten en un lenguaje ideal para scripting y desarrollo
rápido de aplicaciones en muchas áreas, para la mayoría de plataformas.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

Si bien es cierto que otros lenguajes como C++ pueden ser más rápidos y ofrecer un mayor
control sobre la gestión de la memoria, en palabras de la escuela en línea (aprendeIA, 2022)
“Python ha resultado ser el mejor lenguaje de programación para esta área. Ofrece grandes
librerías y marcos para todas las áreas de la Inteligencia Artificial.”

“Python cuenta con una gran cantidad de librerías y herramientas específicas para el
desarrollo de IA y machine learning, como TensorFlow, Keras, PyTorch, scikit-learn,
NumPy, OpenCV entre otras.” (aprendeIA, 2022). Estas librerías proporcionan
funcionalidades avanzadas para la implementación de algoritmos de aprendizaje
supervisado, no supervisado, por refuerzo, redes neuronales, procesamiento de imágenes,
procesamiento de texto y más, lo cual facilita el desarrollo de modelos de IA y machine
learning de manera eficiente.

La gran variedad de bibliotecas es una de las principales razones por las que Python es el
lenguaje de programación más popular para la IA. (International Business school, 2023)
“Se puede entender una biblioteca como un módulo o un grupo de módulos publicados por
diferentes fuentes como PyPi que incluyen un fragmento de código prescrito que permite a
los usuarios alcanzar alguna funcionalidad o realizar diferentes acciones.”

Las bibliotecas de Python para IA proporcionan elementos de nivel básico para que no se
tenga que codificar desde el principio cada vez. De esta manera, al crear o programar IA en
Python se reduce su tiempo de aprendizaje de las complejidades del stack y así pueden
comenzar con el desarrollo de Inteligencia Artificial (IA) y pasar a la creación de
Algoritmos y programas de IA.

2.1.6. MediaPipe como herramienta para el procesamiento de señales


de vídeo

MediaPipe es una biblioteca de código abierto de Google que proporciona herramientas


para el procesamiento de señales de vídeo en tiempo real (aprendeIA, 2022). En esta

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

sección se puede revisar la teoría detrás de MediaPipe y cómo puede ser utilizada para el
seguimiento y reconocimiento de gestos en las señales de vídeo de las manos y del cuerpo
de las personas que realizan la biomecánica del lenguaje de señas mexicano.

En palabras de (Google, 2023)

MediaPipe es una biblioteca de código abierto desarrollada por Google que se utiliza
para el procesamiento de señales de vídeo en tiempo real. Ofrece una serie de
soluciones y herramientas para el análisis y procesamiento de datos visuales,
incluyendo el seguimiento de puntos de interés en imágenes y videos, la detección de
gestos y acciones, el reconocimiento de objetos y caras, y la estimación de la pose
corporal, entre otros.

MediaPipe ofrece varios métodos y soluciones para el procesamiento de las manos en


imágenes y videos en tiempo real. Algunos de los métodos más comunes para el
procesamiento de las manos con MediaPipe los menciona la documentación oficial de
Python (Python, 2023):

mediapipe.solutions.hands: Esta es una solución completa de MediaPipe para la


detección y seguimiento de las manos en imágenes y videos. Proporciona un modelo
de aprendizaje profundo pre-entrenado que puede detectar hasta 21 puntos clave en
cada mano, incluyendo las articulaciones de los dedos, las muñecas y la palma. Esta
solución también ofrece la capacidad de realizar seguimiento de las manos en
secuencias de imágenes o videos, lo que permite el seguimiento continuo de las
manos a lo largo del tiempo.

mediapipe.python.solutions.drawing_utils: Esta es una herramienta útil que ofrece


MediaPipe para visualizar los resultados del procesamiento de las manos.
Proporciona métodos para dibujar líneas, puntos y áreas alrededor de las manos
detectadas, lo que permite la visualización de los resultados del seguimiento de las
manos en imágenes o videos.

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

mediapipe.python.solutions.handmark: Este es un módulo adicional de MediaPipe


que permite el procesamiento de las marcas de las manos en imágenes o videos.
Proporciona un modelo de aprendizaje profundo pre-entrenado que puede detectar y
etiquetar marcas específicas en las manos, como los nudillos, los pliegues de la piel y
los puntos de referencia anatómicos.

mediapipe.python.solutions.palm_detection: Este es otro módulo adicional de


MediaPipe que se centra en la detección de la palma de la mano en imágenes o
videos. Proporciona un modelo de aprendizaje profundo que puede detectar la palma
de la mano y estimar su orientación en el espacio tridimensional, lo que permite una
detección más precisa de la posición y la orientación de la mano.

2.1.7. Flujo de procesamiento de manos con MediaPipe

El flujo de procesamiento de manos en MediaPipe generalmente sigue los siguientes pasos


según (Python, 2023) :

Detección de manos: MediaPipe utiliza un modelo de detección previamente


entrenado para identificar la presencia y la ubicación aproximada de las manos en
una imagen o un flujo de vídeo. El modelo de detección se entrena con grandes
cantidades de datos etiquetados para aprender a identificar características distintivas
de las manos, como la forma y la textura.

Seguimiento de manos: Una vez que se detectan las manos, MediaPipe realiza el
seguimiento de las mismas a través del tiempo en sucesivos fotogramas del vídeo.
Esto se realiza mediante técnicas de seguimiento de objetos, donde se buscan
características únicas de las manos, como los dedos y las articulaciones, para
determinar su movimiento y posición en cada fotograma.

Extracción de características: MediaPipe extrae características detalladas de las


manos, como las posiciones de las articulaciones, los dedos y la dirección de los

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

dedos. Estas características se utilizan para describir la forma y la postura de las


manos, y son utilizadas para inferir gestos y acciones de las manos.

2.1.8. Flujo de procesamiento de manos con MediaPipe

En palabras de la documentación (Google, 2023):

En la detección de manos con MediaPipe, se identifican 21 puntos de referencia


clave en cada mano. Estos puntos permiten una representación detallada de la
posición y la forma de la mano. Aquí están los 21 puntos de referencia y en la Figura
4 se muestra gráficamente :

1. Muñeca (Wrist) 8. Dedo medio - Nudillo


(Middle finger -
2. Pulgar - Metacarpiano
Knuckle)
(Thumb - Metacarpal)
9. Dedo medio - Puntas
3. Pulgar - Articulación
de los dedos (Middle
de la base (Thumb -
finger - Tip)
Carpometacarpal joint)
10. Dedo anular - Nudillo
4. Pulgar - Nudillo
(Ring finger - Knuckle)
(Thumb - Knuckle)
11. Dedo anular - Puntas
5. Pulgar - Puntas de los
de los dedos (Ring
dedos (Thumb - Tip)
finger - Tip)
6. Índice - Nudillo (Index
12. Dedo meñique -
- Knuckle)
Nudillo (Pinky finger -
7. Índice - Puntas de los Knuckle)
dedos (Index - Tip)

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
Instituto Tecnológico de San Juan del Río
Coordinación de Posgrado

13. Dedo meñique - Puntas 21. Punto medio entre la


de los dedos (Pinky punta del dedo índice y
finger - Tip) la punta del dedo
meñique (Midpoint
14. Palma - Centro (Palm -
between the tip of the
Center)
index finger and the tip
15. Palma - Base del dedo of the pinky finger)
pulgar (Palm - Base of
thumb)

16. Palma - Base del dedo


índice (Palm - Base of
index finger)

17. Palma - Base del dedo


medio (Palm - Base of
middle finger)

18. Palma - Base del dedo


anular (Palm - Base of
ring finger)

19. Palma - Base del dedo


meñique (Palm - Base
of pinky finger)

20. Muñeca - Centro entre


los dos puntos de
muñeca (Wrist - Center
between the two wrist
points)

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
TECNOLÓGICO NACIONAL DE MÉXICO
Instituto Tecnológico de San Juan del Río

Figura 4. Los 21 Puntos de referencia de la librería (Python, 2023) .

Estos puntos de referencia permiten una representación detallada de la mano y son útiles en
aplicaciones como la interacción en realidad virtual, la animación por ordenador, la
detección de gestos y muchas otras áreas.

2.1.9. Algoritmos de Machine Learning

La elección del algoritmo depende de varios factores, como la naturaleza de los datos de
entrada, la complejidad del problema de traducción o biomecánica de los movimientos de la
LSM, además, los recursos computacionales disponibles y los objetivos de precisión y
rendimiento del sistema.

Sin embargo, los modelos/algoritmos más usados dentro del procesamiento de información
son las siguientes:

Av. Tecnológico #2 Col. Centro C.P.76800 San Juan del Río, Querétaro.
Tel. 4272724118 o 4272724178 ext.: 1950 e-mail: [email protected]
 Redes neuronales convolucionales (Convolutional Neural Networks, CNN):
(Python, 2023) “Las CNN son un tipo de red neuronal profunda ampliamente
utilizado en tareas de procesamiento de imágenes y visión por computadora. Son
especialmente eficaces en la extracción de características de imágenes y pueden ser
utilizadas para aprender patrones visuales en las señas de lenguaje de señas.”

 Redes neuronales recurrentes (Recurrent Neural Networks, RNN): (Selvaraj, NC,


Kumar, & Khapra, 2021) “Las RNN son un tipo de red neuronal que pueden ser
adecuadas para modelar secuencias de datos, como las secuencias de gestos de
lenguaje de señas. Las RNN tienen la capacidad de recordar estados anteriores y son
adecuadas para capturar la temporalidad y la secuencia de los datos en el lenguaje de
señas.”

 Redes neuronales transformer: (Rodríguez, 2020) “Las redes neuronales transformer


son un tipo de red neuronal que se han utilizado con éxito en tareas de
procesamiento del lenguaje natural, como la traducción de texto. Estas redes son
especialmente efectivas en la modelización de relaciones de largo alcance en
secuencias de datos y podrían ser aplicadas para modelar secuencias de gestos de
lenguaje de señas.”

 Máquinas de vectores de soporte (Support Vector Machines, SVM): (APD, 2020)


“Las SVM son un tipo de algoritmo de aprendizaje supervisado que se han utilizado
con éxito en tareas de clasificación. Si se cuenta con un conjunto de datos
etiquetados de gestos de lenguaje de señas, las SVM podrían ser utilizadas para
clasificar los gestos en diferentes categorías.”

 Árboles de decisión y Bosques Aleatorios (Decision Trees and Random Forests):


(APD, 2020) “Los árboles de decisión y los bosques aleatorios son algoritmos de
aprendizaje supervisado que pueden ser utilizados para clasificar datos en diferentes
categorías. Son relativamente simples de entender e implementar, y pueden ser
utilizados para clasificar los gestos de lenguaje de señas en diferentes categorías.”
2.1.10. OpenCV

Open CV es una biblioteca de código abierto que incluye varios cientos de algoritmos de
visión por computadora que es capaz de aprender de forma automática. OpenCV
proporciona una amplia variedad de algoritmos y herramientas para procesamiento de
imágenes y video, detección y reconocimiento de objetos, seguimiento de objetos en tiempo
real, análisis de movimiento, calibración de cámaras, entre otros. La biblioteca está escrita
en C++ y se puede utilizar en una variedad de lenguajes de programación, incluyendo
Python, Java y MATLAB.

Cuenta con una estructura modular, es decir, que hace uso de diferentes bibliotecas
compartidas o estáticas, como por ejemplo los mencionados en (Google, 2023):

 Funcionalidad principal (núcleo): un módulo compacto que define estructuras de


datos básicas, incluida la matriz de matriz multidimensional densa Mat y las
funciones básicas utilizadas por todos los demás módulos.

 Procesamiento de imágenes (imgproc): un módulo de procesamiento de imágenes


que incluye filtrado de imágenes lineales y no lineales, transformaciones de
imágenes geométricas (cambio de tamaño, deformación afín y en perspectiva,
reasignación genérica basada en tablas), conversión de espacio de color,
histogramas, y así.

 Análisis de video: un módulo de análisis de video que incluye estimación de


movimiento, resta de fondo y algoritmos de seguimiento de objetos.

 Calibración de cámara y reconstrucción 3D: algoritmos básicos de geometría de


múltiples vistas, calibración de cámara única y estéreo, estimación de pose de
objeto, algoritmos de correspondencia estéreo y elementos de reconstrucción 3D.

 Marco de características 2D: detectores de características sobresalientes,


descriptores y cargadores de descriptores.
 Detección de objetos: detección de objetos e instancias de las clases predefinidas
( por ejemplo, caras, ojos, tazas, personas, automóviles, etc. ).

 GUI de alto nivel: una interfaz fácil de usar con capacidades simples de interfaz de
usuario.

 Video E / S: una interfaz fácil de usar para la captura de video y los códecs de
video.

 Algunos otros módulos auxiliares, como FLANN y envoltorios de pruebas de


Google, enlaces de Python y otros.

2.1.11. Gestión de memoria en OpenCV

OpenCV maneja la memoria de forma automática utilizando un sistema de gestión de


memoria inteligente. Esta característica permite que los desarrolladores no tengan que
preocuparse por la asignación y liberación de memoria manualmente, facilitando el
desarrollo de aplicaciones y reduciendo el riesgo de errores de memoria.

El sistema de gestión de memoria de OpenCV utiliza una técnica llamada "puntero


inteligente" o "smart pointer" en inglés. Los punteros inteligentes son objetos que actúan
como punteros convencionales, pero que también incorporan la funcionalidad de gestión de
memoria. En OpenCV, se utilizan principalmente dos tipos de punteros inteligentes: cv::Ptr
y cv::Mat.

cv::Ptr es un puntero inteligente que se utiliza para gestionar la memoria de objetos de


OpenCV. cv::Ptr mantiene un contador interno de referencias y libera automáticamente el
objeto cuando ya no hay referencias a él.

cv::Mat es un puntero inteligente que se utiliza para gestionar la memoria de matrices y


otros objetos relacionados con la imagen. cv::Mat mantiene un contador interno de
referencias y libera automáticamente la memoria cuando ya no hay referencias a la matriz.
std :: vector, cv :: Mat, y otras estructuras de datos utilizadas por las funciones y métodos
tienen destructores que desalojan los búferes de memoria subyacentes cuando es necesario.
Esto significa que los destructores no siempre desalojan los topes como en el caso de Mat.
Tienen en cuenta el posible intercambio de datos. (Google, 2023)

2.1.12. Webcam

Una webcam es una cámara de pequeñas dimensiones que generalmente se encuentra


integrada en ordenadores portátiles, o bien como dispositivo de entrada USB hacia el
ordenador.

La manera en que funciona una webcam en palabras de (Bercial, 2023) “Una webcam está
compuesta pocos componentes, en su interior encontraremos una placa electrónica
que albergará el sensor y la circuitería necesaria para convertir la información de imagen en
0´s y 1´s que el ordenador podrá comprender a través de un bus USB”. Su principal objetivo
era y es poder compartir imágenes y videos, ya no solo de manera estática, sino también en
vivo y en directo para divulgar información hacía un público activo, puede ser en alguna
página web, red social, noticiero, película, etc.

Siendo así, que el uso de una webcam en un traductor de LSM en tiempo real puede ser
beneficioso para permitir que los usuarios puedan ver al intérprete mientras traduce.
Además, la webcam también puede ser utilizada para la captura de imágenes de la mano del
usuario para la detección de señas y la posterior traducción. Mejorando la precisión del
traductor y permitiendo una comunicación más fluida entre los usuarios de LSM y aquellos
que no conocen la lengua de señas.

Sin embargo, es importante tener en cuenta que la privacidad de los usuarios debe ser
protegida y se deben tomar medidas adecuadas para garantizar que las imágenes capturadas
por la webcam no sean utilizadas con fines malintencionado.
2.1.13. TensorFlow

Tomando en cuenta la página oficial de TensorFlow (TensorFlow, 2022) es una biblioteca


de código abierto para aprendizaje automático a través de un rango de tareas, fue
desarrollado por Google para satisfacer sus necesidades de sistemas capaces de construir y
entrenar redes neuronales para detectar y descifrar patrones y correlaciones, análogos al
aprendizaje y razonamiento usados por los humanos.

Una de las grandes ventajas de acuerdo con (TensorFlow, 2022) al usar esta herramienta es
su flexibilidad, se puede usar para expresar una amplia variedad de algoritmos, incluyendo
algoritmos de entrenamiento e inferencia para modelos de redes neuronales profundas, ha
sido usado para realizar investigaciones e implementación de sistemas de aprendizaje
automático en producción en más de una docena de áreas de ciencias de la computación y
otros campos, incluidos el reconocimiento de voz, la visión por computadora, la robótica, la
recuperación de información, el procesamiento del lenguaje natural, la extracción de
información geográfica y el descubrimiento computacional de fármacos.

Es una herramienta versátil, capaz de adaptarse a los lenguajes de programación que se


necesite, según la documentación oficial (Tensor Flow Doc, 2022) es compatible con varios
lenguajes de programación, incluyendo Python, C++, Java, Go, Rust, JavaScript, Swift y R.

Es una herramienta excelente para el desarrollo de este proyecto, al tener la capacidad de


aprender automáticamente y sintetizar la nueva información, brinda la escalabilidad
necesaria para crear un modelo de aprendizaje en LSM de manera innovadora, abriendo
paso a nuevas implementaciones en el tema y expansión del conocimiento hacia este sector
de la población.
2.1.14. Scikit-learn como machine learning alternativo

En base a la forma de trabajo de Tensorflow es importante notar que esta librería consume
demasiados recursos de una computadora, es por ese motivo que se ha optado por buscar
una nueva alternativa mucho más liguera y que ofrezca resultados similares.

En palabras de (scikit-learn, 2023) Scikit-learn, también conocida como sklearn, es una


popular biblioteca de Python utilizada para el aprendizaje automático (machine learning).
Proporciona una amplia gama de herramientas y funciones que facilitan la creación,
entrenamiento y evaluación de modelos de aprendizaje automático. A continuación, te
explico cómo funciona y algunas de las funciones que puedes utilizar en scikit-learn:

Funcionamiento básico:

 Importación de la biblioteca: Primero, debes importar la biblioteca scikit-learn en tu


entorno de Python usando el comando import sklearn.

 Carga de datos: Antes de construir modelos, necesitas cargar tus datos en estructuras
adecuadas, como matrices NumPy o pandas DataFrames.

 Selección del modelo: Scikit-learn ofrece una amplia gama de algoritmos de


aprendizaje automático, como clasificación, regresión, clustering, etc. Debes
seleccionar el modelo adecuado para tu tarea.

 División de datos: Divide tus datos en conjuntos de entrenamiento y prueba para


evaluar la eficacia del modelo.

 Entrenamiento: Utiliza el conjunto de entrenamiento para entrenar tu modelo


utilizando el método fit().

 Predicción: Después de entrenar, puedes hacer predicciones en nuevos datos usando


el método predict().
 Evaluación: Evalúa la calidad de las predicciones utilizando métricas apropiadas
según el tipo de problema (precisión, MSE, AUC, etc.).

Algunas funciones y módulos clave en scikit-learn:

Modelos de aprendizaje:

 sklearn.linear_model: Contiene modelos de regresión lineal y logística.

 sklearn.tree: Contiene modelos de árboles de decisión y bosques aleatorios.

 sklearn.svm: Implementa máquinas de soporte vectorial para clasificación y


regresión.

 sklearn.cluster: Proporciona algoritmos de clustering, como k-means.

Preprocesamiento de datos:

 sklearn.preprocessing: Ofrece herramientas para escalar, normalizar y


codificar características.

 sklearn.feature_extraction: Contiene técnicas para extraer características de


datos sin procesar.

Evaluación de modelos:

 sklearn.metrics: Contiene funciones para calcular métricas de evaluación,


como precisión, recall, F1-score, etc.

Selección de modelos y validación cruzada:

 sklearn.model_selection: Proporciona funciones para seleccionar modelos y


realizar validación cruzada.

Reducción de dimensionalidad:
 sklearn.decomposition: Contiene técnicas como PCA (Análisis de
Componentes Principales) y LDA (Análisis Discriminante Lineal).

Pipelines y transformadores:

 sklearn.pipeline: Permite crear flujos de trabajo de procesamiento de datos y


modelado.

2.2 Definició n del problema

La situación actual de acuerdo a (Secretaría de Salud del Gobierno de México, 2021):

En México, aproximadamente 2.3 millones de personas padecen discapacidad auditiva, de


las cuales más de 50 por ciento son mayores de 60 años; poco más de 34 por ciento tienen
entre 30 y 59 años y cerca de 2 por ciento son niñas y niños.

Sin embargo, según datos del Instituto Nacional de Estadística y Geografía (INEGI) publicados por
el periódico “El Occidental” (Arenas, 2019) “Hay alrededor de 75 mil personas sordas que utilizan
el LSM como única lengua.” Mientras que, el Consejo para Prevenir y Eliminar la Discriminación
(COPRED, 2021) estipula que:

400 mil personas con discapacidad auditiva (…) enfrentan una enorme cantidad de
restricciones que les impiden contar con mecanismos de interacción y relación con la
sociedad, aún y cuando desde 2003 la Lengua de Señas Mexicana es reconocida legalmente
como lengua nacional.

Una de estas restricciones se ve reflejada en el acceso a la educación, que, al ser limitado para este
sector de la población, afecta de igual manera el acceso a oportunidades en el ámbito laboral, entre
otros. Hay herramientas tecnológicas que se han desarrollado para reducir este problema. Como
explica (Galaz Palma, 2022), “se desarrolló una plataforma en el TecNM/Instituto Tecnológico de
Hermosillo, por el MCC Ernesto Darío Barraza Granillo. Esta plataforma cuenta con la mayoría de
las funcionalidades necesaria para una traducción en tiempo real del español mexicano al LSM”. Sin
embargo, la misma autora (Galaz Palma, 2022) expone los problemas con esta plataforma, a saber:
“algunos módulos no cuentan con un desarrollo adecuado, provocando fallas en la traducción del
español al LSM”.

Derivado de esto, se observa que las personas con discapacidad auditiva padecen de una gran falta
de integración social y no se tienen los recursos tecnológicos adecuados para su ayuda. Como lo
menciona (COPRED, 2021), tecnológicamente y socialmente hay deficiencia de soporte para la
LSM. No obstante, tecnologías en el mercado, tales como Showleap y Voz y Señas son opciones que
para la población mexicana con discapacidad auditiva no cubren lo suficiente en el campo de la
LSM, ya que están enfocadas en la Lengua de Señas Americana (por sus siglas en inglés, ASL).
Adicionalmente, éstas son posibles soluciones bastante caras al incorporar IoT, sin mencionar que la
mayoría se encuentran centradas en mercados de lenguaje de señas anglosajones, como lo son
Estados Unidos, Inglaterra y Canadá (Sacristán, 2019).

Por ende, se abre la oportunidad de crear un intérprete en tiempo real 100% mexicano y dedicado al
LSM, que satisfaga las necesidades de la población mexicana con discapacidad auditiva.

2.3 Justificació n

2.3.1 Social
Un software en tiempo real de traducción de la LSM es útil para permitir la comunicación
efectiva entre personas sordas o con discapacidad auditiva y personas oyentes que no
conocen la LSM. Esto puede ser especialmente importante en situaciones donde la
comunicación clara y precisa es esencial, como en el ámbito médico, educativo, laboral,
cuestiones económicas, social y en situaciones de emergencia.
Además, un software de este tipo también puede ayudar a reducir las barreras de
comunicación y la discriminación que las personas sordas o con discapacidad auditiva a
menudo enfrentan en su vida diaria. Al proporcionar una forma efectiva de comunicación
bidireccional entre personas sordas y oyentes, se puede fomentar una mayor inclusión y
participación social, así como una mayor comprensión y respeto hacia la comunidad sorda
(Hernández Cruz, 2019)
Una herramienta tecnológica de esta índole puede tener una gran repercusión social en
términos de inclusión y accesibilidad para las personas sordas o con discapacidad auditiva.
La mayoría de la información disponible en línea se presenta en formato de texto o audio, lo
que puede ser difícil para las personas sordas o con discapacidad auditiva para acceder y
comprender. Con un software de traducción de LSM, se puede proporcionar una alternativa
eficiente y efectiva que les permita acceder a la información en tiempo real de una manera
que sea más accesible para ellos.
Además, este tipo de software puede ayudar a reducir la barrera comunicacional que existe
entre las personas sordas y las personas que no tienen discapacidad auditiva. Esto puede
tener un gran impacto en la calidad de vida de las personas sordas, ya que les permite
participar más plenamente en la sociedad, especialmente en situaciones como reuniones,
conferencias, eventos en vivo, entre otros.
Una herramienta así puede proporcionar lo necesario para la inclusión y la mejora de
oportunidades, como dice Vázquez García “La comunidad de silla de ruedas pelea que haya
rampas y acceso para ellos, ahora si englobamos todas las discapacidades si falta mucho. En
este caso es la comunicación, si un sordo va al ayuntamiento a hablar con el presidente no
hay interprete, les dan prioridad a otras cosas, debería haber al menos cursos y una persona,
en empresas privadas como una farmacia tampoco hay” (Morales, 2021), la falta de apoyo
para estos sectores es enorme, pero aportando un software traductor no solo se ayudaría a la
comunidad sorda, sino también a los oyentes que quieran aprender, o bien, tengan de manera
fácil y rápida algo que pueda ayudarles a comprender o comunicar lo que se necesita.

2.3.2 Econó mica


El desarrollo e implementación de una herramienta gratuita que traduzca en tiempo real la
LSM, además de apoyar de diversas maneras en la integración social de las personas con
discapacidad auditiva, puede ser un apoyo significativo a la economía de este sector de la
población mexicana. La falta de oportunidades para el acceso a la educación transmitida
mediante la LSM, afecta de igual manera al número y la calidad de opciones en el ámbito
laboral (Galaz Palma, 2022). Además, de acuerdo a (Buendía, 2019):
Únicamente tres de cada 10 jóvenes sordos, es decir 41 mil 103, obtienen
recursos para vivir mediante un trabajo fijo. El 67% (83 mil 451) tienen que
buscar ingresos por otros medios como programas de gobierno, pensiones,
renta de inmuebles o cualquier otra labor. En los adultos la situación es
similar. La mitad, es decir 304 mil 758, no cuentan con recursos económicos
propios.
La traducción en tiempo real de LSM permitiría, por lo tanto, ayudar a la integración
educativa de las personas sordas y sordomudas en escuelas convencionales, lo que a su vez
acrecentaría su desarrollo profesional y el porcentaje de personas sordas sin recursos
económicos propios se vería disminuido. En resumen, el auxilio de este sector a la población
a través de la herramienta a desarrollar llevaría a una disminución de su vulnerabilidad
económica.
Otro aspecto económico importante en el que la traducción de LSM en tiempo real puede ser
de gran utilidad es en cuanto al costo que representa el contratar intérpretes de esta lengua en
las dependencias del gobierno y en diversas instituciones privadas. Según informa
(Redacción La Silla Rota, 2020) “El gobierno federal destina alrededor de 11 mil pesos
mensuales en la nómina individual de los traductores de los mensajes presidenciales a
lenguaje sordomudo”, además, de acuerdo al mismo autor “la nómina de algunos ayudantes
generales, y otros trabajadores del área de Comunicación en Presidencia, alcanza hasta los 50
mil pesos mensuales”.
La herramienta a desarrollar en este proyecto, con una implementación adecuada, podría
permitir reducir el gasto en personal de interpretación de LSM en el gobierno de México a
distintos niveles. En gobiernos municipales de bajos recursos, donde por esta cuestión no se
cuenta con un intérprete capacitado para atender a la población sorda o sordomuda, la
herramienta de traducción puede convertirse en una solución a este problema y evitar un
gasto importante para las comunidad y municipios marginados económicamente.
2.3.3 Tecnoló gica
El desarrollo de un traductor en tiempo real de la LSM con redes neuronales y machine
learning, para muchos sonara a un proyecto altamente ambicioso y con un coste exorbitante,
sin embargo, son tecnologías que si bien su nombre es demasiado técnico para la mayoría
actualmente se encuentran en un punto totalmente accesible como lo menciona (Cortés,
2022) en la revista tecnológica CIO México:
En la actualidad, aunque aún nos sigue pareciendo lejano el hecho de
programar algo tan complejo como la mente humana, estamos viviendo un
avance tremendo en el uso del Machine Learning con librerías y modelos
gratuitos que se desarrollan por empresas o comunidades de desarrolladores
Lo que resalta dos cosas, en primera es que la implementación y desarrollo del traductor en
tiempo real de la LSM sea mucho menos costoso en términos monetarios al contar con
modelos y redes neuronales programables como lo proporciona MediaPipe y segundo es que
como lo menciona (Rodríguez, 2020):
La adopción de la Inteligencia Artificial (IA) creció de forma constante en
todo el mundo, con el 31% de las empresas en México indicando que han
implementado activamente la IA, de acuerdo con el estudio Global AI
Adoption Index 2022, realizado por Morning Consult a petición de IBM.
La era digital y de las IA es ahora y no se tiene que desaprovechar el momento en el que se
está migrando a esta nueva tecnología
Sin embargo, aunque actualmente la tecnología es basta como se ha mencionado, México no
se ha desarrollado a la misma velocidad que el resto del mundo, en palabras del periódico
digital (Urbeconomica, 2021) “México registra un atraso tecnológico de entre dos y tres
años con respecto a las economías avanzadas.” Poniendo en tela de juicio el nivel de la
tecnología en México, sin embargo, el desarrollo de un traductor de la LSM no solo favorece
el estatus de la tecnología mexicana actual, sino que, provee de ideas a los demás interesados
en las redes neuronales y el machine learning para implementarlos en proyectos diferentes y
aumentar el nivel de la tecnología mexicana.
No obstante, el punto cumbre del por qué es requiere la implementación de un traductor en
tiempo real de la LSM (al menos en el ámbito tecnológico) es que, desgraciadamente, los
traductores existentes son carentes en muchas áreas diferentes, se pude mencionar a Voz y
Señas que su intención es bastante buena al crear un traductor de texto a lenguaje de señas,
sin embargo, se complica al usuario estar tecleando lo que se quiere decir y después esperar a
traducirlo y mostrarlo a la persona con discapacidad auditiva.
Tecnologías insuficientes para poder proveer conversaciones afectivas y continuas se vuelve
un poco tedioso para ambas partes (para la persona con disparidad auditiva y la que no) y las
que proporcionan traducción en tiempo real, son menudo gadgets y con equipo costoso como
lo menciona (Sacristán, 2019) “El precio inicial de Showleap es de 1200 dólares a precio
comercial ” dinero que aunque actualmente en 2023 el dólar se encuentre por los 18-19
MXN sigue siendo una inversión bastante cara.

2.4 Hipó tesis

El fácil acceso y bajo costo de la tecnología de traducción de LSM en tiempo real permitirá mejorar
la comunicación entre al menos una persona con discapacidad auditiva y personas sin discapacidad
entendiendo entre un 50 y 70% de la intención.

2.5 Objetivos

2.5.1 Objetivo General


Implementar un traductor en tiempo real de la LSM, basada en dos tecnologías avanzadas 1)
Redes neuronales con MediaPipe 2) Machine learning con Open CV para reconocer patrones
de movimiento de las señas propias del LSM y mejorar la comunicación entre personas con
discapacidad auditiva y personas sin discapacidad.

2.5.2 Objetivos Específicos


 Aprender señas básicas de la LSM por medio de la plataforma web Edutin.com, para
comprender la biomecánica de los movimientos de estas señas y su significado.
 Investigar la tecnología de las redes neuronales utilizadas en la librería MediaPipe,
analizando la documentación oficial de dicha librería, para evaluar su empleabilidad en el
traductor como herramienta de detección de precisión de movimientos de las manos y
dedos en tiempo real.

 Investigar la tecnología de machine learning utilizada en la librería OpenCV, analizando


la documentación oficial de dicha librería, para evaluar su empleabilidad en el traductor
como herramienta de entrenamiento y retroalimentación de la inteligencia artificial.

 Desarrollar un algoritmo de captura de movimiento de señas básicas de la LSM en


tiempo real que sea capaz de detectar con precisión los movimientos y posiciones de
manos y dedos, mediante el uso de redes neuronales de MediaPipe para su clasificación,
etiquetado y almacenaje en un sistema de archivos.

 Diseñar un modelo de aprendizaje automático a través del machine learning provisto por
OpenCV, que sea capaz de identificar y clasificar los gestos y movimientos de las manos
en señas correspondientes al vocabulario de la LSM.

 Integrar el sistema de captura de señas con el modelo de aprendizaje automático


mediante el desarrollo de un software en lenguaje de programación Python para la
traducción en tiempo real de la LSM.

 Evaluar y mejorar la precisión del programa a través de pruebas con usuarios reales en
diferentes situaciones y entornos, con el fin de garantizar una experiencia de usuario
satisfactoria y efectiva.
3. Materiales y Métodos

3.1 Universo / Muestra

Universo de estudio
El universo de estudio abarca a todas las personas que se comunican de esta manera en México, lo
que incluye tanto a individuos con discapacidad auditiva que utilizan LSM como su principal forma
de comunicación, así como a aquellos que se comunican con ellos utilizando esta tecnología.
Debido a la amplitud de este universo, llevar a cabo un estudio en toda esta población sería
impracticable y costoso. Por lo tanto, es necesario definir una muestra representativa que permita
obtener resultados significativos y generalizables a partir de un grupo más pequeño pero
representativo de individuos.

Muestra
La muestra estadística seleccionada es con 1 persona con discapacidad auditiva que se comunican
utilizando LSM y el equipo de desarrollo del proyecto que no cuenta con ninguna discapacidad que
se comunican con ellos a través de esta tecnología de traducción en tiempo real.
Método de selección: Utiliza métodos de muestreo adecuados, como el muestreo aleatorio simple o
estratificado, para garantizar que la muestra sea representativa de la población objetivo.

3.2 Definició n de las variables y escalas de medició n

Variable independiente: Uso de tecnología de traducción en lenguaje de señas.


Variable dependiente: Mejora en la comunicación del 50% al 70% de mejora en la intención de
comunicación.
Variables de control:
- Edad de la participante
- Experiencia previa con LSM
- Calidad de la tecnología utilizada.
Escalas de medición:
- Escala binaria (sí/no).
- Escala numérica de porcentaje de mejora, de 1 a 100.
- Considerar aspectos éticos al trabajar con participantes con discapacidad auditiva
- Asegurar obtener el consentimiento informado de todos los participantes.

3.3 Metodología

3.3.1. Video Streaming


Los módulos para la captación del video streaming en palabras de (OpenCV, 2023) son los
siguientes:
 read(): Este método se utiliza para leer un fotograma (imagen) de la fuente de video que
es la web cam. Devuelve dos valores: ret y frame. ret es un valor booleano que indica si
se pudo leer correctamente el fotograma (verdadero si se pudo leer y falso si no). frame
es el propio fotograma.
 putText(): Este método se utiliza para agregar texto a una imagen o un fotograma. Da la
posibilidad de controlar la posición, la fuente, el tamaño, el color, el grosor de la línea y
otros parámetros relacionados con el texto.
 imshow(): Este método se utiliza para mostrar una imagen o un fotograma en una
ventana. Se proporciona el nombre de la ventana en la que se mostrará la imagen y la
propia imagen o fotograma.
 waitKey(): Este método se utiliza para esperar una tecla presionada. Se suele utilizar
junto con imshow() para mostrar una imagen y luego pausar el programa hasta que se
presione una tecla. El valor devuelto es el código ASCII de la tecla presionada.
 release(): Este método se utiliza para liberar recursos asociados a una fuente de video,
como una cámara o un archivo de video.
 destroyAllWindows(): Este método se utiliza para cerrar todas las ventanas abiertas por
imshow().

El código documentado para la captación de video se muestra en la Figura 5:


Figura 5. Video Streaming con open cv

import cv2, importa la biblioteca OpenCV, que se utiliza para el procesamiento de imágenes
y videos. cap = cv2.VideoCapture(0), crea un objeto cap que representa la captura de video
desde la cámara web. El argumento 0 indica que se utilizará la cámara web predeterminada
de la computadora. Puedes cambiar este valor si deseas usar otra fuente de video.
ret, frame = cap.read(): Lee un fotograma del flujo de video. El fotograma capturado se
almacena en la variable frame, y la variable ret se usa para verificar si la operación de
captura fue exitosa (ret es True si la captura fue exitosa y False si no lo fue).
cv2.putText(...), agrega un texto al fotograma utilizando la función putText de OpenCV. El
texto "PROTOTIPO DE VIDEO STREAMING" se coloca en la posición (50, 50) del
fotograma. Se especifican otros detalles, como la fuente, el tamaño, el color y el grosor del
texto.
cv2.imshow('frame', frame), muestra el fotograma en una ventana con el título "frame"
utilizando la función imshow de OpenCV. Esto permite visualizar el video en tiempo real. if
cv2.waitKey(25) == ord('q'):: El programa se detiene cuando se presiona la tecla 'q' en la
ventana de visualización. La función waitKey espera una cantidad de tiempo especificada
(25 milisegundos en este caso) para detectar una pulsación de tecla. Si se presiona 'q', el
programa sale del bucle.
El resultado del prototipo se muestra en la Figura Figura 6:

Figura 6. Prueba de Video Streaming con open cv

3.3.2. Detecció n de dedos con MediaPipe


Los módulos para el seguimiento y detección de las manos con MediaPipe (MediaPipe,
2023) en tiempo real son los siguientes:
 mp.solutions: Es la base de MediaPipe que proporciona una interfaz para acceder a
diferentes soluciones de seguimiento y detección de elementos en tiempo real, como
manos, cara, pose, etc. Es la entrada principal para utilizar y cargar diferentes soluciones.
 mp.solutions.drawing_utils: Este método contiene funciones y utilidades para dibujar y
visualizar los resultados de las detecciones en un marco de video, para resaltar y trazar
conexiones entre puntos detectados en objetos como manos o caras.
 mp.solutions.hands: Este método se enfoca en la detección y seguimiento de manos en
un video, proporciona la capacidad de identificar y seguir las manos en movimiento en
tiempo real.
 hands.process(frame_rgb): Esta función específica de la solución de manos que se
utiliza para procesar un cuadro de video en formato RGB y detectar manos en él.
Devuelve resultados que incluyen la posición y las conexiones entre puntos clave en las
manos.
 results.multi_hand_landmarks: Este método procesa un cuadro de video con
“hands.process()”, accede a esta propiedad en los resultados para obtener la información
sobre la ubicación de los puntos clave de las manos detectadas. Esto permite conocer la
posición de los dedos, palma y otros puntos en las manos.
 mp_hands.HAND_CONNECTIONS: Es un conjunto de constantes que define las
conexiones entre puntos clave en las manos detectadas, se utiliza junto con
“mp.solutions.drawing_utils” para dibujar líneas que representen estas conexiones en el
video.
El código documentado para la captación de video se muestra en la Figura 7:
Figura 7. Detección de manos con MediaPipe

import cv2, importa la biblioteca OpenCV para el procesamiento de imágenes y video y


import mediapipe as mp, importa la biblioteca MediaPipe, que proporciona herramientas
para la detección de manos y otros objetos.
mp_drawing = mp.solutions.drawing_utils, crea un objeto para acceder a las funciones de
dibujo de Mediapipe, que se utilizarán más adelante para visualizar las manos
detectadas,mp_hands = mp.solutions.hands, crea un objeto para acceder a las funciones de
detección de manos de Mediapipe.
cap = cv2.VideoCapture(0), inicializa la captura de video desde la cámara web. El valor 0
indica que se utilizará la cámara predeterminada.
Se utiliza un bloque with para configurar los parámetros de la detección de manos. Se
especifica que se debe realizar la detección en tiempo real (static_image_mode=False), que
se detectarán hasta dos manos simultáneamente (max_num_hands=2) y se establece un
umbral mínimo de confianza para la detección (min_detection_confidence=0.5).
Se lee un nuevo frame de la cámara con cap.read().Se coloca un texto en la posición (50, 50)
del frame para indicar que es un "PROTOTIPO DE VIDEO STREAMING".
Se procesa el frame RGB utilizando el objeto hands configurado anteriormente para detectar
manos. Los resultados se almacenan en la variable results.
Si se detectan manos en el frame (results.multi_hand_landmarks is not None), se dibujan
las conexiones y puntos clave de las manos en el frame utilizando las funciones de dibujo de
Mediapipe (mp_drawing.draw_landmarks()). Esto incluye la representación de las
articulaciones y conexiones de los dedos de las manos.
Se muestra el frame resultante con las manos detectadas y las conexiones dibujadas en una
ventana titulada "Frame" usando cv2.imshow().
El programa se detiene si se presiona la tecla 'q' (if cv2.waitKey(25) == ord('q')) en la
ventana de visualización.
Los resultados se muestran en las Figura 8 y Figura 9:
Figura 8. Prueba de detección de dos manos

Figura 9. Prueba de detección de una mano

3.3.3. Colecció n de señ as


Se ha seleccionado una colección de 100 señas comunes en la Lengua de Señas Mexicana
(LSM). Estas señas se dividen en dos grupos: uno que involucra el uso de una sola mano, que
se almacenará en un directorio denominado "1mano", y otro que implica el uso de ambas
manos, que se guardarán en un directorio llamado "data". En total, hay 50 señas con una sola
mano y 50 señas con ambas manos.
Se ha generado una serie de 100 imágenes para cada una de estas señas, capturando
diferentes poses y ángulos para cada una de ellas.
El código documentado se muestra en la Figura 10
Figura 10. Colección de señas

Este código de Python está diseñado para capturar imágenes de señas utilizando una cámara y
guardarlas en carpetas separadas en función de la clase a la que pertenecen. La lógica se puede
separar en los siguientes pasos:
1. Se importan las bibliotecas necesarias, que son os para operaciones relacionadas con el
sistema de archivos y cv2 (OpenCV) para la captura de video y el procesamiento de
imágenes.
2. Se define el directorio donde se almacenarán las imágenes capturadas, que es ./1mano. Si
este directorio no existe, se crea utilizando os.makedirs().
3. Se establecen algunas variables importantes: number_of_classes representa el número de
clases de señas que se capturarán (en este caso, 2), dataset_size indica cuántas imágenes se
capturarán por cada clase, y cont se usa para nombrar las carpetas que contendrán las
imágenes.
4. Se inicia la captura de video desde la cámara utilizando cv2.VideoCapture(0), donde 0 es el
índice de la cámara predeterminada en su computadora.
5. Se inicia un bucle for que se ejecuta number_of_classes veces (en este caso, 2 veces). Este
bucle se utiliza para capturar imágenes para cada clase.
6. Dentro del bucle, se verifica si existe una carpeta correspondiente a la clase actual
(identificada por cont) en el directorio de datos (DATA_DIR). Si no existe, se crea
utilizando os.makedirs().
7. Se muestra un mensaje en la ventana de la cámara que indica al usuario que presione la tecla
"Q" para capturar la señal.
8. Se inicia un bucle while True que permite al usuario capturar imágenes presionando la tecla
"Q". Cuando el usuario presiona "Q", se rompe este bucle y se procede a la captura de
imágenes para esa clase.
9. Se inicializa un contador (counter) que se utilizará para dar nombre a las imágenes
capturadas.
10. Se inicia otro bucle while que captura imágenes de la cámara en tiempo real y las muestra en
una ventana. Estas imágenes se capturan continuamente hasta que se hayan capturado
dataset_size imágenes.
11. Cada imagen capturada se guarda en la carpeta correspondiente a la clase actual utilizando el
nombre de archivo {counter}.jpg, donde counter es el número de la imagen actual.
12. Se incrementa el contador counter para controlar cuántas imágenes se han capturado.
13. El valor de cont se incrementa en preparación para la próxima clase, y el proceso se repite
hasta que se hayan capturado imágenes para todas las clases especificadas.
14. Finalmente, se libera la cámara y se cierran todas las ventanas de visualización de imágenes
utilizando cap.release() y cv2.destroyAllWindows().
La interfaz de colección de señas es muy parecida a la expuesta en la Figura 6 la cual con la letra
q empieza con la captación de las señas, dicha interfaz se muestra en la 43

Figura 11. Interfaz para la captación de señas

Como se observa en Figura 12 la captación de las señas se hizo en una distancia media de 1 a
1.5m para tener una figura nítida e identificable de la posición de los dedos.
Figura 12. Distancia promedio

Algunas de las pruebas realizadas se muestran en la Figura 13 y la Figura 14 en donde se hizo la


prueba de las señas “P” y “L”.

Figura 13. Prueba de detección de la letra “P”


Figura 14. Prueba de detección de la letra “L”

El directorio “./1mano/11” referenciado a las 100 imágenes captadas de la letra “L” se observan
en la Figura 15

Figura 15. Directorio de la letra “L”

El directorio “./1mano/16” referenciado a las 100 imágenes captadas de la letra “L” se observan
en la Figura 16
Figura 16. Directorio de la letra “P”

Finalmente, en la Tabla 1 muestra las señas seleccionadas para la interpretación de una sola
mano y en la Tabla 2 se muestra las señas para 2 manos junto con su key que las identificará más
adelante al momento de crear los “pesos” (coincidencias) de las coordenadas de los dedos.
Tabla 1. Señas para 1 sola mano
Key Letra/palabra
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
10 K
11 L
12 M
13 N
14 Ñ
15 O
16 P
17 Q
18 R
19 S
20 T
21 U
22 V
23 W
24 X
25 Y
26 Z
27 0
28 1
29 2
30 3
31 4
32 5
33 6
34 7
35 8
36 9
37 10
38 Hola
39 Adiós
40 De nada
41 Soy
42 Hoy
43 ¿Qué?
44 Feliz
45 Triste
46 Enojado
47 Comer
48 Querer
49 Tener
50 Soñar

Tabla 2. Señas para 2 manos


Key Letra/palabra
0 Buenos días
1 Gracias
2 Como estas
3 Blanco
4 Azul
5 Negro
6 Verde
7 Amarillo
8 Trabajo
9 Cine
10 Salón
11 Tienda
12 Playa
13 Hospital
14 Cafetería
15 Parque
16 Maestro
17 Hermano
18 Abuelo
19 Primo
20 Amigo
21 Vecino
22 Tío
23 ¿como?
24 ¿cual?
25 ¿cuantos?
26 ¿donde?
27 ¿quien?
28 ¿por?
29 Ir
30 Dar
31 Piña
32 Plátano
33 Durazno
34 Leche
35 Tostada
36 Carne
37 Pan
38 Tortilla
39 Por favor
40 Tamales
41 Arroz
42 Tacos
43 Esquite
44 Chicharrón
45 Refresco
46 Ganso
47 Mariposa
48 Caracol
49 Vaca
50 Burro

Así mismo para facilitar la comprensión de las palabras que están en le repositorio, en la Categorías
de señas para 1 sola mano muestra las señas seleccionadas para la interpretación de una sola mano,
es el mismo caso para la Categorías de señas para ambas manos son las señas seleccionadas para la
interpretación de ambas manos que han sido clasificado con las siguientes categorías:
Tabla 3. Categorías de señas para 1 sola mano
Key Letra/palabra
Abecedario
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
10 K
11 L
12 M
13 N
14 Ñ
15 O
16 P
17 Q
18 R
19 S
20 T
21 U
22 V
23 W
24 X
25 Y
26 Z
Números
27 0
28 1
29 2
30 3
31 4
32 5
33 6
34 7
35 8
36 9
37 10
Expresiones
38 Hola
39 Adiós
40 De nada
41 Soy
42 Hoy
Preguntas
43 ¿Qué?
Sentimientos
44 Feliz
45 Triste
46 Enojado
Verbos
47 Comer
48 Querer
49 Tener
50 Soñar

Tabla 4. Categorías de señas para ambas manos


Key Letra/palabra
Expresiones
0 Buenos días
1 Gracias
2 Como estas
Colores
3 Blanco
4 Azul
5 Negro
6 Verde
7 Amarillo
Lugares
8 Trabajo
9 Cine
10 Salón
11 Tienda
12 Playa
13 Hospital
14 Cafetería
15 Parque
16 Maestro
Parentesco
17 Hermano
18 Abuelo
19 Primo
20 Amigo
21 Vecino
22 Tío
Preguntas
23 ¿como?
24 ¿cual?
25 ¿cuantos?
26 ¿donde?
27 ¿quien?
28 ¿por?
Verbos
29 Ir
30 Dar
Comida
31 Piña
32 Plátano
33 Durazno
34 Leche
35 Tostada
36 Carne
37 Pan
38 Tortilla
39 Por favor
40 Tamales
41 Arroz
42 Tacos
43 Esquite
44 Chicharrón
45 Refresco
Animales
46 Ganso
47 Mariposa
48 Caracol
49 Vaca
50 Burro

Se establecen categorías de palabras en lengua de signos para facilitar la comunicación y el


aprendizaje de la lengua de signos. Estas categorías están organizadas según la frecuencia de uso y
el significado cultural de las palabras en la comunidad sorda. Algunas categorías importantes
incluyen:

 Comida: Porque la comida es una parte integral de la vida cotidiana y una conversación
común en todas las culturas.
 Verbos: Los verbos son esenciales para construir frases y oraciones en cualquier idioma.
 Sentimientos: Los sentimientos y las emociones son una parte importante de la
comunicación y la autoexpresión humanas.
 Alfabeto: El alfabeto se utiliza para escribir nombres y palabras que no tienen un signo
específico en la lengua de signos.
 Números: Los números son esenciales para hablar de cantidades, fechas y otros conceptos
numéricos.
 Colores: Los colores son útiles para describir e identificar objetos y signos.
 Expresiones: Las expresiones cotidianas son necesarias para iniciar y finalizar
conversaciones cortésmente.
 Lugares: Los lugares son parte de la conversación sobre actividades y eventos.
 Parentesco: Los términos de parentesco son importantes para discutir las relaciones
familiares y sociales.
 Preguntas: Las preguntas son esenciales para obtener información y mantener una
conversación significativa.
 Animales: los nombres de los animales se utilizan para describir y hablar sobre el mundo
natural.

Estas categorías están diseñadas para organizar y enseñar eficazmente la lengua de signos,
permitiendo a las personas sordas comunicarse de forma más plena y fluida dentro de su comunidad
y con personas que conocen la lengua de signos.
Finalmente, el repositorio completo tiene una vista como las que se muestran en la Figura 17 en la
Figura 18.
Figura 17. Directorio raíz de las señas con 1 mano

Figura 18. Directorio raíz de las señas con 2 manos


3.3.4. Extracció n de coordenadas y entrenamiento IA
3.3.4.1. Arboles aleatorios
El cambio de usar scikit-learn y no Tensorflow es porque entre muchas razones el traductor
busca ser lo más accesible posible, la razón más fuerte que es Tensorflow crea modelos muy
pesados y tardíos aun con pocas colecciones de imágenes, sin embargo, scikit-learn, crea
modelos mucho más rápidos y de poco peso para computadoras que son de bajos recursos.
Con el cambio de librería, la opción de crear una IA sigue, no obstante, dicha librería cuanta
con una función muy tentadora que son los árboles aleatorios.
(Scikit-learn, 2023) Un Bosque Aleatorio (Random Forest) en scikit-learn es un algoritmo de
aprendizaje supervisado que se utiliza tanto para tareas de clasificación como de regresión.
Es una técnica de conjunto que combina múltiples árboles de decisión para tomar decisiones
más precisas y robustas.
Las principales características y ventajas de un Bosque Aleatorio en scikit-learn son las
siguientes:
1. Ensemble Learning: El Bosque Aleatorio es un ejemplo de ensemble learning, lo
que significa que combina múltiples modelos (en este caso, árboles de decisión) para
mejorar la precisión y la generalización.
2. Árboles de Decisión: Cada árbol de decisión en el Bosque Aleatorio se entrena con
una muestra aleatoria de los datos de entrenamiento y con un subconjunto aleatorio
de características. Esto ayuda a evitar el sobreajuste y mejora la generalización del
modelo.
3. Promedio y Votación: En el caso de clasificación, un Bosque Aleatorio toma las
predicciones de cada árbol individual y realiza una votación para determinar la clase
final. En el caso de regresión, promedia las predicciones de los árboles.
4. Manejo de Características Importantes: Un Bosque Aleatorio puede calcular la
importancia de cada característica en el proceso de toma de decisiones. Esto es útil
para la selección de características y la comprensión de qué variables influyen más en
la predicción.
5. Robustez y Generalización: Debido a la aleatoriedad en la construcción de los
árboles y la combinación de múltiples árboles, los Bosques Aleatorios tienden a ser
más robustos y generalizan mejor que un solo árbol de decisión.
6. Escalabilidad y Paralelismo: Los Bosques Aleatorios se pueden entrenar
eficazmente en conjuntos de datos de gran tamaño y pueden beneficiarse del
procesamiento en paralelo.
Los módulos para la clasificación de los árboles aleatorios (scikit-learn, 2023) son los siguientes:
1. RandomForestClassifier (sklearn.ensemble.RandomForestClassifier):
 RandomForestClassifier es un clasificador basado en el algoritmo de Bosques
Aleatorios. Es parte del módulo "ensemble" de scikit-learn y se utiliza para
problemas de clasificación.
 Los Bosques Aleatorios son modelos de conjunto que combinan múltiples árboles de
decisión para mejorar la precisión y reducir el sobreajuste.
2. model_selection (sklearn.model_selection):
 El módulo "model_selection" contiene funciones y clases relacionadas con la
selección de modelos y la evaluación del rendimiento.
 Incluye funciones como train_test_split para dividir conjuntos de datos en conjuntos
de entrenamiento y prueba, así como funciones para realizar validación cruzada y
búsqueda de hiperparámetros.
3. metrics (sklearn.metrics):
 El módulo "metrics" proporciona métricas comunes para evaluar el rendimiento de
los modelos de aprendizaje automático.
 Incluye métricas de clasificación, regresión y agrupamiento, como precisión, recall,
F1-score, MSE (Mean Squared Error), entre otras.
4. accuracy_score (sklearn.metrics.accuracy_score):
 accuracy_score es una función específica para la métrica de precisión en problemas
de clasificación.
 Toma las etiquetas reales y las predicciones del modelo como entrada y calcula la
proporción de etiquetas correctamente clasificadas en relación con el total de
etiquetas.
5. predict:
 predict no es una función de scikit-learn por sí misma, sino una operación común
que se realiza en modelos de aprendizaje automático entrenados.
 Se utiliza para realizar predicciones en nuevos datos de entrada utilizando un modelo
entrenado. En el contexto de scikit-learn, se aplica a objetos de modelo como
RandomForestClassifier y se utiliza para predecir las clases o valores objetivo en
función de las características de entrada.
Cabe destacar que el código fue necesario dividirlo en dos archivos uno que extrajera las
coordenadas de las manos en un archivo. piclke y el segundo que cree los árboles aleatorios con
funciones propias de scikit-learn.
El primer código desarrollado procesa imágenes de manos utilizando el módulo de seguimiento de
manos de Mediapipe, extrae coordenadas de landmarks de las manos detectadas y almacena los
datos y las etiquetas en un archivo pickle para su posterior análisis o entrenamiento de modelos de
aprendizaje automático.

El código documentado se observa en la Figura 19


Figura 19. Creación de archivo pickel
El código de la Figura 19 se desglosa de la siguiente manera.
1. Importación de bibliotecas:
 os: Importa una biblioteca que permite interactuar con el sistema operativo, lo que es útil
para manipular archivos y directorios.
 pickle: Importa una biblioteca para la serialización de objetos Python. Esto permite
guardar objetos complejos en un archivo para su posterior recuperación.
 mediapipe as mp: Importa la biblioteca Mediapipe, que proporciona herramientas para
el procesamiento de medios, incluido el seguimiento de manos.
 cv2: Importa OpenCV, una biblioteca de visión por computadora utilizada para trabajar
con imágenes y vídeo.
 matplotlib.pyplot as plt: Importa Matplotlib para trazar gráficos, aunque en el código
actual no se utiliza para trazar gráficos.
2. Configuración de Mediapipe:
 Se crea un objeto mp_hands que representa el módulo de seguimiento de manos de
Mediapipe.
 Se crea un objeto hands utilizando mp_hands.Hands con ciertas configuraciones:
 static_image_mode=False: Esto indica que el seguimiento se realiza en
imágenes en tiempo real y no en imágenes estáticas.
 max_num_hands=2: Establece un límite máximo de 2 manos detectadas en una
sola imagen.
 min_detection_confidence=0.3: Establece un umbral de confianza mínimo para
la detección de manos. Las manos con una confianza menor no se considerarán.
3. Definición de rutas de archivos:
 DATA_DIR: Especifica el directorio en el que se encuentran los datos de entrada, que
deben contener imágenes de manos.
 nombrepicle: Especifica el nombre del archivo pickle en el que se guardarán los
resultados del procesamiento de datos.
4. Inicialización de listas para datos y etiquetas:
 data: Esta lista almacenará datos procesados, es decir, las coordenadas de las landmarks
de las manos detectadas en las imágenes.
 labels: Esta lista almacenará etiquetas que indican la clase o categoría a la que pertenece
cada imagen procesada.
 cont: Esta variable se inicializa en 0 pero no parece utilizarse posteriormente en el
código.
5. Iteración a través de imágenes:
 Se utiliza un bucle for anidado para iterar a través de las carpetas y archivos de imágenes
dentro de DATA_DIR. Esto permite procesar múltiples imágenes en diferentes carpetas.
6. Procesamiento de imágenes:
 Se carga una imagen y se convierte a formato RGB.
 Se utiliza Mediapipe para procesar la imagen y detectar las manos en ella.
 Se extraen las coordenadas de landmarks de las manos detectadas y se almacenan en las
listas x_ y_.
 Las coordenadas se normalizan para que estén en un rango específico y se almacenan en
la lista data_aux.
 data_aux se agrega a la lista principal data, y la etiqueta de la clase se agrega a la lista
labels.
7. Igualar longitud de listas:
 Se define una función llamada igualar_longitud que se utiliza para asegurarse de que
todas las listas en data tengan la misma longitud. Esto se hace agregando ceros si una
lista es más corta que la longitud deseada.
8. Llamada a igualar_longitud y salida:
 Dependiendo del valor de DATA_DIR, se llama a igualar_longitud con una longitud
objetivo específica (42 o 84) debido a que la sensibilidad con la que detecta la IA de
Mediapipe puede confundirse con algunas formas parecidas a las de una mano, para
evitar coordenadas innecesarias se recorta la lista data a 42 coordenadas para una mano
y 84 para 2 manos.
 Cuando detecta una sola mano (max_num_hands=1):
 El código extrae las coordenadas de las landmarks de esa única mano.
 Dado que solo hay una mano, se obtienen 21 landmarks correspondientes
a esa mano en particular.
 Por lo tanto, cada lista en data contendrá 42 valores, ya que cada valor
representa las coordenadas X e Y de una landmark (21 landmarks x 2
coordenadas).
Cuando detecta dos manos (max_num_hands=2):
 El código extrae las coordenadas de las landmarks de ambas manos.
 Para cada mano, se obtienen 21 landmarks, lo que suma un total de 42
landmarks para dos manos.
 Por lo tanto, cada lista en data contendrá 84 valores, ya que cada valor
representa las coordenadas X e Y de una landmark (42 landmarks x 2
coordenadas).
 Se imprime el resultado, que es la lista data con todas sus listas internas de igual
longitud.
9. Almacenamiento de datos en un archivo pickle:
 Se abre un archivo en modo escritura binaria ('wb') con el nombre especificado en
nombrepicle.
 Se almacena un diccionario que contiene los datos ('data') y las etiquetas ('labels') en
formato pickle.
 Finalmente, se cierra el archivo pickle.
La impresión del contenido del archivo .pickle para las señas de 2 manos se muestra en la Figura 20
Figura 20. Archivo .pickle de 2 manos

La impresión del contenido del archivo .pickle para las señas de 1 mano se muestra en la Figura 20

Figura 21. Archivo .pickle de 1 mano

El segundo código realizado se encarga de cargar datos desde el archivo pickle, dividirlos en
conjuntos de entrenamiento y prueba, para así crear y entrenar un modelo de clasificación Random
Forest, finalmente, guardar el modelo entrenado en otro archivo.
El código documentado se muestra en la Figura 22.
Figura 22. Creando el árbol aleatorio

El código:
1. Importa las bibliotecas necesarias, como pickle para la serialización,
RandomForestClassifier para crear un modelo de Bosque Aleatorio, train_test_split para
dividir los datos en conjuntos de entrenamiento y prueba, accuracy_score para evaluar la
precisión del modelo y numpy para manipulación de datos numéricos.
2. Define los nombres de archivo para cargar datos desde un archivo pickle (nombrepickle) y
guardar el modelo entrenado en otro archivo (nombremodelo).
3. Carga los datos desde el archivo pickle especificado (nombrepickle) en un diccionario,
donde se espera encontrar las claves 'data' (características de entrenamiento) y 'labels'
(etiquetas de clasificación).
4. Divide los datos en conjuntos de entrenamiento (x_train, y_train) y prueba (x_test, y_test)
utilizando la función train_test_split. El 20% de los datos se asigna al conjunto de prueba, y
se asegura que los datos se mezclen y estratifiquen según las etiquetas.
5. Crea un modelo de clasificación Random Forest utilizando la clase
RandomForestClassifier de scikit-learn y lo entrena con los datos de entrenamiento
(x_train, y_train).
6. Utiliza el modelo entrenado para hacer predicciones en el conjunto de prueba (x_test) y
calcula la precisión del modelo comparando las predicciones con las etiquetas reales. Luego,
imprime la precisión en porcentaje.
7. Guarda el modelo entrenado en un archivo especificado (nombremodelo) utilizando la
biblioteca pickle. El modelo se almacena en un diccionario bajo la clave 'model' y se guarda
en el archivo para su posterior uso.
El resultado del código y el nivel de imágenes de señas de 2 manos correctamente clasificadas se
observa en la Figura 23.
Figura 23. Modelo . p de dos manos

El resultado del código y el nivel de imágenes de señas de 1 mano correctamente clasificadas se


observa en la Figura 24.
Figura 24. Modelo .p de 1 mano

Los archivos comparten el mismo directorio que todos los códigos que se han hecho, esto para no
tener problemas con el PATH completo al momento de llamarlos y extraer su contenido, la
existencia de los 4 archivos se observa en Figura 25.

Figura 25. Archivos ,pickle y .p

3.3.5. Interfaz final.


La interfaz final capta el video en tiempo real desde una cámara, emplea la biblioteca MediaPipe
para detectar y dibujar conexiones en las manos en el video, y utiliza los modelos de aprendizaje
automático previamente entrenados para clasificar señas realizadas con una o dos manos, mostrando
las palabras o caracteres correspondientes en la pantalla, y en caso de no reconocer una seña, se
muestra "No Reconocido".
El código documentado se observa en la Figura 26.

Figura 26. Interfaz final


El contenido del árbol tipo Json de las señas de uno mano (labels_dict1) y dos manos (labels_dict2)
se muestra en las respectivamente.

Figura 27. Json de las señas a 1 y 2 manos


Para el correcto funcionamiento el código hace:
1. Importación de bibliotecas: Se importan las bibliotecas necesarias, que incluyen pickle para
cargar modelos de aprendizaje automático previamente entrenados, cv2 para procesamiento
de imágenes y video, mediapipe para detección de manos y numpy para operaciones
numéricas.
2. Carga de modelos: Los modelos de aprendizaje automático previamente entrenados se
cargan desde archivos pickle llamados "model1.p" y "model2.p" en el directorio actual.
Estos modelos se almacenan en las variables model1 y model2.
3. Inicialización de la cámara: Se configura la captura de video desde la cámara con el
identificador 0 (la cámara predeterminada). Esto permite capturar imágenes en tiempo real
desde la cámara.
4. Inicialización de MediaPipe: Se configura MediaPipe para detectar y dibujar las conexiones
de las manos en el video capturado. Se establece max_num_hands en 2 para detectar hasta
dos manos en el cuadro.
5. Diccionarios de etiquetas: Se definen dos diccionarios, labels_dict1 y labels_dict2, que
mapean índices a palabras correspondientes a señas de lenguaje de señas. labels_dict1 se usa
cuando se detecta una sola mano, y labels_dict2 se usa cuando se detectan dos manos.
6. Bucle principal: El código entra en un bucle infinito para procesar continuamente imágenes
de video capturadas en tiempo real.
7. Detección de manos: Para cada cuadro de video capturado, se utiliza MediaPipe para
detectar las manos presentes en la imagen. Se dibujan las conexiones de las manos en la
imagen y se extraen las coordenadas de los puntos de referencia de las manos.
8. Procesamiento de coordenadas: Las coordenadas de los puntos de referencia de las manos se
procesan y se almacenan en la lista data_aux. También se calculan las coordenadas (x1, y1)
y (x2, y2) para dibujar un rectángulo alrededor de las manos detectadas.
9. Clasificación de señas: Dependiendo de si se detecta una mano o dos manos, se utiliza el
modelo de aprendizaje automático correspondiente (model1 o model2) para predecir la señal
realizada y se almacena en la variable predicted_character.
10. Visualización en la pantalla: La palabra o señal detectada se muestra en la pantalla
superpuesta en el rectángulo alrededor de la mano o manos detectadas.
11. Manejo de excepciones: Si no se reconoce una señal o se produce un error, se muestra "No
Reconocido" en la pantalla.
12. Mostrar el cuadro de video: El cuadro de video con las señales detectadas se muestra en una
ventana llamada "frame" usando OpenCV.
13. Espera de tecla: La función cv2.waitKey(1) permite que el programa se ejecute de forma
interactiva y captura las pulsaciones de teclas. Esto es importante para que el bucle siga
funcionando y muestre el video en tiempo real.
14. Liberación de recursos: Cuando se cierra la ventana del video o se interrumpe la ejecución
del programa, se liberan los recursos de la cámara y se cierran las ventanas de visualización.
Finalmente, las pruebas de funcionalidad a dos manos y una mano se muestran den la Figura 28,
Figura 29, Figura 30 y Figura 31.

Figura 28. Prueba de dos manos con la seña “Tostada”


Figura 29. Prueba de dos manos con la seña “Cómo estas”

Figura 30. Prueba de una mano con la seña “De nada”


Figura 31. Prueba de una mano con la seña “Soy”

3.4 Prueba prototipo

3.4.1 Materiales
Al realizar el prototipo de aplicación de LSM, se ocuparon los siguientes elementos:
 App LSM
 Una computadora
 Teléfono móvil
 2 personas con discapacidad
 1 persona sin discapacidad

3.4.2Pruebas de la aplicació n de interpretació n de lenguaje de señ as


3.4.2.1 Objetivo 1: Fá cil acceso
Para evaluar la facilidad de acceso de la aplicación, se realizaron pruebas con dos usuarios con
discapacidad auditiva. Los usuarios se les paso mediante conexión USB la app con la ruta \LSM Lite
Final\dist Traductor LSM (Figura 32) y fueron instruidos para abrir la aplicación. Se les pidió que
realizaran las siguientes tareas:

 Abrir la aplicación y navegar por la pantalla principal


 Utilizar la función de reconocimiento de lenguaje de señas
Los usuarios completaron todas las tareas sin ninguna dificultad. La aplicación fue fácil de navegar
e intuitiva de usar. Los usuarios pudieron reconocer las palabras y letras que estaban siendo
interpretadas con precisión.

Figura 32. Archivo ejecutable

3.4.2.2 Objetivo 2: Bajo costo


Para evaluar el costo de la aplicación, se analizaron los siguientes factores (Tabla 5):

Tabla 5. Presupuesto de proyecto


Recurso Costo total MXN

Analista funcional $0
Programador Full Stack $0

Project manager $0

Invitado para probar el traductor en tiempo $0


real

Edutin.com $0

Python $0

MediaPipe $0

OpenCV $0

Computadoras $0

Cámara $ 299

Electricidad $ 200

Internet $ 300

Gastos de transporte $ 500

Total $ 1,299

El costo de desarrollo de la aplicación fue de $1,299 pesos mexicanos, incluyendo equipo, personal,
servicios e invitados.

Considerando un fondo de ahorro del 10%, el costo total de la aplicación es de $1,428 pesos
mexicanos. Este costo es sumamente bajo en comparación con otras aplicaciones de interpretación
de lenguaje de señas.
3.4.2.3 Objetivo 3: Precisió n
Para evaluar la precisión de la aplicación, se realizaron pruebas con un repertorio de palabras
cuantificadas dentro de un mensaje. El repertorio de palabras que se incluyó en los mensajes de la
persona con discapacidad auditiva abarcaba:

 Letras del abecedario


 Verbos comunes
 Números
 Personas comunes
 Comida
El primer mensaje constituido fue “Hola, soy Eduardo. ¿Cómo estás?”, como se muestra en las
siguientes figuras (Figura 33, Figura 34, Figura 35, Figura 36, Figura 37, Figura 38, Figura 39,
Figura 40 y Figura 41), se puede observar la detección de cada una de las palabras y letras utilizadas
dentro del mensaje.

Figura 33. Palabra “Hola”


Figura 34. Palabra “yo soy”

Figura 35. Letra “E”

Figura 36. Letra “D”


Figura 37. Letra “U”

Figura 38. Letra “A”

Figura 39. Letra “R”


Figura 40. Letra “D”

Figura 41. Letra “O”

Figura 42. Palabra compuesta “Cómo estás”


El segundo mensaje leído por el traductor LSM fue “Tengo 2 maestros” (Figura 43, Figura 44 y
Figura 45), mostrado en las siguientes figuras:

Figura 43. Verbo “Tener” en representación de “Tengo”

Figura 44. Número “2”

Figura 45. Persona “Maestro” en infinitivo, en representación del plural “Maestros”


El tercer mensaje fue “Quiero comer tostadas y esquites” (Figura 46, Figura 47, Figura 48, Figura 49
y Figura 50), que se muestra en las siguientes figuras:

Figura 46. Verbo “Querer” en representación de “Quiero”

Figura 47. Verbo “Comer”

Figura 48. Comida “Tostada”


Figura 49. Letra “Y”

Figura 50. Comida “Esquite”

La aplicación fue capaz de reconocer con precisión el 90% de las palabras del repertorio, el 10%
restante se debe a que la especificación de algunas palabras, principalmente verbos, no se tomaron
en 1era persona singular del presente del indicativo del verbo, así como en ciertas palabras donde se
identifica solo el singular, pero no se contempla el plural. Este porcentaje es superior al 50% y al
70% que se establecieron como objetivos.

4. Resultados

Los resultados obtenidos en el proyecto LSM respaldan la hipótesis inicial y ofrecen hallazgos
significativos en tres áreas principales:
4.1 Accesibilidad
Las pruebas realizadas con dos individuos con discapacidad auditiva validaron la facilidad de uso
del sistema. Ambos participantes lograron utilizar el sistema sin necesidad de asistencia externa,
confirmando la accesibilidad del mismo. Este logro se atribuye a su diseño intuitivo, que se ha
desarrollado con el objetivo de garantizar una experiencia accesible y amigable para usuarios con
discapacidad auditiva.

4.2 Viabilidad econó mica


En comparación con proyectos similares que tienen costos de 5,000 MXN y 15,000 MXN, el
proyecto LSM demostró un costo significativamente menor, alcanzando los 1,428 MXN. Estas
comparaciones subrayan la viabilidad económica de esta propuesta, lo que constituye un punto a
favor del proyecto.

4.3 Precisió n del sistema


El sistema demostró un alto nivel de comprensión del mensaje, alcanzando un reconocimiento del
90% de las palabras en su repertorio. La pequeña discrepancia del 10% restante se debió a
especificaciones particulares, así como en algunas palabras que solo identifican el singular, no el
plural. Este porcentaje supera con éxito los objetivos iniciales del 50% y 70%, tal como se verificó
en el apartado “3.4.2.3 Objetivo 3: Precisión” mediante el análisis del mensaje generado por la
persona de prueba.

5. Conclusiones

La aplicación fue considerada fácil de acceder por los usuarios con discapacidad auditiva,
proporcionando una experiencia intuitiva y fácil de navegar, los usuarios pudieron reconocer las
palabras y letras que estaban siendo interpretadas con precisión.

En cuanto al aspecto económico, el costo total de la aplicación es de 1,428 MXN. Este enfoque
elimina barreras financieras para los usuarios, garantizando que la aplicación sea accesible para
todos sin comprometer su calidad.
En términos de precisión, la aplicación es capaz de reconocer con precisión el 90% de las palabras
del repertorio. Este porcentaje es superior al 50% y al 70% que se establecieron como objetivos.

En general, las pruebas demostraron que la aplicación cumple con los objetivos establecidos. Es
fácilmente accesible, económica y precisa, lo que la convierte en una herramienta valiosa para un
amplio espectro de usuarios.

6. Fuentes de Informació n

BIBLIOGRAPHYÁlvarez, J. G., Mateos, M. S., & Moreno, M. G. (1 de Enero de 2004).


ResearchGate. Recuperado el 20 de Marzo de 2017, de Metodología de reingeniería del
software para la remodelación de aplicaciones científicas heredadas:
https://www.researchgate.net/publication/39698262_Metodologia_de_reingenieria_del_soft
ware_para_la_remodelacion_de_aplicaciones_cientificas_heredadas
APD. (04 de Abril de 2020). ¿Cuáles son los tipos de algoritmos del machine learning? Obtenido
de ¿Cuáles son los tipos de algoritmos del machine learning?:
https://www.apd.es/algoritmos-del-machine-learning/
aprendeIA. (19 de Abril de 2022). ¿Por qué utilizar Python para Machine Learning? Obtenido de
¿Por qué utilizar Python para Machine Learning?: https://aprendeia.com/por-que-python-
para-machine-learning/
Arenas, E. (28 de septiembre de 2019). «Por una educación de verdad incluyente. El occidental, pág.
8.
Armida. (2017). Robot autónomo. San Juan: trillas.
Bercial, J. (12 de enero de 2023). ¿Qué es una webcam y para qué sirve? Obtenido de Geeknetic:
https://www.geeknetic.es/Webcam/que-es-y-para-que-sirve
Buendía, E. (2 de Abril de 2019). Sordos en México: sin educación ni trabajo. El Universal.
Cálculo de Determinantes por Sarrus y Cofactores. (16 de Diciembre de 2014). Obtenido de
https://youtu.be/mDhIq54G8Rs
Cao, Z., Hidalgo, G., Joo, H., Raaj, Y., Sheikh, Y., Simon, T., & Wei, S.-E. (s.f.). OpenPose
Documentation. Obtenido de OpenPose:
https://cmu-perceptual-computing-lab.github.io/openpose/web/html/doc/index.html
CONADIS. (10 de agosto de 2016). Lengua de Señas Mexicana (LSM). Obtenido de Consejo
Nacional para el Desarrollo y la Inclusión de las Personas con Discapacidad:
https://www.gob.mx/conadis/articulos/lengua-de-senas-mexicana-lsm?idiom=es
COPRED. (agosto de 2021). Encuesta sobre discriminación en México. Obtenido de Encuesta sobre
discriminación en México: https://copred.cdmx.gob.mx/storage/app/media/EDIS-2021-
26Nov21.pdf
Cortés, M. (16 de agosto de 2022). El 31% de las empresas en México ha implementado
activamente la IA: estudio IBM. Obtenido de CIO México: https://cio.com.mx/el-31-de-las-
empresas-en-mexico-ha-implementado-activamente-la-ia-estudio-ibm/
Diario Oficial de la Federación. (6 de enero de 2023). Ley General para la Inclusión de las
Personas con Discapacidad. Obtenido de Cámara de Diputados:
https://www.diputados.gob.mx/LeyesBiblio/pdf/LGIPD.pdf
Galaz Palma, M. (22 de Junio de 2022). Modelo para la Creacion y uso de un Repositorio Digital de
Segmentos Visuales en Lengua de Señas Mexicanas Utilizando Inteligencia Artificial. 108.
Tecnológico Nacional de México. Recuperado el 2 de Marzo de 2023, de
https://rinacional.tecnm.mx/jspui/handle/TecNM/5170
Google. (19 de abril de 2023). Introduction. Obtenido de OpenCV:
https://docs.opencv.org/4.x/d1/dfb/intro.html
Google. (15 de Enero de 2023). MediaPipe. Obtenido de MediaPipe:
https://developers.google.com/mediapipe
Hernández Cruz, J. C. (2019). Traducción de texto en español a texto LSM usando aprendizaje
profundo. (Tesis). Instituto Tecnológico de Hermosillo, Hermosillo, Sonora.
IBM. (s.f.). Redes neuronales. Obtenido de IBM: https://www.ibm.com/es-es/topics/neural-
networks
International Business school. (3 de Abril de 2023). ¿Por qué Python es el mejor lenguaje para
programar IA? Obtenido de ¿Por qué Python es el mejor lenguaje para programar IA?:
https://eiposgrados.com/blog-python/por-que-python-mejor-lenguaje-para-programar-ia/
#:~:text=Python%20en%20la%20Inteligencia%20Artificial,din%C3%A1micos%20y%20f
%C3%A1ciles%20de%20entender.
Martínez, G. T. (3 de Mayo de 2012). Uso Gratuito de Código de barras 39. Recuperado el 20 de
Marzo de 2017, de CORPORACIÓN TECTRONIC S.A. DE C.V.:
http://tectronic.com.mx/files/folletos/software/Usar_Codigo_de_Barras_Gratis.pdf
Meza Ramírez, R. R., Nava Oyorzabal, S. B., & Tlapala Escobar, M. E. (2019). Bilingüismo, una
forma de potenciar el aprendizaje en estudiantes sordos del estado de Morelos. CONISEN.
Morales, Y. (16 de marzo de 2021). Aprender lengua de señas mexicanas es sumergirse a la
comunidad sorda, su cultura, sentimientos y forma de pensar. Chiapas, México.
Python. (2023). El tutorial de Python. Obtenido de El tutorial de Python:
https://docs.python.org/es/3/tutorial/
Python. (23 de Marzo de 2023). mediapipe 0.9.2.1. Obtenido de mediapipe 0.9.2.1:
https://pypi.org/project/mediapipe/
Redacción La Silla Rota. (12 de septiembre de 2020). ¿Cuánto ganan los traductores de señas con la
4T? La Silla Rota.
Rodríguez, T. (16 de octubre de 2020). Machine Learning y Deep Learning: cómo entender las
claves del presente y futuro de la inteligencia artificial. Obtenido de Xataka:
https://www.xataka.com/robotica-e-ia/machine-learning-y-deep-learning-como-entender-las-
claves-del-presente-y-futuro-de-la-inteligencia-artificial
Rouhiainen, L. (2018). Inteligencia artificial. 101 cosas que debes saber hoy sobre nuestro futuro.
España: Alienta.
Sacristán, L. (31 de March de 2019). Así es Showleap: el traductor de lengua de signos a texto y voz
en tiempo real está cada vez más cerca. Recuperado el 7 de March de 2023, de Xataka:
https://www.xataka.com/aplicaciones/asi-showleap-traductor-lengua-signos-a-texto-voz-
tiempo-real-esta-cada-vez-cerca
scikit-learn. (2023). User Guide. Obtenido de User Guide: scikit-learn.org
Secretaría de Salud del Gobierno de México. (28 de noviembre de 2021). 530. Con discapacidad
auditiva, 2.3 millones de personas: Instituto Nacional de Rehabilitación. Obtenido de 530.
Con discapacidad auditiva, 2.3 millones de personas: Instituto Nacional de Rehabilitación:
https://www.gob.mx/salud/prensa/530-con-discapacidad-auditiva-2-3-millones-de-personas-
instituto-nacional-de-rehabilitacion?idiom=es
Selvaraj, P., NC, G., Kumar, P., & Khapra, M. (12 de Octubre de 2021). OpenHands: Making Sign
Language Recognition Accessible with Pose-based Pretrained Models across Languages. 13.
Recuperado el 2 de Marzo de 2023, de https://arxiv.org/abs/2110.05877v1
Tensor Flow Doc. (2022). Descripción. Obtenido de Tensor Flow Doc:
https://tensorflowdoc.readthedocs.io/es/latest/1descripcion.html
TensorFlow. (21 de enero de 2022). Aprendizaje automático a gran escala en sistemas distribuidos
heterogéneos. Obtenido de TensorFlow: https://www.tensorflow.org/about/bib?hl=es-419
Torres, J. (2018). Deep Learning. Introducción práctica con Keras (Primera parte). Obtenido de
Jordi Torres.AI: https://torres.ai/deep-learning-inteligencia-artificial-keras
Tyldum, M. (Dirección). (2001). El Código Enigma [Película].
Urbeconomica. (16 de Marzo de 2021). Revela Huawei atraso tecnológico de México de tres años.
Obtenido de Revela Huawei atraso tecnológico de México de tres años:
https://urbeconomica.com.mx/sectores-economicos/comercio-y-servicios/29697-revela-
huawei-atraso-tecnologico-de-mexico-de-tres-anos

También podría gustarte