• No se han encontrado resultados

Un enfoque inteligente para digitalizar y sincronizar tableros físicos

N/A
N/A
Protected

Academic year: 2020

Share "Un enfoque inteligente para digitalizar y sincronizar tableros físicos"

Copied!
128
0
0

Texto completo

(1)

UN ENFOQUE INTELIGENTE PARA DIGITALIZAR

Y SINCRONIZAR TABLEROS FÍSICOS

Universidad Nacional del Centro de la Provincia

de Buenos Aires

Facultad de Ciencias Exactas

Trabajo Final de la carrera Ingeniería de Sistemas

Alumno

Mariano Pardo

Director

Dr. Álvaro Soria

(2)

Índice general

Resumen 7

1. Introducción 8

1.1 Motivación 8

1.2 Objetivo 9

1.3 Estructura de la tesis 10

2. Estado del Arte 12

2.1 Aprendizaje de Máquina 12

2.1.1 Clasificación supervisada de datos 12

2.1.1.1 Perceptrón 13

2.1.1.2 Multilayer Perceptrons 14

2.1.1.3 Convolutional Neural Networks 22

2.1.1.4 Comparación entre los algoritmos de clasificación supervisada 23

2.2 Trabajos Relacionados 24

2.2.1 Agile Cards for JIRA 25

2.2.2 WallSync 27

2.2.3 JimFlow 29

2.2.4 Otras herramientas 30

2.2.5 Comparación entre las herramientas 30

2.3 Resumen 31

3. Enfoque para digitalizar tableros físicos 33

3.1 Aplicación de reconocimiento de tableros físicos 35

3.1.1 Etapa de clasificación y localización 37

3.1.1.1 Modelo de la red neuronal 37

3.1.1.2 Localización de elementos 40

3.1.1.3 Preparación de datos para el entrenamiento 43

3.1.1.4 Entrenamiento de la red neuronal 44

3.1.2 Etapa de reconocimiento de textos 45

3.1.3 Etapa de agrupamiento 48

3.1.4 Tablero de libre disposición 51

3.2 Aplicación de administración de tableros 52

3.2.1 Sincronización de tableros físicos 53

(3)

4. Implementación de SyncBoards 63

4.1 Arquitectura del sistema 63

4.2 Aplicación de reconocimiento de tableros físicos 64 4.2.1 Entrenamiento del modelo y clasificación de los elementos 66

4.2.2 Análisis de la imagen del tablero físico 72

4.3 Servidor de la aplicación de administración de tableros 74 4.3.1 Inicialización y configuración del servidor 76

4.3.2 Autenticación y manejo de usuarios 77

4.3.3 Modelos del sistema 81

4.3.4 Sincronización del tablero digital 84

4.3.5 Interfaz de comunicación 85

4.4 Cliente de la aplicación de administración de tableros 90

4.4.1 Modelos 91

4.4.2 Servicios externos y recursos del dispositivo 92

4.4.3 Vistas de la aplicación 95

5. Resultados Experimentales 96

5.1 Evaluación del experimento 96

5.2 Modelo implementado 98

5.3 Estrategias del modelo 99

5.3.1 Capas ocultas de la red implementada 99

5.3.2 Configuraciones de las convolutional layers 103

5.3.3 Influencia del entrenamiento 109

5.4 Estrategias de extracción de texto 114

5.5 Influencia de los datos 116

5.6 Resumen 118

6. Conclusiones 120

6.1 Contribuciones 120

6.2 Limitaciones 120

6.3 Trabajos futuros 121

Referencias 123

Índice de figuras

(4)

1.1 Esquema conceptual de la propuesta. 10 Capítulo 2

2.1 Ejemplo de un clasificador lineal binario. 13 2.2 Ejemplo de MLP con dos capas ocultas. 15

2.3 Ejemplo de overfitting. 19

2.4 Ejemplo de early stopping, el algoritmo se detiene en el punto indicado. 20 2.5 Ejemplo de dropout donde se eliminan la mitad de las conexiones entre

unidades. 21

2.6 Ejemplo de las capas involucradas en una convolutional neural network. 23 2.7 Tablero físico conteniendo los elementos impresos por Agile Cards. 26 2.8 Tablero físico conteniendo los elementos impresos por WallSync. 28 2.9 Tablero físico conteniendo los elementos impresos por JimFlow, y la cámara

encargada de sincronizar el tablero. 29

Capítulo 3

3.1 Esquema conceptual del enfoque. 34

3.2 Tablero físico del ejemplo conductor. 36 3.3 Ejemplos de elementos de cada posible categoría. 37 3.4 Capas de la convolutional neural network implementada. 39 3.5 Elementos localizados y clasificados en el tablero físico del ejemplo

conductor. 42

3.6 Ejemplo de las transformaciones realizadas para la extracción del texto. 48 3.7 Selección del tipo de las relaciones en el tablero del ejemplo conductor. 50 3.8 Tablero físico donde los ítems pueden estar entre dos relaciones

horizontales. 52

3.9 Interfaz de creación de tableros digitales. 54 3.10 Interfaz de creación de relaciones en un tablero con soporte de tipos

verticales y horizontales. 56

3.11 Interfaz de creación de ítems en un tablero con soporte de tipos verticales y

horizontales. 57

3.12 Interfaz del tablero digital del ejemplo conductor. 58

3.13 Interfaz de un ítem. 59

(5)

4.2 Diagrama de paquetes de la aplicación de reconocimiento de tableros físicos.65 4.3 Diagrama de clases de los paquetes NetworkModel y ModelTraining. 68 4.4 Fragmento de código de la red neuronal implementada. 70 4.5 Diagrama de secuencias del entrenamiento del modelo. 71 4.6 Diagrama de clases del paquete BoardAnalyser. 73 4.7 Diagrama de paquetes del servidor de la aplicación de administración de

tableros. 76

4.8 Diagrama de secuencias del flujo de autenticación. 79 4.9 Diagrama de clases del paquete de autenticación. 80 4.10 Diagrama de clases del paquete Models. 82 4.11 Diagrama de secuencias de la sincronización de un tablero digital. 85 4.12 Diagrama de clases de los paquetes Routes y Controllers. 87 4.13 Diagrama de paquetes del cliente de la aplicación de administración de

tableros. 91

4.14 Diagrama de clases del paquete de modelos. 92 4.15 Diagrama de clases del paquete de servicios. 93

Índice de fórmulas

Capítulo 2

2.1 Función de activación. 14

2.2 Función de activación rectifier. 16

2.3 Regla de la cadena. 16

2.4 Función softmax. 16

2.5 Entropía cruzada de n categorías. 17

Capítulo 3

3.1 Redimensionado aplicada en cada iteración. 40

3.2 Transformación de Radon. 46

3.3 Filtro gaussiano. 47

3.4 Definición del umbral M. 47

3.5 Ecuación complementaria de la fórmula 3.4. 47

3.6 Coeficiente de Sorensen-Dice. 54

Índice de tablas

(6)

2.2 Comparación entre las herramientas presentadas. 31 Capítulo 4

4.1 Códigos de estado utilizados en las cabeceras HTTP. 87

Capítulo 5

5.1 Resultados del modelo final. 98

(7)

Resumen

En los últimos años, el uso de las metodologías ágiles ha crecido significativamente. En la implementación de estas prácticas, es común el uso de diferentes tipos de tableros como pueden ser tableros de tareas, funcionalidades o backlogs.

En la actualidad, existen múltiples herramientas que permiten manejar estos tableros digitalmente. Sin embargo, muchos equipos de trabajo continúan haciendo uso de tableros físicos.

Los tableros físicos tienen múltiples ventajas sobre los digitales. Entre éstas, se incluyen una mayor visibilidad y flexibilidad, e incluso, una mejor comunicación entre los miembros del equipo. No obstante, existe una tendencia creciente en el desarrollo del software distribuido. En este contexto, los tableros físicos fallan al proveer una solución viable, debido a que no pueden ser accedidos desde cualquier ubicación. A partir de esta problemática, se presenta un enfoque que permite a los equipos de trabajo utilizar tableros físicos y, a su vez, mantener sincronizada una versión digital de estos tableros. Esto permite gozar de las principales ventajas de los tableros físicos y digitales. Con este propósito, se presenta la herramienta SyncBoards, la cual brinda una solución que da lugar a la sincronización y digitalización de tableros físicos. En este contexto, el enfoque propuesto se centra en la utilización de técnicas de

aprendizaje supervisado, con el fin de dar lugar a la digitalización de tableros físicos. A partir de una imagen de un tablero físico, la herramienta debe reconocer y comprender los diferentes elementos contenidos en ésta.

(8)

1. Introducción

1.1 Motivación

En la última década se ha visto una tendencia creciente en la utilización de métodos ágiles, tanto dentro como fuera del ámbito tecnológico [1] [2]. En la aplicación de estas metodologías es común la utilización de diferentes tableros, como pueden ser tableros de tareas, funcionalidades o backlogs. A pesar de que en la actualidad existe una extensa cantidad de herramientas para el manejo de tableros digitales, los tableros físicos siguen siendo ampliamente utilizados en los equipos de desarrollo [3].

La utilización de tableros físicos ha mostrado tener muchos beneficios sobre las herramientas digitales. Por un lado, fomentan las interacciones entre los miembros del equipo. El hecho de reunirse personalmente para planificar el tablero suele generar mayores discusiones que las que se generan al utilizar una herramienta digital [3]. Por otro lado, los tableros físicos se encuentran más visibles para todos los miembros del equipo, e incluso pueden ayudar a que miembros de otras áreas de la empresa conozcan el estado actual del proyecto [3]. Otro beneficio, es que no se requiere entrenamiento previo para comprenderlos y actualizarlos. Los tableros físicos soportan flexibilidad en la disposición de los elementos a organizar [4].

(9)

este motivo, las discusiones no personales, suelen generar mayores problemas de comunicación.

Sin embargo, los tableros físicos tienen sus desventajas. Por un lado, a diferencia de algunas herramientas digitales, no es posible accederlos desde cualquier ubicación. Este aspecto es crítico en el contexto actual donde el desarrollo de software se realiza cada vez más en forma distribuida [5]. Por otro lado, los tableros físicos no permiten realizar el seguimiento de los cambios efectuados a medida que avanza el proyecto. Es decir, se pierde el estado anterior de los datos, en contraste con la mayoría de las herramientas digitales que mantienen un historial de cambios [3]. Esta trazabilidad es clave para la obtención de métricas de desarrollo para evaluar la perfomance del equipo por las áreas de control de calidada y seguimiento de proyectos. Otro aspecto importante, es que algunas herramientas permiten el cálculo automático de diferentes métricas.

1.2 Objetivo

(10)

Figura 1.1 - Esquema conceptual de la propuesta.

La herramienta SyncBoards se puede dividir en cuatro componentes. Por un lado, se cuenta con el componente de localización y clasificación de elementos. Este componente recibe como entrada una imagen de un tablero físico, y tiene como objetivo reconocer y ubicar los diferentes elementos contenidos en la imagen. Luego, estos elementos son enviados al componente de extracción de texto. Éste reconoce y extrae el texto contenido en los elementos reconocidos. A continuación, el componente de agrupación de elementos procede a detectar las relaciones a las que pertenece cada elemento. Finalmente, se cuenta con el componente de digitalización del tablero. Este componente utiliza los elementos reconocidos y sus agrupaciones, con el fin de crear o actualizar la versión digital del tablero.

1.3 Estructura de la tesis

Este documento de tesis se estructura de la siguiente manera. En el capítulo 2 se introducen las problemáticas involucradas en la clasificación de imágenes. Luego, se presenta una explicación teórica de los algoritmos de machine learning analizados durante el desarrollo de esta tesis, hasta llegar a las técnicas que se consideran el estado del arte en la clasificación de imágenes. Por último, se presentan las soluciones actuales que intentan dar lugar a la digitalización de tableros físicos.

(11)

de tableros físicos. Luego, se detallan las diferentes funcionalidades provistas por la herramienta.

En el capítulo 4 se detallan los aspectos teóricos que dieron lugar al diseño e implementación de la herramienta. Se explican los diferentes componentes de la herramienta y sus funcionalidades.

En el capítulo 5 se presentan los diferentes experimentos realizados durante el desarrollo de esta tesis. Se detallan las estrategias de evaluación realizadas con el fin de medir la eficacia en la digitalización de tableros físicos.

(12)

2. Estado del Arte

Al analizar la digitalización de una imagen de un tablero físico, se debe tener en cuenta la cantidad de escenarios posibles que pueden darse en el mundo real. Por este motivo, no es factible definir manualmente un conjunto de reglas que permitan identificar los distintos elementos dentro del tablero. Esta dificultad conlleva al estudio de la clasificación de imágenes mediante aprendizaje de máquina.

En la sección 2.1 se dará el marco teórico necesario para comprender los algoritmos que permiten clasificar imágenes.

En la sección 2.2 se presentarán trabajos relacionados en el contexto de la digitalización de tableros físicos.

2.1 Aprendizaje de Máquina

Aprendizaje de Máquina o Machine learning se basa en algoritmos genéricos que permiten resolver un problema sin estar programados especificamente para esta función. Estas técnicas implican la construcción de algoritmos capaces de reconocer patrones en un conjunto de datos. Luego, a partir de estos patrones es posible realizar las predicciones o decisiones necesarias. [5]

2.1.1 Clasificación supervisada de datos

Los algoritmos de clasificación supervisada permiten, dado un conjunto de datos de entrada, obtener una categoría predefinida como salida [11].

(13)

entrenamiento, el algoritmo debe ser capaz de encontrar un conjunto de patrones, que permita identificar la categoría a la que pertenece una nueva observación.

2.1.1.1 Perceptrón

El perceptrón es uno de los primeros algoritmos de aprendizaje supervisado. Este permite clasificar datos en dos categorías. El perceptrón es un algoritmo de clasificación lineal, es decir, busca la función lineal que mejor clasifique la combinación lineal de características de los datos. [5]

Este algoritmo de aprendizaje no puede ser utilizado por si solo para clasificar imágenes. Sin embargo, puede emplearse para este fin, al ser combinado con técnicas que se detallarán a lo largo de este capítulo.

(14)

Todas las observaciones deben tener la misma cantidad de características numéricas. Estas características representan las entradas del perceptrón. El objetivo del algoritmo es conseguir un vector de pesos y una desviación vertical o bias, que minimice el error clasificando las observaciones [5] [6] [7].

Sea el vector de características numéricas de una observación, el vector de pesos asociados a cada característica yb

​ el bias, se puede definir la función de clasificación

como muestra la fórmula 2.1.

Fórmula 2.1 - Función de activación.

Donde es la salida del algoritmo y, 0

​ y 1 representan las categorías en las que se

pueden clasificar los datos. Esta función también es conocida como función de activación

​ .

Sin embargo, la utilización de un solo perceptrón para clasificar datos, tiene sus limitaciones. Una de las principales es que solo funcionan con problemas donde las características de las observaciones y la categoría resultante, son linealmente dependientes [5]. Para resolver este problema, se pueden utilizar Multilayer Perceptrons

​ .

2.1.1.2 Multilayer Perceptrons

(15)

intermedias, conocidas como capas ocultas. Al igual que dentro de los perceptrons, las conexiones entre dos unidades, tienen un peso asociado. [5] [8]

Figura 2.2 - Ejemplo de MLP con dos capas ocultas.

Este algoritmo envía los datos de cada observación a la capa de entrada. La salida de cada unidad es propagada a la capa siguiente, hasta llegar a la capa de salida. Los resultados de la capa de salida son el resultado del algoritmo.

(16)

la función logística y el rectifier. En el contexto de este trabajo, nos vamos a centrar en la función de rectifier, la cual se define tal como se observa en la fórmula 2.2.

Fórmula 2.2 - Función de activación rectifier.

Donde x representa la entrada a la unidad. Las unidades que utilizan esta función, se las conoce como ReLUs

​ .

Uno de los motivos principales que lleva a construir estas redes uniendo operaciones simples, como funciones lineales y ReLUs, es la posibilidad de realizar los cálculos matemáticos de forma muy eficiente. El concepto matemático que da lugar a esta eficiencia, es conocido como regla de la cadena

​ . Esta regla permite computar la

derivada de la composición de dos o más funciones, mediante la fórmula 2.3.

Fórmula 2.3 - Regla de la cadena.

Cuando se carga una nueva observación en la red, se obtiene un vector de puntajes correspondiente a cada categoría. Un mayor puntaje implica una mayor probabilidad de que la observación pertenezca a la categoría [11]. Luego, es necesario normalizar estos puntajes. Para lograr este objetivo, a cada puntaje se le aplica una función conocida como softmax

​ , la cual se define como:

(17)

Donde el vector representa el vector de puntajes, y n es la cantidad de puntajes en el vector.

Durante la fase de entrenamiento, es necesario comparar el vector de probabilidades obtenido, con la categoría real de la observación. Con este propósito, las categorías son codificadas utilizando el método codificador one-hot

​ . Este método

implica definir un vector , el cual en la posición de la categoría correcta contiene un uno, y en todas las otras posiciones contiene ceros. La ventaja de este enfoque, es que permite medir la calidad de las predicciones, comparando los vectores y . Para comparar estos vectores, se utiliza un método conocido como entropía cruzada

​ . Este

método mide el promedio de bits necesarios para identificar un evento en un vector de probabilidades. La entropía cruzada puede ser definida como se presenta en la fórmula 2.5.

Fórmula 2.5 - Entropía cruzada de n categorías.

El objetivo principal de la fase de entrenamiento es ajustar los pesos y bias en la red, de forma tal que se obtenga un puntaje alto para la categoría correcta, y puntajes bajos para las categorías incorrectas [11]. Para cumplir este propósito, es necesario medir la

pérdida de entrenamiento

​ . Es posible medir esta pérdida, calculando el promedio de

entropías cruzadas entre todas las observaciones utilizadas durante el entrenamiento.

(18)

El segundo paso consiste en ajustar los pesos de la red minimizando la pérdida conseguida anteriormente. Con este propósito, normalmente se utiliza un método conocido como Stochastic gradient descent

​ [11]. En este último paso, la regla de la

cadena permite combinar los cálculos y obtener los gradientes de forma eficiente. Una importante variante a Stochastic gradient descent, es Mini-batch gradient descent. Esta variante, en lugar de dar como entrada una única observación, permite cargar múltiples observaciones por cada iteración. Este conjunto de iteraciones es conocido como

mini-batch

​ .

Con el objetivo de reconocer patrones más complejos, es necesario agrandar el tamaño de la red. El mismo puede ser agrandado vertical u horizontalmente. Agrandar el tamaño verticalmente implica añadir más unidades a las capas ocultas. Mientras que agrandar el tamaño horizontalmente implica aumentar la cantidad de capas ocultas. Dado que agregar más unidades, genera una mayor cantidad de parámetros, normalmente es más eficiente agrandar la red horizontalmente. Además, en el contexto de la clasificación de imágenes, las redes profundas facilitan el reconocimiento de patrones jerárquicamente. Mientras que en las primeras capas se reconocen los patrones más simples, en las capas más cercanas a la salida se reconocen los patrones más complejos.

Una importante fase del desarrollo de una red neuronal artificial, es poder medir la eficacia de la red generalizando a nuevas observaciones. La importancia de esta fase radica en que es posible generar una red capaz de clasificar correctamente las observaciones con la que fue entrenada, pero, falle al intentar clasificar nuevas observaciones. Para poder medir la eficacia de la red clasificando nuevas observaciones, es posible dividir el conjunto de observaciones disponibles en dos grupos. Éstos son conocidos como training set y test set

​ . El training set es utilizado

(19)

utilizado para medir la eficacia de la red en observaciones que no fueron utilizadas durante su entrenamiento.

Al crear grandes modelos de redes neuronales artificiales aparece un importante problema, conocido como Overfitting

​ . Esta problemática es una de las centrales de

machine learning. Existen dos causas centrales que dan lugar a Overfitting. La primera, es la construcción de un modelo demasiado complejo para el problema que se intenta resolver. La segunda causa, es conocida comoovertraining

​ , ésta se produce cuando el

modelo es entrenado excesivamente [9] [10]. Las redes neuronales artificiales con múltiples capas ocultas, pueden aprender relaciones muy complejas entre los datos de entrada y salida. Sin embargo, estas relaciones pueden ser el resultado del ruido en los datos de entrenamiento [12]. En otras palabras, overfitting implica que la red produce reglas demasiado complejas, las cuales cubren muy bien a las observaciones en el training set, pero falla con nuevas observaciones.

Figura 2.3 - Ejemplo de overfitting.

Con el propósito de prevenir overfitting, es necesario utilizar técnicas de regularización. Una de estas técnicas, ampliamente utilizada, es conocida como early stopping

​ . Esta

(20)

permite medir la eficacia de la red clasificando nuevas observaciones durante la fase de entrenamiento [13].

Figura 2.4 - Ejemplo de early stopping, el algoritmo se detiene en el punto indicado.

Otra importante técnica de regularización, actualmente considerada como el estado del arte, es conocida como Dropout

​ . Esta técnica implica elegir un porcentaje fijo de

(21)

Figura 2.5 - Ejemplo de dropout donde se eliminan la mitad de las conexiones entre unidades.

Es posible utilizar un MLP en el contexto de la clasificación de imágenes [49]. Para esto, se debe utilizar como entrada de la red, un valor numérico representando el color de cada pixel de la imagen. Es decir, la red neuronal tendrá tantas entradas como la cantidad de píxeles en la imagen.

Sin embargo, la utilización de estas redes para la clasificación de imágenes tiene una importante limitación. Normalmente, cuando se desea clasificar una imagen dependiendo de si un objeto existe o no dentro de la misma, la ubicación del objeto no es relevante. Este concepto es conocido comoTranslation Invariance

​ . Para mitigar esta

(22)

podría ser compartir los pesos entre las unidades de la red y entrenarlos en conjunto. Con este fin, se van a utilizar Convolutional Neural Networks

​ .

2.1.1.3 Convolutional Neural Networks

Las Convolutional Neural Networks (CNN) son actualmente consideradas como el estado del arte en la clasificación de imágenes. Estas redes permiten a un conjunto de unidades, tener pesos compartidos [15]. De esta forma, logran remover la información espacial de los datos, dejando únicamente las características de los mismos.

Una CNN se estructura normalmente como una secuencia de etapas. Las primeras etapas están conformadas por dos tipos de capas, conocidas como convolutional layers

y pooling layers

​ [11].

Las unidades dentro de las convolutional layers se organizan en una serie de capas o canales, conocidos como feature maps

​ . La primera convolutional layer normalmente

tiene unidades que contienen el color de cada pixel en la imagen, y se encuentran divididos en tres feature maps, con el valor de cada color en rojo, verde y azul. En este contexto, la entrada de la convulsión se puede representar como una matriz multidimensional.

En la convolutional layer se realiza una operación conocida como convulsión

​ . En esta

operación se tiene un conjunto de filtros de tamaño fijo, menor al de la matriz de entrada. Estos filtros son aplicados utilizando producto escalar a lo largo de toda la matriz. Al realizar esta operación, se tendrá como resultado un conjunto de activation maps

​ . Éstos son representaciones de la imagen de entrada en función de las

activaciones. Al combinar los activation maps se tendrá una nueva matriz, que será la salida de la capa.

La capa de pooling tiene como objetivo principal, reducir la extensión espacial de su matriz de entrada. La técnica más común de pooling es conocida como max-pooling

​ .

(23)

Normalmente, luego de una serie de convolutional layers y pooling layers, se tienen una o más capas de unidades interconectadas, como las vistas en la sección 2.1.1.2

Figura 2.6 - Ejemplo de las capas involucradas en una convolutional neural network.

2.1.1.4 Comparación entre los algoritmos de clasificación supervisada

En esta sección se brinda una comparación entre los algoritmos de clasificación supervisada explicados previamente. A continuación se detallan las características comparadas.

● Soporta relaciones no lineales: Indica si el algoritmo soporta la detección de patrones no linealmente dependientes de los datos de entrada.

(24)

● Soporta Translation Invariance: Indica si el algoritmo permite reconocer un objeto dentro de una imagen, independientemente de su ubicación dentro de la misma.

Algoritmo Soporta relaciones no lineales

Soporta pesos compartidos

Soporta Translation

Invariance

Perceptróns No No No

MLP Si No No

Convolutional Neural

Networks Si Si Si

Tabla 2.1 - Comparación entre los algoritmos de clasificación supervisada.

El perceptrón es uno de los primeros algoritmos de clasificación supervisada. Éste es un clasificador lineal, que únicamente permite clasificar elementos en dos categorías. Los multilayer perceptrons se construyen combinando múltiples capas de perceptrons, donde cada perceptrón se comunica únicamente con los perceptrons de la capa siguiente. Este modelo de red neuronal permite clasificar elementos en múltiples categorías y detectar relaciones no lineales entre los datos de estos elementos.

En el contexto de la clasificación de imágenes, la ubicación de un elemento dentro de la imagen, no debería influir en su clasificación. Con este fin, se utiliza el modelo Convolutional Neural Networks. Éste utiliza una serie de capas convolucionales y de pooling, con el fin de remover la información espacial de la imagen.

2.2 Trabajos Relacionados

(25)

contienen códigos especiales para poder ser reconocidos. A continuación se presentarán algunas de estas herramientas.

2.2.1 Agile Cards for JIRA

Agile Cards [20] es un plugin para Jira que permite generar una versión imprimible de un tablero de tareas. Esta versión imprimible contendrá tanto las tareas del tablero como separadores especiales para dividir las listas del tablero.

(26)

Figura 2.7 - Tablero físico conteniendo los elementos impresos por Agile Cards.

Una vez que se han colocado los elementos sobre un tablero físico, es posible moverlos entre las distintas listas del tablero. Con el objetivo de realizar la sincronización con el tablero digital, es necesario tomar una fotografía del tablero físico. Esta fotografía deberá ser subida a la herramienta, la cual actualizará la lista y posición de las diferentes tareas en el tablero.

(27)

tarea. Con el fin de iniciar el escaneo del tablero, primero se debe leer un código QR también ubicado en el tablero

Agile Cards permite imprimir tanto todas las tareas de un tablero, como tareas individuales. Además, es posible customizar la información a mostrar en cada tarea y los estilos de la misma.

Algunas limitaciones de esta herramienta incluyen el hecho de que los elementos impresos deben estar perfectamente colocados en el tablero. Si los elementos se encuentran mínimamente doblados, o sus códigos mínimamente tapados, la herramienta puede fallar al reconocerlos. Por otro lado, las tareas únicamente pueden estar organizadas en listas verticales.

2.2.2 WallSync

(28)

Figura 2.8 - Tablero físico conteniendo los elementos impresos por WallSync.

Una vez que se han colocado los elementos sobre un tablero físico, es posible moverlos entre las distintas listas del tablero. Con el objetivo de realizar la sincronización con el tablero digital, es necesario utilizar una aplicación especial, actualmente solo disponible para sistemas Android. Utilizando esta aplicación se debe escanear y sincronizar cada lista por separado. Esta herramienta no utiliza separadores especiales para dividir las diferentes listas, debido a que requiere que el usuario escanee cada lista por separado, indicando la lista que actualmente está siendo escaneada.

Al escanear el tablero utilizando la aplicación para Android, WallSync agrega información extra a cada tarea utilizando realidad aumentada.

(29)

2.2.3 JimFlow

JimFlow [22] es una herramienta que permite mantener sincronizado un tablero físico con su versión digital. Esta herramienta permite generar una versión imprimible de un tablero digital. Esta versión imprimible contendrá todas las tareas del tablero digital, las cuales contendrán códigos QR agregados por la herramienta.

En la figura 2.9 se presenta un ejemplo de un tablero físico conteniendo las tareas impresas. Además de las tareas, se deben colocar QRs como separadores de las diferentes listas.

Figura 2.9 - Tablero físico conteniendo los elementos impresos por JimFlow, y la cámara encargada de sincronizar el tablero.

(30)

físico. Esta cámara toma fotografías del tablero en intervalos predefinidos, sincronizando los cambios con su versión digital.

Algunas limitaciones de esta herramienta incluyen que las tareas solo pueden estar organizadas en listas verticales. Además, únicamente es posible utilizar cámaras marca Canon.

2.2.4 Otras herramientas

Existen otras herramientas que intentan resolver este problema [23] [24]. Sin embargo, el enfoque de estas herramientas es similar al de las presentadas anteriormente. Todas estas herramientas dependen de la impresión de tableros con códigos especiales. Además, se encuentran limitadas a tableros de tareas con listas verticales, y únicamente permiten sincronizar la posición o lista de las tareas.

2.2.5 Comparación entre las herramientas

La tabla 2.2 presenta una comparación entre las herramientas presentadas. A continuación se detallan las características comparadas.

● Relaciones soportadas: Indica los tipos de relaciones que pueden ser reconocidas en los tableros físicos.

● Integrabilidad: Indica si la herramienta permite ser integrada en diferentes plataformas.

● Sincronización de asignaciones: Indica si es posible reconocer y sincronizar los usuarios que tienen asignado cada ítem del tablero.

(31)

Herramienta Relaciones

soportadas Integrabilidad

Sincronización de asignaciones Necesidad de códigos especiales Agile Cards for

JIRA Verticales No No Si

WallSync Verticales No No Si

JimFlow Verticales Si No Si

Tabla 2.2 - Comparación entre las herramientas presentadas.

Las herramientas detalladas previamente presentan grandes limitaciones en la disposición de los elementos en un tablero físico. Éstas únicamente soportan tableros de tareas con relaciones verticales.

Por otra parte, estas herramientas dependen de la colocación de códigos especiales en los tableros impresos. Estos códigos son utilizados por las herramientas con el fin de poder detectar los elementos y dar lugar a la sincronización de los mismos.

2.3 Resumen

En este capítulo se analizaron técnicas que permiten la clasificación de imágenes en diferentes categorías. Las técnicas analizadas utilizan aprendizaje de máquina supervisado, con el fin de poder reconocer diferentes imágenes. Estas técnicas permiten reconocer las imágenes sin la necesidad de definir reglas heurísticas o utilizar códigos especiales, como QRs. En cambio, se entrena un modelo con imágenes de ejemplo de cada categoría, y este, aprende a clasificar nuevas observaciones.

Por otro lado, se analizaron diferentes herramientas existentes que permiten digitalizar tableros físicos. Se realizó una comparación entre éstas, y se analizaron sus limitaciones.

(32)
(33)

3. Enfoque para digitalizar tableros físicos

Las soluciones existentes que intentan abordar la problemática de la digitalización de tableros físicos tienen grandes limitaciones. Estas soluciones dependen de la utilización de códigos especiales para detectar los diferentes elementos, lo que dificulta la lectura por partes de las personas. Además, esto provoca limitaciones en la flexibilidad de la disposición de los elementos en los tableros.

En este capítulo se presenta un enfoque que aborda los problemas actuales para la digitalización y sincronización entre tableros físicos y digitales. Este enfoque tiene como objetivo principal reconocer múltiples tipos de tableros físicos, sin la necesidad de la utilización de códigos especiales.

(34)

Figura 3.1 - Esquema conceptual del enfoque.

La aplicación de reconocimiento recibe como entrada una imagen de un tablero físico. Esta aplicación procede a interpretar los elementos de la imagen, mediante la realización de 3 etapas: Etapa de clasificación y localización

, etapa de reconocimiento

(35)

responsable de encontrar la relación o relaciones a las que pertenece cada ítem y los ítems que cada usuario tiene asignados.

Los tableros podrán estar conformados por tres tipos de elementos: Ítems, relaciones y usuarios

​ . Los ítems podrán estar agrupados en relaciones horizontales y/o verticales.

Para poder dar lugar a la clasificación y localización de elementos en un tablero, previamente se debe entrenar el modelo. Para esto, se utilizan conjuntos de imágenes de ejemplo, de cada uno de los elementos que conforman el tablero.

Por último, la aplicación de administración de tableros tiene la finalidad de proveer soporte para la visualización y actualización de tableros digitales. Para esto, utiliza 3 componentes: Sincronización de tableros físicos, Autenticación y manejo de usuarios y

Gestión de tableros digitales

​ . El componente de sincronización de tableros físicos,

mediante la comunicación con la aplicación de reconocimiento, permite actualizar el estado de un tablero digital, a partir de la imagen del tablero físico. El componente de autenticación y manejo de usuarios, es responsable de la administración del sistema de usuarios y privilegios de la herramienta. Por último, el componente de gestión de tableros digitales, tiene como objetivo principal permitir a los usuarios crear y actualizar la información de los tableros digitales, mediante el uso de la interfaz gráfica.

3.1 Aplicación de reconocimiento de tableros físicos

(36)

representan los posibles estados en los que se encuentra cada tarea. Estos estados son: To Do

, Doing y Done.

Por último, se puede apreciar que algunos de los miembros del equipo tienen tareas asignadas. Un miembro del equipo puede tener más de una tarea asignada. Mientras que cada tarea puede tener más de un miembro del equipo asignado. Cada miembro del equipo es identificado por una o dos letras, que se colocan sobre las tareas que tienen asignadas.

Figura 3.2 - Tablero físico del ejemplo conductor.

En este punto, se puede iniciar el proceso de sincronización del tablero físico. El primer paso de este proceso consiste en fotografiar el tablero. A continuación, se debe subir esta imagen a la herramienta. Luego, la herramienta comenzará con la etapa de clasificación y localización

(37)

3.1.1 Etapa de clasificación y localización

A partir de la imagen del tablero físico subida en la herramienta. Esta etapa procederá a ubicar y clasificar cada elemento dentro de la imagen. Con este propósito, se construyó una convolutional neural network [46] capaz de clasificar los diferentes elementos. Para esto, previamente se debió entrenar al modelo, este proceso se describe en detalle en las secciones 3.1.1.3 y 3.1.1.4.

El modelo construido es capaz de clasificar cualquier región de la imagen en cuatro categorías: Ítems

, relaciones, usuarios y outliers. La categoría de outliers engloba a

elementos que no pertenecen a ninguna otra categoría. En la figura 3.3 se muestran ejemplos de cada una de las categorías.

Figura 3.3 - Ejemplos de elementos de cada posible categoría.

3.1.1.1 Modelo de la red neuronal

(38)

Encontrar el tamaño exacto necesario para que una red neuronal pueda reconocer todos los posibles patrones en la imagen de tablero físico, no es una tarea fácil. Incluso, la utilización de una red con el tamaño exacto puede no ser una solución escalable. Por este motivo, en la práctica se utilizan redes neuronales de mayor tamaño al necesario y luego se previene el overfitting utilizando las técnicas de regularización detalladas en la sección 2.1.1.2. Es decir, se previene que las redes memoricen las observaciones con las que fue entrenada, en lugar de encontrar patrones en los datos. De esta forma, se intenta conseguir una red, capaz de clasificar correctamente nuevas observaciones.

En la figura 3.4 se presentan las diferentes capas utilizadas para implementar una convolutional neural network, capaz de reconocer los diferentes elementos en la imagen del tablero físico.

La red recibe como entrada una imagen de 28 píxeles de ancho y 28 píxeles de alto. Los colores de esta imagen están representados en escala de grises. Por este motivo, se tiene un único canal de entrada.

Esta imagen es enviada a la primera capa, la cual es una convolutional layer. Esta capa utiliza un filtro de 5 pixeles de tamaño y tiene como salida 32 canales de activation maps de 28 píxeles por 28 píxeles. La función de activación no lineal utilizada por la capa consiste de ReLUs

​ .

La segunda capa es una pooling layer. Para su implementación se utilizó la técnica

max-pooling, con tamaño de región de 2 píxeles. Por este motivo, la capa tiene como salida los 32 canales de activation maps, pero de 14 píxeles por 14 píxeles.

La siguiente capa implementada es otra convolutional layer. Al igual que en la primera capa, se utiliza un filtro de 5 pixeles de tamaño. Sin embargo, en esta capa se utilizan 64 canales de activation maps de salida. La función de activación no lineal también consiste de ReLUs

(39)

Luego se implementó una segunda capa de pooling. Esta capa posee las mismas características que la pooling layer precedente. Por lo que tiene como salida los 64 canales de activation maps de 7 píxeles por 7 píxeles.

Por último, se implementaron dos capas ocultas con 1.024 neuronas interconectadas, seguidas por la capa de salida. La salida de la red consta de una serie de puntajes, que se le asignan a la imagen de entrada, para cada una de las posibles categorías. Luego, se normaliza los puntajes mediante la función de softmax, y de esta forma, se obtienen las probabilidades de que la imagen pertenezca a cada una de las categorías.

Figura 3.4 - Capas de la convolutional neural network implementada.

(40)

para definir la red a implementar, primero se definió una red candidato basada en la experiencia previa en la construcción de estas redes. Luego, se fueron realizando pruebas de eficacia y ajustando los parámetros para mejorar dicha eficacia. Los diferentes experimentos realizados son detallados en la sección 5.3.

3.1.1.2 Localización de elementos

La estrategia utilizada con el fin de localizar los diferentes elementos dentro de la imagen, consiste en la creación de una ventana de tamaño menor al de la imagen de entrada. Esta ventana es utilizada para recorrer la imagen del tablero. Por cada posición de la ventana se utiliza el modelo de red neuronal construido, para clasificar la parte de la imagen dentro de ésta.

Como se detalló en la sección anterior, la red neuronal recibe como entrada una imagen de 28 píxeles de alto y 28 píxeles de ancho. Luego, produce como salida las probabilidades de que la imagen pertenezca a cada una de las posibles categorías. Por este motivo, el tamaño de la ventana se define con 28 píxeles de alto y ancho.

Entre diferentes imágenes de tableros físicos, la proporción de tamaño con la que se representan los diferentes elementos puede ser variable. Dado el hecho de que el tamaño de la ventana es fijo, para poder ir ajustando la región de clasificación es necesario redimensionar la imagen del tablero iterativamente. Con este fin, primero se define un valor inicial de redimensión. Para esto, se toma el mínimo entre el alto y ancho de la imagen, y se lo divide por 100.

(41)

Fórmula 3.1 - Redimensionado aplicada en cada iteración.

Donde es el valor inicial de redimensión. Se da lugar a esta redimensión, dividiendo el alto y ancho de la imagen original por el valor de .

Una vez redimensionada la imagen, se posiciona la ventana en el borde superior izquierdo. La ventana es movida horizontalmente de a 3 píxeles a la vez, hasta llegar al borde derecho. Luego, la ventana es bajada 3 píxeles, posicionada en el borde izquierdo y nuevamente movida horizontalmente. Este procedimiento es repetido hasta alcanzar el borde inferior derecho de la imagen.

En cada posición de la ventana, utilizando la red neuronal detallada en la sección anterior, se clasifica la región de la imagen dentro de ésta. Si esta clasificación da como resultado una relación o un ítem con por lo menos un 90% de probabilidad, se guarda el elemento encontrado y se agrega una marca en la región clasificada. Tanto la posición del elemento encontrado, como la marca agregada, se crean proporcionalmente a la redimensión aplicada en la iteración actual.

Con el fin de optimizar el algoritmo, si en cualquier posición de la ventana existe una marca que cubre por lo menos el 35% de la región, se moverá la ventana sin realizar la clasificación. De esta forma, cada elemento será clasificado únicamente una vez. En este contexto, el algoritmo converge si se han encontrado elementos en iteraciones previas, pero no se han encontrado en la iteración actual. Por su parte, el algoritmo se ejecutará por un máximo de 6 iteraciones.

(42)

Podría ser posible clasificar y encontrar los usuarios en el contexto del algoritmo localizador de relaciones e ítems. Con este fin, habría que cambiar la configuración de convergencia del algoritmo, de forma tal que continúe hasta que la ventana abarque el tamaño de un usuario. Debido a que en cada iteración del algoritmo, la imagen posee un tamaño mayor, cada iteración es significativamente más costosa computacionalmente que la anterior. Por este motivo, localizar los tres tipos de elementos juntos daría el mismo resultado, pero de forma más costosa.

Figura 3.5 - Elementos localizados y clasificados en el tablero físico del ejemplo conductor.

(43)

3.1.1.3 Preparación de datos para el entrenamiento

Para que sea posible esta clasificación y localización, se requiere previamente del entrenamiento del modelo. Para esto, se crearon conjuntos de imágenes representando cada una de las categorías posibles: Ítems

, relaciones, usuarios y outliers. Los

algoritmos de aprendizaje de máquina requieren una gran cantidad de datos para poder clasificar elementos con precisión.

Por este motivo, se debieron utilizar diferentes estrategias para la creación de los

conjuntos de imágenes. Las estrategias utilizadas fueron fotografiar los elementos en el mundo real, generar imágenes automáticamente y crear nuevas imágenes a partir de transformaciones en las imágenes existentes.

Con el objetivo de fotografiar los elementos en el mundo real, se crearon múltiples ejemplos de cada elemento. Estos fueron ubicados y fotografiados sobre diferentes fondos y diferentes iluminaciones. Esta estrategia permite crear un conjunto de

imágenes de alta calidad, ya que son representaciones exactas de las imágenes reales que deberán ser clasificadas.

(44)

La última estrategia consistió en crear nuevas imágenes, a partir de la aplicación de transformaciones sobre el conjunto de imágenes creado con las estrategias anteriores. Por un lado, a todas las imágenes anteriores se les aplicó diferentes niveles de brillo. Para esto, se realizaron distintas multiplicaciones lineales aleatorias sobre las imágenes, simulando diferentes tipos de iluminación.

Por otro lado, a los conjuntos de imágenes de ítem y usuarios se les aplicó rotaciones en 90, 180 y 270 grados, mientras que al conjunto de imágenes de relaciones se les aplicó únicamente rotaciones en 180 grados. Esta estrategia permitió multiplicar la cantidad de imágenes disponibles en cada conjunto.

Con el objetivo de permitir a estas imágenes ser utilizadas por la red neuronal, es necesario transformarlas al tamaño de entrada de la red. Este tamaño fue definido en 28 píxeles de alto y 28 píxeles de ancho. Para definir esta medida se fue reduciendo el tamaño de las imágenes del conjunto progresivamente, hasta encontrar el menor tamaño con el que una persona puede seguir clasificando los diferentes elementos sin dificultad.

3.1.1.4 Entrenamiento de la red neuronal

Con el objetivo de entrenar el modelo, se hizo uso de la técnica mini-batch gradient descent con un tamaño de mini-batch de 10 imágenes. Por cada iteración del algoritmo, se introducen 10 imágenes en la red y se optimizan los parámetros, de forma tal que se reduzca la entropía cruzada.

(45)

eficacia empeora por 5 iteraciones consecutivas se considera que el algoritmo ha convergido.

Para dar lugar a este entrenamiento, el conjunto total de imágenes se divide en training set y test set. Es necesario contar con un conjunto de test lo suficientemente grande como para poder medir con precisión la exactitud del modelo. A su vez, es deseable mantener la mayor cantidad de imágenes posibles en el training set. Por este motivo, el 95% de las imágenes del conjunto se asignan al training set, mientras que el 5% restante al test set.

Una vez concluido el entrenamiento, se procede a medir la eficacia de la red utilizando el test set. Para medir esta eficacia se utiliza la red con todas sus conexiones, es decir, sin utilizar dropout.

Por último, debido a que para la resolución de este problema se cuenta con una cantidad limitada de datos, no es deseable dejar un 5% de estos sin utilizar. Por este motivo, una vez que se ha evaluado la eficacia de la red, se continúa el entrenamiento utilizando el test set. Durante este entrenamiento se utilizan las mismas configuraciones que fueron utilizadas con el training set. Los resultados intermedios y proceso de entrenamiento se encuentran detallados en la sección 2.1.1.2.

3.1.2 Etapa de reconocimiento de textos

Volviendo al ejemplo conductor y contando con las imágenes clasificadas y localizadas, el siguiente paso del enfoque consiste en obtener el texto dentro de cada elemento encontrado. Para esto, previamente cuando se ingresa una imagen de un tablero físico, se debe especificar el idioma en el que se encuentra este tablero.

(46)

Con el propósito de facilitar la lectura del texto, se aplican transformaciones a cada uno de los elementos ubicados en la imagen. Por un lado, si el elemento se encuentra inclinado, se lo rota de forma tal que el texto quede alineado horizontalmente. Por otro lado, se elimina el contorno del elemento, de forma tal que el algoritmo de reconocimiento de caracteres reciba el texto sobre un fondo uniforme.

Con el objetivo de alinear el texto de los elementos horizontalmente, se utiliza la transformación de Radon. Esta permite obtener la inclinación de la textura en una imagen. La transformación de Radon es una transformación integral que puede ser aplicada en la matriz de una imagen. Al aplicarla en un conjunto dado de ángulos de la imagen, se obtiene la proyección a lo largo de estos ángulos. La proyección resultante es la suma de las intensidades de los píxeles en cada dirección [40]. Dada una imagen

, se puede definir la transformación de Radon mediante la fórmula 3.2, donde

(

x

,

y

)

f

r

es la distancia perpendicular de una línea desde el origen, y

θ

es el ángulo entre esta línea y el eje y. De esta forma, se puede aproximar la dirección de la imagen, como la dirección a lo largo de la cual hay más líneas rectas [41].

Fórmula 3.2 - Transformación de Radon.

Una vez que se ha enderezado la imagen, se procede a eliminar el contorno de la misma. Con este propósito, se procede a detectar los bordes en la imagen mediante la técnica Canny edge detector [42]. Esta técnica, utiliza un algoritmo de múltiples etapas, con el fin de detectar una amplia gama de bordes en una imagen [43].

(47)

Fórmula 3.3 - Filtro gaussiano.

Luego, se eliminan los píxeles de los bordes que no sean los máximos del gradiente, de forma tal, de reducir los bordes hasta alcanzar curvas de 1 píxel. Se determinan los píxeles a eliminar mediante un umbral

M

(

x

, )

y

, el cual se define en la fórmula 3.4.

Fórmula 3.4 - Definición del umbral M.

Donde

M

(

x

, )

y

se define mediante la fórmula 3.5.

Fórmula 3.5 - Ecuación complementaria de la fórmula 3.4.

Se debe escoger un

T

tal que se mantengan todos los ángulos, pero se elimine la mayor parte del ruido. Los píxeles eliminados son aquellos que poseen un valor bajo de gradiente. Por último, mediante un umbral de histéresis, se eliminan todos los píxeles que no están conectados a ángulos con alto valor de gradiente.

(48)

Figura 3.6 - Ejemplo de las transformaciones realizadas para la extracción del texto.

3.1.3 Etapa de agrupamiento

Una vez localizados y clasificados todos los elementos, esta etapa procederá a agruparlos. Agrupar los elementos consiste en indicar las relaciones a las que pertenece cada ítem y el ítem al que pertenece cada usuario. Además, durante este agrupamiento se define el tipo de cada relación, es decir, si es horizontal o vertical.

(49)

la imagen. Desde el centro de esta relación se traza una línea vertical. Todas las relaciones atravesadas por esta línea, son marcadas como relaciones horizontales. De existir relaciones atravesadas por la línea, la relación desde la que se trazó, también será marcada como una relación horizontal. Para marcar las relaciones verticales se debe seleccionar la relación más arriba de la imagen y trazar desde su centro una línea horizontal. Luego, las relaciones verticales son marcadas de forma análoga a las horizontales.

(50)

Figura 3.7 - Selección del tipo de las relaciones en el tablero del ejemplo conductor.

El siguiente paso, consiste en agrupar los ítems con sus correspondientes relaciones. Con este fin, por cada ítem se buscan las relaciones horizontales y/o verticales cuyo centro es el más cercano al centro de la relación.

(51)

Por último, se retornan todos los elementos detectados en la imagen. Por cada elemento se incluirá el texto contenido dentro de éste y la región en la que se encuentra ubicado. Además, en cada ítem se incluirán las relaciones a la que pertenece y los usuarios asignados que posee.

3.1.4 Tablero de libre disposición

Alternativamente, la aplicación de reconocimiento de tableros físicos posee una opción que permite analizar tableros de libre disposición. Al analizar una imagen utilizando esta opción, la etapa de agrupamiento no es realizada. En cambio, el resultado del análisis estará dado por el conjunto de elementos reconocidos y sus respectivas ubicaciones dentro de la imagen.

(52)

Figura 3.8 - Tablero físico donde los ítems pueden estar entre dos relaciones horizontales.

3.2 Aplicación de administración de tableros

La aplicación de administración de tableros consiste de una aplicación cliente-servidor. Esta aplicación tiene como objetivos principales permitir la creación y actualización de tableros digitales, y permitir la sincronización de tableros físicos.

La aplicación servidor tiene como propósito controlar la lógica y persistencia de los tableros digitales. Mientras que la aplicación cliente, tiene como propósito proveer una interfaz gráfica para la utilización de la herramienta.

(53)

3.2.1 Sincronización de tableros físicos

Con el objetivo de sincronizar el tablero digital, este componente permite escanear un tablero físico. La imagen del tablero es enviada a la aplicación de reconocimiento, con lo cual, se obtiene la nueva disposición de los elementos en el tablero. Luego, se actualiza el estado del tablero digital, reflejando las actualizaciones en el tablero físico. Además de actualizar la disposición de los diferentes elementos en el tablero, es posible que durante la sincronización, se agreguen nuevos elementos al mismo. Incluso, es posible crear un tablero digital desde cero, cargando una imagen de un tablero físico en un tablero digital vacío.

En este contexto, una vez que se han obtenido los elementos de la imagen del tablero físico y sus agrupaciones, se debe proceder a actualizar las relaciones e ítems del tablero digital. Con este propósito, por cada elemento encontrado en la imagen, se verificará si actualmente existe en el tablero digital. En el caso de que el elemento exista, se procederá a actualizar su ubicación en el tablero. En caso contrario, se procederá a crear y ubicar el nuevo elemento en el tablero.

Con el objetivo de verificar la existencia de una relación o ítem en el tablero digital, se buscará la presencia de un elemento cuyo nombre sea similar al extraído de la imagen. Se buscan nombres similares en lugar de nombres exactos, con el fin de mitigar errores durante la fase de extracción del texto de los elementos.

(54)

Fórmula 3.6 - Coeficiente de Sorensen-Dice.

La fórmula dará como resultado un valor entre cero y uno, representando la similitud entre los textos. Los valores más cercanos al uno representan una alta similitud, mientras los más lejanos representan poca similitud. En la figura 3.9 se puede observar un ejemplo de este algoritmo.

(55)

Por cada elemento encontrado, se identificará el elemento en el tablero digital cuyo nombre tenga mayor similitud. Si esta similitud es igual o mayor a 0,7, se considerará que los elementos se corresponden.

Por último, se debe actualizar los usuarios asignados en cada ítem a partir de los usuarios encontrados en la imagen. Con este fin, por cada elemento encontrado, se buscará un usuario dentro del equipo de desarrollo asignado al tablero, cuyas iniciales coincidan con las extraídas del elemento. Los usuarios encontrados dentro de cada ítem serán asignados al mismo.

3.2.2 Autenticación y manejo de usuarios

Este componente permite crear y actualizar equipos de desarrollo. Para esto, cada usuario del equipo deberá tener su propia cuenta registrada en la herramienta SyncBoards.

Es posible asignar un equipo de desarrollo a un tablero digital en particular. Con lo cual, únicamente los usuarios pertenecientes al equipo, tendrán permisos para ver y actualizar el tablero.

(56)

Figura 3.10 - Interfaz del equipo de desarrollo del ejemplo conductor.

El usuario creador del equipo de desarrollo es automáticamente agregado al equipo, siendo éste, el único con los privilegios necesarios para agregar y eliminar usuarios al equipo.

(57)

o letras disponibles. Cabe destacar que los equipos de desarrollo están limitados por un máximo de 702 miembros. Es decir, que siempre habrá, por lo menos, una identificación disponible para cada nuevo usuario del equipo.

3.2.3 Gestión de tableros digitales

Este componente permite crear y actualizar tableros digitales. Un tablero digital tiene asociado principalmente un nombre y un idioma. En la figura 3.11 se presenta la interfaz que da lugar a la creación de tableros digitales. En esta interfaz, además, se deben especificar los tipos de relaciones que se desean soportar y, opcionalmente, se puede asociar un equipo de desarrollo al tablero.

Figura 3.11 - Interfaz de creación de tableros digitales.

(58)

especificar su nombre y ubicación dentro del tablero. Al crear una relación en un tablero con soporte de tipos verticales y horizontales, además, se debe especificar el tipo de relación que se desea crear.

Figura 3.12 - Interfaz de creación de relaciones en un tablero con soporte de tipos verticales y horizontales.

(59)

Figura 3.13 - Interfaz de creación de ítems en un tablero con soporte de tipos verticales y horizontales.

En la figura 3.14 se presenta la interfaz principal del tablero digital del ejemplo conductor. En esta interfaz se muestran todas las relaciones horizontales y/o verticales del tablero y todos los ítems dentro de estas relaciones. Además, esta interfaz permite actualizar la posición y la relación en la que se encuentra cada ítem. Para esto, se utiliza drag and drop

​ , es decir, es posible arrastrar un ítem y soltarlo en la posición a la

(60)

Figura 3.14 - Interfaz del tablero digital del ejemplo conductor.

Es posible abrir un ítem, seleccionandolo en el tablero digital. En la figura 3.15 se presenta la interfaz gráfica de un ítem. Esta interfaz tiene como objetivo principal permitir la visualización y actualización de la información de un ítem.

En esta interfaz es posible vincular al ítem con una relación perteneciente a otro tablero digital. De esta forma, los ítems pertenecientes a esta relación, serán mostrados como sub-ítems del ítem principal.

(61)

Figura 3.15 - Interfaz de un ítem.

(62)
(63)

4. Implementación de SyncBoards

En este capítulo se presentará el diseño e implementación de la herramienta SyncBoards. En la primera sección se detalla la arquitectura general del sistema. En las secciones siguientes se explica en detalle la implementación de cada uno de los componentes que dan lugar a la arquitectura del sistema.

4.1 Arquitectura del sistema

(64)

Figura 4.1 - Diagrama de componentes de la arquitectura.

4.2 Aplicación de reconocimiento de tableros físicos

La aplicación de reconocimiento de tableros físicos tiene como objetivo clasificar y localizar los diferentes elementos en una imagen de un tablero. Esta aplicación fue desarrollada utilizando el lenguaje de programación Python. Esta tecnología es una de las más populares en el ámbito de la ciencia de datos y el aprendizaje de máquina [25]. El motivo principal de la elección de esta tecnología, fue la calidad y el performance de las bibliotecas especializadas en aprendizaje de máquina.

(65)

extraer el texto contenido por los elementos. Por último, esta aplicación genera como salida la información interpretada de la imagen del tablero físico, en formato JSON.

En la figura 4.2 se presenta el diagrama de paquetes UML de la aplicación de reconocimiento de tableros físicos. La aplicación se organiza en 3 paquetes:

ModelTraining

, NetworkModel y BoardAnalyser.

Figura 4.2 - Diagrama de paquetes de la aplicación de reconocimiento de tableros físicos.

El paquete NetworkModel

​ contiene la configuración e implementación de la red

neuronal utilizada para clasificar los elementos del tablero. El paquete ModelTraining

contiene la lógica necesaria para entrenar y medir la eficacia del modelo. Además, es responsable de la generación y adaptación de las imágenes, para ser utilizadas durante el entrenamiento. Por último, el paquete BoardAnalyser

​ contiene la funcionalidad

(66)

4.2.1 Entrenamiento del modelo y clasificación de los elementos

El paqueteNetworkModel contiene la lógica del modelo de red neuronal utilizado para clasificar los elementos del tablero.

Para la implementación de esta red se hizo uso de la biblioteca TensorFlow [26]. Esta biblioteca, desarrollada por Google, se especializa principalmente en redes neuronales y aprendizaje profundo. Algunas de las principales ventajas de esta biblioteca, incluyen una alta performance en el cómputo de largas operaciones matemáticas, mediante el uso de GPUs. Además, la biblioteca facilita la escalabilidad del entrenamiento de redes neuronales.

El paquete ModelTraining contiene las funcionalidades necesarias para entrenar y medir la eficacia del modelo. Además, permite persistir el modelo entrenado, de forma que pueda ser posteriormente utilizado. Por otro lado, este paquete contiene la funcionalidad necesaria para generar automáticamente conjuntos de imágenes de cada elemento a clasificar. Por último, provee la funcionalidad necesaria para permitir que el conjunto de imágenes pueda ser utilizado por la red neuronal.

Con el objetivo de manejar las imágenes de forma eficiente, se utilizan las bibliotecas de Python SciPy y NumPy. Estas bibliotecas son ampliamente utilizadas en el ámbito de la computación científica. La biblioteca NumPy brinda soporte de arrays N-dimensionales junto con funcionalidades matemáticas que permiten operar sobre los arrays de forma muy eficiente [38]. Por su parte, SciPy utiliza NumPy con el fin de proveer módulos especializados en estadísticas, optimizaciones, álgebra lineal y procesamiento de imágenes, entre otros [39].

(67)

A partir del modelo definido en el paquete NetworkModel

​ , se construye un grafo

dirigido, compuesto por nodos y sus conexiones. Cada nodo tiene una funcionalidad bien definida, las cuales, incluyen la implementación de operaciones matemáticas, la entrada de datos y, la lectura y escritura de variables persistentes dentro del grafo. Las conexiones representan relaciones de entrada y salida entre los nodos. Estas conexiones utilizan matrices multidimensionales de tamaño dinámico, conocidas como Tensors. Los nodos son ejecutados paralela y asincrónicamente, una vez que todos los Tensors en sus conexiones entrantes estén disponibles [26].

En la figura 4.3 se presenta el diagrama de clases de los paquetes NetworkModel y

ModelTraining

​ . Estos paquetes están compuestos por 5 clases, que dan lugar a la

(68)

Figura 4.3 - Diagrama de clases de los paquetes NetworkModel y ModelTraining.

La clase ModelConfig

(69)

la cantidad de canales en las convolutional layers, la cantidad de neuronas en las capas interconectadas, entre otras. Esta clase utiliza el patrón de diseño Singleton. De esta forma, en toda la aplicación se comparte una única instancia a esta clase.

La clase Model contiene la implementación de la red neuronal utilizada con el fin de clasificar los diferentes elementos. En la figura 4.4 se presenta un fragmento del código que da lugar a la implementación de esta red. En el código, se puede apreciar la implementación de las diferentes capas de la red neuronal. La salida de cada capa es conectada a la capa siguiente, hasta llegar a la capa de salida. Por último, se da lugar a la clasificación mediante el uso de la técnica softmax

​ . Esta técnica retornara las

(70)

Figura 4.4 - Fragmento de código de la red neuronal implementada.

(71)

los pesos y bias de cada neurona, y sus conexiones. Este archivo puede ser posteriormente utilizado para realizar clasificaciones.

La clase Trainer contiene las técnicas y funcionalidades necesarias para realizar el entrenamiento del modelo. Para esto, se utiliza la seccion creada por la clase

TrainingSession

​ . Dentro de esta sesión, se itera sobre el modelo de forma tal que en

cada paso se minimice la entropía cruzada.

En la figura 4.5 se presenta el diagrama de secuencias del proceso de entrenamiento del modelo, a partir de las interacciones entre las clases NetworkModel y

ModelTraining

​ .

Figura 4.5 - Diagrama de secuencias del entrenamiento del modelo.

Referencias

Documento similar

Schmitt considerará pues la petición de indemnidad como punto de parti- da de una evolución que a lo largo del Segundo Imperio irá reflejando la pa- radójica victoria del

Esta posición, apreciable también, por ejemplo, en la pedagogía froebeliana de los jardines de la infancia 55 , implicaba la revalorización de los espacios no edifi- cados y

26 Cita elegida por Fangoria para Arquitectura efímera recogida de una conversación entre Crystal Connors y Nomi Malone en la película Showgirls.. Arquitectura Efímera sale a la

Es decir, si consideramos la figura femenina como Hispania, a pesar de no lle- var atributo alguno que la identifique, estaríamos ante un cuadro iconográfico que reflejaría, por

“Todos, según sean nuestras capacidades funcionales o mentales, tropezamos con barreras en nuestra capacidad de movimiento, en nuestras comunicaciones o fuentes de

Esos 6 grupos son las proteínas, los hidratos de carbono, las grasas, las vitaminas, los minerales y la fibra; el orden mencionado no hace mención a la importancia de éstos

Si aplica el principio de coste-beneficio, se dará cuenta de que la reduc- ción del número de alumnos sólo tiene sentido si el valor que tiene para los estudiantes asistir a la

del cuadro de "La boda campesina", reflejo de este proceso histórico en el espejo de la conciencia, expresión y obra del ojo crítico de Pieter Brueghel, el Viejo, sirve de