Beruflich Dokumente
Kultur Dokumente
Tabla de contenidos
1. INTRODUCCIÓN ........................................................................................................................... 3
2. ANTECEDENTES: .......................................................................................................................... 5
3. JUSTIFICACIÓN: ........................................................................................................................... 8
4. OBJETIVOS: .................................................................................................................................. 9
4.1 General: ................................................................................................................................... 9
4.2 Específicos: .............................................................................................................................. 9
5. MARCO TEÓRICO ....................................................................................................................... 10
6. DISEÑO Y EJECUCIÓN DEL PROYECTO ....................................................................................... 16
6.1 DISEÑO DE LA SOLUCIÓN ...................................................................................................... 16
6.2 EJECUCIÓN DEL PROYECTO ................................................................................................... 19
6.2.1 SISTEMA DE INTELIGENCIA................................................................................................ 20
6.2.1.1 RECOLECCIÓN PARA LA BASE DE DATOS........................................................................... 20
6.2.1.2 PROCESO DE APRENDIZAJE ............................................................................................... 21
6.2.2 INTERACCIÓN CON EL USUARIO........................................................................................ 24
6.2.2.1 REQUERIMIENTOS PARA LA INTERFAZ CON EL USUARIO ................................................. 24
6.2.2.2 DESARROLLO DE LA APLICACIÓN MÓVIL .......................................................................... 24
6.2.2.3 IMPLEMENTACIÓN DE UN SERVICIO WEB ........................................................................ 28
6.2.3 REALIMENTACIÓN Y AUTO ENTRENAMIENTO .................................................................. 34
7. RESULTADOS DEL PROYECTO .................................................................................................... 39
7.1 Prueba 1: Validación del software de reconocimiento ......................................................... 39
7.2 Prueba 2: Validación de la realimentación de una categoría existente ................................ 43
7.3 Prueba 3: Validación de la creación de nuevas categorías ................................................... 44
8. IMPACTO SOCIAL ....................................................................................................................... 48
9. CONCLUSIONES ......................................................................................................................... 49
10. TRABAJO FUTURO ................................................................................................................. 50
11. BIBLIOGRAFÍA ........................................................................................................................ 52
3
1. INTRODUCCIÓN
2. ANTECEDENTES:
Image Recognition Based on Deep Learning [8]. Este trabajo fue realizado por
investigadores de la universidad de ciencias de la computación y tecnología de
china en 2015, ellos aplican algoritmos de las dos corrientes más importantes del
Deep Learning , las redes neuronales artificiales convolucionales y las redes de
creencia profundas, en problemas de clasificación de imágenes, con esto logran
determinar la alta eficiencia de esos dos modelos y por supuesto pueden comparar
su desempeño, este trabajo los lleva a la conclusión de que las redes neuronales
convolucionales tienen un desempeño superior al de su competencia.
Hybrid Deep Learning for Face Verification [9]. En esta investigación desarrollada
en 2016, se buscó hacer un hibrido entre un algoritmo de redes neuronales
convolucionales, y el algoritmo de la máquina de Boltzman. El objetivo principal fue
hacer un estudio para la verificación de rostros, a partir de la extracción de
características locales visuales de la cara puestas en comparación en dos
imágenes, estos datos son procesados a través de múltiples capas.
Pose and Category Recognition of Highly Deformable Objects Using Deep
Learning [10]. En este trabajo, los investigadores centran sus esfuerzos en un
problema de alta complejidad como lo es el reconocimiento objetos fácilmente
deformables, en este caso prendas colgadas desde un solo punto, el sistema fue
diseñado he implementado en una plataforma robótica encargada de la
manipulación de la prenda y la extracción de datos de la misma, logrando un alto
grado de desempeño en la tarea de clasificación. Dicha investigación da como
evidencia la versatilidad y alta eficiencia de las redes convolucionales aplicadas a
imágenes digitales.
Convolutional-Recursive Deep Learning for 3D Object Classification [11]. Estos
investigadores de la Universidad de Stanford (entre ellos Andrew Ng). Aprovecharon
los avances y nuevas técnicas de visión artificial para determinar profundidad en
imágenes, con el objetivo de clasificar objetos en imágenes RGB con un modelo
basado en la combinación de redes neuronales convolucionales y redes neuronales
recursivas. Para realizar las pruebas, se obtuvo una base de datos con 51 clases
de objetos domésticos. Con 300 ejemplos por cada clase, donde cada uno de ellos
fue visto desde tres diferentes ángulos para realizar el entrenamiento con una base
más robusta.
Los artículos anteriores dan muestra de cómo la solución a problemas de detección
y clasificación de objetos en videos o imágenes, están orientados hacia la utilización
de redes neuronales convolucionales gracias a las altas tasas de rendimiento
mostrado y al aprovechamiento o empalme que se da de técnicas probabilísticas y
técnicas de visión artificial.
8
3. JUSTIFICACIÓN:
4. OBJETIVOS:
4.1 General:
Desarrollar un sistema automático de análisis de imágenes que permita el
reconocimiento de un conjunto limitado de objetos
4.2 Específicos:
5. MARCO TEÓRICO
SVM´s y las fronteras de las redes neuronales tradicionales, está en que los SVM´s
buscan maximizar el margen entre las clases, es decir, la frontera de decisión debe
estar a la mayor distancia posible de las clases que este separando.
Figura 2. Ejemplo del hiperplano construido por un SVM para separar dos clases, imagen tomada
LAS MÁQUINAS DE SOPORTE VECTORIAL, Gustavo A. Betancourt
Figura 4. Imagen ejemplificando la determinación del mejor hiperplano, tomada del video “Maquina
de soporte vectorial”
(2)
Kernel gaussiano: La forma del hiperplano depende del parámetro 𝜎
(3)
Kernel sigmoide:
(4)
Deep learning: El aprendizaje profundo es un subconjunto del aprendizaje máquina
(Machine Learning). Es utilizado para problemas donde los métodos tradicionales
de aprendizaje no logran un desempeño apropiado, el aprendizaje profundo se
inspira en el cerebro para crear redes neuronales con un gran número de capas
ocultas en comparación a las redes neuronales tradicionales. Este tipo de topología
permite a estas “Redes neuronales profundas” obtener patrones o características
simples a partir de entradas complejas.
Generalmente cada una de las capas ocultas se encarga de nivel de abstracción
diferente. Por ejemplo, en el caso de detección de rostros las primeras capas se
encargan de reconocer niveles de intensidad de luz, las capas posteriores se
encargarían de características un poco más complejas como lo serían los bordes y
los contornos, las siguientes capas escondidas se encargan de objetos más
complejos como ojos, cejas, boca, nariz, etc., toda esta información es brindada a
la capa final que es la encargada de la detección del rostro.
Figura 6. Imagen
representativa del
funcionamiento del Deep
learning para la
identificación de rostros,
15
Figura 7. Imagen representativa del funcionamiento del Deep learning para la clasificación de
animales, Imagen tomada dehttps://www.quora.com/What-is-deep-learning
Servicios web: Los servicios web permiten la comunicación entre aplicaciones que
fueron desarrolladas en diferentes lenguajes e incluso que trabajan diferentes
sistemas operativos, los servicios web necesitan una arquitectura bien estructurada
para permitir dicha interacción en la web, cuentan con protocolos bien definidos para
el intercambio de información como son el SOAP el WS-addressing y el MTOM, que
básicamente son los encargados de hacer el intercambio de información de una
manera óptima. Otro componente fundamental en los servicios web son los
descriptores de servicios conocidos como WSDL y WS-CDL que son los encargados
de describir los servicios como tal que deben hacer los servicios WEB. En la
actualidad son ampliamente usado por su versatilidad y generalmente son usados
por aplicaciones móviles, sin embargo, también es posible acceder a ellos desde un
ordenador [21].
16
Animales:
Águila Hámster Tiburón
Cocodrilo Mariposa Tigre
Elefante Oso León
Gorila Pingüino Vaca
Tabla 2. Tabla correspondiente a las clases que corresponden a Animales
21
Frutas:
Aguacate Fresa Naranja
Banano Manzana Sandia
Tabla 3. Tabla correspondiente a las clases que corresponden a Frutas
Señales de tránsito:
Ceda el paso Prohibido parquear Semáforo
Pare Restaurante cerca Zona escolar
Tabla 4. Tabla correspondiente a las clases que corresponden a Señales de transito
Figura 10. Diagrama de flujo con las actividades del proceso de aprendizaje
22
El proceso de búsqueda de grilla se realiza con cada uno de los Kernel, y para cada
una de la clases, al hacer esto se evidencia que el Kernel Gaussiano es el que tiene
un mejor desempeño en todas las clases, es por esto que se toma la decisión de
elegir dicho Kernel como el Kernel que usara el sistema para todos los SVM.
Cuando el sistema esté listo para aprender una nueva clase, elegirá el Kernel
Gaussiano por defecto y realizara una búsqueda automática de grilla para así
determinar los valores apropiados de los parámetros. Logrando de esta manera
obtener una selección automática del mejor modelo para cada una de las clases.
Este tipo de arquitectura le permitió al sistema entrenar las categorías nuevas y a
aquellas que necesiten un refuerzo de manera individual y así poder mejorar el
sistema sin necesidad realizar un proceso de entrenamiento completo. Además de
permitir que cada clase pueda tener una cantidad diferente de datos de
entrenamiento.
La tercera y última parte del sistema de inteligencia consta del análisis de confianzas
obtenidas de las máquinas de soporte vectorial. Una vez las imágenes
suministradas pasan por el proceso de extracción de características nombrado
anteriormente dichas características son evaluadas por cada una de las máquinas
de soporte vectorial y cada una de estas retorna una etiqueta y un valor de
confianza. La etiqueta solo toma dos valores 1 en caso de que los datos procesados
correspondan a la clase de la maquina o -1 en caso contrario. Por otro lado, la
confianza retornada tomara un valor positivo en caso de que los datos correspondan
a la categoría de la máquina evaluada y un valor negativo en caso contrario, dicho
valor será más positivo o más negativo de acuerdo con la confianza que tenga de
etiqueta.
Es posible que ningún SVM indique que los datos corresponden a su categoría, en
este caso el sistema retornara el mensaje “No lo sé”. Sin embargo, también es
posible que más de un SVM indique que es su categoría. En este caso el sistema
retornara el nombre de las categorías correspondientes a los SVM con mayor
confianza. Ej. “Rostro o Zapato”. Pero para esto es necesario normalizar dichas
confianzas; La confianza de un SVM corresponde al margen existente entre los
datos de la entrada y el hiperplano creado por el entrenamiento, sin embargo, la
disposición de dichos hiperplano varía de acuerdo con los datos de entrenamiento
y debido a que los datos son diferentes de acuerdo con la categoría es necesario
hacer un proceso de normalización.
Para esto durante el proceso de entrenamiento de las máquinas de soporte vectorial
es necesario almacenar el valor de la confianza máxima encontrada en los datos de
entrenamiento del modelo elegido durante la búsqueda de grilla para así en el
momento de realizar las predicciones del sistema tomar en cuenta dichos valores
únicos por clase para normalizar las confianzas de cada uno de los SVM y ahora
así poder ordenar dichas confianzas de mayor a menor. La ecuación utilizada para
normalizar las confianzas se presenta a continuación:
24
𝑐𝑜𝑛𝑓 ∗ 100
𝐶𝑜𝑛𝑓𝑛 = (5)
𝑚𝑎𝑥𝑐𝑜𝑛𝑓
Donde, 𝐶𝑜𝑛𝑓𝑛 es la confianza nueva, 𝑐𝑜𝑛𝑓 es la confianza del dato actual y
𝑚𝑎𝑥𝑐𝑜𝑛𝑓 es la confianza máxima de la categoría.
Como se puede observar en las figuras 11 y 12, en este formulario existen dos
botones, el superior permite activar o desactivar el flash de la cámara, mientras que
el botón inferior mediante el evento de pulsar toma la foto y redirige al usuario a la
siguiente actividad (PictureActivity)
PictureActivity es el formulario que aparece una vez se haya tomado la foto. Aquí el
usuario debe decidir si está conforme o no con la foto tomada. Para ello se cuenta
con dos botones. En la parte superior existe el botón de cancelar, el cual retornara
a la actividad anterior permitiendo al usuario realizar la foto de nuevo
27
El botón inferior corrobora la acción del usuario indicando que se está conforme con
la foto tomada y que se tiene claridad del elemento a evaluar, enviándola al sistema
de inteligencia.
La imagen se encuentra almacenada como un mapa de bits desde el momento que
es tomada. Dicho mapa se sobrescribe si es necesario tomar una nueva foto, de lo
contrario es pasado como parámetro entre las siguientes actividades para hacer el
procesamiento de la imagen
Form de resultado
De ser elegido el botón de enviar, el usuario se encontrará con la vista encargada
de decirle cual es el objeto que se encuentra en la imagen. (CNNResult). Es en este
punto donde la aplicación debe hacer la comunicación con el sistema de
inteligencia.
Como se mencionó anteriormente, se hace cierto procesamiento al mapa de bits
que contiene la imagen. Inicialmente se hace un resized (redimensionamiento de la
imagen) a 350*350 pixeles utilizando las funciones propias de C# y de la librería
Android.Graphics.
El mapa de bits resultante contiene la información de las capas R, G y B de la
imagen. Por facilidades de comunicación con el sistema de inteligencia, lo mejor es
hacer un “desenrrollamiento” de la información. Convertir cada capa en un buffer
28
La idea de hacer una aplicación móvil., nace con la motivación de que el proyecto
pueda ser utilizado por cualquier persona con alcance a un Smartphone. El sistema
de reconocimiento se encuentra implementado en un computador y debe ser capaz
de recibir la información de los celulares que cuenten con la aplicación. Por ello la
opción elegida fue utilizar Eclipse neón como ambiente de desarrollo, y en el hacer
un proyecto web dinámico en Java.
En el proyecto de Java cuenta con un método que recibe como parámetros tres
buffers de enteros con la información de las capas R, G y B de una imagen, y otros
dos enteros con las dimensiones de la misma; ancho y alto
Con estas variables, el método de Java puede llamar Matlab (en donde está el
programa de reconocimiento), pasarle los ya mencionados parámetros con la
información de la imagen para que sea en el mismo programa de Matlab que se
haga la reconstrucción matricial de la imagen y el posterior reconocimiento.
Este método de Java debe publicarse como un Web Servicie. Generando una
dirección IP pública a la cual deben direccionarse como referencia los teléfonos con
29
Figura 17. Imagen representativa del servidor con el listado de servicios web
31
Figura 19. Imagen representativa del cliente local consumiendo el servicio Web y mostrando el
resultado
La figura 19 muestra como el código del cliente es capaz de ver los parámetros de
CNNPredictColor, el cual le retorna la etiqueta obtenida en Matlab, como se puede
observar, efectivamente corresponde a un Hámster.
De acuerdo a lo anterior, es posible ahora generar una dirección pública para hacer
de la aplicación móvil el cliente que consuma el servicio web.
Visual Studio permite de igual manera como se hizo en eclipse, implementar una
referencia Web para poder crear objetos que instancien los métodos de la clase
Servicios indicando la url de la dirección pública.
33
Se puede pensar entonces que la aplicación cumple con su objetivo de tomar una
foto e indicar al usuario la categoría a la que corresponde el objeto que se encuentre
en la imagen. Dicha interacción con el usuario puede ser provechosa para el mismo
sistema, aportando las imágenes que no pueden ser reconocidas y asignándoles la
categoría a la que pertenecen.
De esta manera gracias a los usuarios se puede incrementar la base de datos.
Obteniendo más ejemplos por cada categoría e incluso permitiendo que el usuario
sea gestor de nuevas categorías.
Se necesita entonces que el sistema sea reentrenado con las nuevas imágenes y
las categorías añadidas. Para ello se hacen modificaciones en las vistas existentes
en la aplicación más la inclusión de una nueva. Así mismo, es necesario
implementar nuevos métodos en el Servidor para poder crear las nuevas categorías,
guardar imágenes y programar el auto entrenamiento del sistema
La actividad de la aplicación móvil CNNResult es la encargada de entregar el
resultado al usuario una vez la imagen es procesada. Es por ello que en dicha
actividad deben existir dos botones de selección para que el usuario pueda
determinar si la categoría que arroja el sistema corresponde al resultado esperado.
Dicho servicio al ser consumido debe listar el contenido de dos carpetas que se
encuentran en el computador; Dataset y DataSetnoOfi. La primera carpeta contiene
las categorías existentes que cuentan con más de 100 imágenes, es decir,
categorías ya entrenadas. La siguiente carpeta contiene categorías que han sido
recientemente creadas, por eso la cantidad de imágenes no es considerada
suficiente como para que sea entrenada por el sistema.
Si la categoría se encuentra entre las opciones de la lista, mediante el botón Enviar,
se podrá enviar a un nuevo servicio, la imagen tomada por el usuario y la categoría
que ha sido seleccionada y que puede ser observada en un textbox que se
encuentra bajo el text que dice Selección
Cuando la selección de la categoría proviene del Spinner, y dicha categoría se
encuentra en la carpeta Dataset, se anota en un block de notas que categoría tiene
una nueva imagen y debe ser entrenado.
De no existir entre las opciones del Spinner la consideración del usuario, se utiliza
el botón de ingresar nueva categoría. Dicho botón habilita un cuadro de texto donde
el usuario puede digitar la categoría, la cual se ve reflejada nuevamente en el
textbox de selección. De esta manera se puede enviar la imagen y la etiqueta
correspondiente al sistema. Al ser dicha etiqueta enviada desde el cuadro de texto,
el sistema debe crear en la carpeta de DataSetnoOfi una nueva categoría con el
nombre recibido y almacenar la imagen que ha tomado el usuario. Si la carpeta
37
Al tomar una nueva foto de un pocillo, el sistema no debe ser capaz de reconocerlo
correctamente aún pues no hay la cantidad suficiente para hacer el entrenamiento.
Pero la opción de pocillo se encuentra entre las opciones del Spinner al haber sido
creada la categoría en la carpeta DataSetnoOfi
39
Las pruebas realizadas para poner a prueba el funcionamiento del proyecto se han
constituido en tres etapas. Inicialmente se debe evaluar el sistema de inteligencia
desarrollado en Matlab, evidenciando los resultandos que arrojan las matrices de
confusión y las gráficas de superficie a la hora de clasificar imágenes.
Posterior a ello, es necesario poner a prueba el comportamiento de la
realimentación del sistema; incrementando sustancialmente la cantidad de ejemplos
de una de las categorías, comparando su eficiencia antes y después de agregar las
nuevas imágenes tomadas por la aplicación.
Por último, continuando con la evaluación del auto entrenamiento y realimentación
del sistema, se quiere con ayuda de algunos usuarios, crear nuevas categorías
completando la cantidad mínima de ejemplos necesarios para que el sistema haga
el entrenamiento y sea capaz de identificarlas en un posterior test de las mismas.
Tabla 5. Tabla correspondiente a los datos arrojados por la matriz de confusión, indicando la
exactitud de cada una de las categorías existentes.
Cada una de las categorías requirió de una búsqueda de grilla individual, gracias a
esto y a la diferencia de datos entre las clases los valores de los parámetros del
SVM son diferentes en todas las categorías. Dichos valores son mostrados en la
tabla 6.
Categoría Nu Gamma
'Aguacate' 0,037162722 3,05E-05
'Aguila' 0,015625 3,05E-05
'Audifonos' 0,015625 3,05E-05
41
Tabla 6. Valores para los parámetros Nu y Gamma de cada uno de los Support Vector Machine
correspondiente a cada una de las 50 clases originales.
Figura 31.. Imagen representativa de la inclusión de las tres nuevas categorías en el Spinner de la
aplicación
45
Resultados Mano
Mano
Día Malas Buenas
Jueves 6 Julio 2017 1 0
Viernes 7 Julio 2017 0,36486 0,635135
Sábado 8 Julio 2017 0,25 0,75
Domingo 9 Julio 2017 0,16666 0,83333
Lunes 10 Julio 2017 0,1888 0,8112
Miércoles 12 Julio 2017 0,17 0,83
Tabla 9. Tabla correspondiente a los datos recopilados de efectividad a través de los días en la
categoría “Mano”
Categoría: Mano
100%
80%
Efectividad
60%
40%
20%
0%
Jueves 6 Viernes 7 Sábado 8 Domingo 9 Lunes 10 Miercoles
Julio 2017 Julio 2017 Julio 2017 Julio 2017 Julio 2017 12 Julio
2017
Días
Malas Buenas
Logarítmica (Malas) Logarítmica (Buenas)
Figura 32. Imagen representativa de la gráfica de barras con el comportamiento del sistema a través
de los días en la categoría “Mano”
46
Resultados Cuchara
Cuchara
Día Malas Buenas
Sábado 8 Julio 2017 1 0
Domingo 9 Julio 2017 0,532 0,468
Lunes 10 Julio 2017 0,2105 0,7895
Martes 11 Julio 2017 0 1
Miércoles 12 Julio 2017 0 1
Tabla 10. Tabla correspondiente a los datos recopilados de efectividad a través de los días en la
categoría “Cuchara”
Categoría: Cuchara
100%
90%
80%
70%
Efectividad
60%
50%
40%
30%
20%
10%
0%
Sábado 8 Julio Domingo 9 Julio Lunes 10 Julio Martes 11 Julio Miercoles 12
2017 2017 2017 2017 Julio 2017
Días
Figura 33. Imagen representativa de la gráfica de barras con el comportamiento del sistema a través
de los días en la categoría “Cuchara”
47
Resultados Pocillo
Pocillo
Día Malas Buenas
Lunes 10 Julio 2017 1 0
Martes 11 Julio 2017 0,95 0,05
Miércoles 12 Julio
0,4722 0,5278
2017
Jueves 12 Julio 2017 0,3333 0,667
Tabla 11. Tabla correspondiente a los datos recopilados de efectividad a través de los días en la
categoría “Pocillo”
Categoría: Pocillo
100%
90%
80%
70%
Efectividad
60%
50%
40%
30%
20%
10%
0%
Lunes 10 Julio 2017 Martes 11 Julio 2017 Miercoles 12 Julio Jueves 12 Julio 2017
2017
Días
Figura 34. Imagen representativa de la gráfica de barras con el comportamiento del sistema a través
de los días en la categoría “Pocillo”
48
8. IMPACTO SOCIAL
Este proyecto sienta las bases teóricas para futuros trabajos que tengan la misma
motivación. El reconocimiento de objetos se volvería importante para superar las
barreras expuestas en la introducción del proyecto. Ayudando de diferentes
maneras a las personas como en situaciones en las que no se reconozca bien el
significado en un texto, por ejemplo, en letreros, anuncios y señalizaciones, o
situaciones en donde sea complicado reconocer objetos necesarios de la vida
cotidiana que se encuentren en entornos de trabajo o en una vivienda.
Uno de los aportes principales se puede ver al acoplar la aplicación y el sistema de
inteligencia para personas invidentes o con problemas serios de visión, en donde
se vean beneficiados al tener conocimiento de todo lo que se encuentre a su
alrededor al implementar un sintetizador de texto a voz.
Incluso se puede pensar en procesos educativos, donde igualmente con ayuda de
un sintetizador de texto a voz, los niños puedan aprender a reconocer los objetos
que existen en sus casas y en los ambientes en los que se encuentren.
49
9. CONCLUSIONES
Durante el desarrollo del proyecto se vio como la eficiencia del sistema mejoraba
notablemente al incrementar la cantidad de ejemplos que existen en cada categoría.
Inicialmente el sistema se entrenó con 150 imágenes, los resultados obtenidos en
la prueba 1 sugirieron que la exactitud de cada SVM mejoraría al incrementar
significativamente la base de datos. Por ello ImageNet se convirtió en una
herramienta útil para la creación de la mayor parte la base de datos, permitió realizar
las pruebas variando la cantidad de ejemplos. Aun cuando no todos los ejemplos
que contiene dicho repositorio sean imágenes consideradas buenas para el
entrenamiento.
Por otro lado, también se pudo (a través de la prueba 2) ver que la realimentación
no solo mejora la eficiencia del sistema por el hecho de incrementar la cantidad
ejemplos. Realizar entrenamiento con imágenes tomadas directamente con la
aplicación es beneficioso para el reconocimiento de las categorías entrenadas; ya
que es con la cámara de los celulares que realmente se pondrá a prueba el sistema.
El diseño de múltiples máquinas de soporte vectorial One class como sistema de
clasificación, demostró ser muy eficiente para el desarrollo de este proyecto, pues
le otorgo gran versatilidad el hecho de asociar un SVM a cada una de las categorías.
De esta manera el entrenamiento de cada una de ellas (tanto nuevas como
existentes) se puede realizar de manera autónoma sin depender del resto del
sistema. Además del hecho de que esta arquitectura permite que cada clase crezca
a su propio ritmo y que la calidad del clasificador no se vea afectada por un
desbalance en cuanto al número de ejemplos por cada una de las categorías
(situación que si afectaría en caso de elegir otro tipo de arquitectura como lo sería
One vs All).
Figura 35. Imagen representativa de una Figura 36. Imagen representativa de una
situación con más de una categoría situación con más de una categoría
Por último, la recopilación de los datos y las pruebas realizadas, demostraron que
la manera como se hace la transmisión de datos y la clasificación de las imágenes
hace que el proyecto dependa de la calidad del internet donde esté operando,
haciendo que el sistema sea más rápido o más lento. Es por lo que se ve necesario
replantear la cantidad y funciones de los Web services, ya que la forma para hacer
un sistema más veloz seria extrayendo el modelo de Deep learning que existe en
Matlab e implementarlo en el celular. Siendo en el mismo dispositivo móvil que se
haga la evaluación y clasificación requerida.
52
11. BIBLIOGRAFÍA
[1]. Laura Viviana Castrillón, Memoria natural y artificial, México 1990. Capitulo II;
Historia de la computación
[2]. J. Gleen Brockshear, Introducción a la computación, Estados unidos, 11ª
edición; La historia de la computación.
[3]. Redes Neuronales Instituto tecnológico de Nuevo Laredo, Jesús Martín
Buentello, México Agosto del 2005;
[4]. Universidad Nacional abierta y a distancia, Visión general de la inteligencia
artificial y los sistemas expertos, Lección 5
[14]. Predicting the Motion of a Robot Manipulator with Unknown Trajectories Based
on an Artificial Neural Network, Sai Hong Tang, Chun Kit Ang, Mohd Khairol Anuar
Bin Mohd Ariffin and Syamsiah Binti Mashohor, Septiembre del 2014
[15]. Redes neuronales artificiales y sus aplicaciones, escuela superior de
ingeniería de Bilbao, Xabier Basogain Olabe
[16]. Redes neuronales artificiales y sus aplicaciones, escuela superior de
ingeniería de Bilbao, Xabier Basogain Olabe
[17] Tutorial sobre Máquinas de Vectores Soporte (SVM), Dpto. de Inteligencia
Artificial, ETS de Ingeniería Informática, Universidad Nacional de Educación a
Distancia, Enrique J. Carmona Suárez
[18] Neural Networks: A Comprehensive Foundation, 2nd edition, 1998, Simon
Haykin
[19]. Máquina de soporte vectorial multiclass, Ledvir Chávez Valderrama, Julio del
2017, desde
https://www.youtube.com/watch?v=Ot3xexd3H8w
[20]. Tomado de Deep Learning.TV en Octubre del 2016, desde
https://www.youtube.com/channel/UC9OeZkIwhzfv-_Cb7fCikLQ
[21]. Microsoft developers, Web services, un ejemplo práctico. Tomado en Octubre
del 2016 de https://msdn.microsoft.com/es-es/library/bb972248.aspx
[22] Android se convierte en el sistema operativo móvil más usado de Estados
Unidos, Enero del 2014.
Tomado desde: https://www.xatakandroid.com/mercado/android-se-convierte-en-
el-sistema-operativo-movil-mas-usado-de-estados-unidos
[23] Android destrona a Windows como el sistema operativo más usado, Redacción
Tecnosfera, Abril del 2017,
Tomado desde http://www.eltiempo.com/tecnosfera/novedades-tecnologia/android-
destrona-a-windows-como-el-sistema-operativo-mas-usado-en-red-74448
[24] Pretrained VGG-16 and VGG-19 convolutional neural networks,
Tomado desde https://www.mathworks.com/help/nnet/ref/vgg19.html
[25] Very Deep Convolutional Networks for Large-Scale Visual Recognition, Visual
Geometry Group, Department of Engineering Science, University of Oxford Karen
Simonyan and Andrew Zisserman.
54
Imágenes y tablas:
Figura 1. Representación de un perceptrón básico. Tomada de Redes neuronales
artificiales y sus aplicaciones, escuela superior de ingeniería de Bilbao, Xabier
Basogain Olabe
Figura 2. Ejemplo del hiperplano construido por un SVM para separar dos clases,
imagen tomada LAS MÁQUINAS DE SOPORTE VECTORIAL, Gustavo A.
Betancourt
Figura 3. Imagen representativa de la confiabilidad de acuerdo con el resultado
arrojado por la ecuación del hiperplano, tomada del video “Maquina de soporte
vectorial”
Figura 4. Imagen ejemplificando la determinación del mejor hiperplano, tomada del
video “Maquina de soporte vectorial”
Figura 5. Figura representativa de un caso No linealmente separable tomada
Tutorial sobre Máquinas de Vectores Soporte, Enrique Carmona
Figura 6. Imagen representativa del funcionamiento del Deep learning para la
identificación de rostros, Imagen tomada dehttps://www.quora.com/What-is-deep-
learning
Figura 7. Imagen representativa del funcionamiento del Deep learning para la
clasificación de animales, Imagen tomada dehttps://www.quora.com/What-is-deep-
learning
Figura 8. Imagen representativa del funcionamiento que debe seguir el proyecto
Figura 9. Diagrama de flujo con las actividades del proyecto
Figura 10. Diagrama de flujo con las actividades del proceso de aprendizaje
Figura 11. Imagen representativa de la primera vista en el diseñador de Visual
Studio
Figura 12. Captura de pantalla de la primera vista en funcionamiento
Figura 13. Imagen representativa del PictureActivity vista en el diseñador de Visual
Studio
Figura 14. Imagen representativa de Actividad en funcionamiento
Figura 15. Imagen representativa de Actividad en funcionamiento
Figura 16. Imagen representativa del servidor desplegado
Figura 17. Imagen representativa del servidor con el listado de servicios web
Figura 18. Imagen del explorador de proyectos de eclipse.
55
Figura 19. Imagen representativa del cliente local consumiendo el servicio Web y
mostrando el resultado
Figura 20. Interfaz de Visual Studio para agregar la referencia web
Figura 21. Imagen de la aplicación móvil obteniendo el resultado de la imagen
Figura 22. Imagen representativa de la vista CNNResult modificada
Figura 23. Diagrama de flujo con el algoritmo de auto entrenamiento
Figura 24. Imagen representativa de la vista Realimentación
Figura 25. Imagen ejemplificando el proceso de realimentación
Figura 26. Imagen ejemplificando el proceso de realimentación
Figura 27. Imagen correspondiente a la Gráfica de Superficie de la categoría
Aguacate
Figura 28. Imagen correspondiente a la Gráfica de Superficie de la categoría Águila
Figura 29. Imagen correspondiente a la Gráfica de Superficie de la categoría
Audífonos
Figura 30. Imagen correspondiente a la Gráfica de Superficie de la categoría
Banano
Figura 31. Imagen representativa de la inclusión de las tres nuevas categorías en
el Spinner de la aplicación
Figura 32. Imagen representativa de la gráfica de barras con el comportamiento del
sistema a través de los días en la categoría “Mano”
Figura 33. Imagen representativa de la gráfica de barras con el comportamiento del
sistema a través de los días en la categoría “Cuchara”
Figura 34. Imagen representativa de la gráfica de barras con el comportamiento del
sistema a través de los días en la categoría “Pocillo”
Figura 35. Imagen representativa de una situación con más de una categoría,
tomada en internet desde http://www.soloparamadres.com/601-mascotas-para-los-
ninos-los-gatos
Figura 36. Imagen representativa de una situación con más de una categoría,
tomada en internet desde http://laterceravenezuela.blogspot.com.co/2011/07/las-
mujeres-y-las-computadoras.html
Figura 37. Imagen correspondiente a la Gráfica de Superficie de la categoría
Bombillo
Figura 38. Imagen correspondiente a la Gráfica de Superficie de la categoría Botella
56
Tablas:
Tabla1. Tabla correspondiente a las clases que corresponden a objetos generales
Tabla 2. Tabla correspondiente a las clases que corresponden a Animales
Tabla 3. Tabla correspondiente a las clases que corresponden a Frutas
Tabla 4. Tabla correspondiente a las clases que corresponden a Señales de
transito
Tabla 5. Tabla correspondiente a los datos arrojados por la matriz de confusión,
indicando la exactitud de cada una de las categorías existentes.
Tabla 6. Valores para los parámetros Nu y Gamma de cada uno de los Support
Vector Machine correspondiente a cada una de las 50 clases originales.
Tabla 7. Tabla correspondiente a los datos recopilados al evaluar 30 nuevas llaves
Tabla 8. Tabla correspondiente a los datos recopilados al evaluar 30 nuevas llaves
después del entrenamiento.
Tabla 8. Tabla correspondiente a los datos recopilados de efectividad a través de
los días en la categoría “Mano”
Tabla 10. Tabla correspondiente a los datos recopilados de efectividad a través de
los días en la categoría “Cuchara”
Tabla 11. Tabla correspondiente a los datos recopilados de efectividad a través de
los días en la categoría “Pocillo”
59
ANEXOS
Gráficas de superficie de las demás categorías