Logo Studenta

Documento_Prototipo_Aplicacion_FINAL

¡Este material tiene más páginas!

Vista previa del material en texto

UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ
Instituto de Ingeniería y Tecnología
Departamento de Ingeniería Eléctrica y Computación
Prototipo de aplicación para detectar trastornos psicológicos en la escritura de
niños mediante redes neuronales artificiales
Reporte Técnico de Investigación presentado por:
Yesica Segura Villa 140318
Javier Chavez Resendez 141033
Requisito para la obtención del título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Dr. Javitt Higmar Nahitt Padilla Franco
Ciudad Juárez, Chihuahua 21 de mayo de 2019
Ciudad Juárez, Chihuahua, a 21 de Mayo de 2019
Asunto: Liberación de Asesoría
Mtro. Ismael Canales Valdiviezo
Jefe del Departamento de Ingeniería
Eléctrica y Computación
Presente.-
Por medio de la presente me/nos permito/imos comunicarle que, después de haber reali-
zado las asesorías correspondientes al reporte técnico Prototipo de aplicación para detectar
trastornos psicológicos en la escritura de niños mediante redes neuronales artificiales, del/los)
alumno/s Yesica Segura Villa, Javier Chavez Resendez, de la Licenciatura en Ingeniería en
Sistemas Computacionales, considero/amos que lo ha/n concluido satisfactoriamente, por lo
que puede/n continuar con los trámites de titulación intracurricular.
Sin más por el momento, reciba un cordial saludo.
Atentamente
Javitt Higmar Nahitt Padilla Franco
Profesor Investigador IIT
Ccp:
Coordinador del Programa de Sistemas Computacionales
Yesica Segura Villa
Javier Chavez Resendez
Archivo
II
Ciudad Juárez, Chihuahua, a 21 de Mayo de 2019
Asunto: Autorización de Impresión
C. Yesica Segura Villa
Presente.-
En virtud de que cumple satisfactoriamente los requisitos solicitados, informo a usted que
se autoriza la impresión del documento de Prototipo de aplicación para detectar trastornos
psicológicos en la escritura de niños mediante redes neuronales artificiales, para presentar los
resultados del proyecto de titulación con el propósito de obtener el título de Licenciado en
Ingeniería en Sistemas Computacionales.
Sin otro particular, reciba un cordial saludo.
Prof.Dr.rer.nat. Juan Carlos Acosta Guadarrama
Profesor Titular de Seminario de Titulación II
III
Ciudad Juárez, Chihuahua, a 21 de Mayo de 2019
Asunto: Autorización de Impresión
C. Javier Chavez Resendez
Presente.-
En virtud de que cumple satisfactoriamente los requisitos solicitados, informo a usted
que se autoriza la impresión del proyecto de Prototipo de aplicación para detectar trastornos
psicológicos en la escritura de niños mediante redes neuronales artificiales, para presentar los
resultados del proyecto de titulación con el propósito de obtener el título de Licenciado en
Ingeniería en Sistemas Computacionales.
Sin otro particular, reciba un cordial saludo.
Prof.Dr.rer.nat. Juan Carlos Acosta Guadarrama
Profesor Titular de Seminario de Titulación II
IV
Declaración de Originalidad
Nosotros/Yo, Yesica Segura Villa, Javier Chavez Resendez, declaramos que el material
contenido en esta publicación fue elaborado con la revisión de los documentos que se mencio-
nan en el capítulo de Bibliografía, y que la solución obtenida es original y no ha sido copiada
de ninguna otra fuente, ni ha sido usada para obtener otro título o reconocimiento en otra
institución de educación superior.
Yesica Segura Villa Javier Chavez Resendez
Agradecimientos
Agradecemos la ayuda que muchas personas y compañeros han prestado durante el proceso
de redacción e investigación de este proyecto. Como primer lugar, se agradece al tutor, Javitt
Higmar Nahitt Padilla Franco, por la orientación adecuada que nos brindo en todo momento.
Así mismo, expresar el reconocimiento a la Licenciada Anabel, docente del Instituto de
Ciencias Sociales y Administración de la UACJ, por todas las atenciones e información brin-
dada, también se extiende un agradecimiento a las personas que anónimamente donaron parte
del material utilizado para este proyecto, así como a la Universidad Autónoma de Ciudad
Juárez por ser la sede de todo el conocimiento adquirido en estos años.
A mis amigos y futuros colegas que me ayudaron de una manera desinteresada, gracias
infinitas por toda su ayuda y buena voluntad.
Dedicatoria
El presente trabajo lo dedicamos principalmente a nuestras familias padres, hermanos y
parejas.
Yo, Yesica Segura Villa, doy gracias a mis padres: Raúl y Sandra; y, Javier y Amelia, por
ser los principales promotores de nuestros sueños, por confiar y creer en nuestras expectativas,
por los consejos, amor, trabajo y sacrificio en todos estos años y los principios que nos han
inculcado, a mis hermanas (os) y por estar siempre presentes, acompañándonos y por el apoyo
moral, que nos brindaron a lo largo de esta etapa de nuestras vidas. A mi esposo Esteban
por su apoyo y paciencia en este proyecto de estudio.
Yo, Javier Chavez Resendez, agradezco profundamente a mis padres Teresa y Lorenzo,
por el apoyo y confianza incondicional, así como la motivación en los momentos difíciles de mi
vida personal y profesional, también a mis hermanos Saúl y Lorenzo Antonio por los consejos
y apoyo brindado en todas las etapas de mi vida.
A nuestros profesores, les agradecemos sus esfuerzos por otorgarnos la mejor educación
posible y procurar inculcarnos el habito de la mejora, les extendemos nuestra admiración y
respeto por las enseñanzas que nos brindaron durante nuestra formación profesional, mismas
que no existen en ningún libro sino provienen de su experiencia profesional.
Finalmente queremos dedicar esta tesis a todos nuestros amigos, por apoyarnos y extender
su mano en momentos difíciles, por todas esas anécdotas y ocurrencias vividas dentro y fuera
de las aulas, de las cuales nos llevamos grandes conocimientos pero sobre todo indelebles
recuerdos y una amistad verdadera.
I
Índice general
1 Introducción 1
1.1 Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Definición del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Marco Teórico 6
2.1 Inteligencia Artificial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Reconocimiento de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Técnicas del reconocimiento de caracteres . . . . . . . . . . . . . . . 10
2.2.2 Procesamiento de imágenes . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Trastornos psicológicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 Disgrafía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.2 Trastorno por Déficit de Atención e Hiperactividad . . . . . . . . . 15
3 Desarrollo 16
3.1 Descripción de Metodología . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.1 Análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2 Diseño del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 Resultados y Discusiones 24
4.1 Condiciones de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
II
ÍNDICE GENERAL III
4.3 Discusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 Conclusiones 29
Bibliografía 31
A Constancia 33
B Códigos 35
Índice de figuras
3.1 Representación del Método-V. . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Escritura de un niño con disgrafía. . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Representación de una RNA convolucional. . . . . . . . . . . . . . . . . . . . 19
3.4 Ejemplos de escritura de niños con y sin disgrafía. . . . . . . . . . . . . . . . 20
3.5 Representación de la función de binarizar. . . . . . . . . . . . . . . . . . . . 21
4.1 Pruebas sobreescritura con disgrafía con la RNA #1. . . . . . . . . . . . . . 25
4.2 Pruebas sobre escritura sin disgrafía con la RNA #1. . . . . . . . . . . . . . 26
4.3 Pruebas sobre escritura sin disgrafía con la RNA #2. . . . . . . . . . . . . . 27
4.4 Pruebas sobre escritura con disgrafía con la RNA #2. . . . . . . . . . . . . . 27
IV
Índice de tablas
4.1 Características de la RNA #1 . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 Características de la RNA #2 . . . . . . . . . . . . . . . . . . . . . . . . . . 26
V
Sinopsis
El presente trabajo aborda el tema de la inteligencia artificial y su uso para detectar el
trastorno psicológico de disgrafía, dicha alteración, se examinará en niños de primaria entre
el rango de edad de 8 a 12 años, donde se identificaran patrones en fotos de escritura de los
mismos, para así implementar una red neuronal y su debido entrenamiento con imágenes, esto
con el fin de obtener inteligencia no real, similar a la de un humano, donde se determinará si
un sujeto posee este tipo de trastorno.
Algunas de las fases para llevar a cabo el prototipo son: procesamiento de imagen donde
se realiza el tratamiento de las mismas con varias técnicas en conjunto a la utilización de la
herramienta OpenCV, sin embargo, uno de los puntos más importantes es el desarrollo de la
red neuronal implementada con librerías de TensorFlow, y por último, el estudio de patrones
psicológicos presentes en la escritura investigados con expertos del tema.
VI
Capítulo 1
Introducción
La escritura es la base de la educación a nivel primaria, por lo cual, es fundamental que
los alumnos adquieran una formación correcta de la misma, ya que esto puede afectar su
rendimiento académico y por lo tanto su desarrollo en la educación. La escritura es un medio
de comunicación pero se ve afectado cuando su aprendizaje no es óptimo.
Los trastornos tales como Trastorno por Déficit de Atención e Hiperactividad (TDAH)
y Disgrafía son un factor importante en el aprendizaje. En el caso de la población infantil
uno de los padecimientos frecuentemente detectados es el TDAH, surgiendo en el Siglo XX
como un problema de Salud Pública mundial [1], los niños con TDAH presentan dificultad
para escribir, teniendo una letra anormal, ya sea sumamente grande o chica, careciendo de
organización [2].
Por otro lado, la disgrafía que es un trastorno que afecta la manera de escribir, es una alte-
ración comúnmente encontrada en nivel primaria, por lo regular en niños sin ningún problema
motriz o neurológico que justifique dicho padecimiento. Sin embargo, ambos casos requieren
de atención para lograr detectar y tratar a los niños de manera adecuada, impulsando el
aprendizaje de la escritura [3].
Durante los últimos años, la Inteligencia Artificial ha ganado terreno en la vida cotidia-
na, ya que el reto de integrar procesos que solo un humano realiza es desafiante [4]. Esta
incorporación se ve en algunos sistemas de seguridad, que mediante reconocimiento facial
o corporal logran detectar comportamientos sospechosos y alertar a las personas correspon-
dientes a tiempo, sin embargo, siempre existe el factor del error humano, ya sea que una
distracción menor provoque que un sospechoso no se detecte a tiempo. Es por este tipo de
situaciones que la Inteligencia Artificial (IA) aumenta su importancia.
Por lo tanto, el desarrollar una aplicación, la cual es una herramienta que permite la rea-
lización de tareas en medios informáticos, basada en Inteligencia Artificial, concretamente en
Redes Neuronales Artificiales (RNA), ayudará a reconocer, tomando en cuenta información
proporcionada en la escritura tales como altura, anchura, proporcionalidad, consistencia, or-
1
1.1. ANTECEDENTES 2
ganización entre otras características, todo esto con el fin de detectar trastornos psicológicos,
así como mejorar la calidad de educación en los niños a nivel primaria.
1.1 Antecedentes
Las Redes Neuronales Artificiales y el reconocimiento de caracteres tienen una aplicación
amplia; por ejemplo, del lado industrial existen aplicaciones como ABBYY FlexiCapture [5]
por medio de Redes Neuronales Artificiales es capaz de encontrar la información necesaria en
documentos para luego cargar la información a programas como SAP (Systems, Applications
Products in data processing), siendo este un software ERP (Enterprise Resource Planning
software) el cual controla operaciones, manufactura, servicios, ventas, sistema financiero,
recursos humanos. De esta manera ahorra tiempo evitando ingresar información manualmente
y que se cometan errores por distracción.
Por otro lado, Google cuenta con una división encargada de realizar programas de distintas
disciplinas como realidad virtual (VR), realidad aumentada (RA), experimentos en Android
y experimentos con Inteligencia Artificial [6], en los cuales existe un “juego” en línea llamado
Quick, draw! donde se dibuja cualquier cosa y dicho programa realizado por Google Creative
Lab [7], adivina lo dibujado. Google cuenta con aplicaciones eficientes, una de ellas es el
traductor en aplicación móvil, en la cual utiliza Redes Neuronales Artificiales para reconocer
caracteres manuscritos o por fotografías, para luego traducirlos en tiempo real mediante el
uso de la cámara de un dispositivo [8].
También Dropbox lanzó DropTurk, el cual es un programa capaz de reconocer los ca-
racteres de un documento o imagen para generar un archivo editable y poder manipular el
texto desde cualquier editor. Incluso tiene la habilidad de manejar imágenes encontrando la
orientación o inclinación del texto, y mediante manipulación logra alinearla horizontalmente,
por ejemplo cuando se toma una foto de apuntes de un cuaderno y por alguna razón salió
descuadrada, DropTurk acomoda la imagen para facilitar su lectura posterior. También tiene
características de reconocimiento de idioma, para lograr esto los ingenieros de Dropbox en-
trenaron a las Redes Neuronales Artificiales con información y documentos que los mismos
usuarios de esta plataforma donaron.
Con todo lo anterior, se deduce que las Redes Neuronales Artificiales han ayudado a un
sinfín de propósitos en la vida de la humanidad, por ejemplo, en temas específicos como
las finanzas, medicina, probabilidad ambiental y la académica, siendo esta última la que
involucra de manera directa a los estudiantes.
En [9] se menciona algunos programas basados en Redes Neuronales Artificiales, tales
como: NeurOn-Line, HNeT, NeuroMonitor Pro, NeuroShell Predictor entre otros; estos tienen
diferentes propósitos pero se basan en el entrenamiento de alguna red neuronal.
1.1. ANTECEDENTES 3
Por otra parte, en [10] se encontró una investigación basada en el término conocido como
hashtag (#) de la red social Twitter, donde este tipo de palabras se encuentra una seguida
de la otra, como muestra el siguiente ejemplo: #añonuevo. El objetivo principal de [10] es
darle una segmentación adecuada en cuanto a las reglas del idioma castellano mediante una
red neuronal y así dar un significado coherente; en este sistema se utilizan dos elementos, el
primero es el modelo del lenguaje basado en redes neuronales (proveedor de información del
lenguaje), y como segundo miembro el algoritmo de segmentación y ensamblado para recupe-
rar el espacio entre las palabras que se encuentran en el texto de entrada. La aproximación de
este sistema utiliza un algoritmo que aprovecha la información que se encuentra en el modelo
del lenguaje a nivel de caracteres, que se basa en una red neuronal recurrente tipo LSTM
(Long Short-Term Memory). Este experimento menciona que se puede evaluar el rendimiento
del sistema, la precisión del resultado de la separación de las palabras y el tiempo en el que
se ejecuta. La conclusión de esta investigación fue hecha en cuanto al rendimiento del mismo,
comparado contra la segmentación Word Breaker de Microsoft, donde existe una precisión
del 0.85, posicionando ligeramente por debajo al sistema realizado en esta investigación. El
autor de este trabajo resalta que la ejecución delWord Breaker no se realizó sobre las mis-
mas especificaciones de evaluación, además el sistema contaba con la ventaja de haber sido
entrenado por un corpus más extenso y completo que el que se empleó en el sistema de esa
investigación, por lo tanto el autor queda conforme con los resultados de ese sistema.
Con esto último, se puede dar hincapié a que ya se han realizado Redes Neuronales
Artificiales para mejorar el rendimiento académico de los estudiantes, en el artículo [11] se
realizó un estudio con 450 estudiantes donde existían dos Redes Neuronales Artificiales, la
primera para el pronóstico de aprobación de cada materia por alumno y la segunda para dar
temas que podrían ayudar a cada estudiante para aprobar. En este estudio se mencionan los
instrumentos que utilizaron para llevarlo a cabo, uno de ellos es Data Warehouse (DW), donde
se explica la diferencia que tiene a otras bases de datos como MySQL, de las cuales esta genera
reportes por sí sola después de analizar la información que se le introduce. La Data Warehouse
maneja cantidad de información inmensa y a una gran velocidad. El segundo instrumento
utilizado fue una red neuronal para el análisis predictivo, donde según los resultados arrojados
por la DW, logra identificar patrones en los reportes para dar así la predicción final del estudio.
Las Redes Neuronales Artificiales son eficientes para evaluar patrones en acciones que los
estudiantes ejecutan, por ejemplo, en [12] formula un estudio realizado a niños de primer
a tercer grado de primaria, donde se dividió a los alumnos en dos grupos: aplicados y no
aplicados, esto según a la evaluación del maestro a cargo; los neuropsicólogos aplicaron un
estudio a ambos, con una duración aproximadamente de una hora y media, dando así resul-
tados exorbitantes acerca del problema de deficiencia en escritura en cuanto a los niños de
ambos grupos aplicados y no aplicados. Esto último define la necesidad que se encuentra en
los niños de primaria sobre la escritura y como se puede ayudar para mejorarla con alguna
aplicación basada en Redes Neuronales Artificiales.
1.2. DEFINICIÓN DEL PROBLEMA 4
Por estas razones se debe identificar qué tipo de problemas de escritura existen y cuales
son lo más comunes para que así se apoye a una mayor cantidad de alumnos y de esto habla el
artículo [13], donde también menciona algunos tipos de aplicaciones web y móviles que se han
utilizado para la mejora del aprendizaje de los alumnos en diferentes problemáticas; entre las
cuales se encuentran Kid’s Sock donde se ayuda a que los niños aprendan colores y patrones,
otra ejemplo es “Where’s my water” esta aplicación muestra elementos didácticos, creatividad
y acertijos; asimismo “Google Classroom” que se encarga de la interacción que existe entre
el maestro y alumno incluso gestiona el ambiente de trabajo utilizando herramientas mismas
de Google como Google Drive. También en [13] se indica que las aplicaciones facilitan el
aprendizaje de alumnos, dando resultados positivos en cuanto a la educación y formación
académica de los niños.
1.2 Definición del Problema
El Trastorno Psicológico de Disgrafía afecta el aprendizaje de la escritura de niños de
primaria (tercer a sexto grado), y a pesar de los avances tecnológicos actuales, existe un
rezago en el acceso de herramientas que auxilien en su detección en dicha etapa.
1.3 Objetivos
Desarrollar un prototipo de aplicación para escritorio que identifique en la escritura de
niños si presenta algún trastorno psicológico detectable, por medio de imágenes y Redes
Neuronales Artificiales.
1. Explorar y evaluar los métodos de procesamiento de imagen más viables para entrenar
la red neuronal.
2. Obtener una colección de imágenes para entrenamiento del algoritmo.
3. Encontrar una red neuronal artificial capaz de identificar de manera óptima trastornos
en imágenes de escritura.
1.4 Justificación
Es importante destacar que el proyecto beneficia principalmente a los alumnos de primaria
entre las edades de ocho a doce años con problemas de escritura, y a sus profesores para
facilitar la evaluación y detección de problemas psicológicos en la escritura y auxiliar a que
tengan una educación más completa para los niños con este tipo de dificultad.
1.4. JUSTIFICACIÓN 5
La finalidad que tiene este prototipo, el cual es un prototipo de aplicación, al detectar
los problemas psicológicos presentes en los estudiantes a temprana edad, es el progreso en
diferentes puntos importantes en las vidas de los mismos, tales como: el aprendizaje total,
esto último se expone que al corregir su escritura obtendrá mejor aprovechamiento en otras
materias, ya que la escritura es primordial para comprender las demás asignaturas. Otro
aspecto que beneficia este proyecto es la introducción de las tecnologías como auxiliares de la
educación primaria. Por otro lado, económicamente representa una opción accesible, ya que
no requiere una inversión financiera para utilizarse.
Por lo tanto, algunos obstáculos con los que vamos a lidiar son que los infantes de esas
edades aún no definen bien su letra, dándonos así la problemática de identificar cuando se
tiene un problema y cuando no.
Este proyecto está dirigido a favorecer a todos los niños que padecen este tipo de trastorno
(Disgrafía), ya que, al menos en México no se le ha dado la importancia que debería a esta
necesidad, y a consecuencia de esto se presentan porcentajes elevados en niños con problemas
de aprendizaje y escritura. El propósito al que se requiere llegar es la disminución de estos
problemas, así como auxiliar en la canalización al tratamiento correcto según el trastorno del
educando.
Es importante mencionar algunas características de este prototipo, para destacar lo que
realiza y limitaciones. Los alcances de este prototipo son los siguientes:
• El análisis realizado por el prototipo solo abarca alumnos de tercer a sexto grado de
primaria.
• El prototipo identificará, por medio de la escritura de los alumnos si presenta el tras-
torno de disgrafía.
• La red neuronal artificial .
Por otro lado, las limitantes del prototipo son los siguientes:
• Obtener un diagnostico erróneo o falso, ya que en algunos casos en el rango de edad de
8 a 12 años aun no tienen la escritura definida o perfeccionada.
• La muestra de cuadernos de niños provoque un entrenamiento de la Red Neuronal
Artificial pobre.
• El acceso a escuelas primarias para solicitar los cuadernos.
• Se trabajará solamente con un diagnóstico de trastorno psicológico en escritura, por lo
cual, si el niño presenta otro tipo de trastorno, no se detectará.
Capítulo 2
Marco Teórico
Actualmente, existe un gran avance en tecnología y sistemas informáticos, por lo cual la
población se encuentra más adaptada a ellos, y se podría decir que gran parte de la comunidad
que tiene más acceso y facilidad de uso son los niños, ya que en cualquier parte se encuentran
con el manejo de este tipo de tecnologías, y también porque nacieron en un periodo donde se
utilizan en cualquier rama de su vida cotidiana, por ello se han creado diferentes aplicaciones,
o bien programas que se emplean como herramientas para que los usuarios realicen diversos
tipos de trabajo.
En los últimos años se han producido diversas aplicaciones, sitios de Internet y métodos
que benefician a niños que tienen ciertos conflictos de aprendizaje y atención. No obstante,
las aplicaciones con las que más están familiarizados son los juegos, por lo que el tipo de
aplicaciones que se usen para niños tienen que parecer interesantes y que contengan elementos
lúdicos para mejorar su aprendizaje [13].
2.1 Inteligencia Artificial
La inteligencia presente en las maquinas es denominada artificial. En la computación,
una maquina inteligente es aquella que, gracias a la percepción de circunstancias, es capaz
de realizar acciones en respuesta, maximizando su probabilidad de éxito [14].
La Inteligencia Artificial (IA) se centra en estudiar agentes, los cuales son un elemento que
actúa en un entorno, es decir realiza una tarea,algunos de ejemplos de ellos son: mascotas,
arboles, personas, sensores, organizaciones, la sociedad. Un agente inteligente es un sistema
que actúa adecuadamente según las circunstancias y su objetivo es decir inteligentemente,
este debe ser flexible a los cambios en su entorno y también tener objetivos variables según la
situación en la que se encuentre, logrando obtener aprendizaje por medio de la experiencia.
También debe tomar decisiones congruentes basándose en sus limitaciones perceptivas y reales
[14].
6
2.1. INTELIGENCIA ARTIFICIAL 7
La Inteligencia Artificial (IA), no es igual a la real sin embargo, su objetivo principal es
lograr o acercarse a ella. Todo el entorno de la IA es sumamente confuso, partiendo de un
comportamiento inteligente y como puede ser representado o ejecutado por una máquina.
Construir estas abstracciones es una actividad esencial de la Inteligencia Artificial, la cual
no trata de simular la inteligencia sino comprender la inteligencia real o natural y lograr
sintetizarlos. Por ejemplo, una simulación de un fenómeno natural no es real si no una re-
creación artificial. Pero en este caso, el agente inteligente es el ser humano es decir, se trata
de sintetizar el razonamiento humano. Pero aun así existen agentes más poderosos que el ser
humano, las organizaciones. Un claro ejemplo son las hormigas, ya que probablemente una
sola de ellas no sea tan inteligente pero una colonia entera puede actuar de una mejor manera
[14].
Nils John Nilsson, científico norteamericano, el cual es uno de los fundadores del campo
de la Inteligencia Artificial, definió los siguientes pilares en los que se apoya la misma.
• Algoritmos de búsqueda.
Los Algoritmos de búsqueda implican conocer si un elemento se encuentra dentro de
una colección de datos. Lo más común si se puede establecer un orden es buscar del
mayor a menor elemento para encontrar la ubicación de un elemento específico [15, 16].
– Búsqueda secuencial
Consiste en comparar secuencialmente el dato que se desea encontrar contra
cada uno de los valores contenidos en las posiciones 1, 2, ..., n. Este proceso
termina cuando encuentra el valor solicitado, o cuando recorre todo el arreglo
sin tener éxito de búsqueda. [15, 16].
– Búsqueda secuencial ordenada
Lo anterior se puede mejorar si el conjunto de datos está ordenado, por ejemplo
crecientemente, si el valor solicitado es mayor a un elemento del arreglo se
pueden descartar todos los valores anteriores o si el valor es aún más grande
que el dato mayor del arreglo se deduce que el dato no se encuentra en la
colección. [15, 16].
– Búsqueda Binaria
Consiste en comparar el dato deseado con el que se encuentre en la mitad del
arreglo y en caso de ser iguales se terminaría, en caso contrario se analizaría
la relación de ambos elementos para partir en dos el arreglo y solo comparar
con los datos que sean posibles coincidencias [15, 16].
• Algoritmos genéticos
Los algoritmos genéticos nacieron como concepto en 1970 por John Henry Ho-
lland conocido como padre del mismo, son llamados de esta manera, ya que son
2.1. INTELIGENCIA ARTIFICIAL 8
algoritmos de búsqueda inspirados en la mecánica de la naturaleza o en su gené-
tica. La manera en que se utiliza es tomando en cuenta la estructura inicial de un
individuo contenido en una generación de ellos (varios de estos), la información
aleatoria y mutaciones para lograr obtener una generación mejorada de individuos
que en teoría debería acercarse al objetivo, entre más robusto sea, se tomará una
cantidad menor de generaciones para llegar a la solución. Una diferencia de los
algoritmos genéticos e inteligentes es que puede buscar varios puntos a la vez y
no solo centrarse en uno solo, también el uso de probabilidades ayuda a intuir la
solución de una manera más eficaz y rápida [17] .
• Redes Neuronales Artificiales
Gracias a los avances en la Inteligencia Artificial (AI), es posible que las Redes
Neuronales Artificiales (RNA) aprendan a resolver problemas cada vez más com-
plejos en tiempos razonables. Las RNA son representaciones del procesamiento
neurológico de la información, basadas en el funcionamiento biológico de las redes
neuronales reales. Por ello, la biología es algo muy importante en el desarrollo
de las RNA es decir, gracias a ella se comprende si son simplemente modelos
computacionales o representaciones reales sobre los cálculos que tienen lugar en el
cerebro. También se ven involucrados los avances que han presentado el aprendi-
zaje profundo y el contraste de los puntos de vista de la neurociencia. La principal
idea de las Redes Neuronales Artificiales es que el aprendizaje puede ser impulsado
utilizando capas sucesivas. La manera en que funcionan, es procesar la información
a través de capaz de neuronas, donde cada capa por donde pasa la información es
procesada en determinada forma, convirtiendo la salida de información en entrada
de la siguiente capa, hasta llegar a la última y en caso de ser el resultado óptimo
termina el procesamiento, en caso contrario se realizan ajustes en cada una para
procesar de nuevo la información hasta encontrar la solución [18].
• Entrenamiento de las Redes Neuronales Artificiales
El entrenamiento es una herramienta que ayuda a acelerar el proceso de apren-
dizaje de las RNA, consiste en ajustar los pesos paulatinamente hasta lograr que
el vector de salida sea igual o se acerque con un porcentaje de tolerancia al va-
lor esperado. El entrenamiento supervisado consiste en conocer el valor de salida
deseado de un vector de entrada y gradualmente ajustar los pesos hasta reducir
la diferencia con la salida deseada. En el entrenamiento no supervisado el valor
de salida es desconocido, el objetivo es encontrar salidas homogéneas y conforme
la identificación de patrones, inclinaciones entre otras características ajustar los
pesos [19].
Las Redes Neuronales Artificiales, se clasifican en diferentes modelos, algunos son el
Perceptrón Simple, la Adalina, Perceptrón Multicapa, entre otros [20].
2.1. INTELIGENCIA ARTIFICIAL 9
• Perceptrón Simple
El Perceptrón Simple es un modelos unidireccional conformado por dos capas de
neuronas, la entrada y salida. Este modelo presenta limitaciones al solo representar
funciones únicamente separables linealmente.
• La Adalina
La Adalina (del ingles ADAptative LInear Neuron) en este modelo las entradas
pueden ser continuas y se emplea una neurona semejante a la del perceptrón
simple.
• Perceptrón Multicapa
El Perceptrón Simple tiene limitaciones y para de solucionarlas se incluyen capas
ocultas, teniendo como resultado el perceptrón multicapa o MLP ( del ingles Multi-
Layer Perceptron) se entrena con ayuda de un algoritmo de retro-propagación de
errores.
• Redes Neuronales Convolucionales
Para definir de manera correcta el término de una red convolucional se co-
mienza explicando el problema que resuelve, y su distintivo contra las demás
redes neuronales mencionadas con anterioridad. Su objetivo principal es el
tratamiento de imágenes, pero su dificultad se localiza al momento de reali-
zar cambios en dichas imágenes, como tamaño y calidad; esto provoca que el
tratamiento de la Red Neuronal Convolucional sea ineficiente, es decir, se mal-
gastarían recursos y la red se sobre-ajustaría de forma rápida, mientras que,
por otro lado, las redes convolucionales tratan de dividir el problema en partes
más pequeñas, asignándolas a sus demás capas, las cuales podrían encargar-
se del tratamiento de la imagen por ejemplo encontrar sus bordes, detectar
patrones en bordes e iluminación, y por último conseguir una predicción con
la suma de patrones hallados en conjunto a todas las tareas repartidas en las
diferentes capas [21]. Finalmente, al observar el problema que las redes convo-
lucionales (ConvNets) tratan de resolver se puede continuar con la definición
de la misma así como su manera de uso. Su estructura está definida principal-
mente por tres tipos de capas, que se explicaran en los siguientes puntos:Capa
Convolucional
Esta capa es la que le asigna elnombre a la red, ya que por ella es diferente
a las otras, de modo que las redes estándares multiplican matrices mientras
que las ConvNets utilizan un método llamado convolución, donde se aplica un
filtro a la imagen para retornar diferentes criterios que hacen que el tamaño
de la misma sea más pequeña; esto es una ventaja, ya que la red convolucional
puede tener diferentes entradas de imágenes de diferentes tamaños y aun así
su funcionamiento es correcto. Capa Pooling
2.2. RECONOCIMIENTO DE CARACTERES 10
La capa pooling es la encargada de la reducción de imágenes y los parámetros
que analiza la red, por lo cual cambia la longitud y altura en las mismas de
tal manera que, al momento de realizar este proceso, provoca una pérdida de
datos, a pesar de ello este tipo de disminución también beneficia a las siguien-
tes capas porque conlleva una menor sobrecarga en operaciones próximas; por
otra parte algunas operaciones implementadas en este proceso son el max-
pooling que se encarga de deslizar un parche de cierto tamaño definido a la
imagen y saca el valor de mayor tamaño, mientras que el promedio realiza
el mismo proceso, solo que, como su nombre lo dice obtiene el promedio de
intensidad de los píxeles en ese lugar. Capa Clasificadora
Esta capa se utiliza al final de la red, ya que debe de clasificar las imágenes
después de extraer todos los parámetros o información de las capas anteriores
(convolucional y pooling), al terminar estos procesos la imagen envía cada pí-
xel a cada neurona independiente de la red, finalmente la capa clasifica como
todas las demás redes multiplicado el resultado de la neurona anterior por el
valor de los pesos de las conexiones y aplica una función de activación.
2.2 Reconocimiento de caracteres
El reconocimiento óptico de caracteres (OCR del inglés Optical character recognition) es
un proceso donde se clasifican los patrones ópticos obtenidos de una imagen digital. Para
lograr el reconocimiento de caracteres es necesario llevar a cabo la segmentación, extracción
de características y clasificación [22].
2.2.1 Técnicas del reconocimiento de caracteres
Lo principal en el reconocimiento es enseñar a una máquina cómo se ven los patrones que
debe identificar. Los patrones OCR son letras, números y algunos símbolos especiales como
comas, signos de interrogación, entre otros.
Lo primero es digitalizar el documento con ayuda de un escáner óptico. Se extrae cada
símbolo en el siguiente paso, la segmentación. Para evitar errores, cada símbolo es procesado
para eliminar el ruido que pueda confundir su identificación, posteriormente la identificación
de cada uno se obtiene mediante la comparación de sus características con descripciones
obtenidas previamente durante la fase de entrenamiento. Por último, se ordena la información
para reconstruir palabras y números del texto original [22].
∗∗∗• Escaneo óptico
El primer paso para el reconocimiento de caracteres es el escaneo óptico, a través
2.2. RECONOCIMIENTO DE CARACTERES 11
de este proceso el documento original se digitaliza, obteniendo una imagen digital
manipulable [22].
• Segmentación por ubicación
En este proceso la segmentación determina las áreas de la imagen donde se en-
cuentra algo impreso, distinguiendo figuras, lo complicado de la segmentación es
extraer caracteres especiales o signos que se encuentra en separados (por ejemplo la
incógnita “?”). También otro problema se presenta si el escaneo óptico provocó que
se proyectara demasiado ruido sobre la imagen, si es el caso se vuelve complicado
distinguir entre caracteres y ruido, entre otras complicaciones [22].
• Pre-procesamiento
La imagen obtenida en el escaneo óptico puede contener una cantidad considerable
de ruido. Estos defectos que pueden ocasionar tasas de reconocimiento bajas, es
por ello que se eliminan durante el pre-procesamiento, suavizando los caracteres,
es decir, rellenando y adelgazándolos. El rellenado de la imagen ayuda a eliminar
pequeños huecos en los caracteres digitalizados, donde el adelgazamiento reduce el
ancho de la línea. También, durante el pre-procesamiento se detecta la inclinación
correcta de la imagen [22].
• Segmentación
Con el pre-procesado, se obtiene una imagen más clara de cada carácter, en este
paso lo siguiente es eliminar todas las curvas o uniones del mismo, para obtener
una representación más aproximada a lo que se quiere representar y de esta manera
evitar confusión al momento de identificarlos [22].
• Representación
En este paso el carácter se representa de manera que se pueda identificar de los
demás, extrayendo sus características, los métodos de representación de caracteres
regularmente se categorizan en tres grupos: transformación global y expansión de
la serie, representación estadística y representación geométrica y topológica [22].
• Extracción de características
La extracción de las características es un punto complicado, se dejan a un lado
las características que no son importantes, únicamente se toman en cuenta los
siguientes puntos: distribución de puntos, transformaciones y expansiones y el
análisis estructural [22].
• Entrenamiento y reconocimiento
El entrenamiento para reconocer caracteres es de suma importancia, se sugiere
utilizar métodos como coincidencias con plantillas, utilizar estadísticas, técnicas
estructurales o Redes Neuronales Artificiales [22].
2.3. TRASTORNOS PSICOLÓGICOS 12
• Post-procesamiento
El resultado final del post-procesamiento es el texto plano digital, regularmente
se implementa una fase de corrección de texto agrupando las letras conforme a
palabras predefinidas, esto ayuda a aumentar la efectividad del reconocimiento
[22].
2.2.2 Procesamiento de imágenes
Para el procesamiento de imágenes necesario ciertos pasos, el primero es adquirir la ima-
gen digital con ayuda de un lector óptico (escáner) o alguna herramienta. Algunas veces se
obtienen imágenes con ruido es decir, borrosas o con pequeñas manchas.
Un paso importante es la segmentación, en este punto la imagen se divide en secciones
identificables y secuenciales, después de la extracción de segmentos es necesario definir las
características como color, textura, iluminación. Por último, se procede a clasificar la imagen
[22].
2.3 Trastornos psicológicos
En los años setenta se combatía entre maestros y padres de familia acerca del término
con el cual harían referencia a niños con problemas de aprendizaje, por lo tanto, era muy
común designarlos como niños con daño cerebral, disfunción cerebral mínima o problemas
perceptivos. Este término cambió para el año de 1963, donde Samuel Kirk propone la ex-
presión en inglés “learning disabilities” o bien como su significado en español “dificultades
de aprendizaje”, donde este concepto incluye aquellas variaciones o retardos en procesos de
lenguaje, habla, deletreo y escritura, los cuales son consecuencia de alguna disfunción cere-
bral, trastorno emocional y/o conductual, liberando así esta idea de cualquier vínculo con
problemas de retraso mental [23, 24].
Los trastornos que entran en la categoría de lenguaje escrito se han definido de variadas
formas, pero para este proyecto se determinara como aquellos trastornos específicos, estables
y que sean parciales del proceso de la escritura, mientras que el objetivo de tratar estos
tipos de trastornos es que los niños asimilen y utilicen correctamente los símbolos gráficos
del lenguaje para que al mismo tiempo exista una mejora en cuanto a escritura [25].
En consecuencia, con lo anterior, se explicará algunos tipos de trastornos psicológicos
que afectan la escritura, y se detallará características específicas de estos, asimismo se dan
ejemplos de algunos tratamientos empleados por educadores de primarias para mejorar la
escritura de los estudiantes.
2.3. TRASTORNOS PSICOLÓGICOS 13
2.3.1 Disgrafía
El rezago escolar se ha propiciado por la práctica inapropiada de métodos, medios y
procedimientos para el aprendizaje en cuanto a escritura, en consecuencia, la disgrafía es un
factor que perjudica el rendimiento académico.La disgrafía es un trastorno parcial del proceso de la escritura, que se puede interpretar
como la perturbación de la misma, no respeta a las deficiencias fonoarticulatorias, sensoriales,
psíquicas o intelectuales, que puede ser ocasionado por diferentes motivos, pero es importante
mencionar que este tipo de trastorno prevalece en el sexo masculino de edad aproximada de
siete años, según el estudio que se realizó en la Universidad de Guantánamo a 143 niños; de
la misma manera, la tardanza en la rectificación de este trastorno, se debe principalmente a
la insuficiente preparación en los educadores y familiares que se encuentran en el entorno del
niño.
Las características de la disgrafía son:
• Agrafia
Es una rama de la disgrafía y también se considera un trastorno de la escritura,
pero a comparación de la disgrafía este tiene un nivel de gravedad más prominente,
ya que se observa una pérdida completa de la facultad para escribir.
• Disgrafía Es un trastorno parcial de la escritura, en el cual la persona manifiesta ciertos
errores en la misma, como lo es la sustitución, omisiones y cambios de letras así como
de sílabas, o falta de organización (empalme de letras, escritura fuera de el renglón,
combinación de mayúsculas y minúsculas, entre otras).
Los tipos disgrafía, según los síntomas que presente el afectado, se puede categorizar
en tres diferentes tipos, por lo tanto, se divide en acústica, óptica y motriz
– Disgrafía óptica
Las dificultades de este tipo se pueden apreciar en las impresiones y repre-
sentaciones visuales, por esta razón los niños no reconocen algunas letras por
separado y tampoco las pueden relacionar con los sonidos, se puede decir que
no se encuentra una concentración fonema-grafema.
– Disgrafía motriz
Este trastorno se produce a consecuencia de problemas en el movimiento de la
mano con la cual el niño escribe, por lo tanto, el niño puede comprender la relación
que existe entre la letra y su sonido, ya sea cuando el escucha el sonido o cuando
él lo pronuncia, de la misma manera entiende la representación gráfica de estos
sonidos (las letras), pero manifiesta dificultades para escribirlas, esto último a
consecuencia de la motricidad deficiente que presenta y la cual no se desarrollo de
manera correcta. Esta disgrafía se presenta en dos aspectos.
2.3. TRASTORNOS PSICOLÓGICOS 14
∗ Aferente
Es la dificultad que se tiene para lograr movimientos articulatorios que
se presentan de forma aislada, como lo son movimientos gráficos disocia-
dos, signos gráficos indiferenciados, manejo incorrecto del lápiz y postura
inadecuada al escribir.
∗ Eferente
Este rasgo presenta una dificultad en la secuencia lógica, en la fluidez y
también se manifiesta en la lentitud con la cual se escribe.
• Causas de la disgrafía
Se presentan por variadas situaciones.
– Madurativas
Estas son del tipo neuropsicológicas, es decir, aquellas con mala lateralización
(cuando se usan ambas manos para escribir), problemas psicomotoras, trastor-
nos del esquema corporal y perceptivo motrices (coordinación del movimiento
corporal).
– Pedagógicas
Este aspecto se puede considerar como un descuido del diagnóstico de los
educadores, donde se utilizan los métodos y materiales inadecuados para el
tratamiento que el niño debería de obtener.
– Mixtas
Esta circunstancia se encuentran factores múltiples como anormalidades do-
lorosas en las manos del niño, las tensiones forzadas durante la escritura,
lentitud para escribir, mala coordinación de movimientos al sujetar el lápiz.
– Pseudodisgrafía
Este grupo de trastorno de escritura se define por aquellos defectos sensoriales
que el niño presenta principalmente en órganos de visión y audición.
• Tratamiento para diferentes tipos de disgrafía impartidas en el aula por educadores.
– Ejercicios para mejorar el control muscular de alumno
– Colorear letras sin salirse del contorno, recortar y otras actividades manuales.
– Formación de figuras y letras con plastilina siguiendo un modelo.
– Hacer que el niño copie textos pequeños y sencillos.
– Trazar las letras en el aire con el dedo.
– Ordenamiento de palabras.
– Elegir el grafo (letra) que pide el educador entre un conjunto de letras con las
cuales posiblemente puede confundir.
2.3. TRASTORNOS PSICOLÓGICOS 15
Los niños con trastorno de disgrafía se incluyen dentro de los alumnos que presentan
dificultades de aprendizaje, estos trastornos de escritura tienen como consecuencia resultados
negativos en niveles superiores de estudio, por ello es que es de importancia lograr vencer
esta dificultad en niños a temprana edad [25, 26].
2.3.2 Trastorno por Déficit de Atención e Hiperactividad
Los problemas del TDAH son más frecuentes de lo que se piensa, del 3% al 6% de la
comunidad de niños de edad escolar lo sufren, y puede mantenerse en la edad adulta con un
40% de casos en esta etapa, en base lo mencionado se puede decir que en las aulas de estudio
por lo menos un alumno padece de este trastorno.Por lo tanto, estas investigaciones revelan
la gran necesidad de atender el TDAH, auxiliando desde su diagnóstico hasta la intervención
profesional [27].
Este trastorno requiere de precisión al diagnosticarlo, ya que se puede llegar a confun-
dir con dificultades de aprendizaje (DA), asimismo se debe continuar y profundizar en la
investigación entre el TDAH y las DA para minimizar los errores de diagnóstico [27].
El TDAH no se puede definir de una manera sencilla principalmente porque este tipo de
síndrome no se ha encontrado que lo causa y tampoco existe un tratamiento específico para
terminar con este trastorno. Algunas de las causas por las cuales se creía que existía este
trastorno era por algún daño cerebral causado por la falta de oxígeno a la hora del parto del
bebé [27].
Se sabe que el TDAH se le ha dado seguimiento en cuanto al plano médico o psiquiátrico,
pero en el país de México no ha sido tratado lo suficiente en cuanto a la rama de la educa-
ción. Los problemas que presentan las personas con este trastorno son: memoria de trabajo,
autorregulación de motivación y afecto, internalización del lenguaje y la reconstitución, todo
esto perjudicando el control motor y fluencia, englobándolo en la sintaxis de la conducta del
individuo [27, 28].
Capítulo 3
Desarrollo
Para desarrollar cualquier proyecto es necesario estructurar un plan que ayude a concluir
de manera correcta y eficiente el producto que se entregará.
3.1 Descripción de Metodología
Son varios los modelos de metodología que existen para el desarrollo de software, en este
proyecto se empleará el Modelo-V, o también conocido como modelo de cuatro niveles.
El Modelo-V es viable para el desarrollo de productos de software, este método describe
el cómo, cuándo y quién es el responsable de realizar las actividades descritas para lograr el
objetivo final del proyecto. Este método representa el ciclo de vida del desarrollo del sistema
mediante una gráfica, se resume todos los procedimientos que hay que realizar en conjunción
con sus correspondientes validaciones de cada uno de ellos.
El Modelo-V, como su nombre lo describe, es la gráfica de la letra “V” y esta se divide en
tres partes: izquierda, derecha e inferior.
• Parte izquierda de la V: en este punto se define las especificaciones que lleva el sistema
a realizar (requerimientos del usuario, funcionales y diseño).
• Parte derecha de la V: aquí se comprueba si el funcionamiento de cada especificación de
la parte izquierda se está ejecutando correctamente (pruebas de instalación, operacional
y de rendimiento).
• Parte inferior de la V: éste punto se encuentra entre los dos lados (izquierdo y derecho)
representando el desarrollo del sistema.
El funcionamiento de este método se muestra en la Figura 3.1
16
3.2. FASES 17
Figura 3.1: Representación del Método-V.
3.2 Fases
En este apartado se definen los requerimientos y funcionalidades que tiene el prototipo,
con todas las características necesarias para llegar al objetivo de este proyecto de la manera
mas eficaz.
3.2.1 Análisis
El prototipose elaboró para el sistema operativo Windows, de modo que está dirigido
para el uso por medio de computadoras de escritorio (PC). El propósito del prototipo es que
mediante una red neuronal se analice una imagen de grafos (letras) que serán de escritos de
niños entre las edades de 8 a 12 años, esto último con el objetivo de que la red neuronal
deduzca si el niño cuenta o no con disgrafía.
Con respecto a lo antes mencionado se tiene que entrenar a la red neuronal con imáge-
nes de escrituras, tanto de personas que cuentan con disgrafía y con aquellas que no. Las
3.2. FASES 18
imágenes fueron recolectadas de los escritos de alumnos de primarias de Ciudad Juárez que
se encuentren entre los grados de tercero a sexto, con edad entre 8 a 12 años, mediante una
donación anónima. En la Figura 3.2 vemos un extracto de una hoja de un cuaderno de un
infante con disgrafía.
Figura 3.2: Escritura de un niño con disgrafía.
Se dividieron las imágenes entre dos clases: niños con disgrafía y sin disgrafía, esto último
con el objetivo de agilizar la realización de pruebas en el funcionamiento de la red neuronal
y la generación de imágenes para el entrenamiento de la misma.
3.2.2 Diseño del software
El diseño del prototipo requiere de varias etapas para lograrlo
• Elegir el tipo de red neuronal artificial (RNA).
• Recolección de imágenes para entrenar y probar RNA.
• Procesamiento de imágenes
• Construcción de la RNA.
• Entrenamiento de la RNA
• Realización de pruebas
3.2. FASES 19
Algunos de los módulos anteriormente mencionados se definen en esta etapa para que se
puede tener una idea base de como realizar los siguientes pasos de una manera más certera,
y así seguir con la continuidad eficiente a la siguiente fase del proyecto.
Tipo de red neuronal artificial
Se seleccionó una red neuronal convolucional en base a investigación sobre las RNA uti-
lizadas para la clasificación de imágenes, ya que permite analizarlas y detectar patrones que
no son notorios a simple vista, dado que durante el proceso del modelo convolucional co-
mo se muestra en la Figura 3.3 , le aplica filtros a la entrada para definir características y
clasificarlas en las neuronas de salida.
Figura 3.3: Representación de una RNA convolucional.
Recolección de imágenes
Para este proyecto se seleccionaron imágenes de cuadernos donados anónimamente, los
cuales fueron escaneados con una resolución de 600 píxeles por pulgada. Manualmente se eli-
gieron las imágenes que tuvieran mayor numero de letras por renglón para después agruparlas
en dos clases: normal y disgrafía. Una vez agrupadas, se ajustó la inclinación de las imágenes
con ayuda de Adobe Photoshop, de esta manera se obtuvo las coordenadas y tamaños exactos
de cada renglón (el tamaño y coordenadas están en base a píxeles). En la Figura 3.4 a la
izquierda tenemos un ejemplo de una hoja del cuaderno de un niño con disgrafía después del
proceso anterior y a la derecha de un niño que no tiene disgrafía. Al observar esta imagen se
detectan patrones a simple vista, tales como el espacio entre letras así como su tamaño, la
combinación de mayúsculas y minúsculas, la consistencia en seguir el renglón, entre otras.
Procesamiento de imágenes
El procesamiento digital realizado en las imágenes son un conjunto de técnicas que se
aplican a estas con el objetivo de mejorar la calidad o facilitar la búsqueda de información
que contiene cada imagen, algunas técnicas que se implementaron en este proyecto son: la
redimensión y tratamiento de imágenes.
3.2. FASES 20
Figura 3.4: Ejemplos de escritura de niños con y sin disgrafía.
La herramienta OpenCV cuenta con varias funciones que permiten el manejo de entrada
de cada imagen, es decir, el procesamiento de la misma; OpenCV tiene funciones que ayudan
a resaltar o descartar zonas de las imágenes así como también la transformación de la misma,
por ejemplo: agregar efectos, mejorar el color, mezclar la imagen, entre otras transformaciones
existentes; esto último para tener un mejor análisis de cada imagen. Esta herramienta facilita
el procesamiento de las imágenes por lo que sería apropiado la utilización de la misma en el
proyecto.
• Conversión de la imagen a escala de grises
La primera transformación que se realizó en las imágenes para construir una base de
datos para la red neuronal, fue convertir en escala de grises cada imagen, ya que es más
fácil para una RNA analizar datos desde una figura que contiene pocos colores (blanco,
negro y gris), esto debido a que las imágenes tienen tres tipos de medición longitud,
altura y profundidad, donde la última son las capas de color de la misma, de modo que
entre menos colores se manejen más pequeños serán los datos que se analizaran. Estas
modificaciones se llevaron a cabo con la librería de OpenCV en conjunto a su función:
cv2.imread(temp_name, 0) , donde cv2 hace referencia a un objeto de OpenCV para
hacer uso de sus herramientas, seguido de imread para leer la imagen que se le esta
enviando entre paréntesis temp_name y el dígito 0 que es por el cual la imagen se
convierta en escala de grises para mejor manejo y tratamiento en las demás capas de
la red.
• Aplicar Blur Gaussiano
El Blur gaussiano es un filtro que se utilizó en las imágenes de la RNA con el objetivo
de quitar ruido de alta frecuencia en ellas, esta operación aplica un filtro de desenfoque
a una figura o imagen para eliminar datos o características que no son favorables para la
red neuronal. La función es la siguiente: cv2.GaussianBlur(img, (5, 5), 0), donde va de
3.2. FASES 21
la mano con la conversión a escala de grises ya que se envía como primer parámetro la
imagen ya convertida, como segundo término le asigna el tamaño del filtro de desenfoque
(5x5) y por último, el dígito 0 asigna la desviación estándar del kernel gaussiano en el
eje X.
• Binarización de imágenes
La binarización es una técnica para eliminar completamente el ruido y resaltar el texto,
esto se realizó con la función ret3, th3 = cv2.threshold(img, 0, 255, cv2.THRESHBINARY+
cv2.THRESHOTSU) donde el primer parámetro es la imagen que a la que se le va a
realizar la operación, los siguientes dos para parámetros son tamaño del umbral y el
valor que se asigna si se cumple con el umbral, por ultimo el tipo de umbralización.
Con cv2.THRESHBINARY obtenemos un umbral fijo por lo tanto en lugares donde
este oscura o saturada la imagen cambiara a color negro por otra parte se perderán
en blanco los lugares demasiado iluminados, en la Figura 3.5, a la izquierda están los
valores originales de la imagen y a la derecha se explica como se considera un umbral
y todo lo que este por arriba de él lo sube por completo y de la misma manera con los
valores inferiores al umbral, los baja por completo.
Figura 3.5: Representación de la función de binarizar.
Para evitar la perdida de secciones de la imagen agregamos la binarización Otsu, la cual
se encarga de encontrar en el histograma de la imagen un valor medio de los picos del
mismo, en el caso de nuestro proyecto se aplico el gaussianBlur para reducir el ruido
y por lo tanto los picos en el histograma, y de esta manera la binarización seria mas
sencilla al combinar el umbral fijo con el umbral Otsu.
• Segmentación de la imagen
Para la segmentación de las imágenes se ajustó Adobe Photoshop y la obtención de las
coordenadas de un renglón. Con la información obtenida con OpenCV se cargo con un
ciclo todas las imágenes una por una, después seleccionamos una área especifica con
la función img[y : y + altura, x : x + ancho] y asignarla a una variable para guardar
renglón por renglón.
• Normalización y reducción de imágenes
La redimensión de imágenes es establecer un estándar en el tamaño de píxeles (resolu-
ción) que contiene cada imagen, esto se realiza para poder extraer algunas caracterís-
ticas que puede llegar a incrementar el nivel de acierto en las predicciones del modelo
3.2. FASES 22
utilizado para evaluar con la red neuronal, es decir, que en algunos casos se puede redu-
cir el tamaño con lo que quizás se pierdacierta información o de lo contrario aumentarlo
donde se intercalarán los píxeles.
Después de segmentar la imagen en renglón por renglón, quedaron de un tamaño varia-
do, de 3532 a 4013 píxeles (px) de largo por 170 a 180 píxeles de alto, por lo tanto se
decidió normalizar todas las imágenes a un mismo tamaño de 4100 px por 230 px. Lo
siguiente fue reducirlas, para optimizar el tiempo de entrenamiento de la RNA, utili-
zando el siguiente fragmento de código para reducir todas las imágenes al 20 por ciento
de su tamaño original, quedando con las dimensiones de 800 px por 46 px :
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
Construcción de la red neuronal
En esta fase se implementará la investigación mencionada en puntos anteriores, donde se
define que tipo de red neuronal es eficiente para este tipo de aplicación, en otras palabras, se
realizara la construcción de la red con el lenguaje más conveniente y sencillo para el manejo
de esta.
La herramienta adecuada para la construcción de una red neuronal es Tensorflow, esto se
implementará con el lenguaje Phyton. Para el proyecto seleccionamos una RNA convolucio-
nal, con 20 épocas de 1000 pasos cada una, utilizaremos dos convoluciones y 2 maxPooling
respectivamente. En la capa completamente conectada tendremos 256 neuronas, de las cuales
se desactivaran algunas aleatoriamente para que la red aprenda nuevos caminos para clasifi-
car, por ultimo, como salida tendremos dos clases (neuronas): Con trastorno y sin trastorno.
Para activación de las capas de convolución se utilizara Relu y para las clases Softmax, este
ultimo se seleccionó ya que utiliza probabilidad para determinar cual porcentaje pertenece a
cada clase de una imagen evaluada y selecciona la de mayor porcentaje.
Entrenamiento de la red neuronal
El entrenamiento de la red neuronal es necesario para el prototipo, ya que sin esto, la
red neuronal no sería eficiente ni realizaría predicciones congruentes, en nuestro proyecto se
entrenó la red con 100 imágenes de cada clase (normal y con disgrafía) para entrenamiento
3.2. FASES 23
al igual que para validación, dando un total de 400 imágenes de 820 px de largo por 46 px
de alto en blanco y negro.
Para mejor el reconocimiento de las características de las imágenes, se realizó un pre-
procesamiento para los datos de entrenamiento ajustando una cierta inclinación, zoom o
invirtiéndolas, con ayuda de las funciones shear_range, zoom_range, horizontal_flip, pero
en los datos de validación se utilizan las imágenes tal y como son originalmente
En el entrenamiento de la RNA utilizamos el optimizador Adam con un Learning Rate
de 0.0004, con una métrica que se enfoque en mejorar el accuracy, es decir trate de clasificar
el mayor numero de imágenes correctamente.
cnn.compile(loss='categorical_crossentropy',
optimizer=optimizers.Adam(lr=0.0004),
metrics=['accuracy'])
Por ultimo, el modelo entrenado y los pesos se guardaron para ser utilizados en las pre-
dicciones (pruebas).
Realización de pruebas
Este es el final de los módulos para la realización de la prototipo, en esta parte se llevarán
a cabo las pruebas con imágenes de escritura de los alumnos de ambos grupos (normal y con
disgrafía) para verificar si la red neuronal da predicciones correctas.
Para las pruebas se utilizaron imágenes conocidas por la RNA durante el entrenamiento
así como imágenes totalmente desconocidas, son del mismo tamaño (820 píxeles (px) de largo
por 46 px de alto en blanco y negro).
Capítulo 4
Resultados y Discusiones
En este capitulo se da a conocer los resultados que se obtuvieron del prototipo durante
el entrenamiento y pruebas de a red neuronal artificial (RNA).
4.1 Condiciones de prueba
Para la evaluación de la RNA se estableció varias condiciones de prueba, con el objetivo
de obtener mejores resultados y mejorar la clasificación. Dichas condiciones consisten en:
• Análisis del procesamiento
Se realizó una binarización en las imágenes sin otra técnica de procesamiento, la conse-
cuencia de esto fue una perdida parcial de la información, por ejemplo, algunas ilustra-
ciones contenían pequeñas sombras que se generaron durante el proceso de escaneado
y al situarse por debajo del espectro la binarización (o por encima en el caso de la
binarización inversa), se convertía todo a negro o blanco provocando dicha perdida.
Por lo tanto, se realizó una investigación profunda de como mejorar este método para
aprovechar los datos de manera óptima. Por otro lado, después de binarizar se obser-
vó que los bordes de las letras no mostraban continuidad ya que contaban con ruido
careciendo de un trazo concreto, por lo que se buscó maneras o técnicas de definir el
contorno de las letras.
• Preparación de los datos
Con ayuda de OpenCV se normalizaron y segmentaron las imágenes obtenidas de los
cuadernos, dentro de la normalización se realizó un difuminado Gaussiano y la binariza-
ción para eliminar ruido que pudiera afectar el entrenamiento de la RNA, las funciones
utilizadas fueron GaussianBlur() y threshold().
• Entrenamiento y validación de la RNA
24
4.2. RESULTADOS 25
Se obtuvieron diferentes resultados en las redes neuronales artificiales utilizadas, la
variación fue producto de el procesamiento de los datos utilizados para entrenar, así
como la arquitectura utilizada.
4.2 Resultados
A continuación se muestran los resultados obtenidos en el entrenamiento de la RNA, en
la Tabla 4.1 se muestra las características de la Red Neuronal Artificial # 1.
Optimizador Learning Rate Épocas Pasos Función de entrenamiento Funcion de activación RNA
Adam 0.004 20 1000 ReLU Softmax C-P-C-P-256-2
Tabla 4.1: Características de la RNA #1
En la columna “RNA ” la letra “C” representa una capa de convolución y la letra “P ”
representa la capa de MaxPooling, con 256 neuronas en una capa densa y por ultimó, dos
neuronas de la capa de salida. Se asignaron 20 épocas de 1000 pasos cada una. Esta RNA
fue entrenada y validada con las imágenes con el texto en color negro y el fondo blanco,
obteniendo un desempeño de 0.9200 de accuracy, el cual se dio en la última etapa.
En las Figuras 4.1 y 4.2 se muestran ejemplos de pruebas realizadas, donde la red clasifico
con dos errores sobre tres imágenes de niños con disgrafía, esto se ve en la Figura 4.1, es
decir el error de clasificación es alto para este proyecto. Por otro lado, en la Figura 4.2 se
observa que la RNA #1 clasificó correctamente las cuatro ilustraciones del niño sin disgrafía
pero en base a los resultados anteriores, genera incertidumbre sobre integridad de los datos
obtenidos .
Figura 4.1: Pruebas sobre escritura con disgrafía con la RNA #1.
4.2. RESULTADOS 26
Figura 4.2: Pruebas sobre escritura sin disgrafía con la RNA #1.
La Tabla 4.2 representa las características de la RNA #2.
Optimizador Learning Rate Épocas Pasos Función de entrenamiento Funcion de activación RNA
Adam 0.004 20 1000 ReLU Softmax C-P-C-P-256-2
Tabla 4.2: Características de la RNA #2
En la columna “RNA ” la letra “C” representa una capa de convolución y la letra “P
” representa la capa de MaxPooling, con 256 neuronas en una capa densa y por ultimó,
dos neuronas de la capa de salida. Se asignaron 20 épocas de 1000 pasos cada una. Esta
RNA es una mejora de la anterior, se realizó una variación a las imágenes de entrenamiento y
validación, invirtiendo los colores, es decir el texto en blanco y el fondo negro. Dicha variación
genero mejores resultados, obteniendo un accuracy de 0.9750.
En las Figuras 4.3 y 4.4, se muestran una prueba realizada, donde la red clasifico con un
error sobre cuatro imágenes de niños sin disgrafía, esto se ve en la Figura 4.3. Por otro lado,
en la Figura 4.4 se observa que la RNA #2 clasificó correctamente las cuatro ilustraciones
del niño con disgrafía.
4.3. DISCUSIONES 27
Figura 4.3: Pruebas sobre escritura sin disgrafía con la RNA #2.
Figura 4.4: Pruebas sobre escritura con disgrafíacon la RNA #2.
4.3 Discusiones
En base a los resultados anteriores, observamos que la RNA 1 tuvo una buena clasificación
a pesar de ser el primer intento, pero no es lo suficientemente confiable para nuestro prototipo,
una de las causas probables de este resultado es que el texto al estar en color negro y el fondo
en blanco, la convolución se enfoca en analizar el fondo excluyendo el texto, por lo tanto
los patrones que se presentan en la Disgrafía son prácticamente ignorados ya que pueden ser
tomados como píxeles con valor 0 o la convolución interpreta que en esa área no hay datos
para analizar, todo esto se genera al estar el texto de color negro.
Por otro lado, en la RNA 2 al tener el texto en blanco y fondo negro, posiblemente los
filtros de las convoluciones y el MaxPooling se enfocan más en el texto, el cual representa
mejor los patrones de la Disgrafía, por ejemplo el empalmamiento de letras o los cortes que
hacen las palabras al contorno del renglón. Dando todo como resultado una clasificación
óptima para el proyecto.
4.3. DISCUSIONES 28
Por ultimo, como trabajo a futuro se plantea que el procesamiento de las imágenes mejore,
ya que este paso es sumamente importante para mejorar las capacidades de la RNA. Una
de las mejoras esperadas es que a la imagen escaneada se le ajuste la inclinación por medio
de un algoritmo que detecte la inclinación y la ajuste, con el objetivo de que el proceso de
segmentación sea mas exacto y sencillo.
Capítulo 5
Conclusiones
Esta última sección es dedicada a las conclusiones que se dedujeron respecto a lo largo
de la implementación del prototipo, por lo cuál serán expuestas de manera breve, como un
resumen de todo lo realizado, aprendido y lo que posiblemente se lleve a cabo en un futuro.
El proceso de la recopilación de los datos (imágenes de cuadernos) se dificultó debido
a la protección de información de los niños por parte de las autoridades escolares, ya que
la petición para el escaneado digital de dichos cuadernos implica una burocracia extensa si
se planea obtenerlos en una escuela publica. Por otro lado, en las escuelas particulares el
acceso se realiza por medio de una solicitud directa a los profesores y/o padres de familia.
En este proyecto se opto por la segunda opción, es decir escuelas particulares, para agilizar
el tiempo de espera. Las imágenes utilizadas fueron parte de una donación de cuadernos de
forma anónima, para esto se requirió de distintas visitas a instituciones durante el inicio del
proyecto además de un oficio por parte de la coordinación del programa.
En términos generales, el tipo de red empleada es la convolucional, se eligió porque su
enfoque y arquitectura favorecen el análisis de imágenes. Se utilizaron dos Redes Neuronales
Artificiales (RNA) con los mismos valores para implementar el modelo pero con diferentes
procesamiento de las imágenes en cada una, es decir, cambiamos los datos de entrada. Al-
gunos de estos valores de la configuración de la RNA se eligieron por intuición propia y por
investigación del tema, ya que en proyectos similares funcionaban de manera correcta, dichos
valores son: 20 épocas de 1000 pasos cada una, también se aplicaron 2 capas de filtros convo-
lucionales con profundidad de 32 y 64, el tamaño (3,3) y (2,2) respectivamente a cada uno,
cada convolución tiene un MaxPooling de tamaño (2,2) (dos MaxPooling en total), se escogió
el learning rate de 0.0004, el entrenamiento se enfoco en mejorar el Accuracy utilizando Adam
como optimizador finalmente para clasificar cada entrada se manejo 2 clases: con trastorno
y sin trastorno.
.
Durante el desarrollo, concluimos en:
29
CAPÍTULO 5. CONCLUSIONES 30
• Se cumplió el objetivo de encontrar y desarrollar una RNA capaz de identificar la
Disgrafía.
• Se observo que al invertir los colores del texto y fondo, la red neuronal se enfoco de
mejor manera en los píxeles del texto, por ende tuvo mejor resultado como se observo
en la RNA 2, por lo tanto se cumplió el objetivo de explorar y evaluar los métodos de
procesamiento de imagen más viables para entrenar la red neuronal.
• Utilizar la RNA Convolucional fue la mejor opción para la clasificación de imágenes.
• El desarrollo de Redes Neuronales Artificiales mediante código, permite controlar mejor
los parámetros y por lo tanto mejorar la eficiencia.
• Se generó una colección de imágenes para entrenamiento de la RNA obtenida de cua-
dernos de niños con y sin disgrafía.
Por otro lado, esperamos que este proyecto de prototipo sirva para investigaciones y
proyectos futuros, así como se buscará mejorar este prototipo en lo siguiente:
• Desarrollo de un algoritmo que detecte la inclinación o rotación de una imagen de texto
y ajuste los ángulos correspondientes para mejorar el manejo de la misma.
• Utilizar otros métodos de entrenamiento para mejorar la clasificación, por ejemplo
Transfer Learning de Keras
Bibliografía
[1] María Del Pilar Poza-Díaz, María Victoria Valenzuela-Moreno, and Dalia Becerra-
Alcántara, “Guía Clínica: Trastorno por Déficit de Atención e Hiperactividad”, Guías
Clinicas del Hospital Psiquiatrico Infantil "Dr. Juan N. Navarro
, pp. 1–29, 2007.
[2] Isabel Villar, “Déficit de Atención con Hiperactividad . “ Manual para padres y educa-
dores ” Autora : Isabel Orjales Villar . Editorial : CEPE . Madrid .”, pp. 1–20, 1999.
[3] Universidad Pedagógica Nacional, “La disgrafía en niños de tercer grado de primaria”,
2006.
[4] Ruddy Morales Peña, La inteligencia artificial en la actualidad, ITCA Editores, 2010.
[5] ABBYY Inc., “Intelligent capture by ABBYY accelerates digital transformation of bu-
siness operations”, 2018.
[6] Google inc, “Google Experiments”, 2018.
[7] T. Kawashima J. Kim N. Fox-Gieg Google Creative Lab y Data Arts J. Jongejan,
H. Rowley and Team, “Quick Draw! by Google Experiments”, 2018.
[8] H. Rowley L.-L. Wang y V. Carbune D. Keysers, T. Deselaers, Multi-Language Online
Handwriting Recognition, 2017.
[9] D. J. Matich, Redes Neuronales: Conceptos Básicos y Aplicaciones., 2001.
[10] Yerai Doval, Carlos Gómez Rodríguez, and Jesús Vilares Ferro, “Segmentación de pala-
bras en espanol mediante modelos del lenguaje basados en redes neuronales”, 2016.
[11] K. Carvajal Cuello C. Zambrano Matamala, D. Rojas Díaz and G. Acuña Leiva, Análisis
de rendimiento académico estudiantil usando data warehouse y redes neuronales, 2011.
[12] M. Moreno Carrillo A. Gomez M. Sarmiento-Bolaños, I. Rojas Ríos, “Dificultades en el
factor neuropsicológico cinestésico predicen posibles problemas en la adquisición de la
escritura”, UPJ, vol. 15, no. 5, 2016.
31
BIBLIOGRAFÍA 32
[13] G. Salazar A. Quispe, C. Bernal, “El uso de aplicaciones móviles educativas para niños
con dificultades de aprendizaje”, USMP, vol. 22, no. 23, 2017.
[14] D. L. Poole, Alan Mackworth, and R. G. Goebel, “Computational Intelligence and
Knowledge”, Computational Intelligence: A Logical Approach, , no. Ci, pp. 1–22, 1998.
[15] Algoritmos De Búsqueda and Y Ordenación, “Algoritmos De Búsqueda Y Ordenación”.
[16] Teddy Alfaro Olave, “Algoritmos de Búsqueda y Ordenamiento Algoritmos de Búsqueda
Algoritmos de Búsqueda Búsqueda Secuencial”, pp. 1–13.
[17] David E Golberg, “Genetic Algorithms in Search Optimization & Machine Learning”,
1989.
[18] Marcel Van Gerven and Sander Bohte, Artificial Neural Networks as Models of Neural
Information Processing, 2018.
[19] Jorge Navarrete, Mejora en el algoritmo de segmentacion para el reconocimiento de
caracteres de telegramas escritos por el General Porfirio Diaz, Universiadad de las
Americas en Puebla, 2002.
[20] Abdelmalik Moujahid Larranaga Pedro, Inaki Inza, Redes Neuronales, Universidad del
Pa´ıs Vasco–Euskal Herriko Unibertsitatea, 2002.
[21] Carlos Antona Cortés, “Herramientas modernas en redes neuronales: la librería keras”,
B.S. thesis, 2017.
[22] Arindam Chaudhuri, Krupa Mandaviya, Pratixa Badelia, and Soumya K. Ghosh, Optical
Character Recognition Systems for Different Languages with Soft Computing, Springer,
2017.
[23] A. Aguilera, Introduccióna las dificultades de aprendizaje, McGRAW-HILL, 2004.
[24] S. Kir, Educating Exceptional, Wadsworth, 1962.
[25] Onaida Calzadilla-González Idevis Lores-Leyva, Los trastornos de la lectura y la escritura
en escolares de la Educación Primaria, EduSol, 2013.
[26] Delgado González, “ Caracterización de disgrafia en niños y niñas”, pp. 1–10, 2016.
[27] A. P. Associatio, Manual diagnóstico y estadistico de los trastornos mentales, 1994.
[28] C. R. Pérez, El Trastorno por Déficit de Atención e Hiperactividad (TDAH) y las
Dificultades de Aprendizaje en escritura. Estudios experimental y comparativos. , 2008.
Apéndice A
Constancia
33
APÉNDICE A. CONSTANCIA 34
Apéndice B
Códigos
Código de procesamiento de imágenes
import cv2
# El siguiente codigo es para saber cuantos archivos hay en la carpeta
import os
import numpy as np
folder_path="para_cortar/" #Es el path donde estan las imagenes
list = os.listdir(folder_path)
number_files = len(list)
directorio_final = 'renglones/'
if not os.path.exists(directorio_final):
os.mkdir(directorio_final)
# Cargar imagen a balnco y negro
# El nombre de la imagen tiene un sufijo para poder leerla en un ciclo (una por una),
# El sufijo incrementa de nombreimagen1.jpg, ...2.jpg. ademas,
# la siguiente imagen sra cargada despues de que la imagen previa sea procesada (cortada).
# El siguiente condigo es para leer las imagenes en un ciclo
img_prefix="img" #Puede cambiar
img_type=".jpg" #Puede cambiar
img_tosave="row" #Puede cambiar
row_aprox_hight=170#Altura del renglon
35
APÉNDICE B. CÓDIGOS 36
# El siguiente codigo es el ciclo para cargar y cortar todas las imagenes,
# renglon por renglon.
for x in range(1,number_files+1):
initial_Y1UP=677
initial_Y1DOWN=847
initial_X1UP=825
initial_X2UP=4357
temp_name=folder_path+img_prefix+str(x)+img_type
img = cv2.imread(temp_name,0)
blur = cv2.GaussianBlur(img,(5,5),0)#Se le aplica el filtro gaussiano
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
#A la imagen con filtro y se binarizan
#La siguiente linea se activa para invertir los
#colores de la imagen, red neuronal 2
# ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
#El siguiente codigo es para guardar renglon por renglon,
temp_height=0
for y in range(1,33):
#El rango puede variar segun los renglones que
# contengan las hojas del cuaderno
tempY1UP=initial_Y1UP+temp_height
tempY1DOWN=initial_Y1DOWN+temp_height
crop_img = th3[tempY1UP:tempY1DOWN,initial_X1UP:initial_X2UP]
#img[Y1UP:Y1DOWN,X1UP:X2UP]
#--este codigo es pra seleccionar una area especifica (renglon).
temp_height=temp_height+row_aprox_hight
save=directorio_final+img_prefix+str(x)+img_tosave+str(y)+img_type
cv2.imwrite(save,crop_img)
#el siguiente codigo es para normalizar todas las imagenes
# de los renglones, se haran todas del mismo tamaño
placeholder_path="/placeholder.jpg"#4015px*180px
for x in range(1,number_files+1):
for y in range(1,33)
temp_name_rows=directorio_final+img_prefix+str(x)\
+img_tosave+str(y)+img_type
img = cv2.imread(temp_name_rows,0)
placeholder_img[y_offset:y_offset+img.shape[0],\
x_offset:x_offset+img.shape[1]] = img
width = int(placeholder_img.shape[1] * scale_percent / 100)
height = int(placeholder_img.shape[0] * scale_percent / 100)
APÉNDICE B. CÓDIGOS 37
dim = (width, height)
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
cv2.imwrite(temp_name_rows,resized)
Código de entrenamiento de la red neuronal
import sys
import os
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras import optimizers
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dropout, Flatten, Dense, Activation
from tensorflow.python.keras.layers import Convolution2D, MaxPooling2D
from tensorflow.python.keras import backend as K
K.clear_session()#Elimina las sesiones
# Path donde estan contenidas las imagenes
datos_entrenamiento = 'data/entrenamiento'
datos_validacion = 'data/validacion'
"""
Parametros
"""
epocas=20 #Numero de interaciones sobre nuestro set de datos
longitud, altura = 46, 820 #Tamaño de nuestras imagenes
batch_size = 32 #Numero de imagenes que se van a mandar a procesar en cada paso
pasos = 1000 #Numero de veces que se va a procesar la informacion por cada epoca
pasos_validadcion = 300
#Al final de cada epoca se correran x pasos con el set de validacion
filtrosConv1 = 32
filtrosConv2 = 64
tamano_filtro1 = (3, 3) #Tamaños de los filtros de la convolucion
tamano_filtro2 = (2, 2)
tamano_pool = (2, 2) #Tamaño del filtro de maxpooling
clases = 2 #Son el numero de clases que tenemos que clasificar
lr = 0.0004
#learning rate , que tan grades son los ajustes para llegar a una solucion ideal
#Se deben preprocesar las imagenes para mandarlas a la red
APÉNDICE B. CÓDIGOS 38
##Preparamos nuestras imagenes
# Imagenes de entrenamiento
entrenamiento_datagen = ImageDataGenerator(
rescale=1. / 255,
shear_range=0.2,#Inclinacion
zoom_range=0.2,#Aplicar zoom
horizontal_flip=True)#Invierte
# Imagenes de prueba
test_datagen = ImageDataGenerator(rescale=1. / 255)
#Para comprobar le damos las imagenes tal como son
entrenamiento_generador = entrenamiento_datagen.flow_from_directory(
datos_entrenamiento,
target_size=(longitud,altura),
batch_size=batch_size,
class_mode='categorical')
validacion_generador = test_datagen.flow_from_directory(
datos_validacion,
target_size=(longitud,altura),
batch_size=batch_size,
class_mode='categorical')
cnn = Sequential()#la red es secuencial
cnn.add(Convolution2D(filtrosConv1, tamano_filtro1,
padding ="same",
input_shape=(longitud, altura,
3),
activation='relu'))
cnn.add(MaxPooling2D(pool_size=tamano_pool))
cnn.add(Convolution2D(filtrosConv2,
tamano_filtro2,
padding ="same",
activation="relu"))
cnn.add(MaxPooling2D(pool_size=tamano_pool))
cnn.add(Flatten()) #Aplanar la imagen
cnn.add(Dense(256, activation='relu'))
#256 neuronas, se agrega una capa normal
cnn.add(Dropout(0.5))
APÉNDICE B. CÓDIGOS 39
#A la capa densa le apagas el 50 por ciento de neuronass aleatorias
#en cada paso para evitar que aprenda caminos espesificos
cnn.add(Dense(clases, activation='softmax'))
#Es la ultima capa con softmax,
#selcciona la clase que tenga mas alto porcentaje
#Parametros para optiizar la red
cnn.compile(loss='categorical_crossentropy',#que tambien va
optimizer=optimizers.Adam(lr=lr),
metrics=['accuracy'])
#que siempre trate de mejorar el porcentaje
# de imagenes que clasifica bien
#entrenar la red
cnn.fit_generator(
entrenamiento_generador,
steps_per_epoch=pasos,
epochs=epocas,
validation_data=validacion_generador,
validation_steps=pasos_validadcion)
#Guardamos el archivo para no tener que entrenar la red
#cada vez que queremos clasificar
target_dir = 'modelo'
if not os.path.exists(target_dir):
os.mkdir(target_dir)
cnn.save('modelo/modelo.h5')
cnn.save_weights('modelo/pesos.h5')
Código predicciones
import numpy as np
from tensorflow.python.keras.preprocessing.image import load_img, img_to_array
from tensorflow.python.keras.models import load_model
from time import sleep
import os
import cv2
folder_path="pruebas/" #Es el path donde estan las imagenes
list = os.listdir(folder_path)
APÉNDICE B. CÓDIGOS 40
number_files = len(list)
longitud, altura = 46, 820
#El tamaño de las imagenes es el mismo que los del entreamiento
modelo = 'modelo/modelo.h5' #path del modelo
pesos_modelo = 'modelo/pesos.h5'
cnn = load_model(modelo)#cargamos modelo y pesos
cnn.load_weights(pesos_modelo)
def predict(file): #Funcion donde se recibe el nombre de del archivo
# y devuelve la clase
x = load_img(file, target_size=(longitud, altura)) #Cargamos la imagen
x = img_to_array(x) #Convertimos la imagen en arreglo
x = np.expand_dims(x, axis=0)#Agregamos un eje mas
array = cnn.predict(x)
#A nuestra red ya entrenada le mandmos una imagen para que nos
# prediga que clase es y lo devuelve como arreglo [[0,1],[]]o [1,0]
result = array[0]#Solo nos importa la primer parte del arreglo
answer = np.argmax(result)
#Nos trae el indice

Continuar navegando