DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE...

95
DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE PROFUNDO ADALBERTO RINCÓN NÚÑEZ 2130277 UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍA DEPARTAMENTO DE AUTOMÁTICA Y ELECTRÓNICA PROGRAMA INGENIERÍA MECATRÓNICA SANTIAGO DE CALI 2018

Transcript of DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE...

Page 1: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE PROFUNDO

ADALBERTO RINCÓN NÚÑEZ 2130277

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍA

DEPARTAMENTO DE AUTOMÁTICA Y ELECTRÓNICA PROGRAMA INGENIERÍA MECATRÓNICA

SANTIAGO DE CALI 2018

Page 2: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE PROFUNDO

ADALBERTO RINCÓN NÚÑEZ

Proyecto de grado para optar al título de Ingeniero Mecatrónico

Director JESÚS ALFONSO LÓPEZ SOTELO

Ingeniero Electricista, Máster en Automática, Doctor en Ingeniería

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍA

DEPARTAMENTO DE AUTOMÁTICA Y ELECTRÓNICA PROGRAMA INGENIERÍA MECATRÓNICA

SANTIAGO DE CALI 2018

Page 3: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

3

Nota de aceptación:

Aprobado por el Comité de Grado en cumplimiento de los requisitos exigidos por la Universidad Autónoma de Occidente para optar al título de Ingeniero Mecatrónico

David Ramírez Jurado

William Gutiérrez Jurado

Santiago de Cali, 28 de septiembre de 2018

Page 4: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

4

Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica y personal me han apoyado siempre y en todo momento, brindándome su consejo, guiándome en momentos difíciles y escuchándome cuando lo he necesitado. Es gracias a su apoyo, constante presencia y afecto que he logrado completar otra etapa de mi vida.

A mi hermana quien me acompaño a lo largo de este trayecto, que fue la vida del día a día de la universidad, con quien compartí momentos felices y difíciles pero que siempre traerán consigo gratos recuerdos.

Page 5: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

5

AGRADECIMIENTOS

Agradezco a mi director de trabajo de grado, el doctor Jesús Alfonso López Sotelo, quien estuvo pendiente a lo largo del proceso y realización de este proyecto, brindando ayuda en el momento de la investigación y aportando ideas para el mejoramiento del trabajo. A las diseñadoras de la comunicación gráfica Vanessa Rincón Núñez y Angie Natalia Quijano Rada, quienes me colaboraron con la recolección de imágenes para la creación del data set empleado en el entrenamiento de la red con datos propios.

Page 6: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

6

CONTENIDO

pág.

RESUMEN 14

INTRODUCCIÓN 16

1. JUSTIFICACIÓN 17

2. PLANTEAMIENTO DEL PROBLEMA 18

3. OBJETIVOS 20

3.1 OBJETIVO GENERAL 20

3.2 OBJETIVOS ESPECIFICOS 20

4. ANTECEDENTES 21

5. MARCO TEÓRICO 24

6. HERRAMIENTA Y EQUIPOS 31

6.1 SOFTWARE EMPLEADO PARA TRABAJAR DEEP LEARNING 31

6.1.1 Caffe 31

6.1.2 Theano 32

6.1.3 Torch 32

6.1.4 Tensorflow 33

Page 7: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

7

6.1.5 Keras 34

6.1.6 Matlab 34

6.2 EQUIPO 36

6.2.1 Computador 36

6.3 PLATAFORMA 36

6.3.1 Python 37

6.4 BASES DE DATOS 37

6.4.1 Dataset de imágenes 37

6.4.2 Dataset de descripciones 38

6.5 EXTRACTOR DE CARACTERISTICAS 41

6.5.1 VGG-19 41

6.5.2 Inception-v3 41

6.5.3 Xception 41

7. RESULTADOS 43

7.1 INSTALACIÓN DE LA PLATAFORMA DE DEEP LEARNING 43

7.1.1 Instalación de librerías para Python 46

7.2 CODIGOS EMPLEADOS 47

Page 8: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

8

7.3 PASOS PARA EL ENTRENAMIENTO 47

7.3.1 Pre procesamiento descripciones 48

7.3.2 Extracción de características 49

7.3.3 Entrenamiento de la RNN 52

7.4 DESCRIPCIONES ENTREGADAS POR LA RED 59

7.5 ENTRENAMIENTO DE RED CON DESCRIPCIÓN EN ESPAÑOL 65

7.5.1 Base de datos descriptiva en Español 66

7.5.2 DESCRIPCION DE IMÁGENES EN ESPAÑOL 67

7.6 ENTRENAR RED CON DATOS PROPIOS 76

8. CONCLUSIONES 84

BIBLIOGRAFÍA 86

ANEXOS 90

Page 9: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

9

LISTA DE FIGURAS

pág.

Figura 1. An illustrative example of Microsoft's pipeline 22

Figura 2. Arquitectura del perceptron multicapa. 26

Figura 3. Estructura de una CNN. 27

Figura 4. Estructuras para RNN 28

Figura 5. RNN desplegada 29

Figura 6. Estructura de una LSTM 30

Figura 7. Estructura de los archivos JSON 39

Figura 8. Estructura común de los Annotations 39

Figura 9. Estructura de la sección de las descripciones 40

Figura 10. Descripciones de la imagen en inglés. 40

Figura 11. Instalar TensorFlow 43

Figura 12. CUDA de productos Nvidia 44

Figura 13. Capacidad de computo de la tarjeta 45

Figura 14. Proceso para el entrenamiento de la red 47

Figura 15. Modificación del nombre imágenes de entrenamiento 49

Figura 16. Modificación del nombre imágenes de validación 51

Figura 17. Arquitectura del modelo 53

Figura 18. Entrada de la red rnn 54

Figura 19. Descripciones codificadas 54

Figura 20. Target de la red 56

Figura 21. Mascara para el entrenamiento 56

Page 10: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

10

Figura 22. Validación de la red al principio del entrenamiento 57

Figura 23. Imagen de validación a mitad del entrenamiento 58

Figura 24. Imagen de validación hacia el final del entrenamiento 58

Figura 25. Modelo Entrenado 59

Figura 26. Prueba imagen-Comida 61

Figura 27. Resultado de imagen- Comida 61

Figura 28. Prueba de imagen-Laboratorio 62

Figura 29. Resultado imagen-laboratorio 62

Figura 30. Prueba de imagen-grupo de personas 63

Figura 31. Resultado de imagen- grupo de personas 64

Figura 32. Estructura de la red entrenada vista en Tensorboard 65

Figura 33. Descripciones en español. 66

Figura 34. Duración de entrenamiento red en Español 67

Figura 35. Resultado imagen comida en español 67

Figura 36. Resultado imagen – laboratorio español 68

Figura 37. Resultado imagen-grupo de personas español 68

Figura 38. Resultado imagen playa 69

Figura 39. Resultado imagen carros 69

Figura 40. Resultado imagen edificio 70

Figura 41. Resultado imagen juego de futbol 70

Figura 42. Resultado imagen jugadores de tenis 71

Figura 43. Resultado imagen juego de tenis 71

Figura 44. Resultado imagen parque 72

Figura 45. Resultado imagen elefantes 72

Page 11: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

11

Figura 46. Resultado imagen contenedor de comida 73

Figura 47. Resultado imagen jirafas 73

Figura 48. Resultado imagen tren 74

Figura 49. Resultado imagen peatón 74

Figura 50. Resultado imagen interior hogar 1 75

Figura 51. Resultado imagen interior hogar 2 75

Figura 52. Resultado imagen interior hogar 3 76

Figura 53. Muestra imágenes de entrenamiento tomadas 77

Figura 54. Muestra imágenes de validación tomadas 77

Figura 55. Modelo empleado en Excel 79

Figura 56. Modelo de Excel con información 80

Figura 57. Resultado imagen- Escritorio 82

Figura 58. Resultado imagen-Agora 82

Figura 59. Resultado imagen-biblioteca 83

Page 12: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

12

LISTA DE TABLAS

pág.

Tabla 1. Evaluación de restricciones en software de Deep learning 35

Tabla 2. Matriz de criterios de selección de software 35

Tabla 3. Ponderación de las alternativas de software 36

Page 13: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

13

LISTA DE ANEXOS

pág.

Anexo A. Código para creación de data set español 90

Anexo B. Código para creación data set propio 91

Anexo C. Tensorboard 94

Anexo D. Listado de librerías empleadas 95

Page 14: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

14

RESUMEN

El presente documento contiene información relacionada al trabajo desarrollado para la reproducción de resultados en image captioning o descripción de imágenes, llevados a cabo por expertos en el área. El trabajo se realizó en la plataforma de software libre Python empleando la librería de TensorFlow, la cual finalizo con el entrenamiento de una red neuronal recurrente cuya función es recibir como dato de entrada imágenes y entregar como salida un archivo de imagen igual al de la entrada con una descripción escrita de lo que se ve en la imagen. Para el entrenamiento se requirieron de dos tipos de data set distintos, el primero que abarque un amplio rango de imágenes y un segundo que aportase la descripción de las mismas; para ello se tomaron los data sets disponibles en la plataforma COCO (Common Objects in Context), la cual es una amplia base de datos para detección, segmentación y descripción. Las bases de datos usadas fueron las proporcionadas para el “COCO captioning challenge” un concurso realizado en el año 2015. A estos datasets se les realiza un preprocesamiento, el cual para las imágenes es la debida extracción de características de las imágenes, este proceso es realizado por medio de una red neuronal convolucional (CNN), en este caso se empleó la red Inception, las características posteriormente se guardaron en un archivo que fue empleado para el entrenamiento de la RNN.

El documento también muestra información acerca de los procesos llevados a cabo que permitieron emplear los códigos trabajados para realizar el entrenamiento de una red que describa en español, terminando con el entrenamiento de una red que describa ambientes propios mediante la creación de data set.

Al finalizar se procedió a realizar pruebas a las diferentes redes, donde se encontraron resultados satisfactorios ya que se proporcionaban descripciones acordes a lo suministrado, así como también descripciones con fallos como lo son el género del individuo en la imagen o color de objetos.

Palabras clave. Red neuronal recurrente (RNN), descripción de imágenes, Red neuronal convolucional.

Page 15: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

15

ABSTRACT

This document contains information related with the Project developed for the reproduction of results of image captioning or image description, this previous Works were realized by experts in the field The work was done on the free software platform Python using the TensorFlow library, which ended with the training of a recurrent neural network whose function is to receive images as input and output an image file equal to the input with a written description of what you see in the image. For the training, two different types of data sets were required, the first one covering a wide range of images and the second one providing the description of them; for this, the available data sets were taken on the COCO platform (Common Objects in Context), which is a broad database for detection, segmentation and description. The databases used were those provided for the "COCO captioning challenge" a contest held in 2015. These datasets are pre-processed, which for the images is the proper extraction of characteristics of the images, this process is performed by means of a convolutional neural network (CNN), in this case the Inception network was used, the characteristics were subsequently stored in a file that was used for the training of the RNN.

The document also shows information about the process realized in the Project that allows the use of the codes to train a red wich one describe images in spanish; following that, the Project conclude with the training of a red that can describes selected enviroments, with the condition of creating new data sets.

At the end, tests were carried out on the several networks, where satisfactory results were found as descriptions were provided according to what was supplied, and also in some of the test the description show fails, like the gender of the person or the color of objects that the picture contains.

Key words: Recurrent neural network (RNN), image captioning, Convolutional neural network (CNN)

Page 16: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

16

INTRODUCCIÓN

El aprendizaje profundo es un enfoque de aprendizaje automático que se ha basado en el conocimiento del cerebro humano, la estadística y matemática aplicada que se ha desarrollado en las últimas décadas. Así, en los últimos años, se ha visto un crecimiento a gran escala, aumento en su popularidad y utilidad, debido en gran medida a la aparición de computadores más poderosos, aparición de base de datos y nuevas técnicas de entrenamiento.1 El procesamiento de la información en sus diferentes formas y la integración, relación y traducción de la misma ha cobrado mayor interés a medida que los campos de la medicina, ciencia, educación, seguridad y más requieren mayor detalle para tomar decisiones. Entre estas relaciones, la capacidad humana innata de describir en palabras ilustraciones que se perciben es una tarea con muchas posibilidades, entre las cuales se encuentra la asistencia a las personas con dificultades visuales en una mejor comprensión de lo que una imagen presenta, la búsqueda de archivos gráficos en la web, la narración de cuentos así como la oportunidad de posteriormente abarcar no solo imagen sino video y poder generar ilustraciones que describan una sentencia abriendo aún más posibilidades en el campo literario y de la enseñanza.

Con este proyecto se busca colectar y apropiarse del conocimiento y técnicas desarrolladas globalmente por expertos en el campo de las redes profundas, específicamente la imagen y el lenguaje, de igual manera fomentar esta rama de la inteligencia artificial y sus aplicaciones para la promoción de proyectos a fines de sus aplicaciones en campos que continúan desarrollándose.

Por esta razón, se mostrarán tres etapas durante el proyecto, una inicial donde se ocuparan los data set y códigos disponibles y creados por personas u organizaciones que han trabajado en el tema, donde se busca entender el funcionamiento y en ultimas recrear resultados; paso seguido se piensa en el entrenamiento de una red que permita obtener descripciones de las escenas en el idioma español, con motivo de realizar un trabajo de enfoque más local y considerar aspectos como la extensión de aplicaciones que se le puede dar a los códigos de entrenamiento. Por ultimo esta la etapa del proyecto donde se busca el entrenamiento de una red capaz de describir escenarios seleccionados por los usuarios, lo que permitirá abrir horizontes para los códigos empleados.

1 GOODFELLOW, Ian; BENGIO, Yoshua y COURVILLE, Aaron. Deep learning: Introduction. En: Deep Learning: An MIT Press book [en linea]. MIT Press. 2016, p.26. [Consultado: 17 de marzo de 2017]. Disponible en Internet: http://www.deeplearningbook.org/contents/intro.html

Page 17: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

17

1. JUSTIFICACIÓN

Es debido a que la relación existente entre la gramática y las imágenes se puede rastrear desde tiempos antiguos, donde la intención en la mayoría de los casos, era la de trasmitir una imagen más viva de un suceso, pensamiento, o diseño, por mencionar algunos casos; y que dicha relación puede apreciarse aún, como en el aprendizaje, la literatura, trabajos investigativos, planos y demás; que incluso ha llegado a demandar un nivel de exigencia mayor respecto a la calidad de la información que se espera extraer de estas. Por este motivo, con la llegada de la era digital y consigo el incremento masivo de información presente en sus diferentes formas, se ha optado por buscar ayuda en herramientas tecnológicas, siendo la inteligencia artificial una de las últimas en aplicarse para el procesamiento de imágenes y textos.

Lo anterior da pie para resaltar la importancia que presenta el campo del análisis de imágenes y su pertinente relación con el área lingüística, abriendo espacios de acción en la enseñanza; permitiendo a los menores en proceso de aprender el lenguaje nativo facilitarlo al relacionarlo con ilustraciones, la asistencia a personas con discapacidad y problemas de tipo visual; brindando una mejor comprensión de lo que desean observar, en la supervisión de elementos; donde permite describir una situación. Es por esto que el proyecto busca sentar las bases para el desarrollo de estas y más aplicaciones desde el área de la inteligencia artificial y las redes de aprendizaje profundo en la Universidad Autónoma de Occidente, al estudiar y apropiarse de los elementos y estructuras de redes neuronales artificiales, CNN y RNN, esperando un progreso continuo y la entrada de la relación de video y lenguaje escrito.

Page 18: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

18

2. PLANTEAMIENTO DEL PROBLEMA

La generación de información se ha disparado de manera exponencial desde el auge de la era tecnológica, e intensificada con las diferentes redes sociales, páginas de información, bases de datos de diversas índoles y demás aglomeraciones que se encuentran en el mundo digital. Dicha información puede presentarse como lenguaje escrito, imágenes, videos, archivos de audio por mencionar algunos de los más relevantes, y que permiten comunicar un sentimiento, estado, pensamiento o hecho a uno o varios receptores. Lo anterior genera la necesidad de almacenar, analizar, entender y registrar los datos que proveen dichas interacciones; promoviendo la generación de herramientas auxiliares para llevar a cabo cada uno de estas tareas, tomando mayor relevancia en la actualidad, donde solo el hombre no posee la capacidad de procesamiento para llevar a cabo esta tarea.

Las imágenes, son un recurso presente en diferentes campos de la vida del hombre; ocio, medicina, educación, publicidad; que permiten analizar un momento, un objeto o una situación con mayor detalle, los cuales muchas veces se dificultan en apreciarse empleando la visión humana. Es por este motivo que cada vez se están empleando con mayor frecuencia herramientas de origen tecnológico, asistencia computacional, como el procesamiento digital de imágenes y más recientemente la aplicación de la inteligencia artificial en el análisis de las mismas.

Con el uso de las redes de entrenamiento profundo, se han creado métodos, como las redes neuronales convolucionales (CNN) y las redes neuronales recurrentes (RNN), donde las primeras han sido más exploradas en el análisis de imágenes; clasificando, identificando o reconociendo elementos dentro o entre ellas mismas. Las segundas han sido menos trabajadas, y presentan un campo de oportunidades en el área del lenguaje. La unión gráfica y semántica entre las dos arquitecturas de redes neuronales mencionadas ha permitido generar aplicaciones donde se saca provecho de las ventajas de cada una de ellas como por ejemplo en el etiquetado automático de imágenes2.

Con base en lo anterior se plantea el siguiente interrogante que se desea resolver en este proyecto:

2 SOCHER, Richard, et all. Convolutional-Recursive deep learning for 3D object classification [en línea]. Nevada: Neural Information Processing Systems Foundation, Inc., 2012, p.1. [Consultado: 22 de marzo de 2017]. Disponible en Internet: https://papers.nips.cc/paper/4773-convolutional-recursive-deep-learning-for-3d-object-classification.pdf

Page 19: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

19

¿Cómo replicar los resultados de proyectos realizados por expertos internacionales usando deep learning, por medio de un prototipo de aplicación realizado en una plataforma de cómputo con una GPU de gama media?

Page 20: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

20

3. OBJETIVOS

3.1 OBJETIVO GENERAL

Generar una descripción de escenas usando redes neuronales recurrentes por medio de una aplicación realizada con una de las plataformas de deep learning disponible.

3.2 OBJETIVOS ESPECIFICOS

Seleccionar una plataforma de deep learning y el ambiente donde se describirán las escenas para el desarrollo del proyecto.

Diseñar la aplicación para la descripción de escenas usando redes neuronales profundas.

Implementar en la plataforma seleccionada la aplicación para la descripción de escenas.

Validar el sistema implementado en el ambiente seleccionado.

Page 21: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

21

4. ANTECEDENTES

La traducción de imágenes a textos, está atrayendo gran atención, considerando diferentes aproximaciones que abarcan desde la facilidad de búsqueda de información hasta entender el nivel de inteligencia que es requerido para que una máquina logre entender imágenes de alta complejidad y el uso adecuado de los términos gramáticos para esta tarea. Es por esto que grandes empresas, como Google y Microsoft, han presentado investigaciones y desarrollo de aplicaciones en el campo. Esto se puede apreciar en el proyecto "A picture is worth a thousand (coherent) words: building a natural description of images"3 publicado por Google, con el que se buscaba la descripción rápida y coherente de imágenes en palabras, con el fin de facilitar la búsqueda de imágenes, ayudar a las personas con dificultades visuales a entender las mismas y proveer texto alternativo para imágenes en las partes del mundo donde el internet es lento. Este enfoque se tomó cuando se consideró los recientes avances en machine translation, donde se emplean dos redes neuronales recurrentes, donde la primera transforma una palabra en determinado idioma en un vector y posteriormente la segunda RNN toma dicho vector para encontrar su equivalente en un idioma diferente. Ahora considerando que se plantea cambiar la primera RNN por una CNN, la cual se especializa en la detección de objetos, etiquetado y clasificación de imágenes, se tendría una red formada por la unión de una CNN y una RNN, sin embargo, para realizar esta conexión es necesario eliminar la última capa de la red CNN obteniendo como resultado valores que representan las características encontradas en las imágenes; estos valores se pasan la segunda red (RNN), generando al final frases descriptivas de la imagen original.

Este primer acercamiento sirvió de base y abrió nuevas posibilidades; por lo que después se presentó otro artículo titulado "From captions to visual concepts and back"4, llevado a cabo por Microsoft; el mismo artículo cuestiona, cuando una máquina es capaz de entender una imagen, a lo que responden que es a medida que puede presentar un contenido que resuma el contenido de la misma, objetos, atributos y relaciones de los mismos. El proyecto llevado a cabo muestra que el acercamiento consiste en buscar en la imagen las secciones potenciales que contienen el objeto o definición de la palabra (Edges Boxes 70), las palabras pueden representar objetos, acciones o relaciones, para lo cual se busca limitar cuadros

3 VINYALS, Oriol, et all. A picture is worth a thousand (coherent) words: building a natural description of images [en línea]. Google Research Blog. (17 de noviembre de 2014). [Consultado: 17 de marzo de 2017]. Disponible en Internet: https://research.googleblog.com/2014/11/a-picture-is-worth-thousand-coherent.html.

4 FANG, Hao, et all. From captions to visual concepts and back. En: Berkeley EECS [en línea]. IEEE – Institute of Electrical and Electronics Engineers. 2015. [Consultado: 17 de marzo de 2017]. Archivopdf. Disponible en Internet: https://people.eecs.berkeley.edu/~sgupta/pdf/captions.pdf

Page 22: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

22

que las representen. Al finalizar de detectar las palabras, se procede a generar oraciones con las mismas, para esto se utiliza la probabilidad "máximum entropy" LM, que estima la probabilidad de precedencia de una palabra con respecto a otra y las palabras que no han sido utilizadas. Por último, se procede a realizar una re-asignación de puestos a las oraciones generadas empleando MERT. Lo explicado con anterioridad se puede simplificar en un esquema (Figura 1) desarrollado para el proyecto por Microsoft.

Figura 1. An illustrative example of Microsoft's pipeline

Fuente: FANG, Hao, et all. From captions to visual concepts and back [imagen]. En: Berkeley EECS. IEEE – Institute of Electrical and Electronics Engineers. 2015. p. 1. [Consultado: marzo 17 de 2017]. Disponible en Internet: https://people.eecs.berkeley.edu/~sgupta/pdf/captions.pdf.

Otro proyecto que se llevó a cabo por parte de Google se puede apreciar en el documento "Show and tell: Lessons learned from the 2015 MSCOCO image captioning challenge"5 , en el cual presentan un avance del primer modelo desarrollado, donde se sigue empleando CNN para la representación de imágenes, ya que las mismas han sido estudiadas ampliamente para estas tareas, la CNN que se empleó utiliza un acercamiento por lotes normalizados, las palabras son representadas por un modelo embebido. Para el generador de oraciones se usa una RNN, la forma de esta red es una Long Short Term Memory (LSTM), el núcleo de esta estructura es un modelo de celda de memoria donde se codifica conocimiento en cada momento que la entrada ha sido observada, donde el comportamiento de la celda es controlado por las puertas. Este último modelo que desarrollo Google

5 VINYALS, Oriol, et all. Show and tell: Lessons learned from the 2015 MSCOCO image captioning challenge. En: Cornell University Library [en linea]. CoRR: abs/1609.06647. 2016. [Consultado: 17 de marzo de 2017]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1609.06647.pdf

Page 23: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

23

alcanzó un 93.9% de exactitud en la escala BLEU-4 que es comúnmente empleada para evaluar la calidad de las oraciones generadas en machine translate.

Page 24: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

24

5. MARCO TEÓRICO

La información siempre ha sido un recurso de suma importancia en la vida del hombre, fortaleciéndose aún más con los diferentes avances tecnológicos y aparición de herramientas enfocadas en este aspecto; dando asistencia en campos como medicina, investigación, vigilancia, seguridad entre otros. Tal es el valor que se le atribuye que desde la aparición de la computadora y la entrada de la era digital se han realizado diferentes esfuerzos para hacer uso de esta nueva capacidad de procesamiento a la hora de analizar datos, especialmente con el aumento exponencial de las fuentes de información y la generación de los mismos en las últimas décadas.

Los computadores y la capacidad de procesamiento que poseen no solo trajeron nuevas posibilidades, también dieron origen a otros interrogantes, entre los cuales se encuentra la cuestión de la inteligencia de las máquinas. "Hoy en día la Inteligencia artificial (artificial intelligence, AI), es un campo con muchas aplicaciones prácticas y temas de investigación"6; empleado en los campos de la medicina y vigilancia; por ejemplo, específicamente por su capacidad de análisis gráfica para la detección de enfermedades o anormalidades respectivamente; otra área es la comunicación donde se han empleado para el análisis del lenguaje y la traducción de palabras y textos entre idiomas. Se puede decir, que actividades altamente demandantes o difíciles para el ser humano, puede ser realizada de manera sencilla para una máquina, siempre y cuando la tarea sea fácilmente explicable; sin embargo "el verdadero reto de la inteligencia artificial recae en las tareas que el ser humano puede realizar con facilidad o intuitivamente pero que a su vez son difíciles de describir"7. La inteligencia artificial, se sustenta en la representación de conocimiento por medio de códigos fundamentados en elementos matemático-estadísticos, esta aproximación es conocida como "Hard coded knowledge".

El hecho de emplear algoritmos para instruir a las máquinas dio lugar a un nuevo concepto en el área de la inteligencia artificial, conocido como aprendizaje de máquina (machine learning, ML), "este consiste en la aplicación de formas estadísticas con énfasis en el uso de computadores para estimar estadísticamente funciones complicadas, y menor énfasis en proveer intervalos de confianza al rededor de dichas funciones."8. Estos algoritmos empleados en machine learning se emplean para entrenar una red por medio de conjuntos de datos empleando aproximaciones estadísticas, comúnmente estimaciones en frecuencia e inferencia bayesiana; en la primera se trabaja pensando que el valor verdadero del parámetro 6 GOODFELLOW, Op. cit., Disponible en Internet: deeplearningbook.org/contents/intro.html 7 Ibid., Disponible en Internet: deeplearningbook.org/contents/intro.html 8 Ibid., p. 98. Disponible en Internet: deeplearningbook.org/contents/intro.html

Page 25: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

25

es fijo pero desconocido, considerando la estimación de un único parámetro; en el segundo caso el parámetro es randómico y desconocido, considerando todos los posibles valores del parámetro cuando se realiza la predicción9. Otra diferencia en la que se pueden dividir las ML es según su tipo de entrenamiento, bien sea supervisado o no supervisado; el aprendizaje supervisado se caracteriza por tener el objetivo a encontrar provisto por un supervisor quien le muestra al ML que hacer, en el aprendizaje no supervisado se carece de dicho instructor y dato objetivo lo que ocasiona que el algoritmo deba encontrar sentido de los datos provistos sin una guía.10 Ahora bien, el objetivo de emplear estos modelos de entrenamiento es para encontrar un sistema generalizado que cumpla cierta función, la generalización se refiere a la capacidad que el ML posee de desenvolverse bien al someterse a entradas nuevas diferentes a las utilizadas en el entrenamiento, sin embargo para cumplir esto se deben lograr dos items, hacer el error de entrenamiento pequeño y la diferencia entre el error de entrenamiento y error de prueba pequeño; si el sistema no es capaz de obtener un valor suficientemente pequeño en el error de entrenamiento presenta falta de entrenamiento (Underfitting), por otro lado el error de sobre entrenamiento (Overfitting) se presenta cuando la diferencia entre el error de entrenamiento y el error de prueba es muy grande11.

Dentro de las ML, se pueden encontrar las redes neuronales artificiales (artificial neural network, ANN), "este modelo se puede decir, es un sistema de ingeniería inspirado en el cerebro biológico ( bien sea el cerebro humano o el cerebro de algún animal)"12, una ANN está compuesta por unidades de procesamiento (neuronas), el modelo de estas unidades consiste en dos partes la primera una sumatoria que recibe un número determinado (N) de entradas y pesos, computando sumas ponderadas, estas sumas son conocidas como valor de activación; y la segunda una salida en forma de señal a partir del valor de activación13. Los pesos mencionados son un elemento que forman parte de las redes sinápticas en las neuronas y permiten la comunicación entre las neuronas, estos pesos son llamados pesos sinápticos.

Este modelo de ANN se conoció como Perceptron, desarrollado por Ronsenblant en 1958, sin embargo dicho modelo presentaba problemas para desenvolverse en sistemas que no pueden ser linealmente separables, aspecto que se solucionó con

9 Ibid., p. 135. Disponible en Internet: deeplearningbook.org/contents/intro.html

10 Ibid., p. 105. Disponible en Internet: deeplearningbook.org/contents/intro.html

11 Ibid., p. 111. Disponible en Internet: deeplearningbook.org/contents/intro.html

12 Ibid., p. 11. Disponible en Internet: deeplearningbook.org/contents/intro.html

13 YEGNANARAYANA, Bayya. Artificial neural networks. PHI Learning, 2009. p. 24. ISBN 9788120312531

Page 26: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

26

la aparición del perceptron multi capa (multi layer perceptron, MLP), cuya mayor diferencia estructural recae en la aparición de varias capas de neuronas artificiales en lugar de una; sin embargo también presenta cambios en su funcionamiento como son la aparición de la función de activación no lineal (Sigmoide) y el uso del algoritmo de propagación hacia atrás (Backpropagation) empleado para encontrar el error en las capas ocultas de la red14. Para hacerse a una mejor idea, se presenta en la Figura 2 una representación estructural de un MLP.

Figura 2. Arquitectura del perceptron multicapa.

Fuente: MEJIA, Juan Arturo. Sistema de detección de intrusos en redes de comunicación utilizando redes neuronales [imagen]. Licenciatura en Ingeniería en Electrónica y Computadoras. Puebla. Universidad de las Américas Puebla. Departamento de Ingeniería Electrónica. 2004. p. 23-24. [Consultado: 20 de marzo de 2018]. Disponible en Internet: http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/mejia_s_ja/capitulo3.pdf

El desarrollo de las ANN permitió la creación de redes especializadas como es el caso de las redes neuronales convolucionales (Convolutional Neural Network, CNN) cuyo fuerte es el procesamiento de datos que poseen una tipología de red conocida, como son las imágenes que se pueden considerar como una red 2D de pixeles. El nombre de esta red indica que la misma trabaja con la operación matemática conocida como convolución por lo menos en una de sus capas.15 Para ejemplificar lo mencionado, se muestra como una CNN (Figura 3) arregla sus neuronas en tres

14 MEJIA, Juan Arturo. Sistema de detección de intrusos en redes de comunicación utilizando redes neuronales [en línea]. Licenciatura en Ingeniería en Electrónica y Computadoras. Puebla. Universidad de las Américas Puebla. Departamento de Ingeniería Electrónica. 2004. p. 23-24. [Consultado: 20 de marzo de 2018]. Disponible en Internet: http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/mejia_s_ja/capitulo3.pdf 15 GOODFELLOW, Op. cit., p. 330. Disponible en Internet: deeplearningbook.org/contents/intro.html

Page 27: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

27

dimensiones para procesar los datos de una imagen, en donde el largo y ancho representan el tamaño de la misma y la profundidad las capas RGB.

Figura 3. Estructura de una CNN.

Fuente: Convolutional Neural Networks (CNNs/ ConvNets): Architecture Overview [imagen]. En: CS231n Convolutional Neural Network for Visual Recognition. [Consultado marzo 20 de 2018]. Disponible en Internet: http://cs231n.github.io/convolutional-networks/.

Otra familia de ANN son las redes neuronales recurrentes (Recurrent Neural Networks, RNN), este tipo de red se especializa en el procesamiento de información secuencial, es decir, que se especializa en el procesamiento de valores secuenciales ( X1, X2, . . ., Xn)16, en otras palabras, si se tiene una rutina donde una persona come al almuerzo un día pastas, al siguiente pollo y por ultimo carne, una red recurrente puede aprender esta secuencia y predecir que comerá la persona en N cantidad de días con solo conocer lo que comió actualmente. Este tipo de red trabaja como vectores, permitiendo realizar diferentes conexiones, las más conocidas son: una a una, una a varias, varias a una y varias a varias. Cada una de las conexiones mencionadas anteriormente se pueden apreciar en la Figura 4; la primera estructura es conocida como modo vanilla y se puede emplear para la clasificación de imágenes, la segunda puede ser empleada para el ingreso de una imagen y obtener una descripción en palabras, la tercera estructura permite el ingreso de una oración y obtener si esta es positiva o negativa y la última estructura puede emplearse para la traducción de palabras entre dos idiomas17.

16 Ibíd., p. 373. Disponible en Internet: deeplearningbook.org/contents/intro.html

17 KARPATHY, Andrej. The unreasonable effectiveness of recurrent neural networks [en línea]. Andrej Karpathy Blog. (21 de mayo de 2015). [Consultado: 20 de marzo de 2018]. Disponible en Internet: http://karpathy.github.io/2015/05/21/rnn-effectiveness/

Page 28: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

28

Figura 4. Estructuras para RNN

Fuente: KARPATHY, Andrej. The unreasonable effectiveness of recurrent neural networks [imagen]. En: Andrej Karpathy Blog. 2015. [Consultado marzo 20 de 2018]. Disponible en Internet: http://karpathy.github.io/2015/05/21/rnn-effectiveness/.

18Una red recurrente puede pensarse como múltiples copias de una misma red, las cuales dan un mensaje a su sucesor como se observa en la Figura 5 a continuación:

18 OLAH, Christopher. Understanding LSTM Networks [en línea]. Colah´s blog. (27 de agosto de 2015). [Consultado: 19 de julio de 2018]. Disponible en Internet: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

Page 29: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

29

Figura 5. RNN desplegada

Fuente. OLAH, Christopher. Understanding LSTM Networks [ imagen]. En: Colah’s blog. 2015. [Consultado julio 19 de 2018]. Disponible en Internet: http://colah.github.io/posts/2015-08-Understanding-LSTMs/.

Como bien se ha mencionado, las redes recurrentes permiten realizar tareas donde haya una secuencia, un ejemplo sería el numero siguiente en una serie de números, o si se tiene establecido una rutina de comidas para el almuerzo, cuál sería elalmuerzo de mañana si se conoce lo que se almorzó el presente día; estas redespueden incluso desplazarse en el tiempo para no conocer el resultado inmediato, sino uno más futuro, es decir, continuando con el ejemplo si se sabe que se almorzóen un día determinado, se podría predecir que almorzara en dos semanas. Sinembargo, cuando la secuencia que se desea predecir se vuelve más compleja comoen el caso de las oraciones, es necesario emplear un modelo de red másespecializado, el cual pueda diferenciar y aprender la mejor combinación depalabras que forman una oración con sentido.

Dentro de los modelos secuenciales más efectivos y empleados en aplicaciones prácticas son conocidos como gates RNNs; estos buscan la creación de caminos a través del tiempo que poseen derivadas las cuales no desaparecen ni explotan; la razón de esto es permitirle a la red acumular información sobre un tiempo mayor. Esto resulta de mucha utilidad, por ejemplo, en el reconocimiento de voz donde se requiere muchas de las pronunciaciones fonéticas dependen de los elementos previos o siguientes del elemento actual. Dentro de las gates RNNs se encuentra la long short term memory (LSTM), la cual consiste en introducir auto bucles que produzcan caminos donde el gradiente pueda fluir durante un tiempo mayor además de presentar una mayor contribución al permitir que el peso de este auto bucle este condicionado al contexto y no sea fijo19.

19 GOODFELLOW, Op. cit., p. 410. Disponible en Internet: deeplearningbook.org/contents/intro.html.

Page 30: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

30

Figura 6. Estructura de una LSTM

Fuente. ROHRER, Brandon. Recurrent Neural Networks (RNN) and Long-Short Term Memory (LSTM). [ video]. En: youtube. Minuto 17:44. 2017. [Consultado julio 19 de 2018]. Disponible en Internet: https://www.youtube.com/watch?v=WCUNPb-5EYI.

Como se aprecia, la estructura de una LSTM está formada por varias partes, donde la primera, ubicada en la parte inferior, se encarga de entrenar la red. Esta recibe la entrada que proporcione el usuario en el primer ciclo y posteriormente la entrada que recibe es la nueva información, es decir, la predicción anterior de la misma red; su salida son unos valores que se encuentran entre menos uno y uno. La siguiente parte le permite a la red ignorar una porción de los valores arrojados por la parte anterior ya que estos son muy bajos; esta parte de la red proporciona valores entre 0 y 1. Como los resultados de la primera y segunda parte se unen por medio de una operación de multiplicación, se obtiene como resultado que solo los valores altos pasen y los valores bajos sean ceros, en otras palabras, se filtra la información. La tercera parte es la que le permite a la red olvidar cierta información, esto ayuda a no obtener resultados con dos palabras iguales una después de otra; esta sección arroja valores entre 0 y 1, los cuales al ser multiplicados por los valores del ciclo anterior, logrando así que los valores que representan las palabras recién empleadas tengan menos peso, esta parte se conoce como “memoria”, la cual se adiciona a los valores filtrados de las valores actuales. Como la última operación fue de suma los valores obtenidos pueden ser mayores que uno o menores que menos uno, para ello se pasa por una función para escalarlos. La última parte conocida como selección, tiene como función identificar de los valores finales cuales son los que realmente deben reutilizarse para la siguiente predicción.

Page 31: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

31

6. HERRAMIENTA Y EQUIPOS

En esta sección se procederá a realizar una descripción de las herramientas empleadas para el desarrollo del proyecto, además de mencionar en los elementos necesarios algunas de las otras posibilidades existentes que realizaran un trabajo similar o igual a la seleccionada.

6.1 SOFTWARE EMPLEADO PARA TRABAJAR DEEP LEARNING

En la actualidad, existen varios programas computacionales, software o librerías que facilitan y permiten el trabajar con aprendizaje profundo, a continuación, se mencionaran algunas de las más conocidas y trabajadas.

6.1.1 Caffe

Es un marco de aprendizaje profundo desarrollado por Berkeley AI Research (BAIR) y por contribuidores de la comunidad, el proyecto fue creado por Yangqing Jia durante su doctorado en UC Berkeley; Caffe fue lanzado bajo la clausula de licencia BSD-2, la cual indica que es un software libre.20

Caffe cuenta con las siguientes características:

• Es open source

• Trabaja en sistemas Linux, MacOS y Windows

• Trabaja con las interfaces de Matlab y Python

• Soporta CUDA

• Permite trabajar RNN y CNN

• Lenguaje C++

20 BAIR. Caffe [en línea]. Caffe Deep learning framework. 2014. [Consultado: 7 de marzo de 2018]. Disponible en Internet: http://caffe.berkeleyvision.org/

Page 32: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

32

6.1.2 Theano

Es una librería de Python que permite definir, optimizar y evaluar expresiones matemáticas que envuelvan arreglos multi dimensionales eficientemente, ha sido trabajada desde el año de 2007 y es lo suficientemente accesible como para ser empleada en las clases de la universidad de Montereal. Theano trabaja bajo la licencia BSD al igual que caffe. Las características de este son:21

• Es Open Source

• Trabaja en Linux y Windows

• Trabaja con la interface de Python

• Soporta CUDA

• Permite trabajar RNN y CNN

• Lenguaje Python

6.1.3 Torch

Es un marco computacional científico con un amplio soporte para algoritmos de aprendizaje profundo el cual da mayor importancia a las GPUs, es fácil de utilizar y eficiente22. Torch posee un gran número de desarrolladores y es usada activamente en grandes organizaciones además de poseer un soporte fuerte para CUDA y CPU.23 Tiene las siguientes características:

• Es Open Source

• Trabaja en Linux, Windows, MacOS, Andorid y Ios

21 Documentation [en línea].Theano 1.0 Release. 2016. [Consultado: 7 de marzo de 2018]. Disponible en Internet: http://deeplearning.net/software/theano/index.html 22 Torch A Scientific computing for Luajit [en linea]. Torch. [Consultado: 7 de marzo de 2018]. Disponible en Internet: http://torch.ch/ 23 BAHRAMPOUR, Soheil, et al. Comparative Study of Deep Learning Software Frameworks. [en linea]. arxiv.org (3 de marzo de 2016) p.8. [Consultado: 7 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1511.06435

Page 33: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

33

• Trabaja con la interface C, Lua, LuaJIT

• Soporta CUDA

• Permite Trabajar RNN y CNN

• Lenguaje C, Lua

6.1.4 Tensorflow

Es una librería de software para computación numérica que usa “data flow graphs” o gráficos de flujo de datos; cada nodo del grafico representa una operaciónmatemática, mientras que los bordes del grafico representan arreglos o tensores dedatos multidimensionales comunicados entre ellos24. Además de esto cuenta conun buen soporte para GPU y CPU junto con una comunidad de usuarios ycontribuidores que crece rápidamente, haciendo de este un marco importante deaprendizaje profundo25. Posee las siguientes características:

• Es Open source

• Trabaja en Linux, MacOS y windows

• Trabaja en la interface Python, C++, Java

• Soporta CUDA

• Permite trabajar RNN y CNN

• Lenguaje C++ y Python

24 An open source machine learning library for research and production [en línea]. Tensorflow. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://www.tensorflow.org/ 25 BAHRAMPOUR, Op. cit., p.8. Disponible en Internet: https://arxiv.org/pdf/1511.06435

Page 34: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

34

6.1.5 Keras

Es una API de red neuronal de alto nivel, escrita en Python y es capaz de correr sobre Tensorflow, CNTK, o Theano. Fue creada enfocándose en habilitar experimentación rápida26. Características.

• Es Open source

• Trabaja en Linux, macOS y Windows

• Trabaja en la interface Python

• Soporta CUDA

• Permite trabajar RNN y CNN

• Lenguaje Python

6.1.6 Matlab

Es un programa perfeccionado para el análisis iterativo y los procesos de diseño mediante lenguaje de programación, este software se destaca por la gran cantidad de herramientas de las cuales dispone y que le ayudan a abarcar un amplio campo de trabajo, que va desde el aprendizaje profundo, análisis de datos, procesamiento de señales entre otros27. Características.

• No es Open source

• Trabaja en Linux, MacOs y Windows

• Trabaja en la interfaz Matlab

• Permite trabajar RNN y CNN

• Lenguaje Matlab

26 Keras: The Python Deep Learning Library [en línea]. Keras documentation. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://keras.io/ 27Matlab [en línea]. MathWorks. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://la.mathworks.com/products/matlab.html

Page 35: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

35

Cada uno de los ítems mencionados anteriormente permiten trabajar aprendizaje profundo, y por ende facilitan la realización del trabajo a realizar, sin embargo, se debe de seleccionar uno de ellos para lo cual se procedió a realizar una selección del software a emplear. Para esto se consideraron las siguientes dos restricciones: que el software a elegir fuese Open source ya que esto facilita la obtención del mismo, además de que debe trabajar en sistema operativo Windows ya que el equipo con el que se cuenta para realizar el trabajo funciona con dicho sistema operativo.

Tabla 1. Evaluación de restricciones en software de Deep learning

Como se observa en la tabla 1, de los software mencionados para trabajar aprendizaje profundo, el único que no cumple con las restricciones es Matlab, razón por la cual se descarta y se prosigue a realizar una matriz de selección para escoger cual será el software a emplear. La matriz que se va a emplear utilizara los siguientes criterios

Tabla 2. Matriz de criterios de selección de software

Se observa que se utilizaran tres criterios de selección, el primero es la plataforma sobre la cual trabaja el software, donde la plataforma Python obtiene la mayor puntuación debido a que ya se cuenta con la instalación de la misma, además de mayor experiencia al momento de su uso; otro criterio que se emplea es el lenguaje en el que se puede realizar la programación, en este caso el lenguaje de Python también recibe mayor peso, este se justifica ya que es el lenguaje nativo de la plataforma en la que se busca trabajar por último se evalúa si el software soporta el uso de GPU, y si es así, si soporta uno o múltiples.

Windows Open SourceCaffe o oTheano o oTorch o oTensorflow o oKeras o oMatlab o x

criterio 1 2 3Plataforma otra PythonLenguaje Otro PythonGPU No 1 multiple

calificación

Page 36: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

36

Tabla 3. Ponderación de las alternativas de software

En la tabla 3, se encontró que de entre las opciones dos de ellas cumplen los criterios establecidos en mayor medida, siendo estas Tensorflow y Keras, sin embargo, al mirar más detenidamente se halla de que Keras puede trabajar con múltiples GPU solo con el soporte de Tensorflow, es decir, que se debe tener Tensorflow para poder hacer uso de esta opción del Keras, así pues, se llega a la conclusión de que el software a emplear para el proyecto es Tensorflow.

6.2 EQUIPO

En este apartado se muestran los equipos empleados durante el proyecto:

6.2.1 Computador

Se trabajó en un computador portátil marca ASUS, cuya referencia es “ASUS Zenbook NX500JK-XH72T”, el cual cuenta con un procesador Intel core i7 de cuarta generación (i7 4712HQ, 2.3GHz) con una tarjeta gráfica NVIDIA GeForce GTX 850 M de 2GB con capacidad de computo CUDA 5.0 y una memoria RAM de 8GB28.

6.3 PLATAFORMA

En este apartado se menciona cual es la plataforma sobre la cual se trabajará el proyecto.

28 ASUS Zenbook NX500JK-XH72T 15.6" 4K Touchscreen Notebook Computer [en línea]. B&H. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://goo.gl/Z58FuU

plataforma lenguaje GPU TotalCaffe 3 1 3 7Theano 3 3 2 8Torch 1 1 3 5Tensorflow 3 3 3 9Keras 3 3 3 9

Page 37: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

37

6.3.1 Python

Python es un lenguaje de programación desarrollado bajo una aprobada OSI licencia open source, lo que lo convierte en una gratuita, usable y distribuible plataforma, incluso a nivel comercial. El lenguaje de programación Python es fácil de aprender ya sea un principiante en programación o tenga experiencia con otros lenguajes, además de esto cuenta con una comunidad grande que permite la colaboración para el desarrollo de código y la solución de problemas. Por ultimo Python cuenta con miles de módulos de terceros, es decir que las librerías de Python y los módulos que han sido contribuidos por la comunidad brindan un sinfín de posibilidades a desarrollar29.

6.4 BASES DE DATOS

En esta sección se hablará sobre las bases de datos empleadas para realizar el entrenamiento de la red neuronal; en este caso como se debe realizar la descripción de imágenes implica la presencia de dos tipos de base de datos, uno que cuente con una amplia gama de imágenes y un segundo que esté formado por texto descriptivo.

Para ello se decidió emplear las bases de datos disponibles en la plataforma COCO (Common Object in Context), la cual cuenta con un gran dataset para detección de objeto, segmentación, y descripción; además realiza concursos sobre estas áreas30. Las bases de datos seleccionadas para el trabajo hacen parte de las que COCO presento para su concurso “COCO captioning challenge” el cual consistía en el desarrollo de algoritmos que produjesen descripción de imágenes informativas y acertadas, los dataset que proveían son del año 2014 y el concurso se llevó a cabo en el año 201531.

6.4.1 Dataset de imágenes

El dataset de imágenes empleado es el “Microsoft COCO: Common Object in Context”, el dataset contiene imágenes de 91 tipo de objetos los cuales pueden ser

29 Python es poderoso y rápido; juega bien con los demás; corre por todas partes; es amigable y fácil de aprender; está abierto. [en línea]. Python. [Consulado: 7 de marzo de 2018]. Disponible en Internet: https://www.python.org/about 30 COCO-Common Objects in Context. Home [en linea]. Cocodataset.org. [Consulado: 10 de marzo de 2018]. Disponible en Internet: http://cocodataset.org/#home 31 COCO-Common Objects in Context. Task [en linea]. Cocodataset.org. [Consultado: 10 de marzo de 2018]. Disponible en Internet: http://cocodataset.org/#captions-challenge2015

Page 38: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

38

fácilmente diferenciados por niños de cuatro años32. Se descargaron como máximo cinco imágenes tomadas por un mismo fotógrafo dentro de una ventana corta de tiempo, en el caso raro de que no se encontrasen suficientes imágenes se buscaron por una única categoría y se realizó una etapa de filtro para remover imágenes icónicas. El resultado fue una colección de 328000 imágenes con rica relación contextual entre los objetos mostrados33.

Por cuestiones de facilidad de lanzamiento, el dataset se dividió en dos partes casi iguales, la primera mitad liberada en el 2014, y la segunda en el 2015. En este trabajo empleo la primera mitad la cual contiene 82783 imágenes de entrenamiento, 40504 de validación y 40775 de prueba34, cabe resaltar que estas últimas no se emplearon ya que se realizaron pruebas a la red con diferentes imágenes accesibles en internet.

6.4.2 Dataset de descripciones

En la misma página de COCO, se encuentra un dataset en la sección de “Annotations”, llamado “2014 Train/Val annotations”, este contiene dos archivos de extensión JSON (JavaScript Object Notation), el cual es una extensión de archivo que permite el almacenamiento de información en forma de atributos y valores. 35

En la página se explica que se cuentan con tres tipos de archivos para “Annotations”, uno para “object instances”, otra para “object keypoints” y un último para “image captions”, en este caso se trabajara con este último.

32 LIN, Tsung-Yi, et all. Microsoft COCO: Common Objects in Context. [en línea]. En: Cornell University Library p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1405.0312

33 Ibid.,p 5. Disponible en Internet: https://arxiv.org/pdf/1405.0312 34 Ibid.,p 6. Disponible en Internet: https://arxiv.org/pdf/1405.0312 35 Microsoft COCO-Common Objects in Context [en línea]. Cocodataset.org. Febrero de 2015.[Consultado: 10 de marzo de 2018]. Disponible en Internet: http://cocodataset.org/#download

Page 39: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

39

Figura 7. Estructura de los archivos JSON

Fuente: COCO-Common Objects in Context. Data format [captura de imagen]. En: COCO Common Objects in Context. [Consultado marzo 10 de 2018]. Disponible en Internet: http://cocodataset.org/#format-data.

En la figura 7 se observa la estructura general que presentan los archivos de extensión JSON, tanto el de entrenamiento como el de validación, cabe resaltar que cada una de estas categorías presenta sus propias variables, siendo todas las mismas para los tres tipos de “Annotations” mencionados con anterioridad, siendo la única excepción la clase “annotations” mostrada en esta figura, la cual presenta atributos diferentes en cada caso.

Figura 8. Estructura común de los Annotations

Fuente: COCO-Common Objects in Context. Data format [captura de imagen]. En: COCO Common Objects in Context. [Consultado marzo 10 de 2018]. Disponible en Internet: http://cocodataset.org/#format-data.

Page 40: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

40

En la figura 8, se observa cada uno de los atributos para las clases en común de las tres “Annotations”, dando a conocer además el tipo de valor que posee cada uno.

Figura 9. Estructura de la sección de las descripciones

Fuente: COCO-Common Objects in Context. Data format: Image Captioning [captura de imagen]. En: COCO Common Objects in Context. [Consultado marzo 10 de 2018]. Disponible en Internet: http://cocodataset.org/#format-data.

En la figura 9 se presentan los atributos relevantes al archivo del dataset que contiene las descripciones de las imágenes, estas descripciones son el valor del atributo “caption”, este atributo describe una imagen especifica considerando que cada imagen tiene al menos cinco descripciones, con algunas que tiene más como se aprecia en la Figura 10.

Figura 10. Descripciones de la imagen en inglés.

Fuente. Figura elaborada a partir de imagen perteneciente a la base de datos 2014 Train Images [captura de imagen]. En: cocodataset.org. [Consultado marzo 10 de 2018]. Disponible en Internet: http://cocodataset.org/#download

Page 41: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

41

6.5 EXTRACTOR DE CARACTERISTICAS

En esta sección se tratará sobre las redes pre-entrenadas disponibles que permitan realizar la extracción de características de imágenes, ya que esto es necesario para poder realizar el entrenamiento de la red que permita la descripción de imágenes, se mostrará la red empleada como otras redes disponibles que realizan la misma tarea.

6.5.1 VGG-19

Es la red creada por el equipo VGG para “ImageNet ILSVRC-2014” donde aseguraron el primero y segundo lugar en las categorías de “localisation” y classification traks” respectivamente; a esta red se le incremento la profundidad empleando una arquitectura con pequeños filtros convolucionales de 3x3, que mostro un mejoramiento con respecto a la configuración anterior, se crearon dos modelos uno con 16 de profundidad y otro con 19 de profundidad. La red VGG-19 pesa 549 MB, posee una precisión en el Top-1 del 72.7% y en el Top-5 del 91.0%36.

6.5.2 Inception-v3

Es una red desarrollada por google, basada en la GoogLeNet o InceptionV1, la cual busco mejorar los resultados obtenidos en el ILSVRC del año 2014, empleando una estructura basada en módulos Inception. Esta red pesa 92 MB, tiene una precisión en el top-1 del 78.8% y en el top-5 del 94.4%37.

6.5.3 Xception

Esta red es desarrollada por Google, y se basa en una interpretación de los módulos Inception de las redes neuronales convolucionales, esta interpretación indica que como paso intermedio entre la convolución regular y la operación de convolución separable en profundidad, es decir, una convolución profunda seguida por una convolución puntual; en este caso, una convolución separable en profundidad se

36 SIMONYAN, Karen y ZISSERMAN, Andrew. Very Deep Convolutional Networks for Large-Scale Image Recognition [en línea]. arxiv.org (10 de abril de 2015). p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1409.1556 37 SZEGEDY, Christian, et al. Rethinking the Inception Architecture for Computer Vision [en línea]. arxiv.org (11 de diciembre de 2015). p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1512.00567

Page 42: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

42

puede entender como un módulo Inception con un mayor número de torres. Esta red pesa 88MB, posee una precisión en el Top-1 de 79.0% y en el top-5 del 94.5%38.

Las tres redes pre-entrenadas mencionadas con anterioridad son algunas de las redes existentes que pueden cumplir con la tarea de extraer características de imágenes, además, como pudo ser observado las dos redes diseñadas por Google, poseen características muy similares, en especial la precisión cuyo factor es el más importante para este proyecto.

Considerando que la precisión de la Inception es de un 78.8% contra un 79.0% de la Xception en el Top-1, se puede ver una diferencia del 0.2%, un valor muy pequeño, por lo que se puede concluir que es aceptable emplear alguna de estas dos redes, así que se decidió escoger la red con respecto a la fecha de lanzamiento de la misma, donde la Inception está disponible desde el año 2015, mientras que la Xception solo desde el 2017, es decir, que la información relacionada con el uso y manejo de esta red en la comunidad es mayor y brinda mejor soporte a la hora de realizar el proyecto.

38 CHOLLET, Francois. Xception: Deep Learning with Depthwise Separable Convolutions. [en línea]. arxiv.org (4 de abril de 2017). p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1610.02357

Page 43: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

43

7. RESULTADOS

7.1 INSTALACIÓN DE LA PLATAFORMA DE DEEP LEARNING

Lo primero que se realizó para el proyecto fue instalar la plataforma de Deep learning seleccionada en el equipo, para esto se procedió a ingresar a la página oficial de Tensorflow, donde se encontró una guía a seguir para diferentes sistemas operativos.

Figura 11. Instalar TensorFlow

Fuente. elaborada a partir de Instal: Build from source on Windows [ imagen]. En: Tensorflow. [Consultado marzo 10 de 2018]. Disponible en Internet: https://www.tensorflow.org/install/install_windows.

Como se observa en la figura 11 después de acceder al sitio web de TensorFlow, se procede a seleccionar la opción en la parte superior derecha de instalación “Install”, acción tras la cual se mostrará nuevas opciones en la parte del cuerpo de la página, es aquí donde en el lateral izquierdo del sitio web aparecerán los nombres de diferentes sistemas operativos (OS), donde se debe seleccionar alguno para

Page 44: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

44

mostrar los pasos requeridos para la instalación de la plataforma, en este caso como muestra la figura superior se selecciona el OS Windows.

Como especifica la guía, la instalación se puede realizar en sistemas de 64 bits, con Windows 7 o superior, estos requisitos los cumple el equipo en el que se trabajará el proyecto ya que este cuenta con Windows 10 de 64-bit.

Lo siguiente a verificar es si se desea instalar TensorFlow con soporte de CPU o GPU, el primero es más fácil y rápido de instalar, sin embargo, el segundo cuenta con la ventaja de que la plataforma corre con mayor velocidad en GPU siempre y cuando el equipo cuente con una tarjeta de NVIDIA. En este caso el ordenador posee una tarjeta gráfica de NVIDIA geforce GTX 850m por lo que es posible realizar la instalación.

Tras haber seleccionado uno de los dos soportes para la instalación, se procede a la guía correspondiente de instalación, en donde ahora muestra otros requerimientos que se deben cumplir, como es que la tarjeta GPU con CUDA debe tener una capacidad de computo mayor a 3.0; esto se puede comprobar en la página oficial de NVIDIA.

Figura 12. CUDA de productos Nvidia

Fuente. elaborada a partir de CUDA GPUs [ imagen]. En: Nvidia. [Conultado marzo 10 de 2018]. Disponible en Internet: https://developer.nvidia.com/cuda-gpus.

Al entrar a la página de Nvidia para comprobar las diferentes tarjetas que manejan y saber si tienen habilitado CUDA y su capacidad, se encuentra con lo mostrado en

Page 45: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

45

la figura 12. Donde se muestran los grandes grupos de tarjetas que manejan, dentro de ellos se detalla la opción de nombre “CUDA-Enable GeForce Products”.

Figura 13. Capacidad de cómputo de la tarjeta

Fuente. elaborada a partir de CUDA GPUs: CUDA-Enable GeForce Products [imagen]. En: Nvidia. [Consultado marzo 10 de 2018]. Disponible en Internet: https://developer.nvidia.com/cuda-gpus.

Al seleccionar la opción se despliega un listado de las diferentes tarjetas disponibles de la serie GeForce, en este listado se procede a buscar la tarjeta de Nvidia con la

Page 46: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

46

que cuenta el ordenador. Como se muestra en la figura 13 la tarjeta que se tiene una capacidad de computo de 5.0, valor que cumple con los requerimientos de instalación de la plataforma de Deep learning.

Siguiendo con los requisitos mostrados en la guía de instalación de TensorFlow, se necesita instalar el CUDA toolkit, el cual está disponible en la página de Nvidia, en el proyecto se instaló el CUDA 8.0, el cual al momento de realizado el proyecto era la última versión disponible. Para realizar la instalación del toolkit era necesario tener instalado un compilador que lo soportara, el compilador seleccionado fue el Visual Studio Community 2015, compatible para 64-bit, este se puede descargar desde la página de Visual Studio; por último se realizan los pasos para instalar el cuDNN v 5.1.

Terminadas todas las preparaciones anteriores, se procede a instalar el programa Python, la versión con la cual se trabaja es 3.5 x 64-bit, este se puede obtener desde la página oficial de Python. Terminado el proceso de instalación del programa, se abre la terminal de comando o CMD, y se procede a escribir la siguiente línea: pip3 install –upgrade tensorflow-gpu, tras lo cual se espera mientras el proceso de descarga e instalación de la plataforma termina.

Con esto se da por terminada la fase de instalación tanto de la interfaz “Python” como de la plataforma de Deep learning “TensorFlow”, si se desea confirmar que se instaló con éxito se puede realizar la prueba sugerida en la guía de instalación de la plataforma.

7.1.1 Instalación de librerías para Python

Tras realizar la instalación de los programas principales a emplear durante el proyecto, es de mencionar que existen paquetes de extensión conocidos como “librerías” desarrollado por terceros que se ocupan de realizar tareas diferentes.

Para la ejecución del trabajo es necesario emplear algunas librerías que Python no trae incluida, para ello se necesitan realizar su instalación de manera independiente; siendo así, se puede tener acceso a un grupo de estas en la página web: “Unofficial Windows Binaries for Python Extension Packages”, donde para realizar la descarga del archivo solo basta con buscar el nombre de la librería y cerciorarse de que sea compatible con la versión de Python instalada y el sistema con el que se cuenta (64-bit o 32 bit). En anexos D puede encontrar una lista de las librerías empleadas.

Page 47: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

47

Al descargar las librerías necesarias, para instalarlas se procede a abrir la ventana de comandos (CMD), y se escribe la siguiente línea: pip install, seguido por la ubicación de la librería a instalar, o en su defecto en el OS Windows 10, se escribe pip install y se arrastra la librería a la ventana de CMD, se presiona la tecla enter y se espera a que la instalación termine.

7.2 CODIGOS EMPLEADOS

Para la realización del proyecto se realizó una investigación de trabajos realizados anteriormente que estuvieran relacionados con los resultados esperados para este trabajo, dentro de esa investigación se encontró que Google presento un proyecto llamado “Show and Tell” un programa de image captioning desarrollado para ser presentado en la competencia del año 2015 del MSCOCO Image Captioning Challenge, el cual se desarrolló en TensorFlow, además de ello, el código de entrenamiento lo publicaron como Open source, por lo cual las personas pueden hacer uso del mismo. Al leer sobre las experiencias de este proyecto se encontró que la capacidad de cómputo requerida para obtener buenos resultados era alta, y que con las especificaciones del equipo con que se cuenta no es lo más recomendable trabajar con este.

Sin embargo, tras seguir investigando se encontró otro código Open Source que está basado en el desarrollado por Google, el cual solo modifica parte de este para que el tiempo y capacidad de computo necesaria sean más razonables de acuerdo a los recursos que se cuentan, el proyecto lleva por nombre “Using TensorFlow to build image to text application”39.

7.3 PASOS PARA EL ENTRENAMIENTO

Para realizar el entrenamiento de la red, se decidió seguir los siguientes pasos:

39 WANG, Weimin. Using TensorFlow to build image to text application [en linea]. Weimin Wang. (20 de marzo de 2017). [Consultado: 15 de marzo de 2018]. Disponible en Internet: https://weiminwang.blog/2017/03/20/using-tensorflow-to-build-image-to-text-deep-learning-application/

Page 48: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

48

7.3.1 Pre procesamiento descripciones

El primer paso a realizar es tomar los dos archivos, “captions_train2014.json” y “captions_val2014.json” descargados con anterioridad, los cuales contienen la información de las descripciones de cada una de las imágenes. El código solicita la dirección del directorio donde están ubicados estos dos archivos, así como un número que indique con cuantas palabras desea trabajar y otro número que indique cuantas palabras se desea halla en cada descripción. Suministrados estos datos, el programa procede a ubicar dentro de los archivos de extensión .json, los valores de los atributos “image_id” y “caption”, donde el primero es un dato tipo entero que identifica cada imagen y el segundo es un dato de tipo cadena, que contiene la descripción de las imágenes. Durante el proceso de guardar estos datos en un diccionario, las oraciones se guardan en letras minúsculas y se quita todo signo de puntuación, además de que se separan las oraciones en palabras para crear el vocabulario.

Ya contando con el vocabulario, se procede a realizar un conteo para saber cuántas veces se repite cada una de las palabras en todas las descripciones, guardando un arreglo que va de la palabra más repetida a la menos, este arreglo es del tamaño indicado por el usuario en un inicio, por ende, el vocabulario queda reducido al número de palabras indicadas con mayor frecuencia.

Terminado esto, se prosigue con la creación de dos diccionarios, uno que relacione un número a cada palabra y el segundo que relacione la palabra al número; esto se hace con la intención de poder entrenar la red más adelante, y cuando la red este entrenada poder realizar la transición de los números entregados por estas a palabras; los diccionarios primero se llenan con cuatro palabras predeterminadas, que indican el inicio y fin de la descripción (“Start” y “End”) asi como una palabra para decir que el id no se encuentra (“Null”) o que el número de la palabra esta por fuera del vocabulario seleccionado (“Unk)”.

Al terminar la creación de estos diccionarios, se procede a crear arreglos para las oraciones, los cuales buscan estandarizar el tamaño de las descripciones al número

Figura 14. Proceso para el entrenamiento de la red

Page 49: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

49

de palabras dadas por el usuario, así como agregar tanto al principio como al final la palabra de inicio y fin de la oración, culminando con pasar cada una de las palabras de todas las oraciones a su respectivo número de identificación, donde en caso de que si a la palabra no se le encuentra número asignado se le asigna el valor de Unk.

Por último se guardan dos archivos de extensión .csv(train_image_id_to_idx.csv y val_image_id_to_idx.csv), los cuales contienen cada uno un numero para cada imagen, tanto para los de entrenamiento como los de validación, se guarda otro archivo de extensión .json, “coco2014_vocab.json”, el cual contiene los datos tanto para pasar de palabras a número de identificación como para realizar la operación contraria; también se crea un archivo de extensión “.h5”(coco2014_captions.h5) el cual contiene todas las oraciones descriptivas en forma numérica y todas los números de identificación de las imágenes.

Los datos proporcionados para esta etapa del entrenamiento fueron los siguientes:

Numero de palabras para el vocabulario:2000

Numero de palabras para la descripción:25

7.3.2 Extracción de características

El paso siguiente es realizar la extracción de características, sin embargo, para llevar a cabo esto primero se realiza un ajuste al archivo de las imágenes con las que se piensa entrenar la red; esto se debe a que el nombre de cada imagen aparte del número de identificación tiene más caracteres lo que puede complicar más adelante el proceso, por lo que en primera instancia se decide ajustar el nombre década una de las imágenes, es decir, que cada imagen tenga por nombre solo un número. El resultado es el que se muestra a continuación.

Page 50: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

50

Fuente. elaborada a partir de imágenes pertenecientes a la base de datos 2014 Train Images [ imagen]. En: cocodataset.org. [Consultado marzo 15 de 2018]. Disponible en Internet: http://cocodataset.org/#download

Como se observa en la figura 15 a modo de ejemplo, se contraponen las imágenes antes y después de cambiar el nombre de archivo, siendo las del lado derecho los archivos antes de ser modificados y lo imágenes del lado izquierdo tras los cambios realizados, para realizar esto, se emplea un código el cual requiere que el usuario le pase dos datos, el primero es la dirección donde se encuentran las imágenes de entrenamiento y el segundo uno de los archivos de extensión .csv creado en el pre procesamiento de las descripciones “train_image_id_to_idx.csv”.

Figura 15. Modificación del nombre imágenes de entrenamiento

Page 51: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

51

Cabe notar que como tanto las imágenes de entrenamiento como las de validación se encuentran en ubicaciones diferentes, así como también existen dos archivos de extensión .csv, el código es necesario correrlo una segunda vez, en esta ocasión los datos que se le pasa al código son las ubicaciones de los archivos de validación.

Figura 16. Modificación del nombre imágenes de validación

Fuente. elaborada a partir de imágenes pertenecientes a la base de datos 2014 Val Images [imagen]. En: cocodataset.org. [Consultado marzo 15 de 2018]. Disponible en Internet: http://cocodataset.org/#download

Al detallar las figuras 15 y 16 se destaca el hecho que los números presentes en el nombre de las imágenes tanto para las de entrenamiento como las de validación no son los mismos antes y después de la modificación, esto se debe a que el número dado posterior al proceso es el número de identificación global (idx) y no el número

Page 52: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

52

de identificación de la imagen (image_id) que es el presente en la imagen con anterioridad.

Terminado esto se procede a realizar la extracción de características de las imágenes, este paso también se realiza dos veces, una para las imágenes de entrenamiento y otra para las de validación, ya que los archivos se encuentran en diferentes directorios; para realizar la parte de extracción de características se emplea una red pre entrenada, como se mencionó en la sección 6.5 se empleará la red Inception-V3.

El código el cual permite la realización de esta parte pide al usuario cuatro entradas, la primera es la dirección donde se encuentra el directorio a trabajar, la cual en un primero momento será donde estén ubicadas las imágenes de entrenamiento y posteriormente se volverá a correr pero esta vez con la dirección de las imágenes de validación, también pide que se ingrese la dirección donde se encuentra guardado el modelo pre-entrenado a emplear, otra entrada que se proporciona en un número que ayudara al usuario a conocer cómo va el proceso de extracción de características, esto se debe a que se toma el número total de imágenes que se encuentren en el directorio y se divide por este valor, si el residuo de la división es cero, el programa muestra en pantalla el número de la imagen que se está procesando en el momento, la última entrada solicitada es la dirección donde se desea guardar los datos obtenidos de la extracción de características.

Al ingresar los valores anteriores, el programa procede en primer lugar a comprobar si en la carpeta donde se especificó se encontraba el archivo de la red pre entrenada, efectivamente existe, en caso de que no encuentre el archivo, el mismo programa procede a descargar la red en la ubicación, ya descargada y cargada la red, se decide de cual capa de la misma se piensa tomar los datos, para lo cual se hace uso de la penúltima capa, la cual entrega un total de 2048 datos tipo flotante, el nombre de esta capa es “pool_3:0”. Así pues, se procede a pasar cada imagen por el extractor de características y a guardar cada resultado en un arreglo de predicciones el cual se guarda cuando finalice de correr el programa. Al finalizar los datos de entrenamiento y validación se obtienen dos nuevos archivos “train2014_v3_pool_3.npy” y “val2014_v3_pool_3”.

7.3.3 Entrenamiento de la RNN

Terminados los pasos anteriores, solo resta entrenar el modelo, la arquitectura del modelo de red que se va a emplear se basa en el empleado por Google en el documento “Show and tell”, y se muestra en la figura a continuación.

Page 53: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

53

Figura 17. Arquitectura del modelo

Fuente: WANG, Weimin. Using TensorFlow to build image-to-text application [imagen]. En: Weimin Wang. 2017. [Consultado: marzo 20 de 2018]. Disponible en Internet: https://weiminwang.blog/2017/03/20/using-tensorflow-to-build-image-to-text-deep-learning-application/.

En este modelo se puede ver que la imagen ingresa a la red convolucional pre entrenada, en este caso la Inception-v3 la cual se encarga de extraer las características de la imagen, las cuales serán posteriormente ingresadas a la red recurrente como entradas.

Para realizar el entrenamiento de la red recurrente se requiere el ingreso de los siguientes tres datos, la dirección del directorio donde se han guardado todos los archivos creados hasta ahora, es decir, los archivos creados en el pre procesamiento y los que contienen los datos de extracción de características, el segundo dato a ingresar es la dirección donde se desea guardar la red cuando esta termine de ser entrenada, y el ultimo es la dirección donde se puedan guardar imágenes que muestren el progreso durante el proceso de entrenamiento.

Page 54: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

54

Lo que hace el programa es cargar cada una de las variables encontradas en los archivos guardados con anterioridad, especificando variables para el modelo como lo son el tamaño de las características de las imágenes (2048), el número de unidades LSTM (512), y un factor de escala que ayuda a iniciar los diferentes valores del modelo de manera aleatoria (-0.8 a 0.8), así como el algoritmo de optimización empleado (SDG). El entrenamiento se realiza por batches, los cuales consisten en partes de las bases de datos de descripciones y de características de las imágenes, la red se entrena pasando como entradas las características de las imágenes como se muestra a continuación:

Figura 18. Entrada de la red rnn

Se puede apreciar que a la red se le ingresa un arreglo de datos con las características de las imágenes, en cada batch que se pasa a la red durante el entrenamiento, se pasa junto con las características de las imágenes sus correspondientes descripciones:

Page 55: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

55

Se puede apreciar que en este caso, el arreglo tiene unas características en común, lo primero es que cada una de las filas comienza con el número 1, esto se debe a que este es el número que hace referencia a la palabra <START>, al decodificarse, es decir, todas las descripciones de las imágenes empezaran con este token; otra de las similitudes es que en cada fila antes de que aparezcan ceros continuos, se muestra un 2, este valor hace referencia a la palabra <END>, es decir todas las descripciones terminaran con este token; por ultimo como es de esperarse las descripciones de diferentes imágenes estarán formadas por una cantidad diferentes de letras, sin embargo, para entrenar la red se es necesario proveer un arreglo de tamaño uniforme por lo cual se hace uso de un padding, es decir, se emplea un numero estándar para especificar el número máximo de palabras que una descripción pueda tener, en caso de que la oración sea más corta se llena con ceros.

En este momento ya se cuenta con los datos que van a ser ingresados a la red, pero todavía se requiere conocer los datos que se espera entregue la red para poder realizar el entrenamiento, en otras palabras, falta el target que en este caso es la palabra siguiente de la descripción:

Figura 19. Descripciones codificadas

Page 56: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

56

Figura 20. Target de la red

La figura anterior, se muestra un arreglo con las descripciones que se espera de las imágenes, si se compara con el arreglo de las entradas de oraciones codificadas, se puede dar cuenta que son muy similares, siendo la única diferencia la ausencia de una columna anterior a la primera que se muestra en la imagen de Target de la red, donde todos sus valores son uno. El motivo es que como la red al entrenar lo que se encarga es de predecir palabra a palabra la secuencia que se necesita para forma la correspondiente descripción, cuando el dato que ingresa a la red es el “1”, lo que está dando a la red es un arranque para que empiece la predicción de la siguiente palabra.

Cabe resaltar que durante el entrenamiento los datos que ingresan a la red para las predicciones son el conjunto de datos mostrados en la figura descripciones codificadas, no el valor de la predicción anterior de la red, esto se hace ya cuando la red este entrenada y se esté haciendo el procedimiento de inferir la descripción de una imagen.

Page 57: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

57

En la figura anterior lo que se aprecia es otro arreglo que se ingresa a la red junto con las características de las imágenes, el arreglo de las oraciones codificadas y el de los target, este arreglo se conoce como Mascara, y lo que muestra son unos resultados binarios (1 o 0), para cada uno de los espacios que representa la descripción. Esto se hace para conocer de todo el pad, cuales son los únicos valores que se requieren para cada descripción y así no permitir que los ceros del pad perjudiquen el entrenamiento de la red al modificar el valor de las perdidas.

Este proceso se repite por medio de un bucle que permite la iteración del proceso, y es este valor de iteración el que permite observar ejemplos de cómo va realizando las predicciones la red por medio de las imágenes de validación.

Figura 22. Validación de la red al principio del entrenamiento

Figura 21. Mascara para el entrenamiento

Page 58: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

58

Fuente. elaborada por la red, a partir de imagen perteneciente a la base de datos 2014 Val Images [imagen]. En: cocodataset.org. [Consultado marzo 15 de 2018]. Disponible en Internet: http://cocodataset.org/#download

Figura 23. Imagen de validación a mitad del entrenamiento

Fuente. elaborada por la red, a partir de imagen perteneciente a la base de datos 2014 Val Images [imagen]. En: cocodataset.org. [Consultado marzo 15 de 2018]. Disponible en Internet: http://cocodataset.org/#download

Page 59: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

59

Fuente. elaborada por la red, a partir de imagen perteneciente a la base de datos 2014 Val Images [imagen]. En: cocodataset.org. [Consultado marzo 15 de 2018]. Disponible en Internet: http://cocodataset.org/#download

Como se observa en las figuras mostradas anteriormente, se nota que el proceso de entrenamiento de la red se está realizando de manera adecuada, ya que en las descripciones identifica los elementos presentes y emplea esto para la redacción de una oración descriptiva entendible, sin embargo, no es perfecto, ya que como se detalla, aunque reconoce la presencia de un humano no logra describir bien el género.

7.4 DESCRIPCIONES ENTREGADAS POR LA RED

Ya terminado el entrenamiento, se cuenta con una red capaz de entregar imágenes con una descripción escrita en ellas, cuyo único requerimiento es que el usuario le pase como dato de entrada la imagen que se desea detallar. Para ello al programa solo requiere que se le pase una dirección donde se encuentren las imágenes a describir, la dirección donde se guardó la red entrenada, la dirección donde se encuentra la red Inception-V3, la dirección donde se encuentra el archivo “coco2014_vocab.json” y la dirección donde se desean guardar las imágenes obtenidas a la salida.

Figura 24. Imagen de validación hacia el final del entrenamiento

Page 60: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

60

Fuente. elaborada a partir de Tips on packing fast food [imagen]. En: bersiun.com [Consultado marzo 25 de 2018]. Disponible en Internet: http://www.bersiun.com

En la figura anterior se aprecia el proceso que se realiza para obtener la descripción de la imagen a partir del modelo entrenado con anterioridad en la sección 7.3.3, donde se muestra que la imagen ingresada pasa por el extractor de característica, este resultado se ingresa como estado inicial del modelo junto con una palabra especial o token “<START>”, la red en cada momento encontrara la palabra con mayor probabilidad de ser la siguiente y a su vez empelara este resultado como entrada en el momento siguiente; este proceso se repite hasta que la red llegue a otra palabra especial o token “<END>” o en su defecto se alcance el tamaño máximo de descripción. A continuación se describe con más detalle el proceso.

Como las imágenes que se van a describir en esta sección son diferentes a las empleadas en el entrenamiento, lo primero que se hace es realizar la extracción de características a cada una de ellas, para lo cual se necesita cargar nuevamente la red pre entrenada Inception-V3, teniendo este elemento se procede a cargar el archivo de extensión. json, el cual contiene la información para pasar los valores numéricos a palabras y viceversa. Posterior a esto se carga la red recurrente entrenada en el proyecto y se pasa como entrada las características de las imágenes, así como el estado anterior, que viene siendo el valor que representa a la palabra ultima dada por la red, en el primer valor se da automáticamente el índice de la palabra “start”, ya que todas las descripciones cuentan con él al inicio.

Para realizar este proceso de decodificación de oraciones empleando la red recurrente entrenada, se hace uno del método de “beam search”, el cual permite la selección de la opción más probable de mezcla de palabras para la creación de la descripción; este método tiene como principio escoger un factor o número que se encargará de decidir el grupo de palabras a las cuales se les medirá la probabilidad para escoger así la mejor combinación como la palabra siguiente de la secuencia.

Figura 25. Modelo Entrenado

Page 61: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

61

Este proceso se hace multiplicando los valores arrojados por la red del valor de probabilidad de la palabra anterior con los valores de probabilidad de cada una de las palabras del diccionario, y organizarlos de mayor a menor conociendo así cual es la mejor combinación. Este proceso se repite en cada una de las repeticiones de inferencia de la palabra siguiente moviendo el grupo en cada ocasión, solo conservando el tamaño. En este ejemplo se utilizó un factor de tres para el grupo de beam.

Como resultado la red arroja una cadena de números, los cuales son las palabras codificadas y antes de escribirlas en la imagen pasan por una decodificación que hace uso del vocabulario previamente cargado; finalmente con la oración en letras se procede a integrarlo en la imagen.

Figura 26. Prueba imagen-Comida

Fuente. elaborada a partir de FOURSQUARE. Similoa fast food [ imagen].Bogotá. (12 de marzo de 2016). [Consultado marzo 25 de 2018]. Disponible en Internet: shorturl.at/coF57.

Page 62: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

62

Fuente. elaborada por la red, a partir de FOURSQUARE. Similoa fast food [ imagen].Bogotá. (12 de marzo de 2016). [Consultado marzo 25 de 2018]. Disponible en Internet: shorturl.at/coF57.

Figura 28. Prueba de imagen-Laboratorio

Fuente. elaborada a partir de MABIC, Stéphane y DEVAUX, Cecilia. Como conseguir agua de calidad óptima en el laboratorio usando una fuente fiable de agua purificada [en línea] 2016. [Consultado marzo 25 de 2018]. Disponible en Internet: http://www.elhospital.com/temas/Como-conseguir-agua-de-calidad-optima-en-el-laboratorio-usando-una-fuente-fiable-de-agua-purificada+114607.

Figura 27. Resultado de imagen- Comida

Page 63: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

63

Fuente. elaborada por la red, a partir de MABIC, Stéphane y DEVAUX, Cecilia. Como conseguir agua de calidad óptima en el laboratorio usando una fuente fiable de agua purificada [en línea]. 2016. [Consultado marzo 25 de 2018]. Disponible en Internet: http://www.elhospital.com/temas/Como-conseguir-agua-de-calidad-optima-en-el-laboratorio-usando-una-fuente-fiable-de-agua-purificada+114607.

Figura 30. Prueba de imagen-grupo de personas

Fuente. Figura elaborada a partir de TRILL, Clara. Personas [en línea]. En: Importacia.org. 2013. [Consultado marzo 25 de 2018]. Disponible en Internet: https://www.importancia.org/personas.php.

Figura 29. Resultado imagen-laboratorio

Page 64: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

64

Figura 31. Resultado de imagen- grupo de personas

Fuente. Figura elaborada por la red, a partir de TRILL, Clara. Personas [en línea]. En: Importacia.org. 2013. [Consultado marzo 25 de 2018]. Disponible en Internet: https://www.importancia.org/personas.php.

Durante este proceso de inferencia de la red, se decidió conocer la estructura de la misma de una manera más real, para lo cual se hace uso de la herramienta de tensorflow llamada tensorboard, la cual permite visualizar de forma gráfica la red que se entrenó. Para esto en el código se realizaron unas modificaciones en las líneas siguientes a donde se carga la red entrenada; dichas modificaciones se pueden observar en el anexo c, donde además se explica los pasos a seguir para poder visualizar el archivo en tensorboard.

Page 65: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

65

Figura 32. Estructura de la red entrenada vista en Tensorboard

Como se puede apreciar, al bloque “LSTM” le están ingresando tanto los valores necesarios para cargar el modelo “init”, como también las características de las imágenes, la máscara y la entrada de las oraciones (input_seq), además se aprecia como los valores arrojados por la lstm se encuentran con el arreglo de “target” en el bloque “SparseSoftmax” cuyo resultado junto con la matriz de la máscara, permiten posteriormente modificar la pérdida total.

7.5 ENTRENAMIENTO DE RED CON DESCRIPCIÓN EN ESPAÑOL

Como se observó en la sección 7.4 se pudo replicar resultados presentados con anterioridad en el campo de forma satisfactoria, es decir, se presentaron imágenes con su respectiva descripción en el idioma “ingles”, sin embargo, para marcar la diferencia y considerando tanto el ámbito cultural y territorial, se desea que la aplicación entregue una descripción de imágenes en el idioma “español”. Para dar respuesta a esta iniciativa, se piensa emplear la misma estructura explicada a lo largo de las secciones 7.3 y 7.4, solo que, en esta ocasión, se requiere una base de datos descriptiva en el idioma objetivo “Español”, la base de datos de imágenes se puede mantener.

Page 66: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

66

7.5.1 Base de datos descriptiva en Español

Tras haber buscado una base de datos que cumpliese con los requisitos, no se llegó a encontrar alguna, por lo cual se prosiguió a crearla. Para esto como ya se contaba con una base de datos, la cual se sabe funciona, se decidió tomarla como base y traducir los parámetros necesarios “Las descripciones” del idioma inglés al español.

Para ello se escribió un código en Python, el cual por medio de una librería gratuita llamada “googletrans” permite realizar traducciones de un idioma a otro; esta librería emplea los servidores de traducción de google.

El código lo que permite es, cargar en una variable los datos del archivo de extención .json, luego por medio de un bucle, pasa por cada uno de los ítems de esa variable, copiando las oraciones en inglés en una variable auxiliar; posteriormente dicha variable auxiliar se pasa por la librería de traducción y se obtiene un texto en español el cual es luego reescribe a la oración en inglés y se procede a guardar esa nueva variable como el contenido del archivo de extensión .json.

El proceso de traducción de los archivos de entrenamiento y validación tomo un tiempo aproximado de 2 meses; este tiempo contempla los primeros intentos con los cuales se tuvieron errores y se tuvo que modificar el código empleado, errores no contemplados en un inicio como la falta de internet o la ausencia de energía eléctrica, así como también el uso del ordenador y su mantenimiento.

Figura 33. Descripciones en español.

Fuente. elaborada a partir de imagen perteneciente a la base de datos 2014 Train Images [en línea]. En: cocodataset.org. [Consultado marzo 25 de 2018]. Disponible en Internet: http://cocodataset.org/#download.

Page 67: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

67

El código empleado para realizar la traducción de las bases de datos se encuentra en el anexo A.

7.5.2 Descripción de imágenes den español

Después de crear la base de datos de descripciones, se procede a realizar los pasos descritos en la sección 7.3 para lo cual, en el paso de pre procesamiento de los archivos de texto, se debe modificar para eliminar las letras con acento por las mismas sin acento, así como también eliminar la letra “ñ” ya que, al momento de realizar entrenamiento, se presentan problemas con estos caracteres; en este proyecto la letra “ñ” fue reemplazada por “nn”. Los pasos siguientes son los mismos que los realizados con anterioridad; al finalizar se obtiene una red entrenada la cual recibe como entrada una imagen y entrega la misma imagen con una descripción de la misma en español.

El tiempo de entrenamiento de la red fue de dos horas como se muestra en la siguiente figura.

Figura 34. Duración de entrenamiento red en español

Para mostrar los resultados de esta red a continuación se muestran los archivos de salida para las mismas imágenes empleadas con la red entrenada en inglés.

Figura 35. Resultado imagen comida en español

Fuente. Figura elaborada por la red, a partir de FOURSQUARE. Similoa fast food [captura de imagen].Bogotá. (12 de marzo de 2016). [Consultado marzo 28 de 2018]. Disponible en Internet: shorturl.at/coF57.

Page 68: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

68

Figura 36. Resultado imagen – laboratorio español

Fuente. Figura elaborada por la red, a partir de MABIC, Stéphane y DEVAUX, Cecilia. Como conseguir agua de calidad óptima en el laboratorio usando una fuente fiable de agua purificada [en línea]. 2016. [Consultado marzo 28 de 2018]. Disponible en Internet: http://www.elhospital.com/temas/Como-conseguir-agua-de-calidad-optima-en-el-laboratorio-usando-una-fuente-fiable-de-agua-purificada+114607.

Figura 37. Resultado imagen-grupo de personas español

Fuente. Elaborada por la red, a partir de TRILL, Clara. Personas [en línea]. En: Importacia.org. 2013. [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.importancia.org/personas.php.

Page 69: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

69

Figura 38. Resultado imagen playa

Fuente. elaborada por la red, a partir de View to Nantien village, beach and rocky coastline from the coast path [en línea]. En: flickr. (28 de febrero de 2015). [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.flickr.com/photos/h760127/16506973910/.

Figura 39. Resultado imagen carros

Fuente. elaborada por la red, a partir de Los carros clásicos y antiguos se toman a Cartagena [en línea]. En: EL UNIVERSAL. (25 de noviembre de 2017). [Consultado marzo 28 de 2018]. Disponible en Internet: http://www.eluniversal.com.co/multimedia/galerias-de-fotos/los-carros-clasicos-y-antiguos-se-toman-cartagena-4453

Page 70: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

70

Figura 40. Resultado imagen edificio

Fuente. Figura elaborada por la red, a partir de Cuando los ingenieros se ponen creativos: los edificios más raros del mundo. Champions Motors Tower (Tel Aviv) [en línea]. En: El confidencial. 2017. [Consultado marzo 28 de 2018]. Disponible en Internet: elconfidencial.com/multimedia/album/tecnologia/2017-10-05/ingenieria-edificios-raros-mundo_1455473#0.

Figura 41. Resultado imagen juego de futbol

Fuente. Elaborada por la red, a partir de PARDO, Lisandro. FIFA World: juego de futbol gratis [en línea]. En: NEOTEO. (23 de mayo de 2014). [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.neoteo.com/fifa-world-juego-de-futbol-gratis/

Page 71: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

71

Figura 42. Resultado imagen jugadores de tenis

Fuente. elaborada por la red, a partir de Juegos de tenis para niños [en línea]. En: Tenis.net. (20 de abril de 2014). [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.tenis.net/web/juegos-de-tenis-para-ninos/

Figura 43. Resultado imagen juego de tenis

Fuente. elaborada por la red, a partir de Juegos de DESCARGAR JUEGOS DE TENIS PARA PC [en línea]. En: Programas-gratis.net. [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.programas-gratis.net/blog/27/descargar-juegos-de-tenis-para-pc

Page 72: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

72

Figura 44. Resultado imagen parque

Fuente. elaborada por la red, a partir de PARQUE DEL RECUERDO. Parques: Ruta 5 [en línea]. En: parquedelrecuerdo.com.uy. [Consultado marzo 28 de 2018]. Disponible en Internet: http://www.parquedelrecuerdo.com.uy/ruta-5/

Figura 45. Resultado imagen elefantes

Fuente. elaborada por la red, a partir de Elefante [en línea]. En: anipedia.net. [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.anipedia.net/elefantes/

Page 73: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

73

Figura 46. Resultado imagen contenedor de comida

Fuente. elaborada por la red, a partir de Tips on packing fast food [en línea]. En: bersiun.com [Consultado marzo 28 de 2018]. Disponible en Internet: http://www.bersiun.com

Figura 47. Resultado imagen jirafas

Fuente. elaborada por la red, a partir de BIOPEDIA Biodiversidad, biomas y más. Enciclopedia ilustrada de la vida en la Tierra. Animales [en línea]. En: biopedia.com. [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.biopedia.com/animales/

Page 74: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

74

Figura 48. Resultado imagen tren

Fuente. elaborada por la red, a partir de Trenes de juguete eléctricos [en línea]. En: trenesa.com. [Consultado marzo 28 de 2018]. Disponible en Internet: http://www.trenesa.com/trenes-de-juguete-electricos/trenes-de-juguete-electricos/

Figura 49. Resultado imagen peatón

Fuente. elaborada por la red, a partir de Redacción Regional Sur. En los parques se concentran el atractivo y desarrollo de Machala [en línea]. En: eltelegrafo.com.ec. (27 de julio de 2014). [Consultado marzo 28 de 2018]. Disponible en Internet: https://www.eltelegrafo.com.ec/noticias/regional/1/en-los-parques-se-concentra-el-atractivo-y-desarrollo-de-machala-2

Page 75: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

75

Figura 50. Resultado imagen interior hogar 1

Fuente. elaborada por la red, a partir de ESCOBAR, Luis. Fabulous Proyecto Jj Salas Recibidores De Estilo Moderno [en línea]. En: Tifgo.Co. [Consultado marzo 28 de 2018]. Disponible en Internet: http://tifgo.co/decoracion-recibidores-modernos.html#

Figura 51. Resultado imagen interior hogar 2

Fuente. elaborada por la red, a partir de Salas. Sala Curva Kent [en línea]. En: Vivamedia.Co. [Consultado marzo 28 de 2018]. Disponible en Internet: http://vivamedia.co/salas-minimalistas-2017.html

Page 76: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

76

Figura 52. Resultado imagen interior hogar 3

Fuente. elaborada por la red, a partir de Diseño de Salas para Televisor [en línea]. En: DecoraciónDeSala.com. [Consultado marzo 28 de 2018]. Disponible en Internet: https://decoraciondesala.com/diseno-de-salas-para-televisor/

7.6 ENTRENAR RED CON DATOS PROPIOS

Hasta este momento ya se logró recrear resultados con el entrenamiento de la red en inglés, también fue posible utilizar el código de entrenamiento y pre procesamiento, es decir, se pudo emplear los códigos para la red en inglés y entrenar una red que describa en español, únicamente cambiando la base de datos de descripciones de una de inglés por una en español; esta base de datos se creó para este proyecto por medio de un código en python. Con lo anterior demostrado, ahora se procede a entrenar una red con datos propios, es decir, con una base de imágenes seleccionada o creada por una persona, y por ende, con una base de datos de descripciones acorde a las imágenes que se van a utilizar para el entrenamiento.

Para conocer si la estructura de entrenamiento que se ha empleado hasta el momento permite entrenar una red en un ambiente deseado por la persona, se procedió, en primer lugar, a realizar la captura de imágenes de la “Universidad Autónoma de Occidente” en diferentes áreas, tales como laboratorios, cafetería y biblioteca. En total se realizaron 200 fotos, de las cuales se seleccionaron 50 con las que se procede a entrenar la red.

Page 77: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

77

Como se ha trabajado hasta el momento, los códigos que se están empleando en la parte de pre procesamiento de datos, requieren que existan dos categorías, una de entrenamiento y otra de validación, por esta razón, las 50 imágenes se dividieron a su vez en dos grupos, uno con 40 imágenes para el entrenamiento y otro de 10 imágenes para la validación.

Figura 53. Muestra imágenes de entrenamiento tomadas

Fuente. elaborada a partir de RINCÓN, Vanessa. Fotografías de la Universidad Autónoma de Occidente [captura de imagen]. Cali. 2018.

Figura 54. Muestra imágenes de validación tomadas

Fuente. elaborada a partir de RINCÓN, Vanessa. Fotografías de la Universidad Autónoma de Occidente [captura de imagen]. Cali. 2018.

Page 78: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

78

Las figuras anteriores, son una muestra de las imágenes seleccionadas para realizar el entrenamiento y la validación de la red entrenada con datos propios, de estas cabe resaltar el nombre que se le ha dado a cada imagen, “IMG_U_X.JPG”, donde el carácter “X” es reemplazado por un número. La importancia del nombre se debe a que los códigos empleados en el proceso de extracción de características requieren que los nombres de las imágenes tengan un formato definido, el cual consiste en la existencia de dos barras bajas anteriores al número de identificación.

Creada la base de datos de imágenes para la extracción de características, y teniendo en cuenta de que el número de identificación de la imagen es único, y por ende no deben existir dos imágenes con el mismo independientemente si se encuentran en categorías diferentes, se procede a crear la base de datos de descripciones acordes a cada imagen, para esto se continua con la guía de las redes anteriores, en otras palabras, para cada imagen se asignan cinco descripciones.

Para la creación de la base de datos de las descripciones, se requiere conocer que información se necesita suministrar para poder realizar el entrenamiento de la red, esto se puede encontrar en los datos necesarios para que el código de pre procesamiento de datos pueda trabajar; al analizar las líneas de código se encontró que la información requerida se encontraba en cuatro variables: “id”, “flickr_url”, “image_id” y “caption”. Donde las primeras dos variables pertenecen a una categoría llamada “images” y las otras dos variables son parte de la categoría “annotations”. Esto se puede confirmar en la sección 6.4.2 del documento.

Identificada la información que debe contener la base de datos de descripciones de las imágenes se procede buscar un método para su creación; en este caso, se pensó en dos posibles soluciones, donde una consistía en la utilización del programa visual o afines que permitan la creación de archivos de extensión “.json” y la segunda por medio de un código en Python que recolectara la información y la guardara con un archivo “.json” al final. Por motivos de que se contaba con la interfaz de Python que se ha trabajado durante todo el proyecto se decidió hacer uso de ella.

Decidido la forma de crear la base de datos y la información que debe contener, se procedió a la creación de la misma, para lo que se requirió del programa “Excel” de Microsoft; el cual se utiliza para organizar y escribir la información requerida en la base de datos, es decir, las “id” de las imágenes, sus direcciones web y sus correspondientes descripciones. Por ende, se emplea el siguiente método para la consigna de los datos:

Page 79: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

79

Se empleará una hoja de cálculo para la información de una categoría de la base de datos de descripciones, por lo que en este caso se requieren dos hojas de cálculo, una para la información de “images” y otra para “annotations”; además se debe considerar que tanto las imágenes de entrenamiento como las de validación requieren de esta información, por lo cual se deben emplear otras dos hojas de cálculo. En la figura a continuación se muestra el esquema:

Figura 55. Modelo empleado en Excel

Como se puede observar en la figura parte (a) se representa la categoría “annotations” que la constituyen las variables de la id de la imagen y la descripción de la imagen; para completar esta información se requiere que en la primera columna se escriba el número de identificación de la imagen cinco veces, es decir, la cantidad de descripciones que una imagen va a describirse. Al frente del número se escribe su correspondiente descripción, en la figura parte (b) se observa la categoría “images” conformada por las variables: número de identificación de la imagen y la dirección web de la misma, en este caso solo se escribe el numero una vez por imagen y en frente se coloca la dirección de internet donde se puede encontrar. Como en esta ocasión las imágenes que se están empleando fueron

Page 80: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

80

tomadas para el proyecto, para completar esta información se procedió a subir las imágenes de entrenamiento y validación a internet empleando la plataforma “Drive”, para hacer esto también puede utilizarse páginas web que permitan el almacenamiento de imágenes.

De la imagen anterior también cabe resaltar que en la parte inferior de la hoja de Excel se encuentran los nombres de las diferentes hojas de cálculo, en este caso se leen los siguientes “anno”,”url”,”vanno” y ”vurl” cuyos nombres permiten identificar tanto la categoría como si son para entrenamiento o validación, en este caso las primeras dos hojas de cálculo pertenecen a los datos de entrenamiento y las últimas dos a los datos de validación. A continuación, se muestra parte de cómo se llenaron los datos:

Figura 56. Modelo de Excel con información

Al completar la información necesaria, como se muestra en la figura anterior, se procede a guardar el archivo con la extensión “.xls”, esto se debe a que la librería de Python que se va a utilizar para la creación de la base de datos “Pandas” es capaz de leer los archivos de Excel con esta extensión.

Se procede a utilizar un código escrito en Python (Anexo B) el cual permite leer la información del archivo Excel y almacenarla en variables las cuales posteriormente

Page 81: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

81

se convierten en arreglos para facilitar el trabajar con dicha información. Paso seguido por medio de ciclos se procede a formar la estructura de datos establecida en la sección 6.4.2 y llenar los valores con la información suministrada por medio del Excel. Al finalizar esta parte se obtiene un diccionario con los atributos necesarios para realizar el pre procesamiento de datos, por lo cual se necesita guardar estos datos en formato “json” lo cual se realiza por medio de la librería json de Python. En medio de este proceso se encuentra con un problema, los datos que se necesitan y los datos que se tienen se diferencia en que estos últimos cuentan con un número que no es necesario, por lo cual se creó un método en el código llamado “reasignar”, el cual se encarga de buscar estos números y eliminarlos para así poder guardar el archivo .json con la información correcta. Este paso se debe realizar dos veces, uno con los valores para los datos de entrenamiento y otro para lo de validación.

Al terminar estos pasos, ya se cuenta tanto con la base de datos de imágenes como la de descripciones con las que se desea entrenar la red, a continuación, se proceden a seguir los pasos de las secciones 7.3 Y 7.4, donde se modifica la cantidad de datos que se asignan a los mini batches en la etapa de entrenamiento.

El entrenamiento de esta red se realizó varias veces, modificando tanto el número de iteraciones como la cantidad de datos que pasaba el batch, pero en cada una de ellas los resultados no presentaban variaciones visibles. El tiempo de entrenamiento en cada ocasión no presentaba mucha variación, siendo este entre 2 y 5 minutos.

A continuación, se muestran resultados de la red entrenada con información propia.

Page 82: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

82

Figura 57. Resultado imagen- Escritorio

Fuente. elaborada por la red, a partir de RINCÓN, Vanessa. Fotografías de la Universidad Autónoma de Occidente [captura de imagen]. Cali. 2018.

Figura 58. Resultado imagen-Agora

Fuente. elaborada por la red, a partir de RINCÓN, Vanessa. Fotografías de la Universidad Autónoma de Occidente [captura de imagen]. Cali. 2018.

Page 83: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

83

Figura 59. Resultado imagen-biblioteca

Fuente. elaborada por la red, a partir de RINCÓN, Vanessa. Fotografías de la Universidad Autónoma de Occidente [captura de imagen]. Cali. 2018.

Page 84: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

84

8. CONCLUSIONES

En la actualidad existen varias plataformas que dan la posibilidad a los usuarios de realizar trabajos con herramientas como lo son las redes neuronales, algunas de ellas fueron mencionadas en el documento con sus respectivas características, las cuales pueden adaptarse mejor según lo que el individuo desee realizar. En este proyecto se decidió trabajar en la plataforma Python, ya que contaba con las características requeridas para el desarrollo del mismo.

Para realizar el entrenamiento y funcionamiento de la aplicación se encontró que terceros ya habían trabajado en el tema, como los son Microsoft y google, además de que los archivos que estas empresas emplearon podían ser encontrados como open source, es decir, que otras personas pueden hacer uso de ellos respetando los derechos establecidos. Por lo que al momento de crear la aplicación se contó con una base la cual dio como resultado un desarrollo más limpio. En esta parte también cabe resaltar que la existencia de redes neuronales convolucionales pre-entrenadas, facilito y redujo en gran medida el tiempo de entrenamiento de la red, ya que estas se pueden utilizar de forma estática como extractor de características de las imágenes, datos que pueden ser tomados, tabulados y guardados para posteriormente ingresar como entrada al entrenamiento de la red neuronal recurrente.

La recreación de los resultados al crear la red con los datos originales del sitio MSCOCO dio como fruto imágenes con descripciones muy acertadas, como se pudo observar en las figuras 19 y 23, así como descripciones que no presentan relación alguna con la imagen proporcionada. Una de las razones para esto puede deberse a que dentro del set de entrenamiento de imágenes y descripciones no se contaba con el ambiente visto en la imagen proporcionada, y por ende, la red genera la descripción de lo que más se asemeja según la información con la que cuenta. En otros casos, las descripciones que brinda la red no son totalmente ciertas, estos casos son en su mayoría errores al describir el género de la persona, colores o elementos muy parecidos presentes en las imágenes; este tipo de error puede deberse a que la red convolucional con la que se trabajó en el proyecto es estática, es decir, la red fue pre-entrenada y solo se empleó como extractor de características, más en el entrenamiento de la red final nunca se modificó.

Posterior a la creación y comprobación de recrear la red, se prosiguió a confirmar si se puede emplear los mismos archivos de programación para entrenar una red que describiera las imágenes, pero en el idioma español, para ello, al analizar el proceso del entrenamiento, se encontró que era necesario modificar el set de datos de descripciones de uno en ingles por otro en español. Pese a haber buscado un data set que se adaptase a lo requerido no se llegó a ningún resultado, por ende se vio

Page 85: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

85

en la necesidad de crearlo. Para completar esta tarea se requirió de dos meses, en los cuales se procedió a buscar ideas de como traducir la red existente al idioma deseado, buscar los programas necesarios, probar y desechar aquellas que no eran eficientes, tal como lo fue la traducción manual, hasta llegar a la conclusión de crear un programa que hiciera la tarea; posteriormente se procedió a resolver errores que surgieron durante el proceso hasta obtener los archivos con las descripciones en español.

Durante el entrenamiento de la red con los data set de español, se encontró un problema persistente que aparecería en momentos diferentes del proceso, el cual después de analizarlo se encontró que ocurría debido a la letra “ñ” presente en algunas palabras de español, por lo que para concluir el entrenamiento se tuvo que modificar en la etapa de pre procesamiento del data set de descripciones las palabras con dicho carácter. Por último, la red que se obtuvo de este proceso, efectivamente entregaba las escenas dadas con su respectiva descripción en el idioma español, cabe destacar que esta red cuenta con los mismos problemas mencionados para la red en inglés.

Al haber comprobado que se puede hacer uso de los programas para entrenar una red que describa en otros idiomas, siempre y cuando se cuente con los datos necesarios para ello, se procede a realizar un último trabajo, comprobar si además, se puede utilizar para entrenar una red que describa escenarios específicos que el usuario desee. Para esto es necesario crear un data set tanto de imágenes del lugar que se desea describir así como el data set de descripciones acorde. El proceso de esta etapa tomo un mes, y consistió en la captura de las imágenes del entorno, la concepción de ideas para la creación del data set de descripciones, la indagación sobre programas y librerías que ayudaran así como los errores y modificaciones del proceso, al final se logró crear un programa que permitió la creación del data set de 250 descripciones, el mismo programa puede crear hasta 999 descripciones en un archivo, y con unas modificaciones se puede ampliar este número para que abarque la necesidad del usuario. El entrenamiento de la red se llevó a cabo con los mismos códigos, modificando el número de elementos que entraba por batch; al final los resultados arrojados mostro que, si se puede entrenar la red, pero a causa de la limitada cantidad de datos de entrenamiento la red entrenada no permitía la descripción del escenario.

Page 86: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

86

BIBLIOGRAFÍA

An open source machine learning library for research and production [en línea]. Tensorflow. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://www.tensorflow.org/

ASUS Zenbook NX500JK-XH72T 15.6" 4K Touchscreen Notebook Computer [en línea]. B&H. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://goo.gl/Z58FuU

BAHRAMPOUR, Soheil, et al. Comparative Study of Deep Learning Software Frameworks. [en linea]. arxiv.org (3 de marzo de 2016) p.8. [Consultado: 7 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1511.06435

BAIR. Caffe [en linea]. Caffe Deep learning framework. 2014. [Consultado: 7 de marzo de 2018]. Disponible en Internet: http://caffe.berkeleyvision.org/

COCO-Common. Objects in Context. Dataset [en línea]. Cocodataset.org. [Consultado: 10 de marzo de 2018]. Disponible en Internet: http://cocodataset.org/#download

----- Objects in Context. Home [en linea]. Cocodataset.org. [Consulado: 10 de marzo de 2018]. Disponible en Internet: http://cocodataset.org/#home

----- Objects in Context. Task [en linea]. Cocodataset.org. [Consultado: 10 de marzo de 2018]. Disponible en Internet: http://cocodataset.org/#captions-challenge2015

CHOLLET, Francois. Xception: Deep Learning with Depthwise Separable Convolutions. [en línea]. arxiv.org (4 de abril de 2017). p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1610.02357

Documentation [en línea].Theano 1.0 Release. 2016. [Consultado: 7 de marzo de 2018]. Disponible en Internet: http://deeplearning.net/software/theano/index.html

FANG, Hao, et all. From captions to visual concepts and back. En: Berkeley EECS [en linea]. IEEE – Institute of Electrical and Electronics Engineers. 2015.

Page 87: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

87

[Consultado: 17 de marzo de 2017]. Archivo pdf. Disponible en Internet: https://people.eecs.berkeley.edu/~sgupta/pdf/captions.pdf

GOODFELLOW, Ian; BENGIO, Yoshua y COURVILLE, Aaron. Deep learning: Introduction. En: Deep Learning: An MIT Press book [en linea]. MIT Press. 2016, p.26. [Consultado: 17 de marzo de 2017]. Disponible en Internet:http://www.deeplearningbook.org/contents/intro.html

KARPATHY, Andrej. The unreasonable effectiveness of recurrent neural networks [en línea]. Andrej Karpathy Blog. (21 de mayo de 2015). [Consultado: 20 de marzo de 2018]. Disponible en Internet: http://karpathy.github.io/2015/05/21/rnn-effectiveness/.

Keras: The Python Deep Learning Library [en línea]. Keras documentation. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://keras.io/

LIN, Tsung-Yi, et all. Microsoft COCO: Common Objects in Context. En: Cornell University Library [en línea]. CoRR: abs/1405.0312. 2014. p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1405.0312

Matlab [en línea]. MathWorks. [Consultado: 7 de marzo de 2018]. Disponible en Internet: https://la.mathworks.com/products/matlab.html

MEJIA, Juan Arturo. Sistema de detección de intrusos en redes de comunicación utilizando redes neuronales [en línea]. Licenciatura en Ingeniería en Electrónica y Computadoras. Puebla. Universidad de las Américas Puebla. Departamento de Ingeniería Electrónica. 2004. p. 23-24. [Consultado: 20 de marzo de 2018]. Disponible en Internet:http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/mejia_s_ja/capitulo3.pdf

Microsoft COCO-Common Objects in Context [en línea]. Cocodataset.org. Febrero de 2015.[Consultado: 10 de marzo de 2018]. Disponible en Internet: http://cocodataset.org/#download

OLAH, Christopher. Understanding LSTM Networks [en línea]. Colah´s blog. (27 de agosto de 2015). [Consultado: 19 de julio de 2018]. Disponible en Internet: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

Page 88: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

88

Python es poderoso y rápido; juega bien con los demás; corre por todas partes; es amigable y fácil de aprender; está abierto. [en línea]. Python. [Consulado: 7 de marzo de 2018]. Disponible en Internet: https://www.python.org/about

SIMONYAN, Karen y ZISSERMAN, Andrew. Very Deep Convolutional Networks for Large-Scale Image Recognition [en línea]. arxiv.org (10 de abril de 2015). p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1409.1556

SOCHER, Richard, et all. Convolutional-Recursive deep learning for 3D object classification [en línea]. Nevada: Neural Information Processing Systems Foundation, Inc., 2012, p.1. [Consultado: 22 de marzo de 2017]. Disponible en Internet: https://papers.nips.cc/paper/4773-convolutional-recursive-deep-learning-for-3d-object-classification.pdf

SZEGEDY, Christian, et al. Rethinking the Inception Architecture for Computer Vision [en línea]. arxiv.org (11 de diciembre de 2015). p.1. [Consultado: 10 de marzo de 2018]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1512.00567

Torch A Scientific computing for Luajit [en linea]. Torch. [Consultado: 7 de marzo de 2018]. Disponible en Internet: http://torch.ch/

VINYALS, Oriol, et all. A picture is worth a thousand (coherent) words: building a natural description of images [en línea]. Google Research Blog. (17 de noviembre de 2014). [Consultado: 17 de marzo de 2017]. Disponible en Internet: https://research.googleblog.com/2014/11/a-picture-is-worth-thousand-coherent.html

----- Show and tell: Lessons learned from the 2015 MSCOCO image captioning challenge. En: Cornell University Library [en linea]. CoRR: abs/1609.06647. 2016. [Consultado: 17 de marzo de 2017]. Archivo pdf. Disponible en Internet: https://arxiv.org/pdf/1609.06647.pdf

WANG, Weimin. Using TensorFlow to build image to text application [en linea]. Weimin Wang. (20 de marzo de 2017). [Consultado: 15 de marzo de 2018]. Disponible en Internet: https://weiminwang.blog/2017/03/20/using-tensorflow-to-build-image-to-text-deep-learning-application/

Page 89: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

89

YEGNANARAYANA, Bayya. Artificial neural networks. PHI Learning, 2009. p. 24. ISBN 9788120312531

Page 90: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

90

ANEXOS

Anexo A. Código para creación de data set español

#Importar librerias import json from googletrans import Translator import numpy as np #crear variables y cargar dato a traducir(ar) trans=Translator() ar='D:\Tesis\PruebaDeEscritorio\COCO_captioning\prueba\captions_train2014.json' with open(ar, 'r+') as f: data = json.load(f) caps=data['annotations'] #recorre los datos, toma el texto en inglés y lo traduce, reescribe el texto y guarda Un archivo de texto con la posición en la que va traduciendo y sobrescribe el archivo .json for i in range(143948,len(caps)): aux=caps[i] aux=trans.translate(aux['caption'],src='en',dest='es') aux=aux.text data['annotations'][i]['caption']=aux f.seek(0) f.write(json.dumps(data)) f.truncate() print(i) d=open('num.txt','w') d.write(str(i)) d.close()

Page 91: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

91

Anexo B. Código para creación data set propio

#importar librerias import numpy as np import json import pandas as pd

#crear proceso para modificar el contenido el json def reasignar(i,t):

if a[i] =='{': if a[i+1] =='"':

if a[i+2] ==str(0): if a[i+3] =='"':

if a[i+4]==':': a[i]='[' a[i+1]="" a[i+2]="" a[i+3]="" a[i+4]=""

if a[i] ==' ': if a[i+1] =='"':

if a[i+2] ==str(t): if a[i+3] =='"':

if a[i+4]==':': a[i]="" a[i+1]="" a[i+2]="" a[i+3]="" a[i+4]=""

if a[i] =='}': if a[i+1] =='}': a[i+1]=']'

if t>9: p=str(t) if a[i] ==' ':

if a[i+1] =='"': if a[i+2] ==str(p[0]):

if a[i+3]==str(p[1]): if a[i+4] =='"':

if a[i+5]==':': a[i]=""

Page 92: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

92

a[i+1]="" a[i+2]="" a[i+3]="" a[i+4]="" a[i+5]="" if t>99: p=str(t) if a[i] ==' ': if a[i+1] =='"': if a[i+2] ==str(p[0]): if a[i+3]==str(p[1]): if a[i+4]==str(p[2]): if a[i+5] =='"': if a[i+6]==':': a[i]="" a[i+1]="" a[i+2]="" a[i+3]="" a[i+4]="" a[i+5]="" a[i+6]="" return a #cargar datos de Excel y crear tablas xls=pd.ExcelFile('datasetU.xls') print(xls.sheet_names) df=xls.parse('anno') df2=xls.parse('url') df=np.array(df) df2=np.array(df2) data={} data['images']={} data['annotations']={} #crear datos del archivo .json según formato for i in range(0,len(df2)): data['images'][i]={"id":df2[i,0],"flickr_url":df2[i,1]} for i in range(0,len(df)): data['annotations'][i]={"image_id":df[i,0],"caption":df[i,1]} a=json.dumps(data) len(data)

Page 93: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

93

a=list(a)

#llamar proceso para modificar contenido del .json for i in range(0, len(a)-2):

for t in range(1,len(data['annotations'])): a=reasignar(i,t)

a="".join(a)

#guardar archivo .json with open ('train.json','w') as f:

f.write(a)

Page 94: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

94

Anexo C. Tensorboard

Para emplear tensorboard se requiere de un archivo “log”, el cual se encarga de guardar los eventos de la red. Para esto como ya se tiene creada la red que se desea visualizar, se procede a crear el archivo de eventos de la siguiente manera:

Primero se debe de tener cargada la red, al estar esto listo se procede a escribir las siguientes líneas de código:

writer=tf.summary.FileWriter("E:\Tesis\savedSession\model1.0.ckpt")

writer.add_graph(sess.graph)

Cabe resaltar que la dirección que se escribe en el writer corresponde a la ubicación donde se desea que se guarde el archivo.

Cuando se termine de correr el código se puede notar que aparece un archivo en esta ruta

Con este archivo creado se procede a abrirlo, para esto se debe abrir la consola de comando y dirigirse a la ubicación donde se guardo el archivo, cuando ya se encuentre en la ubicación se escribe la siguiente línea de código

>>tensorboard logdir=model1.0.ckpt

Cuando se ingrese el comando se mostrara una dirección para pegar en el navegador de internet donde podrá trabajar con la información de la red en la plataforma tensorboard

Page 95: DESCRIPCIÓN DE ESCENAS POR MEDIO DE APRENDIZAJE …red.uao.edu.co/bitstream/10614/10557/5/T08228.pdf · Dedico este trabajo a mis padres, quienes a lo largo de mi vida académica

95

Anexo D. Listado de librerías empleadas

import json import os import collections import tensorflow import re import h5py import argparse import sys import numpy import Pandas import tarfile import six import scipy import matplotlib import urllib import math import heapq import datetime