aplicaciÓn de un sistema cbir basado en redes …

178
APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES NEURONALES FEED-FORWARD PARA EL MÓDULO DE IMÁGENES DEL SOFTWARE DE ANÁLISIS DE DATOS CUALITATIVOS RITAQDA FONSECA LÓPEZ ANDRÉS FELIPE SANABRIA PAEZ HERNAN DIRIGIDO POR: PH.D ROBERTO FERRO ESCOBAR UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA INGENIERÍA ELECTRÓNICA BOGOTÁ D.C. 2018

Upload: others

Post on 10-Nov-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES NEURONALES

FEED-FORWARD PARA EL MÓDULO DE IMÁGENES DEL SOFTWARE DE

ANÁLISIS DE DATOS CUALITATIVOS RITAQDA

FONSECA LÓPEZ ANDRÉS FELIPE

SANABRIA PAEZ HERNAN

DIRIGIDO POR:

PH.D ROBERTO FERRO ESCOBAR

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

FACULTAD DE INGENIERÍA

INGENIERÍA ELECTRÓNICA

BOGOTÁ D.C.

2018

Page 2: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES NEURONALES

FEED-FORWARD PARA EL MÓDULO DE IMÁGENES DEL SOFTWARE DE

ANÁLISIS DE DATOS CUALITATIVOS RITAQDA

FONSECA LÓPEZ ANDRÉS FELIPE 20111005044

SANABRIA PAEZ HERNAN 20062005011

Trabajo de grado para optar al título de

Ingeniero Electrónico

DIRIGIDO POR:

PH.D ROBERTO FERRO ESCOBAR

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

FACULTAD DE INGENIERÍA

INGENIERÍA ELECTRÓNICA

BOGOTÁ D.C.

2018

Page 3: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

‘El auténtico problema no es si las maquinas piensan,

sino si lo hacen los hombres.’

Burrhus Frederic Skinner

Page 4: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

i

RESUMEN

En el presente proyecto se planteó la construcción de un módulo, para la organización y

análisis de imágenes aplicando la metodología QDA, el cual fue implementado dentro del

software Ritaqda, y el cual fue proveído con características como el etiquetado automático

de códigos y la sugerencia de imágenes similares, para imágenes rurales, mediante la

implementación de un sistema CBIR basado en redes neuronales Feed-forward.

Page 5: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

ii

AGRADECIMIENTOS

A mi madre Gilma, quien me ha brindado su apoyo incondicional durante toda esta etapa, a

la universidad distrital por abrirme sus puertas y brindarme acceso a el conocimiento, a mi

director Roberto Ferro y al grupo de investigación RITA, quienes hicieron posible la

realización de este proyecto, a mi compañero Andres por su dedicación, diligencia y

principalmete por su amistad, a todas aquellas personas que durante la carrera aportaron su

granito de arena. ¡Gracias… totales!

Hernan

Dedico estos agradecimientos a mis padres por brindarme sus respectivos ánimos al momento

de desarrollar este proyecto y el apoyo incondicional. Agradezco a mi director Roberto Ferro

y a mi evaluador Andrés Gaona, por la ayuda y la paciencia brindada durante todo este

proceso de desarrollo del proyecto.

. Andres

Page 6: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

iii

TABLA DE CONTENIDO

Resumen .................................................................................................................................. i

Agradecimientos ..................................................................................................................... ii

Tabla de contenido................................................................................................................. iii

Lista de figuras ..................................................................................................................... vii

Lista de tablas ...................................................................................................................... xiv

Índice de abreviaturas .......................................................................................................... xvi

1. GENERALIDADES........................................................................................................ 1

1.1. PLANTEAMIENTO DEL PROBLEMA ................................................................ 1

1.2. JUSTIFICACIÓN .................................................................................................... 3

1.3. OBJETIVOS ............................................................................................................ 5

1.3.1. Objetivo general ............................................................................................... 5

1.3.2. Objetivos específicos ........................................................................................ 5

1.4. ANTECEDENTES .................................................................................................. 6

2. MARCO TEÓRICO ........................................................................................................ 9

2.1. ANÁLISIS DE DATOS EN LA INVESTIGACIÓN CUALITATIVA .................. 9

2.2. RECUPERACIÓN DE LA INFORMACIÓN VISUAL ....................................... 10

2.2.1. Recuperación De Imágenes Basada En Contenido CBIR .............................. 11

2.3. LA IMAGEN DIGITAL ........................................................................................ 11

2.4. MODELOS DE COLOR ....................................................................................... 12

2.4.1. Modelo de color RGB. ................................................................................... 13

2.4.2. Modelo de color YUV .................................................................................... 14

2.5. EXTRACCIÓN DE CARACTERÍSTICAS EN IMÁGENES .............................. 15

Page 7: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

iv

2.5.1. Histogramas .................................................................................................... 15

2.5.2. Momentos de color ......................................................................................... 16

2.5.3. Análisis de componentes principales PCA ..................................................... 17

2.6. REDES NEURONALES FEED-FORWARD ....................................................... 18

2.6.1. Tipos de redes neuronales feed-forward ......................................................... 19

2.6.2. Topología ........................................................................................................ 22

2.7. APRENDIZAJE SUPERVISADO ........................................................................ 23

2.8. CLASIFICADOR BINARIO ................................................................................. 23

2.9. MÉTRICAS ........................................................................................................... 24

2.9.1. Matriz de confusión ........................................................................................ 24

2.9.2. Curvas ROC .................................................................................................... 26

2.9.3. Curvas de precisión y exhaustividad .............................................................. 27

2.9.4. Error cuadrático medio ................................................................................... 28

2.9.5. Funciones de similitud .................................................................................... 29

3. DISEÑO DE LOS SISTEMAS DE EXTRACCION DE CARACTERÍSTICAS Y

ENTRENAMIENTO DE LOS MODELOS DE RED NEURONAL FEED-FORWARD .. 31

3.1. ESCOGENCIA DE TECNOLOGÍAS DE SOFTWARE PARA LA

SIMULACIÓN ................................................................................................................. 32

3.2. CREACION DE LA BASE DE DATOS DE IMÁGENES .................................. 32

3.3. OBTENCIÓN DE LAS CARACTERÍSTICAS DE LA IMAGEN DIGITAL ..... 33

3.3.1. Obtención de las matrices de los modelos de color ........................................ 33

3.3.2. Diseño de algoritmo y obtención de los histogramas ..................................... 35

3.3.3. Diseño de algoritmo y obtención de los momentos de color .......................... 37

3.3.4. Diseño de algoritmo y obtención de los componentes principales ................. 38

3.4. DISEÑO Y ENTRENAMIENTO DE LA RED NEURONAL FEED-FORWARD

41

Page 8: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

v

3.4.1. Diseño e implementación del algorimo de red neuronal feed – forward........ 42

3.4.2. Diseño y prueba de la red neuronal para la clasificación rural – no rural ...... 43

3.4.3. Resultados obtenidos del proceso de entrenamiento-validación para la

clasificación rural-no rural. ........................................................................................... 47

3.4.4. Diseño y prueba de la red neuronal de clasificación de coberturas ................ 47

3.4.5. Resultados obtenidos del proceso de entrenamiento-validación para la

clasificación de coberturas ............................................................................................ 51

4. DISEÑO Y PRUEBA DEL MÓDULO DE IMÁGENES DE RITAQDA ................... 53

4.1. DESCRIPCION Y ESTADO DE DESARROLLO DE RITAQDA ..................... 54

4.2. REQUERIMIENTOS DEL MÓDULO DE IMÁGENES DE RITAQDA ............ 55

4.2.1. Requerimientos funcionales ........................................................................... 55

4.2.2. Requerimientos no funcionales ...................................................................... 57

4.3. MODELO DE BASE DE DATOS PARA EL MÓDULO DE IMÁGENES ........ 57

4.4. IMPLEMENTACIÓN DEL SISTEMA CBIR ...................................................... 58

4.4.1 Algoritmo de extracción de características y red neuronal............................. 59

4.4.2 Algoritmo de función de similitud ................................................................. 60

4.5. PRUEBA DEL MÓDULO DE IMÁGENES ........................................................ 61

5. ANÁLISIS DE RESULTADOS ................................................................................... 71

5.1. ANÁLISIS DE LAS REDES NEURONALES FEED-FORWARD ..................... 71

5.1.1. Análisis de la red neuronal de clasificación rural-no rural ............................. 71

5.1.2. Análisis de la red neuronal de clasificación de coberturas ............................. 72

5.2. ANÁLISIS AL MÓDULO DE IMÁGENES DEL SOFTWARE RITAQDA ...... 76

5.2.1. Cumplimiento de requerimientos ................................................................... 76

5.2.2. Análisis al sistema cbir ................................................................................... 76

CONCLUSIONES ................................................................................................................ 80

Page 9: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

vi

TABAJO FUTURO .............................................................................................................. 82

REFERENCIAS ................................................................................................................... 83

APÉNDICES ........................................................................................................................ 89

Apéndice A ....................................................................................................................... 89

Apéndice B ....................................................................................................................... 89

Apéndice C ....................................................................................................................... 90

Apéndice D ....................................................................................................................... 91

Apéndice E ........................................................................................................................ 92

Apéndice F ........................................................................................................................ 93

Apéndice G ....................................................................................................................... 96

Apéndice H ....................................................................................................................... 98

Apéndice I ....................................................................................................................... 100

Apéndice J ....................................................................................................................... 104

Apéndice K ..................................................................................................................... 107

Apéndice L ...................................................................................................................... 114

Apéndice M ..................................................................................................................... 116

Apéndice N ..................................................................................................................... 131

Apéndice O ..................................................................................................................... 156

Page 10: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

vii

LISTA DE FIGURAS

FIGURA 1. SISTEMA CBIR. TOMADO DE (MELÉNDEZ ACOSTA, FIGUEROA RIOS, & MARÍN

HERNÁNDEZ, 2013). ............................................................................................................................. 11

FIGURA 2. REPRESENTACIÓN DE UNA IMAGEN DIGITAL. TOMADO DE (ARISTIZÁBAL

RAMÍREZ & RAMÍREZ MARTÍNEZ, 2006)........................................................................................ 12

FIGURA 3. CUBO RGB. TOMADO DE (PLATANIOTIS & VENETSANOPOULOS, 2000). ................... 13

FIGURA 4. MODELO DE COLOR YUV. TOMADO DE (NOOR ET AL., 2012). ..................................... 14

FIGURA 5. IMAGEN DE UN OJO Y SU RESPECTIVO HISTOGRAMA. TOMADO DE (NIXON &

AGUADO, 2012). .................................................................................................................................... 16

FIGURA 6. MODELO DE UNA NEURONA. TOMADO DE (SHIH, 2010). .............................................. 18

FIGURA 7. MODELO DE CAPAS DE UNA RED FEEDFORWARD. TOMADO DE (GONZALEZ, 2016).

................................................................................................................................................................. 19

FIGURA 8. PERCEPTRÓN SIMPLE TOMADO DE (GONZALEZ, 2016). ................................................ 19

FIGURA 9. PERCEPTRÓN MULTICAPA TOMADO DE (GONZALEZ, 2016). ....................................... 20

FIGURA 10 RED MADALINE TOMADO DE (GONZALEZ, 2016) ........................................................... 21

FIGURA 11. ESQUEMA DE UN CLASIFICADOR BINARIO. ................................................................... 24

FIGURA 12. CURVA ROC TOMADO DE (NCSS STATISTICAL SOFTWARE, 2014). .......................... 26

FIGURA 13. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD. TOMADO DE (SAITO & REHMSMEIER,

2015). ....................................................................................................................................................... 27

FIGURA 14. IMAGEN DE PRUEBA. ........................................................................................................... 34

FIGURA 15. COMPONENTES RGB DE LA IMAGEN DE PRUEBA. ....................................................... 34

FIGURA 16 COMPONENTES Y, U Y V DE LA IMAGEN DE PRUEBA. ................................................. 34

FIGURA 17. HISTOGRAMA DE LOS COLORES RGB DE LA IMAGEN DE PRUEBA. ........................ 36

FIGURA 18. HISTOGRAMA DE LOS COLORES YUV DE LA IMAGEN DE PRUEBA. ........................ 36

FIGURA 19. ERROR CUADRÁTICO MEDIO PARA LOS COMPONENTES PRINCIPALES DE R, G Y

B. ............................................................................................................................................................. 40

FIGURA 20. ERROR CUADRÁTICO MEDIO PARA LAS COMPONENTES PRINCIPALES DE Y, U Y

V. ............................................................................................................................................................. 40

FIGURA 21. MODELO VISTA PLANTILLA DEL FRAMEWORK DJANGO. TOMADO DE (INFANTE

MONTERO, 2012) .................................................................................................................................. 54

FIGURA 22. ESTADO DE LA BASE DE DATOS ANTES DEL INICIO DEL PROYECTO. FUENTE

ELABORACIÓN PROPIA...................................................................................................................... 55

FIGURA 23. ENTIDADES QUE ES NECESARIO AÑADIR PARA IMPLEMENTAR EL MÓDULO DE

IMÁGENES DE RITAQDA. .................................................................................................................. 58

FIGURA 24. MODELO DEL SISTEMA CBIR IMPLEMENTADO EN EL MÓDULO DE IMÁGENES DE

RITAQDA. .............................................................................................................................................. 59

Page 11: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

viii

FIGURA 25. DIAGRAMA DE CLASES DE LOS CLASIFICADORES. ..................................................... 60

FIGURA 26. RESULTADO DEL SOFTWARE PARA UNA IMAGEN NO RURAL. ................................ 62

FIGURA 27. RESULTADO DEL SOFTWARE PARA UNA IMAGEN RURAL. ....................................... 62

FIGURA 28. RESULTADO DE SOFTWARE RESPECTO AL ETIQUETADO DE COBERTURAS EN

IMÁGENES RURALES. ........................................................................................................................ 63

FIGURA 29. RESULTADO DE SOFTWARE RESPECTO AL ETIQUETADO DE COBERTURAS EN

IMÁGENES RURALES. ........................................................................................................................ 63

FIGURA 30. RESULTADO DEL SOFTWARE RESPECTO AL ETIQUETADO DE COBERTURAS EN

IMÁGENES RURALES. ........................................................................................................................ 64

FIGURA 31. RESULTADO DEL SOFTWARE RESPECTO AL ETIQUETADO DE COBERTURAS EN

IMÁGENES RURALES ......................................................................................................................... 64

FIGURA 32. IMAGEN DE PRUEBA 1 CON COBERTURA DE ÁRBOLES. ............................................. 67

FIGURA 33. RESULTADO DEL SOFTWARE RESPECTO A LA BÚSQUEDA DE IMÁGENES

SIMILARES CON COBERTURAS DE ÁRBOLES. ............................................................................. 67

FIGURA 34. IMAGEN DE PRUEBA 2 CON COBERTURA DE CESPED. ................................................ 68

FIGURA 35. RESULTADO DEL SOFTWARE RESPECTO A LA BÚSQUEDA DE IMÁGENES

SIMILARES CON COBERTURAS DE CESPED. ................................................................................ 68

FIGURA 36. IMAGEN DE PRUEBA 3 CON COBERTURA DE SUELO DESCUBIERTO. ...................... 69

FIGURA 37. RESULTADO DEL SOFTWARE RESPECTO A LA BÚSQUEDA DE IMÁGENES

SIMILARES CON COBERTURAS DE SUELO DESCUBIERTO. ...................................................... 69

FIGURA 38. IMAGEN DE PRUEBA 4 CON COBERTURA DE CUERPOS DE AGUA. .......................... 70

FIGURA 39. RESULTADO DEL SOFTWARE RESPECTO A LA BÚSQUEDA DE IMÁGENES

SIMILARES CON COBERTURAS DE CUERPOS DE AGUA. ........................................................... 70

FIGURA 40. CURVA ROC DE LA RED NEURONAL DE CLASIFICACIÓN RURAL-NO RURAL

APLICADA AL SOFTWARE DE RITAQDA. ...................................................................................... 72

FIGURA 41. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD DE LA RED NEURONAL DE

CLASIFICACIÓN DE COBERTURAS PARA LA CLASIFICACIÓN DE ÁRBOLES. ...................... 73

FIGURA 42. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD DE LA RED NEURONAL DE

CLASIFICACIÓN DE COBERTURAS PARA LA CLASIFICACIÓN DE CÉSPED. ......................... 74

FIGURA 43. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD DE LA RED NEURONAL PARA LA

CLASIFICACIÓN DE SUELO DESCUBIERTO. ................................................................................. 75

FIGURA 44. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD DE LA RED NEURONAL PARA LA

CLASIFICACIÓN DE CUERPOS DE AGUA. ...................................................................................... 75

FIGURA 45. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD PARA EL SISTEMA DE BÚSQUEDA DE

LA IMAGEN DE PRUEBA 1. ................................................................................................................ 78

FIGURA 46. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD PARA EL SISTEMA DE BÚSQUEDA DE

LA IMAGEN DE PRUEBA 2. ................................................................................................................ 78

Page 12: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

ix

FIGURA 47. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD PARA EL SISTEMA DE BÚSQUEDA DE

LA IMAGEN DE PRUEBA 3. ................................................................................................................ 79

FIGURA 48. CURVA DE PRECISIÓN Y EXHAUSTIVIDAD PARA EL SISTEMA DE BÚSQUEDA DE

LA IMAGEN DE PRUEBA 4. ................................................................................................................ 79

FIGURA 49. IMAGEN DE PRUEBA RECONSTRUIDA CON: A) 1 COMPONENTE PRINCIPAL. B) 10

COMPONENTES PRINCIPALES. C) 50 COMPONENTES PRINCIPALES. D) 100

COMPONENTES PRINCIPALES .......................................................................................................... 94

FIGURA 50. IMAGEN DE PRUEBA RECUPERADA CON 1 COMPONENTE PRINCIPAL EN Y

(LUMA) Y: A) 1 COMPONENTE PRINCIPAL EN U Y V. B) 10 COMPONENTES PRINCIPALES

EN U Y V.C) 100 COMPONENTES PRINCIPALES EN U Y V. ......................................................... 95

FIGURA 51. IMAGEN DE PRUEBA RECUPERADA CON 1 COMPONENTE PRINCIPAL EN U Y V Y:

A) 1 COMPONENTE PRINCIPAL EN Y. B) 10 COMPONENTES PRINCIPALES EN Y. C) 100

COMPONENTES PRINCIPALES EN Y. .............................................................................................. 95

FIGURA 52. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS HISTOGRAMAS COMO CARACTERÍSTICAS DE ENTRADA PARA LA RED

NEURONAL CON UNA CAPA OCULTA. ......................................................................................... 100

FIGURA 53. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS HISTOGRAMAS COMO CARACTERÍSTICAS DE ENTRADA PARA LA RED

NEURONAL CON DOS CAPAS OCULTAS. ..................................................................................... 101

FIGURA 54. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS MOMENTOS DE COLOR COMO CARACTERÍSTICAS DE ENTRADA PARA LA

RED NEURONAL CON UNA CAPA OCULTA. ................................................................................ 101

FIGURA 55. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS MOMENTOS DE COLOR COMO CARACTERÍSTICAS DE ENTRADA PARA LA

RED NEURONAL CON DOS CAPAS OCULTAS. ............................................................................ 102

FIGURA 56. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS MÉTODOS DE COMPONENTES PRINCIPALES COMO CARACTERÍSTICAS DE

ENTRADA PARA LA RED NEURONAL CON UNA CAPA OCULTA. .......................................... 102

FIGURA 57. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS MÉTODOS DE COMPONENTES PRINCIPALES COMO CARACTERÍSTICAS DE

ENTRADA PARA LA RED NEURONAL CON DOS CAPAS OCULTAS. ...................................... 103

FIGURA 58. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR EL NÚMERO DE NEURONAS EN

LA CAPA OCULTA PARA EL MÉTODO DE LOS HISTOGRAMAS RGB. ................................... 104

FIGURA 59. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR EL NÚMERO DE NEURONAS EN

LA CAPA OCULTA PARA EL MÉTODO DE MOMENTOS DE COLOR RGB. ............................. 105

FIGURA 60. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR EL NÚMERO DE NEURONAS EN

LA CAPA OCULTA PARA EL MÉTODO DE COMPONENTES PRINCIPALES RGB. ................. 105

Page 13: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

x

FIGURA 61. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR EL NÚMERO DE NEURONAS EN

LA CAPA OCULTA PARA EL MÉTODO DE LOS HISTOGRAMAS YUV. ................................... 106

FIGURA 62. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR EL NÚMERO DE NEURONAS EN

LA CAPA OCULTA PARA EL MÉTODO DE COEFICIENTES DE PREDICCIÓN LINEAL YUV.

............................................................................................................................................................... 106

FIGURA 63. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR EL NÚMERO DE NEURONAS EN

LA CAPA OCULTA PARA EL MÉTODO DE COMPONENTES PRINCIPALES YUV. ................ 107

FIGURA 64. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA PRIMERA CAPA OCULTA PARA EL MÉTODO DE LOS HISTOGRAMAS EN EL

MODELO DE COLOR RGB, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN

LA SEGUNDA CAPA. ......................................................................................................................... 108

FIGURA 65. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA SEGUNDA CAPA OCULTA PARA EL MÉTODO DE LOS HISTOGRAMAS EN EL

MODELO DE COLOR RGB, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN

LA PRIMERA CAPA. ........................................................................................................................... 108

FIGURA 66. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA PRIMERA CAPA OCULTA PARA EL MÉTODO DE LOS MOMENTOS DE COLOR EN EL

MODELO DE COLOR RGB, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN

LA SEGUNDA CAPA. ......................................................................................................................... 109

FIGURA 67. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA SEGUNDA CAPA OCULTA PARA EL MÉTODO DE LOS MOMENTOS DE COLOR EN

EL MODELO DE COLOR RGB, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS

EN LA PRIMERA CAPA. .................................................................................................................... 109

FIGURA 68. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA PRIMERA CAPA OCULTA PARA EL MÉTODO DE LOS PCA EN EL MODELO DE

COLOR RGB, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN LA SEGUNDA

CAPA. ................................................................................................................................................... 110

FIGURA 69. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA SEGUNDA CAPA OCULTA PARA EL MÉTODO DE LOS PCA EN EL MODELO DE

COLOR RGB, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN LA PRIMERA

CAPA. ................................................................................................................................................... 110

FIGURA 70. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA PRIMERA CAPA OCULTA PARA EL MÉTODO DE LOS HISTOGRAMAS EN EL

MODELO DE COLOR YUV, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN

LA SEGUNDA CAPA. ......................................................................................................................... 111

FIGURA 71. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA SEGUNDA CAPA OCULTA PARA EL MÉTODO DE LOS HISTOGRAMAS EN EL

Page 14: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

xi

MODELO DE COLOR YUV, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN

LA PRIMERA CAPA. ........................................................................................................................... 111

FIGURA 72. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA PRIMERA CAPA OCULTA PARA EL MÉTODO DE LOS MOMENTOS DE COLOR EN EL

MODELO DE COLOR YUV, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN

LA SEGUNDA CAPA. ......................................................................................................................... 112

FIGURA 73. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA SEGUNDA CAPA OCULTA PARA EL MÉTODO DE LOS MOMENTOS DE COLOR EN

EL MODELO DE COLOR YUV, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS

EN LA PRIMERA CAPA. .................................................................................................................... 112

FIGURA 74. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA PRIMERA CAPA OCULTA PARA EL MÉTODO DE LOS PCA EN EL MODELO DE

COLOR YUV, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN LA SEGUNDA

CAPA. ................................................................................................................................................... 113

FIGURA 75. COMPARACIÓN DE LAS CURVAS ROC AL VARIAR LA CANTIDAD DE NEURONAS

EN LA SEGUNDA CAPA OCULTA PARA EL MÉTODO DE LOS PCA EN EL MODELO DE

COLOR YUV, MANTENIENDO CONSTANTE EL NÚMERO DE NEURONAS EN LA PRIMERA

CAPA. ................................................................................................................................................... 113

FIGURA 76. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS HISTOGRAMAS COMO CARACTERÍSTICAS DE ENTRADA PARA LA RED

NEURONAL DE CLASIFICACIÓN DE COBERTURAS. ................................................................. 114

FIGURA 77. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS MOMENTOS DE COLOR COMO CARACTERÍSTICAS DE ENTRADA PARA LA

RED NEURONAL DE CLASIFICACIÓN DE COBERTURAS. ........................................................ 115

FIGURA 78. COMPORTAMIENTO DEL MSE AL VARIAR LA TASA DE APRENDIZAJE AL

UTILIZAR LOS COMPONENTES PRINCIPALES COMO CARACTERÍSTICAS DE ENTRADA

PARA LA RED NEURONAL DE CLASIFICACIÓN DE COBERTURAS. ...................................... 115

FIGURA 79. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS HISTOGRAMAS

RGB PARA EL CLASIFICADOR DE COBERTURA DE ÁRBOLES. .............................................. 116

FIGURA 80. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS HISTOGRAMAS

RGB PARA EL CLASIFICADOR DE COBERTURA DE CÉSPED. ................................................. 117

FIGURA 81. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS HISTOGRAMAS

RGB PARA EL CLASIFICADOR DE COBERTURA DE SUELO DESCUBIERTO. ....................... 117

Page 15: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

xii

FIGURA 82. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS HISTOGRAMAS

RGB PARA EL CLASIFICADOR DE COBERTURA DE CUERPOS DE AGUA. ........................... 118

FIGURA 83. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS MOMENTOS DE

COLOR RGB PARA EL CLASIFICADOR DE COBERTURA DE ÁRBOLES. ............................... 119

FIGURA 84. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS MOMENTOS DE

COLOR RGB PARA EL CLASIFICADOR DE COBERTURA DE CÉSPED. ................................... 119

FIGURA 85. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS MOMENTOS DE

COLOR RGB PARA EL CLASIFICADOR DE COBERTURA DE SUELO DESCUBIERTO. ........ 120

FIGURA 86. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE LOS MOMENTOS DE

COLOR RGB PARA EL CLASIFICADOR DE COBERTURA DE CUERPOS DE AGUA. ............. 120

FIGURA 87. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES RGB PARA EL CLASIFICADOR DE COBERTURA DE ÁRBOLES. .................... 121

FIGURA 88. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES RGB PARA EL CLASIFICADOR DE COBERTURA DE CÉSPED. ....................... 122

FIGURA 89. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES RGB PARA EL CLASIFICADOR DE COBERTURA DE SUELO DESCUBIERTO.

............................................................................................................................................................... 122

FIGURA 90. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES RGB PARA EL CLASIFICADOR DE COBERTURA DE CUERPOS DE AGUA. . 123

FIGURA 91. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE HISTOGRAMAS YUV

PARA EL CLASIFICADOR DE COBERTURA DE ÁRBOLES. ....................................................... 124

FIGURA 92. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE HISTOGRAMAS YUV

PARA EL CLASIFICADOR DE COBERTURA DE CÉSPED. .......................................................... 124

FIGURA 93. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE HISTOGRAMAS YUV

PARA EL CLASIFICADOR DE COBERTURA DE SUELO DESCUBIERTO. ................................ 125

Page 16: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

xiii

FIGURA 94. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE HISTOGRAMAS YUV

PARA EL CLASIFICADOR DE COBERTURA DE CUERPOS DE AGUA. ..................................... 125

FIGURA 95. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE MOMENTOS DE

COLOR YUV PARA EL CLASIFICADOR DE COBERTURA DE ÁRBOLES. ............................... 126

FIGURA 96. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE MOMENTOS DE

COLOR YUV PARA EL CLASIFICADOR DE COBERTURA DE CÉSPED. .................................. 127

FIGURA 97. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE MOMENTOS DE

COLOR YUV PARA EL CLASIFICADOR DE COBERTURA DE SUELO DESCUBIERTO. ........ 127

FIGURA 98. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE MOMENTOS DE

COLOR YUV PARA EL CLASIFICADOR DE COBERTURA DE CUERPOS DE AGUA.............. 128

FIGURA 99. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES YUV PARA EL CLASIFICADOR DE COBERTURA DE ÁRBOLES. ................... 129

FIGURA 100. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES YUV PARA EL CLASIFICADOR DE COBERTURA DE CÉSPED. ....................... 129

FIGURA 101. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES YUV PARA EL CLASIFICADOR DE COBERTURA DE SUELO DESCUBIERTO.

............................................................................................................................................................... 130

FIGURA 102. COMPARACIÓN DE LAS CURVAS PRECISIÓN Y EXHAUSTIVIDAD AL VARIAR EL

NÚMERO DE NEURONAS EN LA CAPA OCULTA CON EL MÉTODO DE COMPONENTES

PRINCIPALES YUV PARA EL CLASIFICADOR DE COBERTURA DE CUERPOS DE AGUA. . 130

Page 17: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

xiv

LISTA DE TABLAS

TABLA 1. MATRIZ DE CONFUSIÓN. ......................................................................................................... 24

TABLA 2. MEDIDAS DE EVALUACIÓN BÁSICA OBTENIDAS A PARTIR DE LA MATRIZ DE

CONFUSIÓN .......................................................................................................................................... 26

TABLA 3. MÉTRICAS UTILIZADAS PARA CALCULAR LA SIMILITUD DE CARACTERÍSTICAS.. 30

TABLA 4. RESULTADO DEL MICROBENCHMARK EN MILISEGUNDOS. TOMADA DE

(BEZANSON ET AL., 2012) .................................................................................................................. 32

TABLA 5. VALORES DE LOS MOMENTOS DE COLOR EN EL MODELO RGB PARA LA IMAGEN

DE PRUEBA. .......................................................................................................................................... 38

TABLA 6. VALORES DE LOS MOMENTOS DE COLOR EN EL MODELO YUV PARA LA IMAGEN

DE PRUEBA. .......................................................................................................................................... 38

TABLA 7. ANÁLISIS COMPARATIVO FUNCIONES OBJETIVO. TOMADO DE (LLANO ET AL.,

2007) ........................................................................................................................................................ 42

TABLA 8. CANTIDAD DE NEURONAS EN LA CAPA OCULTA PARA CLASIFICADOR BINARIO

RURAL-NO RURAL. ............................................................................................................................. 43

TABLA 9. CANTIDAD DE NEURONAS EN LAS DOS CAPAS OCULTAS PARA CLASIFICADOR

BINARIO RURAL-NO RURAL. ............................................................................................................ 44

TABLA 10. TASAS DE APRENDIZAJE ESCOGIDAS PARA EL ENTRENAMIENTO DE LA RED

NEURONAL DE CLASIFICACIÓN RURAL – NO RURAL. .............................................................. 44

TABLA 11. VALOR DEL PARÁMETRO AUC PARA CADA UNO DE LOS MÉTODOS PROPUESTOS

AL VARIAR EL NÚMERO DE NEURONAS EN LA CAPA OCULTA. ............................................ 45

TABLA 12. VALOR DEL PARÁMETRO AUC PARA CADA UNO DE LOS MÉTODOS PROPUESTOS

AL VARIAR EL NÚMERO DE NEURONAS EN LA PRIMERA CAPA OCULTA. .......................... 46

TABLA 13. VALOR DEL PARÁMETRO AUC PARA CADA UNO DE LOS MÉTODOS PROPUESTOS

AL VARIAR EL NÚMERO DE NEURONAS EN LA SEGUNDA CAPA OCULTA ......................... 46

TABLA 14. PARÁMETRO AUC Y MEJOR UMBRAL OBTENIDOS A PARTIR DEL PROCESO DE

VALIDACIÓN CRUZADA. ................................................................................................................... 47

TABLA 15. MATRIZ DE CONFUSIÓN EN EL MODELO DE COLOR YUV PARA EL CLASIFICADOR

DE IMÁGENES RURALES Y NO RURALES...................................................................................... 47

TABLA 16. CANTIDAD DE NEURONAS EN LA CAPA OCULTA PARA CLASIFICADOR

MULTICLASE. ....................................................................................................................................... 48

TABLA 17. TASAS DE APRENDIZAJE ESCOGIDAS PARA EL ENTRENAMIENTO DE LA RED

NEURONAL DE CLASIFICACIÓN DE COBERTURAS. ................................................................... 48

Page 18: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

xv

TABLA 18. VALOR DEL PARÁMETRO AP PARA CADA UNO DE LOS MÉTODOS PROPUESTOS AL

VARIAR EL NÚMERO DE NEURONAS EN LA CAPA OCULTA PARA LA CLASIFICACIÓN DE

COBERTURA DE ÁRBOLES. ............................................................................................................... 49

TABLA 19. VALOR DEL PARÁMETRO AP PARA CADA UNO DE LOS MÉTODOS PROPUESTOS AL

VARIAR EL NÚMERO DE NEURONAS EN LA CAPA OCULTA PARA LA CLASIFICACIÓN DE

COBERTURA DE CÉSPED. .................................................................................................................. 49

TABLA 20. VALOR DEL PARÁMETRO AP PARA CADA UNO DE LOS MÉTODOS PROPUESTOS AL

VARIAR EL NÚMERO DE NEURONAS EN LA CAPA OCULTA PARA LA CLASIFICACIÓN DE

COBERTURA DE SUELO DESCUBIERTO. ........................................................................................ 49

TABLA 21. VALOR DEL PARÁMETRO AP PARA CADA UNO DE LOS MÉTODOS PROPUESTOS AL

VARIAR EL NÚMERO DE NEURONAS EN LA CAPA OCULTA PARA LA CLASIFICACIÓN DE

COBERTURA DE CUERPOS DE AGUA. ............................................................................................ 50

TABLA 22. PARÁMETRO AP Y MEJOR UMBRAL OBTENIDOS A PARTIR DEL PROCESO DE

VALIDACIÓN CRUZADA. ................................................................................................................... 51

TABLA 23. MATRIZ DE CONFUSIÓN PARA LA CLASIFICACIÓN DE COBERTURA DE ÁRBOLES.

................................................................................................................................................................. 51

TABLA 24. MATRIZ DE CONFUSIÓN PARA LA CLASIFICACIÓN DE COBERTURA DE CÉSPED.. 52

TABLA 25. MATRIZ DE CONFUSIÓN PARA LA CLASIFICACIÓN DE COBERTURA DE SUELO

DESCUBIERTO. ..................................................................................................................................... 52

TABLA 26. MATRIZ DE CONFUSIÓN PARA LA CLASIFICACIÓN DE COBERTURA DE CUERPOS

DE AGUA. .............................................................................................................................................. 52

TABLA 27. CANTIDAD DE IMÁGENES RECUPERADAS E IMÁGENES RELEVANTES.................... 65

TABLA 28. CANTIDAD DE IMÁGENES RECUPERADAS E IMÁGENES RELEVANTES.................... 65

TABLA 29. CANTIDAD DE IMÁGENES RECUPERADAS E IMÁGENES RELEVANTES.................... 66

TABLA 30. CANTIDAD DE IMÁGENES RECUPERADAS E IMÁGENES RELEVANTES.................... 66

TABLA 31. PARÁMETROS DE CLASIFICACIÓN OBTENIDOS DE LA RED NEURONAL DE

COBERTURAS. ...................................................................................................................................... 72

TABLA 32. LISTA DE REQUERIMIENTOS CUMPLIDOS EN EL DESARROLLO DEL SOFTWARE

DE RITAQDA. ........................................................................................................................................ 76

Page 19: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

xvi

ÍNDICE DE ABREVIATURAS

ACC: Accuracy

AP: Average Precision

AUC: Area Under Curve

CAQDAS: Computer-assisted qualitative data analysis software

CBIR: Content-Based Information Retrieval

ERR: Equal Error Rate

FLOSS: Free, Libre, Open Source Software

FN: False Negative

FP: False Positive

FPR: False Positive Rate

MSE: Mean Squared Error

PCA: Principal Component Analysis

PPV: Positive Predictive Value

QBIC: Query By Image Content

RITA: Red de Investigaciones de Tecnología Avanzada

ROC: Receiver Operating Charasteristic

SPC: Specificity

TBIR: Text-Based Information Retrieval

TN: True Negative

TP: True Positive

TPR: True Positive Rate

VIR: Visual Information Retrieval

Page 20: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

1

1. GENERALIDADES

1.1. PLANTEAMIENTO DEL PROBLEMA

Los programas informáticos para la ayuda del análisis de datos cualitativos son herramientas que

nos facilitan la larga tarea de reducir los datos obtenidos en el proceso de investigación dentro de

un paradigma cualitativo. Dichas herramientas, comúnmente denominadas CAQDAS(Computer-

assisted qualitative data analysis software), permiten la indexación, codificación y etiquetado de

texto, video, audio e imágenes de una forma organizada para los investigadores (Saldaña, 2015).

La Red de Investigaciones de Tecnología Avanzada RITA UD se encuentra en proceso de

desarrollo de una herramienta CAQDAS de código abierto llamada RITAQDA que será

implementada a través de un servicio web. RITAQDA es un proyecto en desarrollo que emprendió

RITA en el año 2016 al servicio de la Universidad Distrital Francisco José de Caldas. El desarrollo

de este software está contemplado en 4 fases, en las cuales se implementará la codificación de

texto, imagen, audio y video (Rita, 2016).

Actualmente la herramienta se encuentra en la fase de codificación de imágenes y se desea realizar

un módulo capaz de etiquetarlas de manera autónoma. La propuesta de la presente monografía

plantea en la utilización de la técnica de recuperación de información visual basada en contenido

CBIR (Content-Based Information Retrieval) con el objetivo de etiquetar y codificar según la

metodología del análisis de datos cualitativos.

La recuperación de información de imágenes basada en contenido es uno de los dos tipos de

enfoque de recuperación de información visual VIR (Visual Information Retrieval) que consiste

en extraer información de una imagen para clasificarla de tal forma que la descripción de la imagen

se acerque lo más posible a la percepción de similitud de los usuarios. Los sistemas CBIR utilizan

la información del contenido visual de la imagen como puede ser el color, la forma o la textura,

para dar un contenido semántico a la misma y a partir de este buscar imágenes semánticamente

similares dentro de una base de datos (La Serna Palomino, Contreras, & Ruiz, 2010a). El otro

Page 21: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

2

enfoque, la recuperación de información basada en texto TBIR (Text-Based Information

Retrieval), utiliza conceptos y textos asociados a la imagen para la recuperación de información

(Castro, 2009).

Desde la década de los 90 se viene investigando la forma de sustituir los sistemas TBIR,

empezando a utilizar los sistemas CBIR o enfoques híbridos(Castro, 2009), siendo la clasificación

de una imagen en un sistema CBIR una tarea que consiste en convertir los datos cuantitativos de

la imagen (información extraída de la imagen) en datos cualitativos (temas o clases que pertenece

una imagen) (Lizarazo, 2008). Los modelos de clasificación de imágenes se dividen

principalmente en modelos estadísticos tradicionales y los modelos de inteligencia artificial. Los

modelos de clasificación basado en inteligencia artificial son preferidos por encima de los modelos

estadísticos tradicionales en la medida en que los algoritmos basado en inteligencia artificial han

superado inconvenientes que los métodos estadísticos tradicionales no han podido superar (Bayona

& Salcedo, 2012). Algunos autores como (Pitarque, Roy, & Ruiz, 1998) han concluido la

superioridad de los métodos de inteligencia artificial luego de haber comparado el rendimiento de

estos con los modelos estadísticos tradicionales. En aplicaciones de inteligencia artificial para

clasificación de imágenes relativas a los sistemas CBIR, se ha utilizado las redes neuronales,

principalmente por su eficiencia a la hora de clasificar como lo corroboran (Erande & Badadapure,

2013) y (Shereena & David, 2014).

Los sistemas CBIR basados en redes neuronales tienen múltiples aplicaciones sin embargo no se

ha evidenciado la existencia de herramientas de análisis cualitativo que implementen dicho

concepto. Por lo tanto, la pregunta de investigación en la presente monografía es la siguiente: ¿Es

posible implementar un sistema CBIR basado en redes neuronales feedforward que clasifique

imágenes rurales y algunas coberturas y pueda ser utilizado en la codificación y etiquetado de esas

imágenes dentro del módulo de imágenes del software de análisis de datos cualitativos RITAQDA?

Page 22: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

3

1.2. JUSTIFICACIÓN

La presente monografía busca implementar un sistema CBIR en el módulo de imágenes para la

plataforma de datos cualitativos de RITAQDA, puesto que dicha plataforma, actualmente en

desarrollo carece de esta función. Dicho módulo representa una ventaja para los investigadores de

la universidad Distrital Francisco José De Caldas al ofrecer una herramienta CAQDAS propia, con

etiquetado autónomo.

La mayoría de las herramientas CAQDAS existentes en el mercado como por ejemplo Atlas o

Aquad, son de pago y tienen restricciones en la cantidad de usuarios que pueden acceder, además

de no permitir realizar mejoras debido a que son herramientas de código cerrado (Atlas.ti, 2014;

Huber & Gürtler, 2013). Por lo anterior se hace necesario contribuir al desarrollo de herramientas

que cumplan con el enfoque FLOSS (Free, Libre, Open Source Software) (Stalman, 2013) y

RITAQDA es una iniciativa que cumple con dicho enfoque.

Además el presente proyecto se justifica puesto que es una iniciativa que puede como lo afirma

(Vasilachis de Gialdino, Ameigeira, & Chernobilsky, 2006) beneficiar y enriquecer los procesos

de análisis cualitativo y la calidad de las investigaciones realizadas por sus usuarios, en la

universidad Distrital Francisco José de caldas.

Por otra parte, en un aspecto similar a los sistemas TBIR , los programas de análisis de datos

cualitativos CAQDAS realizan la indexación de las imágenes y su contenido visual mediante

palabras clave, asignando códigos y categorías a las mismas (Rodríguez Gómez, Gil Flores, &

García Jiménez, 2011). Sin embargo, dicha tarea también podría realizarse utilizando descriptores

de bajo nivel como lo son el color, la forma y la textura, características que utilizan los sistemas

CBIR (Castro, 2009).

Si bien la desventaja de un sistema CBIR es su alto consumo computacional al tener que realizar

una gran cantidad de operaciones complejas, el sistema CBIR presenta ventajas frente al sistema

TBIR como por ejemplo con la representación semántica de la imagen que en los sistemas TBIR

es subjetiva y depende de la interpretación del significado del texto asociado a la imagen mientras

Page 23: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

4

que en los sistemas CBIR es objetiva y depende de las características extraídas de la imagen

(Grubinger, 2007).

Algunos autores que utilizan los sistemas CBIR para la clasificación y reconocimiento de imágenes

se pueden encontrar en la bibliografía. Entre ejemplos de clasificación de imágenes se encuentra

trabajos desarrollados por (Castrillon, Alvarez, & López, 2008), (Córdoba, Puentes, & Otero,

2006) los cuales utilizan como descriptor de textura los PCA (Principal Component Analisys).

Otros trabajos desarrollados por (La Serna Palomino, Contreras, & Ruiz, 2010b), (P. Sardey & G.

K, 2015) consideran mejor el uso de descriptores de color como los histogramas. Un tercer método

también encontrado en la bibliografía utilizada por (Rogé et al., 2013) considera el uso de los

momentos invariantes como descriptor de forma.

En algunas investigaciones (Shirazi et al., 2016; Vegad & Italiya, 2015) es posible evidenciar el

uso de los anteriores descriptores como características de entrada para los sistemas CBIR que se

basan en redes neuronales. Las redes neuronales se utilizan en reconocimiento de imágenes debido

a su eficiencia frente a los métodos estadísticos tradicionales tal como lo mencionan (Shereena &

David, 2014). Es así como se aprecia el uso de la redes neuronales feed-forward para la

recuperación de información mediante contenido visual en los trabajos de (Karamti, Tmar, &

Gargouri, 2014; Nithya, 2013; Vegad & Italiya, 2015). Esto se debe su simplicidad y suficiencia

para resolver problemas de clasificación.Sin embargo, las redes neuronales en general tienen el

inconveniente de tener un costo computacional alto a la hora de ser entrenadas (Lizarazo, 2008),

aunque así mismo (Castro, 2009) afirma que a la hora de realizar la recuperación de información

se privilegia la eficiencia en la misma sobre el tiempo invertido en entrenar al sistema.

Entre los modelos de color utilizados para la representación de los descriptores de imágenes se

encuentra el modelo de color RGB el cual es ampliamente utilizado para mostrar gráficos de

computadores debido a la similitud con la cual trabaja el sistema visual humano (Science &

Studies, 2015). Algunos autores en cambio prefieren trabajar en otros modelos de color diferente

del RGB debido a que no es muy intuitivo al momento de manejarlo (Bratkova, Boulos, & Shirley,

n.d.) En trabajos, como por ejemplo el realizado por (Sudhir, 2011), se propone el uso del modelo

de color YUV debido a que con ese modelo de color se puede separar las componentes cromáticas

Page 24: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

5

y acromáticas del color y por ende representar más fielmente la percepción de color de los seres

humanos. En el mismo trabajo se mostró que un sistema CBIR manejado en espacio de color YUV

posee mayor rendimiento y recuperación de imágenes que aquellos sistemas con espacio de color

RGB y HSV.

La clasificación de imágenes rurales y sus coberturas se justifica por el hecho de que RITA posee

a su disposición una base de datos de imágenes aéreas tomadas por drones entre las que se

encuentra imágenes de tipo rural, de ahí el crear un clasificador que permita identificar imágenes

de tipo rural y no rural. Además, la clasificación de coberturas utilizando sistema CBIR con

modelo de clasificación basado en inteligencia artificial ha sido estudiado y desarrollado como se

muestra en los trabajos de (Bayona & Salcedo, 2012) , (Espín, 2015), (Giraldo & Barrero, 2012)

entre otros. La cantidad de coberturas a clasificar se pueden encontrar en un rango típico entre 3 y

7 como lo menciona (Espín, 2015).

1.3. OBJETIVOS

1.3.1. OBJETIVO GENERAL

Desarrollar e integrar un sistema CBIR basado en redes neuronales feed-forward para el módulo

de imágenes del software de análisis de datos cualitativos RITAQDA.

1.3.2. OBJETIVOS ESPECÍFICOS

● Programar los algoritmos de extracción de características y de red neuronal feed-forward

en software.

● Evaluar el desempeño de la red neuronal para la clasificación de imágenes rurales y no

rurales.

● Evaluar el desempeño de la red neuronal para la clasificación de coberturas en imágenes

rurales.

● Desarrollar y programar el módulo de imágenes de RITAQDA, implementando el

sistema de extracción de características y red neuronal feed-forward.

Page 25: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

6

1.4. ANTECEDENTES

Los primeros sistemas de recuperación de información visual VIR se dan con el auge de la

multimedia y la digitalización de la información visual. Uno de los pioneros en lo que se refiere a

la participación de las computadoras en el proceso de recuperación de información de imágenes,

Ivan Sutherland, demostró la viabilidad de la creación, manipulación y almacenamiento

computarizado de imágenes ya en 1963. Sin embargo, los muy altos costos de hardware

obstaculizaron el éxito de las imágenes digitales durante mucho tiempo, tardando hasta finales de

la década de 1980 en donde la tecnología finalmente se consolidó (Grubinger, 2007). Para ese

tiempo, los primeros trabajos de recuperación de imágenes se basaban en la recuperación de texto.

Para la década de 1990 aparecieron los primeros sistemas de recuperación de información basada

en contenido. En el trabajo realizado por (Kato, 1992) se hacía una comparación manual en la

intensidad de los pixeles usando como ejemplo unas figuras de distintas formas y colores y luego

guardando información en una base de datos relacional. A partir de ese tiempo, se han realizado

gran variedad de trabajos que involucran ese tema. Por ejemplo en (Shirazi et al., 2016) se realizó

un sistema que clasifica y recupera información de imágenes de hojas de plantas utilizando como

descriptores los histogramas y la detección de bordes. Otro sistema similar fue implementado por

(Vegad & Italiya, 2015) el cual realiza el mismo procedimiento para nueve tipos de fruta,

utilizando los histogramas normalizados y realizando la clasificación mediante una red neuronal.

En el tema concerniente a la clasificación de coberturas podemos encontrar trabajos como el de

(Arango, Branch, & Botero, 2005) en el cual se clasificaron 8 tipos de coberturas mediante un

método de máxima similitud y se aplicó el algoritmo no supervisado SOM e ISOATA concluyendo

que dichos métodos no ofrecían una buena convergencia. Otro trabajo encontrado en el área de las

coberturas fue el de (Córdoba et al., 2006) en el cual se realizó la clasificación utilizando métodos

supervisados y no supervisados a partir de descriptores como las bandas espectrales y el uso de

análisis de componentes principales como método de obtención de características, obteniendo

mejores resultados con los métodos supervisados.

En el campo comercial se pueden encontrar varias herramientas desarrolladas que implementan el

sistema CBIR. Ejemplos de esos sistemas son las herramientas QBIC, NeTra y Virage entre otros.

Page 26: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

7

QBIC fue desarrollado por IBM para explorar algunos métodos de recuperación basada en

contenido permite consultas en grandes bases de datos de imágenes y videos basadas en imágenes

de ejemplo, croquis y dibujos construidos por el usuario y patrones de color y textura seleccionados

(Flickner et al., 1995). NeTra es un prototipo de sistema CBIR que se caracteriza por usar un

algoritmo automatizado robusto de segmentación de imágenes que permite la búsqueda basada en

objetos o regiones (Ma & Manjunath, 1999). El sistema Virage utiliza características tales como

color, textura, composición, y estructura para buscar imágenes. Sin embargo, su más reciente

versión ha utilizado varias técnicas nuevas para incluir información espacial en las

representaciones de imágenes (Bach et al., 1996). Una comparativa entre las herramientas CBIR

desarrolladas respecto a los descriptores que utilizan se puede encontrar en el artículo de (Shirazi

et al., 2016)

En el campo de las herramientas CAQDAS, los sistemas CBIR aún no se han implementado En

casos similares de indexación, como por ejemplo los motores de búsqueda de Google pudiera

parecer que los buscadores de imágenes utilizan el análisis y la comparación de imágenes, pero en

realidad la búsqueda se basa principalmente en el nombre del archivo que contiene la imagen, en

el nombre del enlace o en el texto que aparece en la página donde se encuentra la imagen. Es decir

que la búsqueda se basa en información de texto y no en información gráfica (Google, 2010).

Actualmente se han desarrollado aplicaciones como “Google Goggles” basadas en el

reconocimiento de imágenes utilizando el contenido de las mismas, aunque para ello se centran en

un subconjunto de las imágenes que Google ha catalogado previamente ya que el análisis y

comparación de imágenes digitales requiere de un coste computacional muy alto.

En campos de investigación como la antropología los CAQDAS han sido utilizados desde sus

orígenes como método principal de análisis. En cambio, en otros campos tales como las ciencias

humanas ha tenido lugar un desarrollo conflictivo debido a la aparición de una dualidad entre el

conocimiento adquirido a través de datos estadísticos y el conocimiento adquirido por la acción

(Alarcón Venegas, Quijada Carrasco, & Ponce Pérez, 2012; Rodríguez Gómez et al., 2011).

Actualmente se han desarrollado programas que, basados en los datos cualitativos, facilita la larga

tarea de reducir los datos obtenidos y permite generar una mejor organización en la información

que se requiera buscar. Estos programas que implementan herramientas de análisis cualitativo

Page 27: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

8

QDA ya existen en el mercado actual y poseen funciones tales como organización e integración

de datos, búsqueda y recuperación de información, vinculación, representación gráfica y trabajo

en equipo. Algunos de los softwares que se pueden encontrar de este tipo son:

NUD*IST, ATLAS.ti, AQUAD, Ethnograph, WINMAX, MAXQDA y QDA Miner.

Page 28: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

9

2. MARCO TEÓRICO

En este capítulo se exhiben los conceptos teóricos relativos a la pregunta propuesta en el

planteamiento del problema. El hecho de exponer estos conceptos pretende ofrecer una

contextualización del problema y proveer una primera visión de una posible respuesta a la pregunta

planteada. Por lo tanto, se cubren temas relativos al análisis de datos en la investigación cualitativa,

la imagen digital, la recuperación de imágenes por contenido visual CBIR(Content Based Image

Retrieval) (Kumar & Gopal, 2010), los modelos de color, las redes neuronales feedforward,

técnicas de extracción de características en imágenes y reducción de dimensionalidad. Siendo

dichos temas el núcleo de construcción del proyecto.

2.1. ANÁLISIS DE DATOS EN LA INVESTIGACIÓN CUALITATIVA

En la investigación cualitativa una fase importante que se lleva a cabo durante todo el proceso es

el análisis de los datos recolectados. Dichos datos pueden representar información visual,

información auditiva e información textual.(Hernandez Sampieri, Fernandez Collado, & Baptista

Lucio, 2010a).

El análisis de los datos cualitativos debe ser sistemático, es decir seguir una secuencia y un orden.

Los pasos que realiza un investigador comprenden las siguientes tres fases:

1. Recolección de datos.

2. Ordenar la información.

3. Codificar y categorizar la información organizada.

4. Integrar la información.

La codificación es el proceso mediante el cual se agrupa la información en categorías que

concentran las ideas, conceptos o temas similares descubiertos por el investigador. Los códigos

son etiquetas asociadas a trozos de información (auditiva, visual, y/o textual) que pueden ser

agrupados en categorías. Los códigos se utilizan para recuperar y organizar los trozos de

información (Fernández Núñez, 2006).

Page 29: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

10

En la actualidad las herramientas CAQDAS facilitan al investigador la codificación y

categorización de la información pero de ninguna manera sustituye el análisis creativo del

investigador (Hernandez Sampieri, Fernandez Collado, & Baptista Lucio, 2010b).

2.2. RECUPERACIÓN DE LA INFORMACIÓN VISUAL

La recuperación de información visual VIR (Visual Information Retrieval), es un campo de

investigación relativamente nuevo, en las ciencias de la computación y la ingeniería. El propósito

de los sistemas VIR, al igual que los sistemas convencionales de recuperación de información, es

obtener todas las imágenes o videos relevantes a una consulta realizada por un usuario. (Marques

& Furht, 2002). La razón del desarrollo de este tipo de sistemas es la gran cantidad de información

multimedia existente y la incapacidad de los sistemas convencionales de asignar automáticamente

números o palabras claves, asociándolas con una categorización o descripción (Kumar & Gopal,

2010). El objetivo principal de un VIR es, sin duda, "encontrar una imagen o un conjunto de

imágenes que un usuario está buscando dentro de una base de datos de imágenes o una colección

de imágenes" (Grubinger, 2007).

Según (Castro, 2009) es posible identificar tres enfoques diferentes dentro de los sistemas VIR:

− Recuperación basada en Texto TBIR (Text Based Image Retrieval).

− Recuperación basada en contenido CBIR (Content Based Image Retrieval).

− Combinación de TBIR y CBIR.

Según (Castro, 2009) la construcción de un sistema VIR sigue cuatro etapas de desarrollo:

1. Extracción de características: A cada imagen se le extrae información necesaria para

describirla.

2. Indexación: La información extraída es indexada y almacenada en una base de datos para

su posterior recuperación.

3. Recuperación: A partir de una imagen se busca imágenes con contenido similar utilizando

los índices.

4. Evaluación: Se mide la calidad de recuperación del sistema.

Page 30: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

11

2.2.1. RECUPERACIÓN DE IMÁGENES BASADA EN CONTENIDO CBIR

En la presente investigación, se aborda el tema desde el enfoque CBIR, el cual según (Kumar &

Gopal, 2010; Martínez Comeche, 2013) comprende la recuperación de los rasgos propios de la

imagen, como el color, la forma y la textura, características que no abordan los sistemas TBIR.

En la Figura 1 se muestra el esquema de un sistema de recuperación de información visual CBIR

en términos generales:

Figura 1. Sistema CBIR. Tomado de (Meléndez Acosta, Figueroa Rios, & Marín Hernández,

2013).

Como se observa en la Figura 1 un sistema CBIR consta de varios módulos como: una interfaz

gráfica de usuario, extracción de características, vectores de características, base de datos de

imágenes y una función de similitud. Los fundamentos teóricos se enuncian en las siguientes

secciones.

2.3. LA IMAGEN DIGITAL

Una imagen es una función de dos dimensiones que representa la medida de características como

brillo o color de una escena vista, y representa una proyección de una escena en tres dimensiones

sobre una de dos dimensiones. Matemáticamente puede ser vista como una función f(x,y) donde

Page 31: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

12

por cada posición (x,y) representa un punto en el plano de proyección y f(x,y) define la intensidad

de luminosidad en dicho punto. Si dicha función posee un rango continuo de valores nos

encontramos ante una imagen analógica, por el contrario, si el rango de valores es discreto se trata

de una imagen digital(Jayaraman, Esakkirajan, & Veerakumar, 2011). Es decir, una imagen digital

de N×M formalmente se puede aproximar mediante una función matricial como se muestra en la

ecuación (1).

𝑓(𝑥, 𝑦) = [

𝑓(1,1) 𝑓(1,2) ⋯ 𝑓(1, 𝑀)𝑓(2,1) 𝑓(2,2) ⋯ 𝑓(2, 𝑀)

⋮ ⋮ ⋱ ⋮𝑓(𝑁, 1) 𝑓(𝑁, 2) ⋯ 𝑓(𝑁, 𝑀)

] (1)

Una imagen digital está compuesta por elementos llamados pixeles. Un pixel es la muestra más

pequeña que pueda existir de una imagen (Jayaraman et al., 2011). Si se trata de imágenes color

natural RGB un pixel se representa mediante una terna de valores que corresponden a la intensidad

de brillo en las bandas RGB (Red Green Blue) en un punto. En la Figura 2 se puede ver un ejemplo

de una imagen digital en escala de grises, así como el valor de intensidad de gris correspondiente

a cada pixel.

Figura 2. Representación de una imagen digital. Tomado de (Aristizábal Ramírez & Ramírez Martínez, 2006).

2.4. MODELOS DE COLOR

Para (Ford & Roberts, 1998) un modelo de color es un método a través del cual los seres humanos

especifican, crean y visualizan el color, teniendo en cuenta atributos como el brillo y el matiz. Una

definición más formal es provista por (Jack, 2009) quien afirma que un modelo de color es una

representación matemática de un conjunto de colores. Los modelos usualmente permiten la

Page 32: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

13

representación del color mediante un sistema de varias coordenadas o parámetros que indican la

posición del color dentro de dichos modelos (Ford & Roberts, 1998).

Los tres modelos de color más populares según (Jack, 2009) son el RGB (usado para los gráficos

de computadora), el YUV y sus variantes YIQ, YCbCr (usado en los sistemas de video) y el

CMYK (usado en impresión).

2.4.1. MODELO DE COLOR RGB.

El rojo verde y azul RGB (Red Green and Blue por sus siglas en inglés) es un sistema de color

aditivo basado en la teoría tri-cromática (Ford & Roberts, 1998), es decir cada color se forma por

la combinación (suma) de cantidades o niveles de cada una de sus bandas. El RGB es un modelo

representado por un sistema de coordenadas cartesiano como el que se observa en la Figura 3, en

el cual la diagonal, que combina cada color en cantidades iguales, representa la escala de grises

(Plataniotis & Venetsanopoulos, 2000).

Figura 3. Cubo RGB. Tomado de (Plataniotis & Venetsanopoulos, 2000).

Como se observa en la Figura 3 cada color en el modelo RGB es un subconjunto de dicho modelo,

generado por la combinación de los colores primarios. Si se usa una escala apropiada en los ejes

primarios, el modelo se puede normalizar para que el valor máximo de cada uno de ellos sea 1. Es

así como el color negro puede ser representado con la coordenada (0,0,0) mientras que el blanco

se representa con la coordenada (1,1,1) (Plataniotis & Venetsanopoulos, 2000).

Page 33: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

14

Como se expuso en el párrafo anterior el modelo de color RGB es un sistema de coordenadas

normalizado en el rango [0 1], sin embargo, cuando los colores son utilizados en forma digital, las

librerías de software traducen el valor de coma flotante a un valor entero de 8 bits cuyo rango es

[0 255] (Plataniotis & Venetsanopoulos, 2000). Es así como la representación para el blanco queda

en la coordenada (255,255,255).

El modelo de color RGB es muy utilizado por lo tanto en aplicaciones digitales, sin embargo, no

es muy eficiente cuando se trata de reproducir los colores del mundo real. Todos sus componentes

necesitan el mismo ancho de banda para generar un color en el cubo RGB lo que hace a dicho

método demasiado costoso para la transmisión. Por esta razón se han diseñado otros estándares de

video derivados del RGB que utilizan la luminancia y la diferencia de 2 señales de color, como el

YUV y sus derivados YIQ y YCbCr (Jack, 2009).

2.4.2. MODELO DE COLOR YUV

El modelo de color YUV y su derivado YIQ son usados por los estándares de video compuesto

PAL (Phase Alternation Line), NTSC (National Television System Committee) y SECAM

(Sequentiel Couleur Avec Mémoire or Sequential Color with Memory) (Jack, 2008), mientras que

YCbCr es utilizado en el estándar de televisión digital. En dicho modelo la componente Y está

referida a la información de escala de grises o Luminancia, mientras que las componentes U y V

hacen referencia a la información de crominancia (Noor, Mokhtar, Rafiqul, & Pramod, 2012).

Figura 4. Modelo de color YUV. Tomado de (Noor et al., 2012).

Page 34: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

15

En la Figura 4 se observa como el modelo de color YUV contiene al RGB, por lo tanto, es

posible transformar un punto desde el modelo RGB al modelo YUV. En la ecuación (2) se

presenta la matriz de transición que realiza dicha transformación.

[𝑌𝑈𝑉

] = [0,299 0,587 0,114

−0,147 −0,289 0,4360,615 −0,515 −0,1

] [𝑅𝐺𝐵

] (2)

Y de manera análoga para transformar un punto desde el modelo YUV al RGB tenemos una matriz

como la de la ecuación (3):

[𝑅𝐺𝐵

] = [1 0 1,1401 −0,395 −0,5811 2,032 0

] [𝑌𝑈𝑉

] (3)

2.5. EXTRACCIÓN DE CARACTERÍSTICAS EN IMÁGENES

Una característica es definida como una función de una o más variables, que especifican alguna

propiedad cuantificable de un objeto. En el caso particular del procesamiento digital de imágenes

dicho elemento puede hacer referencia a generalidades como el color, la textura y la forma, o a

particularidades como las caras, las huellas, que pertenecen a un dominio específico (Choras,

2007).

En las siguientes subsecciones, se presenta una descripción teórica de las características extraídas

en la presente monografía.

2.5.1. HISTOGRAMAS

Un histograma de una imagen digital, es un diagrama de barras el cual representa la cantidad de

pixeles que existen dentro de la misma, pertenecientes a un nivel de brillo (Phillips, 2000), en el

caso de imágenes codificadas con 8 bits dichos niveles varían en un rango de 0 a 255.

En la Figura 5 se observa una imagen de un ojo y su respectivo histograma (Nixon & Aguado,

2012). El histograma en este caso representa una funcionen cuyas abscisas se representa el nivel

Page 35: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

16

de gis y en cuyas ordenadas se representa la cantidad de pixeles que corresponden a cada nivel de

gris.

Figura 5. Imagen de un ojo y su respectivo histograma. Tomado de (Nixon & Aguado, 2012).

2.5.2. MOMENTOS DE COLOR

En la teoría de probabilidad, una distribución de probabilidad puede ser caracterizada mediante

sus momentos. En el caso de una imagen, se puede interpretar la distribución de sus pixeles como

una distribución de probabilidad que también pueden ser representadas por momentos. Los

momentos de color pueden caracterizar la distribución del color dentro de dicha imagen (Afifi,

2011).

Los momentos de primer, segundo y tercer orden han probado ser eficientes y efectivos en la

representación de la distribución de color de imágenes (Afifi, 2011). Dichos momentos de primer

a tercer orden se representan mediante la media (E), la desviación estándar (σ) y la asimetría (s)

respectivamente.

Los momentos de color son las siguientes:

• Primer momento: media

𝐸𝑖 =1

𝑁∑ 𝑝𝑖𝑗

𝑁

𝑗=1

(4)

Page 36: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

17

• Segundo momento: desviación estándar

σ𝑖 = √1

𝑁∑(𝑝𝑖𝑗 − 𝐸𝑖)

2𝑁

𝑗=1

2

(5)

• Tercer momento: asimetría

s𝑖 = √1

𝑁∑(𝑝𝑖𝑗 − 𝐸𝑖)

3𝑁

𝑗=1

3

(6)

Donde pij es el valor de la intensidad del j-ésimo pixel del i-ésimo canal.

2.5.3. ANÁLISIS DE COMPONENTES PRINCIPALES PCA

El análisis de componentes principales (PCA Principal Components Analysis) es una formulación

matemática usada para la reducción de dimensiones (Santo, 2012). Dicha Formulación también

denominada transformación de Karhunen Loeve, utiliza técnicas de factorización desarrolladas en

el álgebra línea l(Nixon & Aguado, 2012). En dichas técnicas los datos son proyectados sobre un

subespacio generado por un sistema de ejes ortogonales, los cuales pueden ser obtenidos utilizando

el método de descomposición de valores singulares SVD (Singular Values Decomposition) (Santo,

2012).

Para el cálculo de los PCA de una imagen digital se parte de su representación matricial como se

enunció en la ecuación (1) aplicando una corrección para que las columnas de la matriz tengan

media cero y varianza unitaria. A partir de la imagen corregida se calcula la matriz de covarianza

C de la imagen, multiplicando la matriz 𝑓(𝑥, 𝑦) corregida, por su transpuesta, como se muestra en

la ecuación (7).

𝐶 = 𝑓(𝑥, 𝑦) • 𝑓(𝑥, 𝑦)𝑇 (7)

A continuación, se utiliza un procedimiento de algebra lineal en el que se calculan los valores y

vectores propios de la matriz de covarianza. Las columnas de la matriz de vectores propios

Page 37: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

18

obtenida de este procedimiento representan los componentes principales de la imagen (Santo,

2012).

2.6. REDES NEURONALES FEED-FORWARD

Las redes neuronales son clasificadores muy robustos. Buscan asemejarse al cerebro humano y sus

interconexiones de neuronas. Cada neurona consta de una cantidad de entradas igual al número de

características del objeto que se desea clasificar. Cada una de estas entradas es lo que se denomina

una sinapsis. Cada sinapsis tiene un peso asociado (wki) el cual se multiplica por la característica

de entrada correspondiente. Luego todas las sinapsis se unen mediante un operador de suma al que

se le aplica una función de activación. En la Figura 6 se presenta el modelo de una neurona

artificial (Shih, 2010).

Figura 6. Modelo de una neurona. Tomado de (Shih, 2010).

En cada neurona:

𝑣𝑘 = ∑ 𝑤𝑘𝑗𝑥𝑗 + 𝑏𝑘

𝑚

𝑗=1

(8)

la función de activación 𝜑(∙) puede tener varias formas:

• Función umbral 𝜑(𝑣) = {1 𝑠𝑖 𝑣 ≥ 00 𝑠𝑖 𝑣 < 0

• Función sigmoide 𝜑(𝑣) =1

1+𝑒−𝑎𝑣

• Función tangente hiperbólica: 𝜑(𝑣) = tanh (𝑣)

Page 38: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

19

Una red neuronal feed-forward consiste en una red neuronal compuesta de varias capas de

neuronas colocadas en serie. La capa de neuronas que reciben el aprendizaje, los datos o señales

del entorno se denomina capa sensorial. La capa de neuronas encargadas de proporcionar la

respuesta de la red se denomina capa de salida. Una capa de neuronas intermedias entre la capa

sensorial y la capa de salida que no tiene conexión directa con el entorno, es decir no recibe

estímulos ni genera una respuesta final de la red, se denomina la capa oculta. Las neuronas de la

capa oculta, gracias a que se encuentran en el intermedio de la red neuronal, proporciona grados

de libertad a la red en general las cuales le permite aprender y representar más fehacientemente

determinadas características del entorno que trata de modelar (Gonzalez, 2016).

Figura 7. Modelo de capas de una red feedforward. Tomado de (Gonzalez, 2016).

2.6.1. TIPOS DE REDES NEURONALES FEED-FORWARD

2.6.1.1. PERCEPTRÓN SIMPLE:

Esta es una neurona de aprendizaje supervisado, formada por una capa sensorial de m neuronas y

una capa de salida de una sola neurona. Las neuronas de entrada son discretas y la función de

activación de las neuronas de la capa de salida es de tipo escalón.

Figura 8. Perceptrón simple tomado de (Gonzalez, 2016).

Page 39: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

20

Es un dispositivo entrenable que puede determinar automáticamente los pesos sinápticos. El

entrenamiento de la neurona se da a través de los cambios en los pesos hasta lograr la salida

deseada (Gonzalez, 2016).

2.6.1.2. PERCEPTRÓN MULTICAPA:

Este modelo por una capa sensorial, una capa de salida y una capa oculta. El perceptrón multicapa

corrige el problema del perceptrón simple de solo poder resolver problemas separados linealmente.

Es una de las arquitecturas más utilizadas para resolver problemas real (Gonzalez, 2016).Consiste

de m entradas, cada una esas entradas se conecta a cada una de las m neuronas de la capa oculta.

Cada una de las m neuronas ocultas se conectan a la única neurona de salida.

Figura 9. Perceptrón multicapa tomado de (Gonzalez, 2016).

2.6.1.3. RED ADALINE:

Es muy similar a la red Perceptrón con la diferencia de que su función de activación es lineal en

lugar de ser un escalón como es el caso del Perceptrón. Este tipo de red presenta la misma

limitación del Perceptrón simple respecto al tipo de problemas que pueden resolver, ya que ambas

redes sólo pueden resolver problemas linealmente separables (Gonzalez, 2016).

2.6.1.4. RED MADALINE:

La red Madaline es una mejora de la red Adaline al combinar en una sola red el diseño de la red

Perceptrón multicapa con la red Adaline.

Page 40: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

21

Figura 10 Red Madaline Tomado de (Gonzalez, 2016)

2.6.1.5. RED BACK-PROPAGATION:

Esta red, al igual que Adeline y Madeline, se caracteriza por tener una arquitectura en niveles y

conexiones hacia adelante entre las neuronas. Consiste en un aprendizaje de un conjunto

predefinido de pares de entradas-salidas dados como ejemplo, empleando un ciclo de propagación-

adaptación de dos fases.

En la primera fase, una vez que se ha aplicado un patrón a la entrada de la red como estímulo, este

se propaga desde la primera capa a través de las capas siguientes de la red, hasta generar una salida.

Las ecuaciones de propagación hacia adelante son las siguientes:

𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑑𝑒 𝑙𝑎 𝑟𝑒𝑑 𝑛𝑒𝑢𝑟𝑜𝑛𝑎𝑙 = 𝑋0

𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒 𝑙𝑎 𝑝𝑟𝑖𝑚𝑒𝑟𝑎 𝑐𝑎𝑝𝑎 𝑜𝑐𝑢𝑙𝑡𝑎 = 𝑋1 = 𝜑1(𝑊1 ∙ 𝑋0)𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒 𝑙𝑎 𝑠𝑒𝑔𝑢𝑛𝑑𝑎 𝑐𝑎𝑝𝑎 𝑜𝑐𝑢𝑙𝑡𝑎 = 𝑋2 = 𝜑2(𝑊2 ∙ 𝑋1)

𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒 𝑙𝑎 𝑖 − 𝑒𝑠𝑖𝑚𝑎 𝑐𝑎𝑝𝑎 𝑜𝑐𝑢𝑙𝑡𝑎 = 𝑋𝑖 = 𝜑𝑖(𝑊𝑖 ∙ 𝑋𝑖−1)𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒 𝑙𝑎 𝑟𝑒𝑑 𝑛𝑒𝑢𝑟𝑜𝑛𝑎𝑙 = 𝑌 = 𝜑𝐿(𝑊𝐿 ∙ 𝑋𝐿−1)

(9)

La señal de salida Y se compara con la salida deseada T y se calcula una señal de error para cada

una de las salidas.

𝐸 =

1

2‖𝑌 − 𝑇‖2 (10)

Page 41: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

22

En la segunda fase, para reducir el valor del error se cambia los viejos pesos 𝑊′ por nuevos pesos

W que dependen de la variación de los 𝑊′ en dirección negativa de la gradiente del error con

respecto a esos pesos.

Las ecuaciones de propagación hacia atrás son las siguientes:

𝑊𝑖 = 𝑊′𝑖 − 𝛼𝑊′𝑖 ∘

𝜕𝐸

𝜕𝑊′𝑖 (11)

𝜕𝐸

𝜕𝑊𝑖= 𝛿𝑖 ∙ 𝑋𝑖−1

𝑇 (12)

𝛿𝐿 = (𝑌 − 𝑇) ∘ 𝜑′𝐿(𝑊′𝐿 ∙ 𝑋𝐿−1) (13)

𝛿𝑖 = (𝑊′𝑖+1𝑇 ∙ 𝛿𝑖) ∘ 𝜑′𝑖(𝑊𝑖 ∙ 𝑋𝑖−1) (14)

Donde L es el número de capas ocultas que posee la red neuronal y 𝜑′ es la derivada de la función

de activación (Raja, 2016).

2.6.2. TOPOLOGÍA

La escogencia de la topología es uno de los grandes problemas de investigación puesto que no

existe una técnica con una formulación formal que permita establecerla. Sin embargo, existen

técnicas empíricas que permiten escoger dicho parámetro. Una de ellas es el método de la pirámide

geométrica utilizada en (Pano Azucena, 2015). En dicho método se tienen en cuenta dos casos para

la solución de problemas de redes neuronales, estableciendo redes de una y dos capas ocultas

puesto que la mayoría de problemas se solucionan con máximo dos capas ocultas.

La fórmula para la escogencia del número de neuronas para una capa oculta ℎ se puede observar

en la ecuación (15).

ℎ = √𝑚 × 𝑛 (15)

Donde 𝑚 es el número de salidas de la red neuronal y 𝑛 el número de entradas.

Para el caso de dos capas ocultas se tiene que el número de neuronas de la capa uno ℎ1 y de la

capa dos ℎ2 se pueden apreciar en la ecuación (16).

Page 42: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

23

ℎ1 = 𝑚(√

𝑛

𝑚

3)2 , ℎ2 = 𝑚 √

𝑛

𝑚

3 (16)

2.7. APRENDIZAJE SUPERVISADO

El aprendizaje supervisado es una formalización de la idea de aprendizaje mediante ejemplos. En

este tipo de aprendizaje el aprendiz, por lo general un programa de computadora, es provisto de

algunos pares de ejemplos entrada-salida aprendiendo una función que mapea o relaciona las

entradas con las salidas, es decir, si se tiene un conjunto de entrenamiento de N pares ordenados

(x1, y1), (x2, y2), … (xN, yN) donde cada 𝑦𝑗 fue generado mediante una función desconocida

𝑦 = 𝑓(𝑥), el aprendiz debe descubrir una función ℎ (función hipótesis) que se aproxime a la

función 𝑓. (función verdadera). (Russell & Norvig, 2016)

Cuando la salida 𝑦 tiene un rango de valores finito el problema de aprendizaje se llama

clasificación, y es llamado clasificación binaria si solo tiene dos posibles valores.

2.8. CLASIFICADOR BINARIO

En teoría de la clasificación binaria, la información se encuentra dividido en dos clases diferentes,

positivos (P) y negativos (N). Un clasificador binario busca agrupar (según su criterio de

clasificación) todas las instancias de la información que le sean presentadas en la clase positivo o

a la clase negativo. A las instancias de información agrupadas como clase positivo se les llama

positivos predichos y las agrupadas como clase negativo se les llama negativos predichos

(Brodersen, Ong, Stephany, & Buhmann, 2010).

El clasificador binario produce cuatro tipos diferentes de resultados a su salida: dos resultados

pertenecientes a una clasificación correcta (verdaderos positivos (TP) y verdaderos negativos

(TN)), y dos resultados pertenecientes a una clasificación incorrecta (falsos positivos (FP) y falsos

negativos (FN)) (Saito & Rehmsmeier, 2015).

En la Figura 11 A el óvalo izquierdo representa la información actual agrupada en las dos clases,

positivo y negativo, el óvalo de la derecha muestra cómo el clasificador binario predice la forma

en que la información se encuentra clasificada en positivo y negativo. La Figura 11 B muestra los

Page 43: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

24

cuatro tipos de resultados que salen del clasificador binario, si son positivos o negativos y si están

correctamente clasificados o no (Saito & Rehmsmeier, 2015).

Figura 11. Esquema de un clasificador binario.

2.9. MÉTRICAS

2.9.1. MATRIZ DE CONFUSIÓN

Una matriz de confusión de tamaño 𝑛 × 𝑛 asociada a un clasificador muestra los valores reales vs

los valores predichos donde n es el número de diferentes clases (Visa, Ramsay, Ralescu, & Van

Der Knaap, 2011). En la Tabla 1 se observa una matriz de confusión para un clasificador binario.

Positivos predichos Negativos predichos

Positivos reales TP FN

Negativos reales FP TN

Tabla 1. Matriz de confusión.

En donde TP es el número de predicciones negativas correctas, FP es el número de predicciones

positivas incorrectas, FN es el número predicciones negativas incorrectas y TP el número de

predicciones positivas correctas.

Page 44: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

25

A partir de la información suministrada por la matriz de confusión se puede derivar las medidas

básicas de un clasificador binario. Estas medidas se utilizan para conocer el desempeño del

clasificador binario. Las más usadas son la exactitud (ACC), la tasa de error (ERR), la sensibilidad,

exhaustividad o tasa de verdaderos positivos (TPR), la especificidad o razón de verdaderos

negativos (SPC), y la precisión o valor predictivo positivo (PPV).

Otras medidas obtenidas como el coeficiente de correlación de Matthews (MCC) y el valor-F

también son buenos para medir el desempeño del clasificador binario, pero son muy pocos

utilizados. El coeficiente de correlación de Matthews es la media geométrica de los cuatro valores

de la matriz de confusión y el rango de valores va desde -1 hasta +1. Un coeficiente de +1

representa una perfecta predicción por parte del clasificador, un valor de 0 significa que la

predicción no es mejor que el azar y -1 indica total desacuerdo entre la predicción y la observación.

El valor-F es la media armónica del valor de la precisión y la exhaustividad (sensibilidad) y

generalmente viene acompañado de un factor β que depende de si al clasificador se le da más

importancia la precisión o a la exhaustividad. Si β es igual a 1 significa que se le da la misma

importancia a la precisión que la exhaustividad, un valor de β mayor a 1 indica que se le da mayor

importancia a la exhaustividad y un valor de β menor a 1 indica que se le da mayor importancia a

la precisión (He & Garcia, 2009).

En la Tabla 2 se muestra las fórmulas de cada una de las medidas de evaluación del rendimiento

de un clasificador binario.

Medición Fórmula

Exactitud (ACC) 𝐴𝐶𝐶 =

𝑇𝑃 + 𝑇𝑁

𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁

Tasa de Error (ERR) 𝐸𝑅𝑅 =

𝐹𝑃 + 𝐹𝑁

𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁

Sensibilidad, Exhaustividad o

Tasa de Verdaderos Positivos (TPR)

𝑇𝑃𝑅 =𝑇𝑃

𝑇𝑃 + 𝐹𝑁

Especificidad (SPC) 𝑆𝑃𝐶 =

𝑇𝑁

𝑇𝑁 + 𝐹𝑃

Precisión o valor predictivo positivo

(PPV) 𝑃𝑃𝑉 =

𝑇𝑃

𝑇𝑃 + 𝐹𝑃

Page 45: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

26

Tasa de Falsos Positivos (FPR) 𝐹𝑃𝑅 = 1 − 𝑆𝑃𝐶 =

𝐹𝑃

𝑇𝑁 + 𝐹𝑃

Coeficiente correlación de Matthew

(MCC) 𝑀𝐶𝐶 =

(𝑇𝑃 ∗ 𝑇𝑁) − (𝐹𝑃 ∗ 𝐹𝑁)

√(𝑇𝑃 + 𝐹𝑃)(𝑇𝑃 + 𝐹𝑁)(𝑇𝑁 + 𝐹𝑃)(𝑇𝑁 + 𝐹𝑁)

Valor-Fβ 𝐹𝛽 = (1 + 𝛽2)

𝑃𝑃𝑉 ∗ 𝑇𝑃𝑅

β 2𝑃𝑃𝑉 + 𝑇𝑃𝑅

Tabla 2. Medidas de evaluación básica obtenidas a partir de la matriz de confusión

2.9.2. CURVAS ROC

Las curvas ROC o curvas de característica operativa del receptor son gráficas bidimensionales en

las que se representa el valor de la sensibilidad (eje y) contra la tasa de falsos negativos (eje x)

(Fawcett, 2006). La versión más común de las curvas ROC es aquella en la que se grafican dichas

características variando el umbral de discriminación del clasificador (NCSS Statistical Software,

2014). En la Figura 12 se puede observar una curva ROC construida variando el umbral de

clasificación.

Figura 12. Curva ROC tomado de (NCSS Statistical Software, 2014).

Los clasificadores con rendimiento totalmente aleatorio muestran en las curvas ROC una línea

diagonal que se le conoce como línea de no discriminación. Puntos de la curva ROC por encima

de la línea de no discriminación indica que el clasificador en esos puntos realiza una discriminación

mejor que el azar, por el contrario, puntos por debajo de la línea de no discriminación indica que

Page 46: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

27

el clasificador en esos puntos realiza una discriminación peor que el azar. Entre más se aproxime

la curva a la esquina superior izquierda de la gráfica, mejor rendimiento tendrá el clasificador.

2.9.2.1. PARÁMETRO DEL ÁREA BAJO LA CURVA AUC.

Las curvas roc permiten evaluar el rendimiento de los clasificadores debido a que pueden ser

reducirlas a un valor escalar único que expresa dicho parámetro. Este valor se obtiene a partir del

cálculo del área bajo la curva y se denomina AUC (Area Under Curve) como se define en (Fawcett,

2006). El AUC es la probabilidad de que un clasificador ordene o clasifique más instancias

positivas que instancias negativas. Un valor de AUC de 0.5 significa que el clasificador es aleatorio

y un valor de 1 indica que es un clasificador perfecto.

2.9.3. CURVAS DE PRECISIÓN Y EXHAUSTIVIDAD

La curva de precisión y exhaustividad es una gráfica en la que se muestran los valores de la

precisión para un correspondiente valor de sensibilidad. Al igual que las curvas ROC, las curvas

de precisión y exhaustividad proveen un modelo de evaluación del rendimiento del clasificador

binario (Saito & Rehmsmeier, 2015).

Figura 13. Curva de precisión y exhaustividad. Tomado de (Saito & Rehmsmeier, 2015).

Page 47: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

28

A diferencia de las curvas ROC donde la línea de no discriminación es una diagonal invariante

para cada curva, la línea de no discriminación en las curvas de precisión es una línea horizontal,

ubicado sobre el eje de la precisión, que está determinada por la relación entre los casos positivos

(P) y los casos negativos (N) de los datos a clasificar. El valor donde se ubica la línea de no

discriminación está dado como 𝑃/(𝑃 + 𝑁). Así, para una línea de no discriminación de valor de

0.5 indica una relación P:N de 1:1 lo que significa la cantidad de clases positivos en los datos a

clasificar es la misma que la de las clases negativas, es decir, los datos se encuentran balanceados.

Al igual que las curvas ROC, también se puede hallar el área bajo la curva para las curvas de

precisión y exhaustividad y comúnmente se le conoce como el valor de precisión promedio AP

que se obtiene para todas las variaciones en el valor del umbral de clasificación (Brodersen et al.,

2010). A diferencia de las curva ROC, el valor del área bajo la curva para un clasificador

totalmente aleatorio varía respecto a la relación en la cantidad de clases positivas y clases

negativas, siendo ese valor el mismo valor de la línea de no discriminación (Saito & Rehmsmeier,

2015).

La importancia de las curvas de precisión y exhaustividad radica en su capacidad de mostrar mejor

la información del rendimiento de un clasificador que las curvas ROC cuando los datos que recibe

el clasificador son desbalanceados (se dice que los datos son desbalanceados cuando no existe la

misma proporción de casos positivos que de casos negativos, generalmente ocurre la situación de

que la cantidad de casos positivos es mucho menor que la cantidad de casos negativos). Mientras

que los valores de sensibilidad (TPR), especificidad (SPC), exactitud (ACC) y tasa de error (ERR)

prácticamente permaneces invariables tanto para datos balanceados como desbalanceados del

mismo tamaño, el valor de la precisión (PPV) varía para los dos casos, lo que hace que las curvas

de precisión y exhaustividad compare el rendimiento de varios clasificadores mejor que las curvas

ROC, siempre y cuando los datos ingresados a los clasificadores sean desbalanceados (Saito &

Rehmsmeier, 2015).

2.9.4. ERROR CUADRÁTICO MEDIO

El error cuadrático medio (mse) mide el promedio del error al cuadrado, donde el error es la

diferencia entre el valor verdadero y el valor predicho o estimado. El mse es una medida de la

calidad de un predictor o de un estimador(Lehmann & Casella, 2006). Un error cuadrático medio

Page 48: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

29

cercano a cero significa que el valor predicho es muy cercano o casi igual al valor verdadero. Si 𝑌�̂�

es el valor predicho por el predictor, 𝑌𝑖 es el valor verdadero y ambos contiene una cantidad de n

números de muestras, entonces el error cuadrático medio para un predictor se calcula de la

siguiente manera:

𝑚𝑠𝑒 =

1

𝑛∑(𝑌�̂� − 𝑌𝑖)

2𝑛

𝑖=1

(17)

La utilidad del error cuadrático medio consiste en que al elevar el error al cuadrado permite

eliminar signos negativos y también permite dar más peso a los errores grandes. Debido a esto se

utiliza mucho para comparar el funcionamiento de modelos de predictores y estimadores al

permitir observar y escoger el modelo que tenga la recta de mejor ajuste, es decir, el modelo cuyo

valor predicho sea el más cercano a la realidad (Panik, 2005).

2.9.5. FUNCIONES DE SIMILITUD

Las funciones de similitud para un sistema CBIR son una medida de similitud o métrica que

permite comparar imágenes y presentar las respuestas en una lista ordenada (Maldonado, Para,

Vasco, & Gra, 2008).

Generalmente, como las imágenes se encuentran representadas como vectores de características se

utiliza criterios de similitud basados en distancia entre vectores. El valor de distancia es siempre

un valor no negativo, y cuanto mayor sea este valor mayor será la diferencia entre las imágenes

(Universitat de València, 2007).

Entre las métricas de similitud utilizadas se encuentra la distancia euclídea que es una medida de

similitud en el espacio de características (Jain & Vailaya, 1995), la distancia de Manhattan que es

una medida de distancia en geometría no euclideana (Black, 2006), la distancia de Canberra que

es una versión ponderada de la distancia de Manhattan (Jurman, Riccadonna, Visintainer, &

Furlanello, 2009), la distancia de Mahalanobis que es una medida de distancia que tiene en cuenta

la correlación entre las variables aleatorias (Mahalanobis, 1936), y la distancia de Chebyshov.

En la Tabla 3 se muestra las ecuaciones para cada una de las distancias utilizadas para calcular la

similitud de características.

Page 49: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

30

Nombre Expresión

Distancia Euclídea 𝑑(𝑣𝑎 , 𝑣𝑏) = √(𝑣𝑎 − 𝑣𝑏)𝑇(𝑣𝑎 − 𝑣𝑏)

Distancia Manhattan 𝑑(𝑣𝑎, 𝑣𝑏) = ∑ |𝑣𝑎(𝑖) − 𝑣𝑏(𝑖)|𝑛

𝑖=1

Distancia Minkowsky 𝑑(𝑣𝑎 , 𝑣𝑏) = (∑ (𝑣𝑎(𝑖) − 𝑣𝑏(𝑖))𝑝

𝑛

𝑖=1)

1𝑝

Distancia Mahalanobis 𝑑(𝑣𝑎 , 𝑣𝑏) = √(𝑣𝑎 − 𝑣𝑏)𝑇Σ−1

(𝑣𝑎 − 𝑣𝑏)

Distancia Canberra 𝑑(𝑣𝑎 , 𝑣𝑏) = ∑

|𝑣𝑎(𝑖) − 𝑣𝑏(𝑖)|

|𝑣𝑎(𝑖)| + |𝑣𝑏(𝑖)|

𝑛

𝑖=1

Distancia Chebyshov 𝑑(𝑣𝑎 , 𝑣𝑏) = 𝑚𝑎𝑥𝑖,𝑗=1𝑛 |𝑣𝑎(𝑖) − 𝑣𝑏(𝑗)|

Tabla 3. Métricas utilizadas para calcular la similitud de características

en sistemas CBIR. Tomada de (Maldonado et al., 2008)

Page 50: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

31

3. DISEÑO DE LOS SISTEMAS DE EXTRACCION DE

CARACTERÍSTICAS Y ENTRENAMIENTO DE LOS

MODELOS DE RED NEURONAL FEED-FORWARD

A partir del planteamiento del problema presentado en la sección 1.1 se propone inicialmente la

escogencia de las tecnologías de software libre para el entrenamiento e implementación del

módulo mencionado, procediendo enseguida a la construcción de una base de datos balanceada de

2000 imágenes con 1000 fotografías aéreas tomadas con drones en áreas con predominancia de

vegetación (Rurales) y 1000 imágenes de cualquier tipo excepto las que contengan áreas con

predominancia vegetal. A continuación, se procede a la extracción de características mediante

histogramas, componentes principales y momentos de color, las cuales a su vez son extraídas en

los modelos de color RGB y YUV, además se propone para la clasificación asignar a las imágenes

rurales una etiqueta de 1 y al resto de las imágenes una etiqueta de 0.

A cada una de las imágenes etiquetadas como rurales se les procede a dividirlas en 16 partes iguales

para luego guardar cada fragmento en la base de datos de imágenes, luego se le asigna a cada

fragmento las etiquetas de las coberturas que lleguen a presentar. Finalmente se procede a la

extracción de características de todos los fragmentos y se guarda en la base de datos. Las coberturas

a analizar son árboles, césped, suelo descubierto y cuerpos de agua.

Usando las características extraídas como vector de entrada y las etiquetas asignadas en las

imágenes como vector de salida del clasificador, se procede a realizar el entrenamiento de la red

neuronal mediante el algoritmo backpropagation, utilizando como función objetivo el error

cuadrático medio a la salida de la red neuronal y la sigmoidea como función de activación para

todas las capas. Se realizan 50 entrenamientos por cada método en cada modelo de color. A

continuación, se escoge la red neuronal que presente el mejor parámetro AUC y AP obtenido de

las curvas ROC y las curvas de precisión y exhaustividad, extrayendo sus pesos para ser integrados

dentro del software RITAQDA.

Finalmente se implementa el módulo de carga de imágenes dentro del software RITAQDA

integrando el modelo de red neuronal con mayor desempeño obtenido.

Page 51: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

32

3.1. ESCOGENCIA DE TECNOLOGÍAS DE SOFTWARE PARA LA

SIMULACIÓN

Ya que en el entrenamiento de la red neuronal se procesan grandes cantidades de datos y se realizan

grandes operaciones matriciales que consumen mucho tiempo, es necesario utilizar un lenguaje de

alto rendimiento que reduzca ese problema. Para ello nos remitimos al estudio realizado por

(Bezanson, Karpinski, Shah, & Edelman, 2012) el cual realiza una comparación de los principales

lenguajes de programación por medio del testeo de diferentes funciones y el tiempo que demoran

dichas funciones en ejecutarse, como se muestra en la Tabla 4.

Test

(functions) Julia Python MATLAB Octave R JavaScript

fib 1.97 31.47 1336.37 2383.80 225.23 1.55

parse int 1.44 16.50 815.19 6454.50 337.52 2.17

quicksort 1.49 55.84 132.71 3127.50 713.77 4.11

mandel 5.55 31.15 65.44 824.68 156.68 5.67

pi sum 0.74 18.03 1.08 328.33 164.69 0.75

rand mat stat 3.37 39.34 11.64 54.54 22.07 8.12

rand mat mul 1.00 1.18 0.70 1.65 8.64 41.79

Tabla 4. Resultado del microbenchmark en milisegundos. Tomada de (Bezanson et al., 2012)

Se puede apreciar que el lenguaje Julia es el que ofrece las mejores prestaciones en cuanto a

desempeño entre los lenguajes de código abierto, por lo tanto, se escoge esta tecnología para el

entrenamiento de la red neuronal.

En el proceso de extracción de características no es un problema el tiempo empleado debido a que

se dicho proceso se realiza solo una vez y se guarda el resultado en la base de datos. Por lo tanto,

se prefirió utilizar MATLAB para la extracción de características debio a que es un lenguaje que

se maneja a nivel académico.

3.2. CREACION DE LA BASE DE DATOS DE IMÁGENES

Para la construcción de la base de datos se ha subido las imágenes a un repositorio público de datos

en figshare y puede ser consultada en 10.6084/m9.figshare.5677681 (Sanabria & Fonsecca, 2017).

Page 52: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

33

Las imágenes han sido descargadas del buscador google, mediante un script de código abierto

escrito en el lenguaje Python (Vasa, Munagala, Tallapally, & Vishal, 2017), el cual es capaz de

descargar una cantidad de 100 imágenes por cada búsqueda realizada. Después de la descarga de

las imágenes se realizó una identificación manual de imágenes relevantes, eliminando inicialmente

las no relevante, luego se procedió a descargar las no relevantes con el mismo procedimiento. Las

etiquetas de salida para la clasificación rural y no-rural se han creado teniendo en cuenta que las

primeras 1000 imágenes son rurales y las siguientes 1000 son no rurales por lo tanto se ha creado

un vector de salidas deseadas cuyos datos se encuentran en el repositorio de figshare. Las imágenes

guardas presentan un redimensionamiento para que quedaran de un tamaño de 512x512, con el fin

de simplificar los cálculos y análisis posteriores. Los vectores de salidas deseadas para la

clasificación rural-no rural pueden ser accedido mediante el siguiente url

10.6084/m9.figshare.5682571 (Sanabria & Fonseca, 2017a)

A partir de las 1000 imágenes rurales se obtuvieron las imágenes a utilizar para el entrenamiento

la clasificación de coberturas. Para eso se utilizó un script en MATLAB para dividir en 16 partes

cada imagen, obteniendo como resultado 16000 imágenes de un tamaño de 128x128 pixeles. Las

etiquetas de salida para la clasificación de coberturas se han realizado de forma manual observando

y marcando si la imagen presenta alguna o varias de las cuatro coberturas que se pretende analizar.

Los vectores de salidas deseadas para la clasificación de coberturas pueden ser accedidos mediante

el siguiente url 10.6084/m9.figshare.7203299 (Sanabria & Fonseca, 2018a)

3.3. OBTENCIÓN DE LAS CARACTERÍSTICAS DE LA IMAGEN DIGITAL

3.3.1. OBTENCIÓN DE LAS MATRICES DE LOS MODELOS DE COLOR

Como se vio en la sección 2.4 una imagen cromática se puede representar mediante un sistema de

tres coordenadas o colores, por lo tanto, una imagen digital se puede descomponer en tres matrices,

cada una representando un color. El código en MATLAB para la obtención de las matrices de

colores en los modelos de color RGB y YUV se encuentran en el Apéndice A.

Un ejemplo de la descomposición RGB se puede observar en la Figura 15 la cual se ha obtenido

a partir de la imagen de prueba mostrada en la Figura 14. Para este ejemplo MATLAB entregó

un arreglo de 403x500x3 donde la posición de la matriz que guarda el color rojo de la imagen es

Page 53: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

34

403x500x1, la matriz 403x500x2 guarda el color verde de la imagen y la matriz 403x500x3 guarda

el color azul de la imagen.

Para obtener las matrices YUV es necesario transformar las matrices RGB según lo mostrado en

la ecuación (2). Para mostrar un ejemplo de dicha transformación, se utiliza de nuevo como

ejemplo la imagen de la Figura 14. La imagen de las matrices YUV se muestra en la Figura 16.

Figura 14. Imagen de prueba.

Figura 15. Componentes RGB de la imagen de prueba.

Figura 16 Componentes Y, U y V de la imagen de prueba.

En la Figura 16 se puede apreciar que la componente de luma o Y es la que posee la mayor

cantidad de información de la imagen, siendo que la componente de luma es la misma imagen,

Page 54: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

35

pero en blanco y negro. Las componentes U y V no aportan información relevante, solo

pequeños detalles que se pueden pasar por alto.

3.3.2. DISEÑO DE ALGORITMO Y OBTENCIÓN DE LOS HISTOGRAMAS

Como se expuso en la sección 2.5.1 el histograma muestra la frecuencia de los pixeles en una

imagen que se encuentran dentro de un valor de intensidad en la escala de grises que toma valores

discretos desde 0 hasta a 255. En el presente trabajo se ha diseñado un algoritmo que calcula el

histograma para cada una de las 3 bandas de la imagen RGB o YUV, el cual se puede ver a

continuación:

NUMIMG ← numero de imágenes

Para n ← 1 hasta NUMIMG

Entero M ← alto de la imagen(n)

Entero N ← ancho de la imagen(n)

Vector I [1:M,1:N,3] ← leer matrices de imagen(n) //obtenemos las 3 matrices de MxN de la imagen.

Vector H[1:256,3,NUMIMG] ← zeros //inicializamos con zeros los 3 vectores de histogramas

Entero FILAS ← 1

Entero COLUMNAS ← 1

// inicio del algoritmo

Para i ← 1 hasta 3 // matrices de cada imagen

| Para COLUMNAS ← 1 hasta N

| | Para FILAS ← 1 hasta M

| | | NIVEL ← I[ FILAS, COLUMNAS, i ]

| | | H [NIVEL,i,n] ← H [NIVEL, i,n] + 1

| | Fin Para

| Fin Para

Fin Para

Fin Para

GUARDAR(H) // Guardamos los histogramas

El código en MATLAB para obtener los histogramas de las imágenes guardadas en la base de

datos se encuentra en el Apéndice B.

En la Figura 17 se puede observar el histograma para cada uno de los colores primarios RGB de

la imagen de prueba mostrada en la Figura 14.

Page 55: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

36

Figura 17. Histograma de los colores RGB de la imagen de prueba.

Como se puede apreciar cada histograma puede ser representado como un vector de 256 elementos,

en el caso del modelo de color RGB son 256 elementos por cada color por lo tanto el histograma

se puede representar como un vector de 768 elementos.

En la Figura 18 se puede apreciar el histograma de la imagen de prueba mostrada en la

Figura 14Figura 14 para cada una de las bandas del modelo de color YUV.

Figura 18. Histograma de los colores YUV de la imagen de prueba.

Page 56: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

37

En la presente monografía se han extraído los histogramas RGB y YUV a las 2000 imágenes de la

base de datos mencionada en la sección 3.2. Los datos extraídos para la clasificación rural – no

rural se encuentran en un repositorio que puede ser accedido en la siguientes urls

10.6084/m9.figshare.5682610 (Sanabria & Fonseca, 2017b), 10.6084/m9.figshare.5682721.v1

(Sanabria & Fonseca, 2017d). Los datos extraídos para clasificación de coberturas se pueden

acceder con la siguientes urls 10.6084/m9.figshare.7272665.v1 (Sanabria & Fonseca, 2018c),

10.6084/m9.figshare.7272677.v1 (Sanabria & Fonseca, 2018g).

3.3.3. DISEÑO DE ALGORITMO Y OBTENCIÓN DE LOS MOMENTOS DE COLOR

Como se expuso en la sección 2.5.2 los momentos de color muestran a la imagen digital como una

distribución de probabilidad cuya información se puede representar dentro de sus momentos

estadísticos. A continuación, se muestra el algoritmo diseñado para la obtención de los momentos

de color en los cuales se reduce la información de una imagen a un vector de 9 dimensiones:

NUMIMG ← numero de imágenes

Para n ← 1 hasta NUMIMG

Entero P ← (cantidad de pixeles de la imagen(n) )2

Vector I [1:M,1:N,3] ← leer matrices de imagen(n) //obtenemos las 3 matrices de MxN de la imagen.

Vector MC[1:9,NUMIMG] ← zeros//inicializamos con zeros los 9 momentosdecolor por cada imagen

Vector E[1:3] ← zeros //inicializamos con zeros los la media estadística de cada imagen

Vector D[1:3] ← zeros //inicializamos con zeros los la desviación standar de cada imagen

Vector SK[1:3] ← zeros //inicializamos con zeros los la asimetría de cada imagen

Entero FILAS ← 1

Entero COLUMNAS ← 1

E ← (1/P)*SUMAR( I ) //Caculo de la media aritmética

D[1,1,1] ← RAIZ((1/P)*SUMA( I[:,:,1]) - E[1,1,1])2 )) //Caculo de la desviación estándar para R o Y

D[1,1,2] ← RAIZ((1/P)*SUMA( I[:,:,2]) - E[1,1,2])2 )) //Caculo de la desviación estándar para G o U

D[1,1,3] ← RAIZ((1/P)*SUMA( I[:,:,3]) - E[1,1,3])2 )) //Caculo de la desviación estándar para B o V

SK[1,1,1] ← ((1/P)*SUMA( I[:,:,1]) - E[1,1,1])3 ))1/3 //Caculo de la asimetria para R o Y

SK[1,1,2] ← ((1/P)*SUMA( I[:,:,2]) - E[1,1,2])3 )) 1/3//Caculo de la asimetria para G o U

SK[1,1,3] ← ((1/P)*SUMA( I[:,:,3]) - E[1,1,3])3 )) 1/3//Caculo de la asimetria para B o V

MC[1,n] ← E[1,1,1] // primer momento estadístico o media para la banda R o Y

MC[2,n] ← D[1,1,1] // segundo momento estadístico o desviacion para la banda R o Y

MC[3,n] ← SK[1,1,1] // tercer momento estadístico o asimetría para la banda R o Y

MC[4,n] ← E[1,1,2] // primer momento estadístico o media para la banda G o U

MC[5,n] ← D[1,1,2] // segundo momento estadístico o desviacion para la banda G o U

MC[6,n] ← SK[1,1,2] // tercer momento estadístico o asimetría para la banda G o U

MC[7,n] ← E[1,1,3] // primer momento estadístico o media para la banda B o V

MC[8,n] ← D[1,1,3] // segundo momento estadístico o desviacion para la banda B o V

MC[9,n] ← SK[1,1,3] // tercer momento estadístico o asimetría para la banda B o V

Fin Para

GUARDAR( MC ) // Guardamos los momentos de color de todas las imágenes

Page 57: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

38

El código en MATLAB para la obtención de los momentos de color se muestra en el Apéndice C.

En la Tabla 5 y en la Tabla 6 se muestran los valores de los momentos de color obtenidos de la

imagen de prueba mostrada en la Figura 14, para los modelos de color RGB y YUV

respectivamente.

R G B

Primer Momento 96,778548 99,385908 113,400748

Segundo Momento 11,040273 10,928555 11,510941

Tercer Momento 5,039396 5,042363 5,214860

Tabla 5. Valores de los momentos de color en el modelo RGB para la imagen de prueba.

Y U V

Primer Momento 100,207572 110,180032 100,338744

Segundo Momento 10,943944 13,241714 14,329043

Tercer Momento 5,0470025 5,788408 5,901445

Tabla 6. Valores de los momentos de color en el modelo YUV para la imagen de prueba.

En la presente monografía se han extraído los momentos de color RGB y YUV a las 2000 imágenes

de la base de datos mencionada en la sección 3.2. Los datos extraídos para la clasificación rural –

no rural se encuentran siguiendo la siguientes urls 10.6084/m9.figshare.7272563.v1 (Sanabria &

Fonseca, 2018d), 10.6084/m9.figshare.7272482.v1 (Sanabria & Fonseca, 2018h) Los datos

extraídos para clasificación de coberturaas se pueden acceder con la siguientes urls

10.6084/m9.figshare.7272626.v1 (Sanabria & Fonseca, 2018b), 10.6084/m9.figshare.7272647

(Sanabria & Fonseca, 2018f).

3.3.4. DISEÑO DE ALGORITMO Y OBTENCIÓN DE LOS COMPONENTES PRINCIPALES

Como se expuso en la sección 2.5.3, el análisis de componentes principales (PCA) es una técnica

que permite reducir el número de dimensiones de un conjunto de datos. A partir de dicho desarrollo

matemático se ha procedido a deiseñar el algoritmo para extraer dichas caracteristicasel cual se

presenta a continuación:

Page 58: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

39

P ← numero de componetes principales

NUMIMG ← numero de imágenes

Para n ← 1 hasta NUMIMG

Vector I [1:M,1:N,3] ← leer matrices de imagen(n) //obtenemos las 3 matrices de MxN de la imagen.

Vector IM[1,3] ← zeros//inicializamos con zeros el valor medio de la imagen

Vector IMC[1:M,1:N,3] ← zeros //inicializamos con zeros la imagen corregida

Vector COV1[1:M,1:N] ← zeros //inicializamos con zeros la covarianza para la banda R oY

Vector COV2[1:M,1:N] ← zeros //inicializamos con zeros la covarianza para la banda G o U

Vector COV3[1:M,1:N] ← zeros //inicializamos con zeros la covarianza para la banda B o V

Vector PCA1[1:M,1:P, NUMIMG] ← zeros //inicializamos con zeros los PCA para la banda R o Y

Vector PCA2[1:M,1:P, NUMIMG] ← zeros //inicializamos con zeros los PCA para la banda G o U

Vector PCA3[1:M,1:P, NUMIMG] ← zeros //inicializamos con zeros los PCA para la banda B o V

IM ← (1/P)*SUMAR( I ) //Caculo de la media de cada banda de la imagen

IMC ← I - IM //restamos a la imagen su valor medio

COV1 ← IMC[:,:,1] * IMC[:,:,1]T //Caculo de la matriz de covarianza para la banda R o Y

COV2 ← IMC[:,:,2] * IMC[:,:,2]T //Caculo de la matriz de covarianza para la banda G o U

COV3 ← IMC[:,:,3] * IMC[:,:,3]T //Caculo de la matriz de covarianza para la banda B o V

V ← EIGEN(COV1) //Caculo de la eigenvectores para la banda R o Y

PCA1[:,:,n] ← V[:,1:P] //Caculo de los PCA para R o Y

V ← EIGEN(COV2) //Caculo de la eigenvectores para la banda G o U

PCA2[:,:,n] ← V[:,1:P] // Caculo de los PCA para G o U

V ← EIGEN(COV3) //Caculo de la eigenvectores para la banda G o U

PCA3[:,:,n] ← V[:,1:P] // Caculo de los PCA para R o Y

Fin Para

GUARDAR( [PCA1 PCA2 PCA3]) // Guardamos los PCA de todas las imágenes

El código en MATLAB para obtener los componentes principales de una imagen digital se

encuentra en el Apéndice D.

Con el fin de observar las diferencias existentes entre una imagen digital reconstruida por medio

de sus componentes principales y la imagen original, se utilizó la imagen de prueba mostrada en

la Figura 14 y se le halló la magnitud del error cuadrático medio obtenido al variar la cantidad de

componentes principales a utilizar para la reconstrucción de la imagen de prueba. Los resultados

se muestran en la Figura 19 para el modelo de color RGB y en la Figura 20 para el modelo de

color YUV. El código en MATLAB para la reconstrucción de una imagen por medio de sus

componentes principales se encuentra en el Apéndice E.

Page 59: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

40

Figura 19. Error cuadrático medio para los componentes principales de R, G y B.

Figura 20. Error cuadrático medio para las componentes principales de Y, U y V.

En la Figura 19 se puede observar que el error disminuye rápidamente para los primeros 30

componentes principales para los tres colores RGB. Después de 30 componentes principales el

error empieza a caer lentamente.

Page 60: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

41

En la Figura 20 se puede apreciar que con una cantidad de 10 componentes principales en U y en

V el MSE no disminuye significativamente, simultáneamente en la componente Y con 30

componentes principales el MSE no disminuye significativamente.

A partir de la Figura 19 se ha tomado como criterio del codo de las curvas de error cuadrático

medio escogiendo una cantidad de 20 componentes principales por cada banda de color RGB (60

componentes en total), y a partir de la Figura 20 se ha tomado como criterio del codo de las curvas

de error cuadrático medio escogiendo una cantidad de 10 componentes principales para las bandas

U y V y 30 componentes principales para la banda Y (50 componentes en total).

Para cada imagen utilizada en la clasificación rural-no rural, la cantidad de entradas obtenidas es

de 30720 en RGB y 25600 en YUV. Las entradas obtenidas se han subido al repositorio del

proyecto que se encuentra en figshare, pudiendo ser accedidos mediante los siguiente urls

10.6084/m9.figshare.5682658 (Sanabria & Fonseca, 2017c), 10.6084/m9.figshare.5682754

(Sanabria & Fonseca, 2017e).

Para las imágenes utilizadas en la clasificación de coberturas, la cantidad de entradas obtenidas es

de 7680 en RGB y 6400 en YUV. Mediante las siguientes urls de figshare se puede acceder a las

entradas obtenidas, 10.6084/m9.figshare.7272719.v1 (Sanabria & Fonseca, 2018e),

10.6084/m9.figshare.7272833.v1 (Sanabria & Fonseca, 2018i).

En el Apéndice F se puede observar la imagen de prueba reconstruida para distintos números de

componentes principales en el modelo de color RGB y YUV.

3.4. DISEÑO Y ENTRENAMIENTO DE LA RED NEURONAL FEED-

FORWARD

Para la creación de las redes neuronales feed-forward que serán utilizadas como clasificador

binario para las imágenes rurales y no rurales así como la clasificación de las coberturas en las

imágenes rurales se utilizó como base la ecuación (8) en el apartado 2.6. Para la arquitectura de la

red neuronal se utilizó el modelo de back-propagation utilizando la derivada del error para

actualizar los pesos de las neuronas. Para la función de activación se utilizó la función sigmoidal

o logística, utilizando como criterio el estudio realizado por (Llano, Hoyos, Arias, & Velásquez,

2007) en donde se habla de la función logística como la función de activación comúnmente

Page 61: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

42

utilizada por su derivada que es fácil de computar. En la Tabla 7 se muestra una de las tablas

comparativas del estudio realizado.

Función

objetivo

Entrenamiento Validación

Mejor Peor Mejor Peor

F1 radbas tansig radbas tansig

F2 logsig tansig logsig tansig

F3 tansig logsig tansig logsig

F4 radbas tansig logsig tansig

F5 radbas tansig logsig radbas

Tabla 7. Análisis comparativo funciones objetivo. Tomado de (Llano et al., 2007)

Para el proceso de entrenamiento de las redes neuronales se utilizó el 70% del total de los datos

guardados en la base de datos de imágenes. Para el proceso de validación se usó el 30 % restante.

3.4.1. DISEÑO E IMPLEMENTACIÓN DEL ALGORIMO DE RED NEURONAL FEED –

FORWARD

Para el diseño de la red neuronal se utilizó el algoritmo back-propagation en su forma matricial

que se trató teóricamente en la sección 2.6. En dicho algoritmo las características de entrada de la

red neuronal son ingresadas mediante una matriz, cuyo número de columnas representa la cantidad

de datos (en nuetro caso imágenes) que calsificará la red neurnal, y cuyo número de filas representa

la longitud del vector de características extraidas a cada dato de entrada.

//parámetros inicicales

Vector X ← leer características de entrada

Vector S ← leer etiquetas de salida

Vector L ← número de neuronas en cada capa

Vector W ← RAND() //inicializamos los pesos con datos aleatorios entre 0 y 1

Vector G ← zeros //inicializamos con zeros la salida de cada capa de neuronas

Vector ER ← zeros //inicializamos con zeros el vector de error

Vector D ← zeros //inicializamos con zeros el vector de deltas

Decimal ETA ← tasa de aprendizaje

Entero ITER ← número de iteraciones

Entero NC ← número de capas

// inicio del algoritmo

Para i ← 1 hasta ITER

| //paso hacia adelante

| Para j ← hasta NC – 1

| | A ← W*G[j]

| | A ← LOGSIG(A) //función de activacion

| | G[j+1] ← [A; 1] //agregamos el bias a la capa j+1

| Fin Para

| //paso hacia atrás

Page 62: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

43

| ER ← S – G[NC] //error en la capa de salida

| Para k ← NC – 1 hasta 1

| | D[k] ← ER .* (G[k + 1] .* (1 – G[k + 1])) //Derivada del error en la capa k

| | D[k] ← D[k][1:END-1] //eliminación del bias del delta

| | W[k] ← W[k] + ETA *(D[k]*G[k]) // actualización de los pesos de la capa k

| | ER ← W[k] * D[k]

| FinPara

Fin Para

GUARDAR(W) // Guardamos los pesos de la red neuronal

En el Apéndice G se puede encontrar el diagrama de actividades para el diseño y funcionamiento

de la red neuronal y en el Apéndice H se puede encontrar el código de la red neuronal en Julia.

3.4.2. DISEÑO Y PRUEBA DE LA RED NEURONAL PARA LA CLASIFICACIÓN RURAL – NO

RURAL

3.4.2.1. OBTENCIÓN DE LA TOPOLOGÍA

Para la escogencia de topología de la red neuronal de clasificación de imágenes rurales y no rurales

se utilizó el método de la pirámide geométrica observada en la sección 2.6.2. Se obtuvo dos

topologías, la primera para una red neuronal de una capa oculta y la segunda para una red neuronal

de dos capas ocultas.

Para el diseño de una red neuronal con una capa oculta se aplicó la ecuación (15), los resultados

se muestran en la Tabla 8. Para el diseño de una red neuronal de dos capas ocultas se aplicó la

ecuación (16), los resultados se muestran en la Tabla 9.

Método de obtención de

características

Número de neuronas capa

de Entrada

Número de neuronas

en la capa salida

Número de neuronas

en la capa oculta

Histogramas RGB 1x768 1x1 27

Momentos de color RGB 1x9 1x1 3

PCA RGB 1x30720 1x1 175

Histogramas YUV 1x768 1x1 27

Momentos de color YUV 1x9 1x1 3

PCA YUV 1x25600 1x1 160

Tabla 8. Cantidad de neuronas en la capa oculta para clasificador binario rural-no rural.

Page 63: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

44

Método de

obtención de

características

Número de

neuronas capa de

entrada

Número de

neuronas capa de

salida

Número de

neuronas primera

capa oculta

Número neuronas

segunda capa

oculta

Histogramas RGB 1x768 1x1 84 9

Momentos de color

RGB 1x9 1x1 4 2

PCA RGB 1x30720 1x1 981 31

Histogramas YUV 1x768 1x1 84 9

Momentos de color

YUV

1x9 1x1 4 2

PCA YUV 1x25600 1x1 869 30

Tabla 9. Cantidad de neuronas en las dos capas ocultas para clasificador binario rural-no rural.

3.4.2.2. OBTENCIÓN DE LA TASA DE APRENDIZAJE

Para la obtención de la tasa de aprendizaje se realizaron una serie de entrenamientos preliminares

para tener una idea de su comportamiento. Se ha realizado el proceso de entrenamiento cuatro

veces por cada variación de la tasa de aprendizaje, variando el valor entre 0.1 y 0.000001,

obteniendo las curvas de error cuadrático medio y escogiendo el que se ha considerado mejor en

cuanto a velocidad de convergencia de la curva hacia un valor de MSE mínimo sin que ese valor

oscile. Este proceso se realizó tanto para topologías de red de una capa oculta como con dos capas

ocultas, por cada uno de los 3 métodos de entrenamiento.

En la Tabla 10 se presentan las tasas de aprendizaje escogidos por análisis empírico de las curvas

obtenidas. Las curvas de error cuadrático medio obtenidas se pueden observar en el Apéndice I.

Tasa de aprendizaje (eta)

1 capa oculta 2 capas ocultas

Histogramas 0.0065 0.0048

Momentos de color 0.0000063 0.000081

Componentes principales 0.0053 0.00248

Tabla 10. Tasas de aprendizaje escogidas para el entrenamiento de la red neuronal de clasificación rural – no rural.

3.4.2.3. VARIACIÓN DEL NÚMERO DE NEURONAS

Una vez escogidas las topologías y las tasas de aprendizaje, se ha procedido a realizar nuevos

entrenamientos incrementando el número de neuronas en la o las capas ocultas con respecto a su

valor nominal (valor hallado con el método de la pirámide geométrica), con el fin de observar el

impacto que tiene dicha variación en el rendimiento del algoritmo de la red neuronal durante el

Page 64: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

45

proceso de entrenamiento y validación además de obtener el método candidato para la solución

del problema propuesto.

Para la red neuronal de una capa oculta se ha realizado el proceso de entrenamiento diez veces por

cada modelo de color y por cada método de obtención de características, incrementando el número

de neuronas en la capa oculta de 10 en 10 hasta un máximo de 30 neuronas por encima de su valor

nominal. La evaluación del desempeño se realiza mediante la obtención del área bajo la curva

(AUC) de las curvas ROC, presentadas en la sección 2.9.2.

En la Tabla 11 se muestra el valor del parámetro AUC de las curvas ROC obtenidas de la red

neuronal de una capa oculta. Las curvas ROC son mostradas en el Apéndice J.

Método Sin variación +10 neuronas +20 neuronas +30 neuronas

Histogramas RGB 0,959384 0,950120 0,952968 0,960944

Momentos de color RGB 0.941738 0.943838 0.957255 0.954166

PCA RGB 0,820992 0,841248 0,821184 0,819232

Histogramas YUV 0,968432 0,969760 0,971200 0,969632

Momentos de color YUV 0.949216 0.951361 0.953327 0.950583

PCA YUV 0,756376 0,786688 0,772656 0,761760

Tabla 11. Valor del parámetro AUC para cada uno de los métodos propuestos al variar el número de neuronas en la

capa oculta.

Para el caso de la red neuronal con dos capas ocultas, primero se incrementó la cantidad de

neuronas en la primera capa oculta, dejando sin cambio la cantidad de neuronas en la segunda capa

oculta y luego se obtuvieron las curvas ROC. Después, se calculó el valor del parámetro AUC,

escogiendo la topología de mayor valor de AUC. A partir de dicha topología, se incrementó la

cantidad de neuronas en la segunda capa oculta, realizando el mismo procedimiento de

comparación de las curvas ROC y cálculo del parámetro AUC.

El valor calculado del parámetro AUC al variar la cantidad de neuronas en la primera capa oculta

para todos los métodos propuestos se muestra Tabla 12. El valor calculado del parámetro AUC al

variar la cantidad de neuronas en la segunda capa oculta para todos los métodos propuestos se

muestra en la Tabla 13. En el Apéndice K se puede observar las curvas ROC para la red neuronal

con dos capas ocultas.

Page 65: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

46

Método Sin variación +10 neuronas +20 neuronas +30 neuronas

Histogramas RGB 0,951528 0,959792 0,954232 0,944144

Momentos de color RGB 0.937716 0.946116 0.946088 0.939333

PCA RGB 0,834208 0,847872 0,830936 0,816080

Histogramas YUV 0,969288 0,974464 0,970248 0,972032

Momentos de color YUV 0.944905 0.938388 0.945161 0.941355

PCA YUV 0,776456 0,794976 0,810584 0,788792

Tabla 12. Valor del parámetro AUC para cada uno de los métodos propuestos al variar el número de neuronas en la

primera capa oculta.

Método Sin variación +10 neuronas +20 neuronas +30 neuronas

Histogramas RGB 0,959792 0,950912 0,948272 0,953264

Momentos de color RGB 0.946116 0.953838 0.952938 0.943905

PCA RGB 0,847872 0,833736 0,820752 0,812560

Histogramas YUV 0,974464 0,970072 0,969160 0,965608

Momentos de color YUV 0.945161 0.943777 0.935816 0.946044

PCA YUV 0,810584 0,824552 0,793800 0,791656

Tabla 13. Valor del parámetro AUC para cada uno de los métodos propuestos al variar el número de neuronas en la

segunda capa oculta

3.4.2.4. MÉTODO Y TOPOLOGÍA ESCOGIDOS

A partir de los resultados expuestos en la Tabla 11, la Tabla 12 y la Tabla 13 del apartado 3.4.2.3,

se puede apreciar que el método de los histogramas en el modelo de color RGB y en el modelo de

color YUV son los que ofrecen un mejor parámetro AUC y por ende un mejor rendimiento en

cuanto a clasificación, con el método de histogramas YUV generando un rendimiento ligeramente

superior. También se aprecia que, para ambos casos, al aumentar el número de neuronas y el

número de capas ocultas el AUC presentan una mejoría menor al 1% por lo que, no se justifica

aplicar una segunda capa oculta, ni aumentar el número de neuronas.

Por lo tanto, para el entrenamiento y validación se escogen como características de entrada los

histogramas en el modelo de YUV con la topología de red calculada a partir del método de la

pirámide geométrica para una capa oculta, dato que fue presentado en la Tabla 8.

Page 66: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

47

3.4.3. RESULTADOS OBTENIDOS DEL PROCESO DE ENTRENAMIENTO-VALIDACIÓN

PARA LA CLASIFICACIÓN RURAL-NO RURAL.

A partir de la topología y método escogidos se ha procedido al entrenamiento y validación de la

red neuronal. Para dicho proceso se corrió el algoritmo 50 veces durante cien mil iteraciones

usando como datos de entrada los histogramas en modelo de color YUV, procediendo luego a

utilizar los pesos resultantes de cada entrenamiento en el clasificador para aplicarles en ellos el

proceso de validación cruzada, calculando para cada caso la curva ROC y el parámetro AUC con

el fin de comparar sus rendimientos.

En la Tabla 14 se presenta el valor del mayor parámetro AUC obtenido en el proceso de

validación. Se incluye en la tabla el valor de umbral de clasificación para el cual se genera el punto

más alejado en la curva ROC con respecto a la línea de no discriminación.

Tabla 14. Parámetro AUC y mejor umbral obtenidos a partir del proceso de validación cruzada.

En la Tabla 15 se muestra la matriz de confusión obtenida del clasificador, utilizando los datos

de validación, para el umbral de clasificación hallado.

Valor predicho por la red neuronal

Valor real

Tipo de Imagen Rural No Rural

Rural 288 12

No Rural 1 299

Tabla 15. Matriz de confusión en el modelo de color YUV para el clasificador de imágenes rurales y no rurales.

3.4.4. DISEÑO Y PRUEBA DE LA RED NEURONAL DE CLASIFICACIÓN DE COBERTURAS

El diseño de la red neuronal de clasificación de coberturas se ha realizado teniendo en cuenta los

resultados en cuanto a variación de capas obtenidos en el Diseño y prueba de la red neuronal para

la clasificación rural – no rural, puesto que se observó que añadir una nueva capa no aporta mejoría

al resultado de la clasificación por lo tanto se ha decidido entrenar con una capa oculta.

AUC Umbral

Histogramas YUV 0.980655 0,0036

Page 67: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

48

3.4.4.1. OBTENCIÓN DE LA TOPOLOGÍA

Aplicando la ecuación (15) del método de la pirámide geométrica, en la Tabla 16 se muestra la

cantidad de neuronas que debe contener la red neuronal de una sola capa oculta para cuatro salidas.

Método de obtención de

características

Numero de neuronas capa

de Entrada

Numero de neuronas

en la capa salida

Numero de neuronas

en la capa oculta

Histogramas RGB 1x768 1x4 55

Momentos de color RGB 1x9 1x4 6

PCA RGB 1x7680 1x4 350

Histogramas YUV 1x768 1x4 55

Momentos de color YUV 1x9 1x4 6

PCA YUV 1x6400 1x4 320

Tabla 16. Cantidad de neuronas en la capa oculta para clasificador multiclase.

3.4.4.2. OBTENCIÓN DE LA TASA DE APRENDIZAJE

La obtención de la tasa de aprendizaje se realizó siguiendo el mismo procedimiento utilizado en

la sección 3.4.2.2 del Diseño y prueba de la red neuronal para la clasificación rural – no rural. En

la Tabla 17 se presentan las tasas de aprendizaje escogidos por análisis empírico de las curvas

obtenidas. Las curvas de error cuadrático medio obtenidas se pueden observar en el Apéndice L.

Tasa de aprendizaje (eta)

1 capa oculta

Histogramas 0.00021

Momentos de color 0.0000065

Componentes principales 0.00032

Tabla 17. Tasas de aprendizaje escogidas para el entrenamiento de la red neuronal de clasificación de coberturas.

3.4.4.3. VARIACIÓN DEL NÚMERO DE NEURONAS

Se utilizó el mismo procedimiento realizado en la sección 3.4.2.3 para la obtención del parámetro

AP de las curvas de precisión y exhaustividad para cada variación en el número de neuronas en la

capa oculta.

Desde la Tabla 18 hasta la Tabla 21 se muestran el valor del parámetro AP de las curvas de

precisión y exhaustividad obtenidas de la red neuronal de una capa oculta para cada clase de

cobertura. Las curvas de precisión y exhaustividad son mostradas en el Apéndice M.

Page 68: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

49

Cobertura de árboles

Método Sin variación +10 neuronas +20 neuronas +30 neuronas

Histogramas RGB 0.8215 0.8176 0.8315 0.8230

Momentos de color RGB 0.7619 0.7781 0.7718 0.8021

PCA RGB 0.5627 0.5180 0.5701 0.5719

Histogramas YUV 0.8307 0.8259 0.8250 0.8274

Momentos de color YUV 0.7535 0.7851 0.7824 0.7843

PCA YUV 0.5884 0.5065 0.5085 0.5707

Tabla 18. Valor del parámetro AP para cada uno de los métodos propuestos al variar el número de neuronas en la

capa oculta para la clasificación de cobertura de árboles.

Cobertura de césped

Método Sin variación +10 neuronas +20 neuronas +30 neuronas

Histogramas RGB 0.8083 0.8131 0.8033 0.8081

Momentos de color RGB 0.8287 0.8141 0.7997 0.8324

PCA RGB 0.5578 0.5530 0.5390 0.5500

Histogramas YUV 0.8225 0.8297 0.8380 0.8414

Momentos de color YUV 0.7981 0.8200 0.8243 0.8123

PCA YUV 0.5689 0.5574 0.5604 0.5592

Tabla 19. Valor del parámetro AP para cada uno de los métodos propuestos al variar el número de neuronas en la

capa oculta para la clasificación de cobertura de césped.

Cobertura de suelo descubierto

Método Sin variación +10 neuronas +20 neuronas +30 neuronas

Histogramas RGB 0.3462 0.3493 0.3496 0.3469

Momentos de color RGB 0.2116 0.3678 0.3983 0.3955

PCA RGB 0.1754 0.1734 0.1808 0.1893

Histogramas YUV 0.3865 0.3618 0.3509 0.3538

Momentos de color YUV 0.2917 0.3436 0.3574 0.3697

PCA YUV 0.1885 0.1779 0.1828 0.1870

Tabla 20. Valor del parámetro AP para cada uno de los métodos propuestos al variar el número de neuronas en la

capa oculta para la clasificación de cobertura de suelo descubierto.

Page 69: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

50

Cobertura de cuerpos de agua

Método Sin variación +10 neuronas +20 neuronas +30 neuronas

Histogramas RGB 0.2111 0.2417 0.0825 0.2181

Momentos de color RGB 0.1491 0.2369 0.2440 0.2487

PCA RGB 0.1047 0.1100 0.1263 0.1137

Histogramas YUV 0.1745 0.1838 0.1782 0.1881

Momentos de color YUV 0.1291 0.2152 0.2294 0.2285

PCA YUV 0.1021 0.1009 0.1187 0.0979

Tabla 21. Valor del parámetro AP para cada uno de los métodos propuestos al variar el número de neuronas en la

capa oculta para la clasificación de cobertura de cuerpos de agua.

3.4.4.4. MÉTODO Y TOPOLOGÍA ESCOGIDOS

A partir de los resultados expuestos en la Tabla 18, Tabla 19, Tabla 20 y Tabla 21 del apartado

3.4.4.3, se puede apreciar que el método de los momentos de color en modelo RGB ofrecen un

mejor parámetro AP para la clasificación de suelos descubiertos y cuerpos de agua, en cambio,

para coberturas de árboles y césped los histogramas en modelo RGB y YUV muestran mejor

rendimiento. Sin embargo, la diferencia en los parámetros AP de los métodos de histogramas en

modelo RGB y YUV no difieren de más de 3% respecto a los parámetros AP del método de los

momentos de color en modelo RGB.

Observando el rendimiento para las distintas variaciones de neuronas con el método de los

momentos de color en modelo RGB, se muestra que con una variación de 30 neuronas se presenta

un aumento de un poco más de 10% en el valor del parámetro AP con respecto a la no variación

de neuronas en la capa oculta, para la clasificación de coberturas de suelo descubierto y cuerpos

de agua.

Por lo tanto, para el entrenamiento se escogen como características de entrada los momentos de

color en el modelo de color RGB con una adición de 30 neuronas en su capa oculta respecto a su

valor de topología de red calculada a partir del método de la pirámide geométrica.

Page 70: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

51

3.4.5. RESULTADOS OBTENIDOS DEL PROCESO DE ENTRENAMIENTO-VALIDACIÓN

PARA LA CLASIFICACIÓN DE COBERTURAS

A partir de la topología y método escogidos se ha procedido al entrenamiento y validación de la

red neuronal. Para dicho proceso se corrió el algoritmo 50 veces durante cien mil iteraciones,

usando como datos de entrada los histogramas en modelo de color YUV, procediendo luego a

utilizar los pesos resultantes de cada entrenamiento en el clasificador para aplicarles en ellos el

proceso de validación cruzada, calculando para cada caso la curva ROC y el parámetro AUC con

el fin de comparar sus rendimientos.

A partir de la topología y método escogidos se ha procedido a realizar el proceso de entrenamiento

y validación de la red neuronal. Para dicho proceso se corrió el algoritmo 50 veces durante

quinientas mil iteraciones, usando como datos de entrada los momentos de color en el modelo de

color RGB, y se escogió el entrenamiento que presentara los mejores parámetros AP en el proceso

de validación en al menos tres de las cuatro coberturas. En la Tabla 22 se presenta el mayor valor

del parámetro AP por cobertura obtenido en el proceso de validación cruzada junto con el umbral

de clasificación donde se obtiene el error total mínimo.

Tabla 22. Parámetro AP y mejor umbral obtenidos a partir del proceso de validación cruzada.

Desde la Tabla 23 hasta la Tabla 26 se muestra las matrices de confusión por cada cobertura

para el umbral de clasificación hallado.

Valor predicho por la red neuronal

Valor real

Tipo de Imagen Rural No Rural

Cobertura 2073 424

Sin cobertura 668 1635

Tabla 23. Matriz de confusión para la clasificación de cobertura de árboles.

AP Umbral

Cobertura de

árboles

0,802468 0,6655

Cobertura de

césped

0,859154 0,3936

Cobertura de

suelo descubierto

0,393193 0,5175

Cobertura de

cuerpos de agua

0,237139 0,4249

Page 71: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

52

Valor predicho por la red neuronal

Valor real

Tipo de Imagen Rural No Rural

Cobertura 1941 543

Sin cobertura 649 1667

Tabla 24. Matriz de confusión para la clasificación de cobertura de césped.

Valor predicho por la red neuronal

Valor real

Tipo de Imagen Rural No Rural

Cobertura 103 692

Sin cobertura 74 3931

Tabla 25. Matriz de confusión para la clasificación de cobertura de suelo descubierto.

Valor predicho por la red neuronal

Valor real

Tipo de Imagen Rural No Rural

Cobertura 48 425

Sin cobertura 42 4285

Tabla 26. Matriz de confusión para la clasificación de cobertura de cuerpos de agua.

Page 72: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

53

4. DISEÑO Y PRUEBA DEL MÓDULO DE IMÁGENES DE

RITAQDA

En este capítulo se presenta el diseño y puesta a prueba del módulo de imágenes de RITAQDA

según los requerimientos de La Red de Investigaciones de Tecnología Avanzada RITA UD, junto

con la implementación del sistema CBIR en el mismo, según lo planteado en la sección 1.1 del

presente documento.

El software de RITAQDA se encuentra implementado en el framework de Django, que trabaja

utilizando lenguaje Python, y utiliza el gestor de base de datos MySQL para guardar información

correspondiente al proyecto creado, los archivos subidos al proyecto y los códigos, categorías y

citaciones correspondiente al archivo, pudiendo el programa acceder a estos datos y haciendo del

software una herramienta CAQDAS. Por este motivo se requiere para la implementación del

módulo de imágenes crear modelos de tablas de base de datos, donde se guarden los archivos de

las imágenes subidas, así como la información correspondiente a los códigos, categorías y

citaciones realizadas a las imágenes, crear las vistas que permita manejar la información dentro

del programa y crear el entorno gráfico que permita al usuario visualizar esa información. Todo

esto se desarrollará según los requerimientos del software.

Para la implementación del sistema CBIR se escribe los códigos de extracción de características y

las redes neuronales dentro de clases en archivo Python que se puede importar desde el proyecto

principal de RITAQDA para su utilización. Los códigos de los algoritmos de extracción de

características y de las redes neuronales se desarrollarán siguiendo los resultados obtenidos en el

apartado 2.9.5. La red neuronal de clasificación rural-no rural utilizará como datos de entrada los

histogramas YUV de las imágenes, y para la red neuronal de clasificación de coberturas se dividirá

la imagen rural en partes iguales y se utilizará los momentos de color RGB de cada una de esas

partes como los datos de entrada. Se utilizará como pesos para las redes neuronales y como valor

de umbral de clasificación aquellos que generaron los mayores desempeños obtenidos en el

proceso de entrenamiento-validación, mostrados en la sección 3.4.3 y 3.4.5, es decir, aquellos que

generaron el mayor valor en el parámetro AUC y AP. La salida de la red neuronal de clasificación

de coberturas se utilizará como códigos dentro de RITAQDA con el nombre de cada una de las

Page 73: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

54

coberturas y las implementará dentro de la imagen según los requerimientos del sistema CBIR

para el software.

Una vez implementado todo el módulo, se suben imágenes a la plataforma y se mira su

funcionamiento. El funcionamiento del software ha de proceder según los requerimientos del

mismo.

4.1. DESCRIPCION Y ESTADO DE DESARROLLO DE RITAQDA

Como se observó en la sección 1.1, la Red de Investigaciones de Tecnología Avanzada RITA UD

se encuentra en proceso de desarrollo de una herramienta CAQDAS de código abierto llamada

RITAQDA basada en el código fuente de una iniciativa de código abierto denominada LibreQDA

(Silva, Freitas, Fulchi, & Muñoz Justicia, 2017), dicha herramienta utiliza una arquitectura cliente

servidor proporcionando al usuario un servicio web y fue realizada mediante el lenguaje de

programación Python que gestiona el servicio a través del framework Django. Dicho framework

está basado en el modelo vista plantilla MTP (por sus siglas en ingles Model View Template). En

la Figura 21 se puede observar una descripción detallada del su funcionamiento.

Figura 21. Modelo vista plantilla del framework Django. Tomado de (Infante Montero, 2012)

RITAQDA es un proyecto en desarrollo que emprendió RITA en el año 2016 al servicio de la

Universidad Distrital Francisco José de Caldas. El desarrollo de este software está contemplado

en 4 fases, en las cuales se implementará la codificación de texto, imagen, audio y video (Rita,

2016).Actualmente el software cuenta con el módulo de gestión de documentos, gestión de

códigos, citaciones, anotaciones, aunque dentro del módulo de documentos solo se pueden crear

citaciones pudiendo agregar códigos y anotaciones a dichas citaciones.

Page 74: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

55

El modelo de la base de datos de concerniente a la funcionalidad del software se puede observar

en la Figura 22.

Figura 22. Estado de la base de datos antes del inicio del proyecto. Fuente elaboración propia.

4.2. REQUERIMIENTOS DEL MÓDULO DE IMÁGENES DE RITAQDA

Para el desarrollo del módulo de imágenes se llevó a cabo mediante el grupo de investigación

RITA un análisis de los requerimientos, funcionales y no funcionales que debería tener el mismo,

pactados sobre la base de código ya existente. A continuación, se presentan dichos requerimientos:

4.2.1. REQUERIMIENTOS FUNCIONALES

Con el grupo de investigación RITA se han identificado las siguientes funcionalidades:

Page 75: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

56

4.2.1.1. AGREGAR O ELIMINAR IMAGEN A PROYECTO (REQ-01)

Un usuario registrado debe poder agregar una imagen a un proyecto al que pertenezca dicho

usuario. También debe poder eliminar una imagen de un proyecto al que pertenezca dicho usuario.

4.2.1.2. LISTAR IMÁGENES PERTENECIENTES A UN PROYECTO (REQ-02)

El módulo debe listar las imágenes pertenecientes a un proyecto, mostrando en detalle el nombre

de la imagen, el comentario asociado, el tipo de imagen, la fecha en que fue agregada y el usuario

que la subió.

4.2.1.3. SUBIR IMAGEN (REQ-03)

El módulo de imágenes de RitaQDA debe permitir a un usuario registrado, una vez seleccionado

el proyecto, subir una imagen al servidor, especificando un nombre y un comentario para dicha

imagen.

4.2.1.4. VERIFICAR IMAGEN (REQ-04)

En caso de no ser un archivo imagen valida el módulo debe informarlo al usuario y no permitir

que la imagen sea subida al sistema.

4.2.1.5. IDENTIFICAR INFORMACIÓN EN LA IMAGEN (REQ-05)

Una vez subida una imagen el módulo debe identificar si la imagen pertenece a la categoría rural

o no rural, si se encuentra en la categoría rural se deben identificar cuatro características dentro de

la misma como lo son árboles, césped, suelo descubierto y cuerpos de agua.

4.2.1.6. VISUALIZAR IMAGEN (REQ-06)

El módulo debe permitir al usuario visualizar una imagen del proyecto, mostrando también el

nombre de dicha imagen, si la imagen es rural debe hacer una sugerencia de las características

identificadas en la funcionalidad 4.2.1.5 encuadrándolas en una parte de la imagen, y asignándolas

como códigos al proyecto en caso de ser aceptada dicha sugerencia.

4.2.1.7. REALIZAR CITACIONES SOBRE LA IMAGEN (REQ-07)

Una vez visualizada una imagen se debe poder seleccionar una parte rectangular de la imagen y

asignarle una citación.

Page 76: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

57

4.2.1.8. ASIGNAR CÓDIGOS A UNA ANOTACIÓN (REQ-08)

Una vez agregada una anotación a una imagen se deben poder asignar los códigos del proyecto a

dicha citación.

4.2.1.9. ASIGNAR CATEGORÍAS A UNA ANOTACIÓN (REQ-09)

Una vez agregada una anotación a una imagen se deben poder asignar las categorías del proyecto

a dicha citación.

4.2.1.10. VER DETALLES DE UNA ANOTACIÓN (REQ-10)

Si se visualiza una imagen con citaciones un usuario al seleccionar una de ellas y visualizar la

información. Mostrando la fecha de creación y modificación, el creador, y el comentario asociado.

Así como también los códigos asignados a la cita.

4.2.2. REQUERIMIENTOS NO FUNCIONALES

A partir del sistema ya implementado se ha procedido a establecer los requerimientos no

funcionales que se listan a continuación.

• El módulo debe ser programado en Python y su framework Django versión 1.4.

• Se debe utilizar el modelo de datos implementado por el framework Django.

• La interfaz gráfica se debe realizar mediante las tecnologías web Html , css y javascript.

• La interfaz gráfica se debe estilizar mediante el framework Boostrap.

• Las anotaciones deben ser compatibles con la librería Jquery.

• Se debe utilizar la base de datos Mysql.

4.3. MODELO DE BASE DE DATOS PARA EL MÓDULO DE IMÁGENES

A partir del modelo de la base de datos inicial observado en la Figura 23 y los requerimientos

funcionales se han identificado las entidades (tablas), y sus respectivos atributos, que serán

añadidas a la base de datos.

Page 77: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

58

Figura 23. Entidades que es necesario añadir para implementar el módulo de imágenes de Ritaqda.

4.4. IMPLEMENTACIÓN DEL SISTEMA CBIR

En la Figura 24 se puede apreciar el modelo propuesto para el sistema CBIR implementado en el

módulo de imágenes de Ritaqda, compuesto por el frontend y el backend. El frontend es accesible

mediante cualquier navegador web, y se realizó mediante tecnologías como Html, Css, Javascript,

con sus respectivos frameworks como son Jquery, Boostrap y Annotorious. El backend consta de

una base de datos Mysql y se programó en el lenguaje Python, dentro del cual se utilizó el

framework Django para construir el aplicativo web. En el Apéndice N se puede observar el código

Page 78: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

59

de las vistas, las plantillas y los modelos agregados a Ritaqda. Para la implementación del

clasificador basado en redes neuronales se utilizó código Python.

Figura 24. Modelo del sistema CBIR implementado en el módulo de imágenes de Ritaqda.

4.4.1 ALGORITMO DE EXTRACCIÓN DE CARACTERÍSTICAS Y RED NEURONAL

A partir de los pesos obtenidos del entrenamiento realizado en la sección 3.4 se ha procedido a

realizar la programación del módulo de clasificación en el lenguaje de programación Python,

creando dos clases cuyo diagrama podemos apreciar en la Figura 25 y que es utilizada por una de

las vistas del módulo de imágenes.

Page 79: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

60

Figura 25. Diagrama de clases de los clasificadores.

En estas clases se encuentran las funciones de extracción de características para cada uno de los

clasificadores, según los análisis realizados en las secciones 3.4.2.4 y 3.4.4.4. La funcion de

extracción de característica del clasificador rural-no rural recibe como entrada la matriz RGB de

la imagen subida al software y realiza el algoritmo de extracción de características de histogramas

descrito en la sección 3.3.2, en modelo de color YUV. La función de extracción de característica

del clasificador de coberturas recibe como entrada la matriz RGB de cada una de las partes de la

imagen luego de dividirla en pedazos de tamaño cercanas o iguales a 128x128 pixeles, y realiza el

algoritmo de extracción de características de momento de color descrito en la sección 3.3.3, en

modelo de color RGB.

Los resultados obtenidos de la extracción de características entran a la función de la red neuronal

de su respectivo clasificador y utilizan el algoritmo descrito en la sección 3.4.1. Si el clasificador

rural-no rural reconoce la imagen como rural habilita el programa para que realice la clasificación

de coberturas, en caso contrario no lo habilita. En ambos casos, la imagen es guardada en la base

de datos y la salida de la red neuronal de clasificación de coberturas para cada una de las partes de

la imagen es indexada y también almacenada. En el Apéndice O se puede observar el código en

Python de las clases.

4.4.2 ALGORITMO DE FUNCIÓN DE SIMILITUD

Para la escogencia de la función de similitud se utilizó como métrica la distancia de Manhattan al

ser esta considerada en la bibliografía como la medida estadística más robusta (Ciocca & Gagliardi,

2000). La fórmula de la distancia de Manhattan se tomó de la Tabla 3 de la sección 2.9.5.

En el algoritmo, la función recibe desde la base de datos la suma normalizada, para cada una de

las 4 salidas de la red neuronal de coberturas, de todos los fragmentos para cada una de las

Page 80: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

61

imágenes rurales almacenadas. La suma normalizada de la imagen a la cual se le está buscando

similitud se guarda en un vector A. La suma normalizada para cualquier otra imagen se guarda en

un vector B. Expresándolo en ecuaciones, la forma de obtener el vector para cualquier imagen es

de la siguiente forma:

𝑉𝑒𝑐𝑡𝑜𝑟(𝑎𝑟𝑏𝑜𝑙, 𝑐𝑒𝑠𝑝𝑒𝑑, 𝑠𝑢𝑒𝑙𝑜, 𝑎𝑔𝑢𝑎) =1

𝑛∑ 𝑆𝑐𝑖(𝑎𝑟𝑏𝑜𝑙, 𝑐𝑒𝑝𝑒𝑑, 𝑠𝑢𝑒𝑙𝑜, 𝑎𝑔𝑢𝑎)

𝑛

𝑖=1

Donde Sci es la salida de la red neuronal de coberturas para uno de los fragmentos de la imagen y

n es la cantidad de partes en la que se dividió la imagen rural.

Una vez obtenidos los vectores se realiza la función de Manhattan entre ellos. La distancia obtenida

se compara con un valor umbral. Si la distancia es menor al valor umbral las imágenes son

similares.

El código de la distancia de Manhattan se encuentra implementado dentro del código en la función

similar de la vista del módulo de imágenes (Apéndice N).

4.5. PRUEBA DEL MÓDULO DE IMÁGENES

Para verificar el funcionamiento del módulo de imágenes de RITAQDA y el sistema CBIR

implementado en él se hicieron pruebas con 54 imágenes.

Por medio de la consola de Python se pudo comprobar el funcionamiento de la red neuronal de

clasificación rural-no rural al imprimir un mensaje mostrando si la imagen era rural o no. Por

medio del navegador se comprobó el funcionamiento de la red neuronal de clasificación de

coberturas para la codificación de imágenes rurales ya que solo para ese tipo de imágenes se mostró

una lista de códigos sugeridos con los tipos de coberturas que la red neuronal consideró que

poseían.

En la Figura 26 y Figura 27 se muestran pantallazos del funcionamiento del software para los

casos donde se sube una imagen no rural y una imagen rural respectivamente junto con su

respectivo mensaje de la consola de Python mostrando si es rural o no. Para la imagen rural también

se muestra la lista de códigos sugeridos con sus respectivas coberturas.

Page 81: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

62

Figura 26. Resultado del software para una imagen no rural.

Figura 27. Resultado del software para una imagen rural.

Page 82: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

63

Al seleccionar mediante el puntero del ratón alguna de las opciones de la lista de códigos sugeridos

y al hacer click en ellos, se muestra que efectivamente el programa encuadra la zona de la imagen

donde la red neuronal piense que se encuentre dicha cobertura y agrega una etiqueta de código con

la misma. En la Figura 28, Figura 29 y Figura 30 se muestran algunos de estos ejemplos.

Figura 28. Resultado de software respecto al etiquetado de coberturas en imágenes rurales.

Figura 29. Resultado de software respecto al etiquetado de coberturas en imágenes rurales.

Page 83: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

64

Figura 30. Resultado del software respecto al etiquetado de coberturas en imágenes rurales.

Figura 31. Resultado del software respecto al etiquetado de coberturas en imágenes rurales

Para la prueba del sistema de búsqueda de imágenes similares se escogieron 4 de las 54 imágenes

subidas, cada una con un tipo de cobertura dominante. Se varió el umbral de comparación entre

valores de 0.1 a 1.5 en pasos de una décima para observar la relación entre las imágenes

recuperadas por el sistema y las imágenes relevantes. En la Tabla 27, Tabla 28, Tabla 29 y Tabla

30 se muestran la cantidad de imágenes recuperadas, la cantidad de imágenes relevantes, la

precisión y la exhaustividad por cada valor umbral para cada imagen de prueba.

Page 84: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

65

Umbral Imágenes

recuperadas

Imágenes

relevantes

Precisión Exhaustividad

0 0 0 - 0

0.1 0 0 - 0

0.2 3 2 0,66666667 0,25

0.3 14 4 0,28571429 0,5

0.4 26 6 0,23076923 0,75

0.5 34 8 0,23529412 1

0.6 40 8 0,2 1

0.7 44 8 0,18181818 1

0.8 44 8 0,18181818 1

0.9 46 8 0,17391304 1

1 46 8 0,17391304 1

Tabla 27. Cantidad de imágenes recuperadas e imágenes relevantes

al variar el umbral de comparación para la imagen de prueba 1.

Umbral Imágenes

recuperadas

Imágenes

relevantes

Precisión Exhaustividad

0.1 0 0 - 0

0.2 0 0 - 0

0.3 1 1 1 0,1

0.4 1 1 1 0,1

0.5 5 3 0,6 0,3

0.6 7 4 0,57142857 0,4

0.7 8 5 0,625 0,5

0.8 11 5 0,45454545 0,5

0.9 13 6 0,46153846 0,6

1 24 10 0,41666667 1

1.1 30 10 0,33333333 1

1.2 40 10 0,25 1

1.3 44 10 0,22727273 1

1.4 45 10 0,22222222 1

1.5 46 10 0,2173913 1

Tabla 28. Cantidad de imágenes recuperadas e imágenes relevantes

al variar el umbral de comparación para la imagen de prueba 2.

Page 85: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

66

Umbral Imágenes

recuperadas

Imágenes

relevantes

Precisión Exhaustividad

0 0 0 - 0

0.1 0 0 - 0

0.2 1 1 1 0,125

0.3 3 3 1 0,375

0.4 9 4 0,44444444 0,5

0.5 15 6 0,4 0,75

0.6 31 7 0,22580645 0,875

0.7 39 8 0,20512821 1

0.8 44 8 0,18181818 1

0.9 46 8 0,17391304 1

Tabla 29. Cantidad de imágenes recuperadas e imágenes relevantes

al variar el umbral de comparación para la imagen de prueba 3.

Umbral Imágenes

recuperadas

Imágenes

relevantes

Precisión Exhaustividad

0 0 0 - 0

0.1 1 1 1 0,06666667

0.2 3 2 0,66666667 0,13333333

0.3 9 7 0,77777778 0,46666667

0.4 15 10 0,66666667 0,66666667

0.5 31 13 0,41935484 0,86666667

0.6 32 13 0,40625 0,86666667

0.7 36 14 0,38888889 0,93333333

0.8 43 14 0,3255814 0,93333333

0.9 45 15 0,33333333 1

1 46 15 0,32608696 1

Tabla 30. Cantidad de imágenes recuperadas e imágenes relevantes

al variar el umbral de comparación para la imagen de prueba 4.

En la Figura 32, Figura 34, Figura 36 y Figura 38 se muestra las imágenes utilizadas para hacer

las pruebas y en la Figura 33, Figura 35, Figura 37 y Figura 39 se muestran los resultados de la

búsqueda de similitud realizada por el sistema para un valor de umbral de comparación de 0.35,

para cada una de las respectivas imágenes de prueba.

Page 86: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

67

Figura 32. Imagen de prueba 1 con cobertura de árboles.

Figura 33. Resultado del software respecto a la búsqueda de imágenes similares con coberturas de árboles.

Page 87: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

68

Figura 34. Imagen de prueba 2 con cobertura de cesped.

Figura 35. Resultado del software respecto a la búsqueda de imágenes similares con coberturas de cesped.

Page 88: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

69

Figura 36. Imagen de prueba 3 con cobertura de suelo descubierto.

Figura 37. Resultado del software respecto a la búsqueda de imágenes similares con coberturas de suelo

descubierto.

Page 89: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

70

Figura 38. Imagen de prueba 4 con cobertura de cuerpos de agua.

Figura 39. Resultado del software respecto a la búsqueda de imágenes similares con coberturas de cuerpos de agua.

Page 90: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

71

5. ANÁLISIS DE RESULTADOS

En este capítulo se analizan los resultados obtenidos en los procesos de validación para la red

neuronal de clasificación de imágenes rurales y no rurales y para la red neuronal de clasificación

de coberturas en imágenes rurales. A su vez, estos análisis resultan transcendentes a la hora de

explicar los resultados mostrados de las pruebas realizadas al software de RITAQDA con el

sistema CBIR.

5.1. ANÁLISIS DE LAS REDES NEURONALES FEED-FORWARD

5.1.1. ANÁLISIS DE LA RED NEURONAL DE CLASIFICACIÓN RURAL-NO RURAL

A partir de los resultados mostrados en la Tabla 14 y en la Tabla 15 de la sección 3.4.3 y de las

ecuaciones mostradas en la Tabla 2 se observa que, para el valor de umbral de clasificación de

0.0036, la tasa de error del clasificador rural-no rural es de 2.4% y la exactitud es del 97.6%,

implicando que el clasificador predice con buen grado de acierto las instancias rurales y no rurales.

Al calcular la sensibilidad del sistema obtenemos una tasa del 96% y al calcular la especificidad

del sistema obtenemos una tasa del 99.6%. Esto último da a entender que la red neuronal tiende a

clasificar más correctamente las imágenes no rurales que las imágenes rurales.

Finalmente, en la Figura 40 se muestra la curva ROC del clasificador obtenida en el proceso de

validación. En ella se puede observar que la curva se acerca a la forma ideal dibujada para un

clasificador perfecto. Si analizamos el valor del parámetro AUC, el cual es de 0.980655,

efectivamente se observa que el valor es muy cercano a 1 que es el valor ideal de un clasificador

perfecto.

Page 91: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

72

Figura 40. Curva ROC de la red neuronal de clasificación rural-no rural aplicada al software de RITAQDA.

5.1.2. ANÁLISIS DE LA RED NEURONAL DE CLASIFICACIÓN DE COBERTURAS

A partir de los resultados mostrados en la Tabla 22, Tabla 23, Tabla 24, Tabla 25 y Tabla 26 de

la sección 3.4.5 y de las ecuaciones mostradas en la Tabla 2 hallamos los valores de la tasa de

error, exactitud, sensibilidad y precisión para el valor de umbral de clasificación específico de cada

cobertura. A continuación, se enlistan en una tabla los valores obtenidos.

Tasa de error (%) Exactitud (%) Sensibilidad (%) Precisión (%)

Cobertura de

árboles

22.75 77.25 83.01 75.63

Cobertura de

césped

24.83 75.16 78.14 74.94

Cobertura de suelo

descubierto

15.95 84.04 12.95 58.19

Cobertura de

cuerpos de agua

9.73 90.27 10.14 53.33

Tabla 31. Parámetros de clasificación obtenidos de la red neuronal de coberturas.

A partir de la Tabla 31 se observa que el clasificador de coberturas genera tasas de error

medianamente bajo y con valores por debajo del 25% para todas las coberturas. A su vez, los

valores de exactitud para cada cobertura se pueden considerar altos al estar todos por encima del

75%.

Page 92: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

73

Analizando los datos del clasificador para la cobertura de árboles y para la cobertura de césped se

puede notar que poseen valores similares en la sensibilidad y en la precisión. Estos valores, que

están aproximadamente entre un 80% para sensibilidad y un 75% para precisión, nos están

indicando, respectivamente, que la red neuronal está clasificando correctamente cada 4 de 5

instancias positivas y que además la proporción de instancias positivas predichas que son correctas,

es 3 de cada 4.

Al observar las curvas de precisión y exhaustividad de las coberturas de árboles y césped mostradas

en la Figura 41 y Figura 42 se puede notar que la posición de la línea de discriminación en ambos

casos está ligeramente por encima del 50% lo cual implica que el conjunto de datos con el cual se

validó la red neuronal es prácticamente balanceado. Al hallar los valores de especificidad

obtenemos valores de 70.99% para cobertura de árboles y 71.97% para cobertura de césped. Al

comparar dichos valores con los de sensibilidad se observa que la red neuronal clasifica

correctamente, en mayor medida las instancias positivas que las instancias negativas.

Figura 41. Curva de precisión y exhaustividad de la red neuronal de clasificación de coberturas para la clasificación

de árboles.

Page 93: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

74

Figura 42. Curva de precisión y exhaustividad de la red neuronal de clasificación de coberturas para la clasificación

de césped.

Analizando los datos del clasificador para la cobertura de suelo descubierto y cuerpos de agua se

observa que, a diferencia de las coberturas de árboles y césped, estos poseen bajos valores de

sensibilidad que rondan alrededor del 10%, y poseen valores de precisión que rondan alrededor

del 50% para la cobertura de suelo descubierto y 60% para la cobertura de cuerpos de agua. Esto

implica que solo 1 de cada 10 instancias positivas son clasificadas correctamente, y que la mitad

de las predicciones de las instancias positivas son correctas.

Al observar las curvas de precisión y exhaustividad para las coberturas de suelo descubierto y

cuerpos de agua mostradas en la Figura 43 y Figura 44 puede notarse que las posiciones de la

líneas de discriminación se encuentran muy por debajo del 50%, lo que indica que el conjunto de

datos con el cual se validó la red neuronal no es balanceado con una mayor cantidad de instancias

negativas que positivas. Al hallar la especificidad obtenemos un valor de 98.15% para cobertura

de suelo descubierto y 99.02% para cobertura de cuerpos de agua. Al comparar dichos valores con

los de sensibilidad se observa que la red neuronal tiende a clasificar perfectamente las instancias

negativas, pero presenta una proporción de clasificación baja de instancias positivas.

Page 94: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

75

Figura 43. Curva de precisión y exhaustividad de la red neuronal para la clasificación de suelo descubierto.

Figura 44. Curva de precisión y exhaustividad de la red neuronal para la clasificación de cuerpos de agua.

Page 95: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

76

5.2. ANÁLISIS AL MÓDULO DE IMÁGENES DEL SOFTWARE RITAQDA

5.2.1. CUMPLIMIENTO DE REQUERIMIENTOS

A partir de los requerimientos funcionales para el módulo de imágenes se presenta en la Tabla 32

la confirmación de lo que se cumplió al implementar el módulo de imágenes de RitaQDA.

Código de

requerimiento Descripción ¿Se Cumplió?

REQ-01 Agregar o eliminar imagen de proyecto. Si

REQ-02 Listar imágenes pertenecientes a un proyecto. Si

REQ-03 Subir imagen. Si

REQ-04 Verificar imagen. Si

REQ-05 Identificar información en la imagen. Si

REQ-06 Visualizar imagen. Si

REQ-07 Realizar citaciones sobre imagen. Si

REQ-08 Asignar códigos a una anotación. Si

REQ-09 Asignar categorías a una anotación. No

REQ-10 Ver detalles de una anotación. Si

Tabla 32. Lista de requerimientos cumplidos en el desarrollo del software de RITAQDA.

Cabe resaltar que no fue posible el cumplimiento del requerimiento REQ-09 debido a que dentro

del software no estaban implementada la vista de categorías y al ser inexistente no podíamos

relacionarla dentro del módulo.

5.2.2. ANÁLISIS AL SISTEMA CBIR

En base a las pruebas realizadas en la sección 4.5 y al análisis realizado a las redes neuronales en

la sección 5.1 se analiza el sistema de codificación y etiquetamiento de coberturas en las

imágenes rurales y el sistema de búsqueda de imágenes similares.

5.2.2.1 SISTEMA DE CODIFICACIÓN Y ETIQUETAMIENTO

Debido a que el clasificador de las coberturas no es perfecto se generaron errores de clasificación.

Como la salida del clasificador está conectada con la codificación y etiquetado de coberturas en el

software, estos errores se pueden visualizar. Los errores que han sido visualizados en la

codificación y etiquetado son los siguientes:

Page 96: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

77

1. Exclusión de cobertura: No se visualiza dentro de la lista de sugerencia de códigos alguna

cobertura a pesar de existir dicha cobertura en la imagen. Analizando, el error sucede

debido a que el valor de la sensibilidad para cada cobertura no es del 100%. Se ha

observado la cobertura que ha sido más afectada por este error ha sido la cobertura de

cuerpos de agua, la cual es la que posee el menor valor de sensibilidad.

2. Inclusión de cobertura: Se visualiza dentro de la lista de sugerencia de códigos alguna

cobertura que no existe en la imagen. Se ha observado que las coberturas que han sido más

afectadas por este error han sido la cobertura de árboles y la cobertura de césped. Esto

último sucede debido a que el valor de la especificidad no es cercano al 100% como sucede

con los casos de las coberturas de suelo descubierto y cuerpos de agua y por lo tanto existe

una cantidad considerable de falsos positivos.

3. Etiquetado de cobertura extra: Se coloca etiqueta de cobertura en zona de la imagen donde

no existe esa cobertura. El error sucede debido a un valor alto en la sensibilidad y un valor

pequeño en la precisión.

4. Etiquetado de cobertura no incluida: No se coloca etiqueta de cobertura en una zona de la

imagen a pesar de que sí existe esa cobertura en esa zona. El error sucede cuando el valor

de la especificidad es alto y el valor de la sensibilidad es pequeña.

5.2.2.2 SISTEMA DE BÚSQUEDA DE IMÁGENES SIMILARES

Además de errores debido al clasificador, se pudo observar el efecto del umbral de comparación

al momento de mostrar imágenes similares. A partir de los resultados mostrados en la Tabla 27,

Tabla 28, Tabla 29 y Tabla 30 se obtuvieron las curvas de precisión y exhaustividad del sistema

de búsqueda realizadas a las imágenes de prueba mostradas en la Figura 32, Figura 34, Figura

36 y Figura 38. Las curvas de precisión y exhaustividad se muestran en la Figura 45, Figura 46,

Figura 47 y Figura 48, junto con ellas las curvas aproximadas con métodos de regresión.

A partir de las curvas se observa que a medida que aumenta la precisión decrece la exhaustividad

lo que implica que, a medida que disminuimos el umbral de comparación la cantidad de imágenes

recuperadas por el sistema será menor pero la mayoría de las imágenes recuperadas serán

relevantes. Debido a que nuestro sistema creado es un sistema de sugerencia, se ha decidido

priorizar más la precisión del sistema que su exhaustividad. Se ha escogido para el sistemaun valor

umbral que genere una precisión del 60%.

Page 97: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

78

Figura 45. Curva de precisión y exhaustividad para el sistema de búsqueda de la imagen de prueba 1.

Figura 46. Curva de precisión y exhaustividad para el sistema de búsqueda de la imagen de prueba 2.

Page 98: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

79

Figura 47. Curva de precisión y exhaustividad para el sistema de búsqueda de la imagen de prueba 3.

Figura 48. Curva de precisión y exhaustividad para el sistema de búsqueda de la imagen de prueba 4.

Page 99: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

80

CONCLUSIONES

En el presente proyecto construyó un módulo, para la organización y análisis de imágenes

aplicando la metodología QDA, implementado en el software Ritaqda. Además, se ha provisto a

dicho módulo de características como el etiquetado automático de códigos y la sugerencia de

imágenes similares para imágenes rurales, mediante la implementación de un sistema CBIR basado

en redes neuronales Feed-forward.

Durante el proceso se utilizaron técnicas de extracción de características en imágenes utilizadas en

la bibliografía de referencia como lo fueron los histogramas, los momentos de color y la extracción

de los componentes principales de la imagen, proceso realizado en dos modelos de color, también

presentes en la bibliografía, como lo fueron el YUV y el RGB.

A partir de las características extraídas se realizó el proceso de entrenamiento de los modelos de

red neuronal que por un lado clasifican imágenes rurales vs no rurales, y por el otro clasifican

cuatro coberturas dentro de las imágenes rurales. Los resultados obtenidos demostraron que (de

los modelos utilizados en la presente monografía) el modelo de red neuronal con mejor desempeño

en la clasificación de imágenes rurales-no rurales, fue aquel cuya topología constaba de una capa

oculta sin variar el número de neuronas calculado mediante el método de la pirámide geométrica,

y en el que se utilizaron como características de entrada los histogramas en el modelo de color

YUV. Así mismo también se demostró a partir de los resultados obtenidos que (de los modelos

utilizados en la presente monografía) el modelo de red neuronal con mejor desempeño para la

clasificación de coberturas en imágenes rurales, fue aquel cuya topología constaba de una capa

oculta aumentándole 30 neuronas al valor calculado mediante el método de la pirámide geométrica

y utilizando como características de entrada los momentos de color en el modelo RGB. Durante

esta fase se logró evidenciar que, los clasificadores obtenidos con datos balanceados tuvieron un

rendimiento cercano al ideal, mientras que, con datos desbalanceados los clasificadores tienden a

sesgar los resultados hacia la instancia con mayor cantidad de datos. Esto se observó para las redes

neuronales de clasificación de coberturas de suelo descubierto y cuerpos de agua las cuales

clasificaban mejor las instancias negativas, clasificando las instancias positivas en una menor

medida.

Page 100: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

81

Para la búsqueda de imágenes similares se logró observar que para imágenes que presenten

diferentes coberturas el umbral de comparación con cual se discrimina imágenes relevantes de las

no relevantes es diferente. Así, para discriminar mejor las imágenes es mejor tener un valor umbral

específico por cada cobertura clasificada.

A partir de los clasificadores basados en redes neuronales se procedió a desarrollar el sistema

CBIR y el módulo de imágenes para el software RitaQDA, mediante el lenguaje de programación

Python y su framework Django conectado a la base de datos MySql, como backend, y tecnologías

de la web como Html, Css y Javascript en la parte del frontend. Finalmente, todo este proceso

culmino exitosamente con la integración del módulo desarrollado en la presente monografía dentro

de la plataforma RitaQDA.

Page 101: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

82

TABAJO FUTURO

Durante la realización de este proyecto surgieron algunas inquietudes, que consideramos pueden

ser de interés para la comunidad académica y que pueden desembocar en el mejoramiento de los

resultados aquí obtenidos. Dichas inquietudes se encuentran relacionadas con la identificación de

clases en imágenes y se enuncian a continuación:

• Utilización de otros modelos de color como el HSV o el Rg chromaticity que también son

usados en aplicaciones de visión artificial.

• En la presente monografía se entrenó una red neuronal muticlase para la clasificación de

cuatro coberturas, se plantea el entrenamiento de cuatro redes neuronales por separado para

comparar su rendimiento.

• Utilización de algoritmos no supervisados como redes autoorganizadas de kohonen y otros

algoritmos más modernos como las redes neuronales convolucionales.

• Utilización de bibliotecas de visión artificial como opencv y luminot las cuales poseen

técnicas avanzadas en visión por computadora.

Page 102: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

83

REFERENCIAS

Afifi, A. J. (2011). Image Retrieval Based on Content Using Color Feature By.

Alarcón Venegas, J., Quijada Carrasco, J., & Ponce Pérez, A. (2012). Breve historia de la investigación

cualitativa. Retrieved from http://licentiare.blogspot.com.co/2012/11/breve-historia-de-la-

investigacion.html

Arango, M., Branch, J., & Botero, V. (2005). Clasificación no supervisada de coberturas vegetales sobre

imágenes digitales de sensores remotos: “LANDSAT– ETM+.” Facultad Nacional de Agricultura

Medellín, 58(1), 2611–2634.

Aristizábal Ramírez, D. L., & Ramírez Martínez, C. A. (2006). Conceptos Básicos del Procesamiento

Digital de Imágenes Usando OrquideaJAI. Retrieved from https://goo.gl/BgbVmr

Atlas.ti. (2014). Atlas.ti El conjunto de herramientas del conocimiento. Retrieved from

http://atlasti.com/wp-content/uploads/2014/07/atlas.ti6_brochure_2009_es.pdf

Bach, J. R., Fuller, C., Gupta, A., Hampapur, A., Horowitz, B., Humphrey, R., … Shu, C.-F. (1996).

Virage Image Search Engine: An Open Framework for Image Management. In I. K. Sethi & R. C.

Jain (Eds.), Storage and Retrieval for Image and Video Databases (SPIE) (Vol. 2670, pp. 76–87).

SPIE. Retrieved from http://dblp.uni-trier.de/db/conf/spieSR/spieSR96.html#BachFGHHHJS96

Bayona, G. A. T., & Salcedo, I. A. L. (2012). Evaluación de las Redes Neuronales Artificiales Perceptron

Multicapa y Fuzzy-Artmap en la Clasificación de Imágenes Satelitales. Ingeniería, 17(1), 61–72.

Retrieved from http://revistas.udistrital.edu.co/ojs/index.php/reving/article/view/3849

Bezanson, J., Karpinski, S., Shah, V. B., & Edelman, A. (2012). Julia: A Fast Dynamic Language for

Technical Computing, 1–27. https://doi.org/10.1109/APS.2015.7305314

Black, P. E. (2006). Manhattan distance. Retrieved from

https://xlinux.nist.gov/dads/HTML/manhattanDistance.html

Bratkova, M., Boulos, S., & Shirley, P. (n.d.). oRGB : A Practical Opponent Color Space for Computer

Graphics.

Brodersen, K. H., Ong, C. S., Stephany, K. E., & Buhmann, J. M. (2010). The binormal assumption on

precision-recall curves. Proceedings - International Conference on Pattern Recognition, (Section

IV), 4263–4266. https://doi.org/10.1109/ICPR.2010.1036

Castrillon, W. A., Alvarez, D. A., & López, A. F. (2008). Técnicas de extracción de características en

imágenes para el reconocimiento de expresiones faciales. Scientia et Technica, (38), 7–12.

https://doi.org/10.22517/23447214.3681

Castro, D. A. (2009). Recuperación de imágenes basada en texto y contenido visual mediante redes

neuronales. Tesis Licenciatura.

Choras, R. S. (2007). Image feature extraction techniques and their applications for CBIR and biometrics

systems. International Journal of Biology and Biomedical Engineering, 1(1), 6–16. Retrieved from

http://www.naun.org/journals/bio/bio-2.pdf

Ciocca, G., & Gagliardi, I. (2000). Quicklook_ An integrated multimedia system.pdf.

Córdoba, E., Puentes, M., & Otero, L. (2006). Análisis de imágenes Landsat-7 ETM+ para determinar la

cobertura del suelo de la zona costera de la bahía de Tumaco. Boletín Científico CCCP, (13), 41–52.

Page 103: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

84

Erande, V. Y., & Badadapure, P. P. R. (2013). Content Based Image Retrieval using Neural Network,

4(8), 571–575.

Espín, T. (2015). COMPARACIÓN DE MÉTODOS DE CLASIFICACIÓN DE IMÁGENES DE

SATÉLITE EN LA CUENCA DEL RÍO ARGOS (REGIÓN DE MURCIA), 327–348.

Fawcett, T. (2006). An introduction to ROC analysis. Pattern Recognition Letters, 27(8), 861–874.

https://doi.org/10.1016/j.patrec.2005.10.010

Fernández Núñez, L. (2006). Fichas para investigadores ¿Cómo analizar datos cualitativos? Bulletí

LaRecerca, 1–13. https://doi.org/ISSN: 1886-1946 / Depósito legal: B.20973-2006

Flickner, M., Sawhney, H., Niblack, W., Ashley, J., Huang, Q., Dom, B., … Yanker, P. (1995). The

QBIC System, (September).

Ford, A., & Roberts, A. (1998). Colour Space Conversions (Vol. 1).

Giraldo, L. F., & Barrero, J. P. (2012). Implementación de una red neuronal para clasificación de

coberturas terrestres en imágenes MODIS, 1–113.

Gonzalez, J. (2016). Redes neuronales feed forward.

Google. (2010). Rastreo e indexación. Retrieved from

https://www.google.com/intl/es/insidesearch/howsearchworks/crawling-indexing.html

Grubinger, M. (2007). Analysis and Evaluation of Visual Information Systems Performance, (April).

He, H., & Garcia, E. A. (2009). Learning from imbalanced data. IEEE Transactions on Knowledge and

Data Engineering, 21(9), 1263–1284. https://doi.org/10.1109/TKDE.2008.239

Hernandez Sampieri, R., Fernandez Collado, C., & Baptista Lucio, M. del P. (2010a). Metodología de la

investigación. Metodología de la investigación. https://doi.org/- ISBN 978-92-75-32913-9

Hernandez Sampieri, R., Fernandez Collado, C., & Baptista Lucio, M. del P. (2010b). Metodología de la

investigación. Metodología de la investigación. https://doi.org/- ISBN 978-92-75-32913-9

Huber, G. L., & Gürtler, L. (2013). AQUAD 7 - MANUAL DEL PROGRAMA PARA ANALIZAR

DATOS CUALITATIVOS.

Infante Montero, S. (2012). Entendiendo como trabaja Django. Retrieved from

http://www.maestrosdelweb.com/curso-django-entendiendo-como-trabaja-django/

Jack, K. (2008). Digital video and DSP: instant access (1st ed.). Newnes.

Jack, K. (2009). Colour spaces. In Communications engineering desk reference (pp. 469–471).

Jain, A. K., & Vailaya, A. (1995). Image Retrieval using Color and Shape 1 Introduction.

Jayaraman, S., Esakkirajan, S., & Veerakumar, T. (2011). Digital Image Processing. McGraw-Hill.

Jurman, G., Riccadonna, S., Visintainer, R., & Furlanello, C. (2009). Canberra distance on ranked lists.

ResearchGate, 2–7.

Karamti, H., Tmar, M., & Gargouri, F. (2014). Content-based image retrieval system using neural

network. 2014 IEEE/ACS 11th International Conference on Computer Systems and Applications

(AICCSA), 14(6), 723–728. https://doi.org/10.1109/AICCSA.2014.7073271

Kato, T. (1992). Database architecture for content-based image retrieval. Proceedings of SPIE Conference

Page 104: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

85

on Image Storage and Retrieval Systems, 1662(March), 112–123. https://doi.org/10.1117/12.58497

Kumar, K. K., & Gopal, T. V. (2010). CBIR : Content Based Image Retrieval. National Conference on

Recent Trends in information/Network Security, 36–43.

La Serna Palomino, N., Contreras, W., & Ruiz, M. E. (2010a). Procesamiento Digital de textura :

Técnicas utilizadas en aplicaciones actuales de CBIR. Revista de Investigación de Sistemas E

Informática, 7(1), 57–64. Retrieved from

http://sisbib.unmsm.edu.pe/bibvirtual/publicaciones/risi/2010_n1/v7n1/a06v7n1.pdf

La Serna Palomino, N., Contreras, W., & Ruiz, M. E. (2010b). Procesamiento Digital de textura :

Técnicas utilizadas en aplicaciones actuales de CBIR. Revista de Investigación de Sistemas E

Informática, 7(1), 57–64.

Lehmann, E. L., & Casella, G. (2006). Theory of point estimation. Springer Science & Business Media.

Lizarazo, I. (2008). Clasificación de la cobertura y del uso del suelo urbano usando imágenes de satélite y

algoritmos supervisados de Inteligencia Artificial. Revista UD Y La GEOMÁTICA, 1(2), 4–18.

Llano, L., Hoyos, A., Arias, F., & Velásquez, J. (2007). Activación en Redes Feedforward para aproximar

Funciones de Datos con y sin Ruido Comparison of the Activation Functions Performance in Neural

Networks Feedforward to approximate Data Functions with and without Noise. Avances En

Sistemas E Informática, 4(2), 1–10.

Ma, W. Y., & Manjunath, B. S. (1999). NeTra: A toolbox for navigating large image databases.

Multimedia Systems, 7(3), 184–198. https://doi.org/10.1007/s005300050121

Mahalanobis, P. C. (1936). On the generalized distance in statistics. Proceedings of the National Institute

of Sciences of India.

Maldonado, O., Para, B., Vasco, P., & Gra, M. (2008). Estudio de métodos de indexación y recuperación

en bases de datos de imágenes.

Marques, O., & Furht, B. (2002). Content-based image and video retrieval (Vol. 21). Springer Science &

Business Media.

Martínez Comeche, J. A. (2013). La recuperación automatizada de imágenes : retos y soluciones, 23,

423–436.

Meléndez Acosta, N., Figueroa Rios, H. V., & Marín Hernández, A. (2013). Recuperador de imágenes en

base a contenido: una aplicación con esporas. Research in Computing Science, 62.

NCSS Statistical Software. (2014). One ROC Curve and Cutoff Analysis.

Nithya, S. (2013). Bio-Medical Image Retrieval Using Neural Network, 2(3), 351–356.

Nixon, M. S., & Aguado, A. S. (2012). Feature Extraction & Image Processing for Computer Vision.

Feature Extraction & Image Processing for Computer Vision. https://doi.org/10.1016/B978-0-12-

396549-3.00001-X

Noor, A. I., Mokhtar, M. H., Rafiqul, Z. K., & Pramod, K. M. (2012). Understanding Color Models : A

Review. ARPN Journal of Science and Technology, 2(3), 265–275.

P. Sardey, M., & G. K, K. (2015). A Comparative Analysis of Retrieval Techniques in Content Based

Image Retrieval. Computer Science & Information Technology ( CS & IT ), 113–121.

https://doi.org/10.5121/csit.2015.51410

Page 105: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

86

Panik, M. J. (2005). Advanced statistics from an elementary point of view (Vol. 9). Academic Press.

Pano Azucena, A. D. (2015). Realización FPGA de una Red Neuronal Artificial para Reproducir

Comportamiento Caótico. Instituto Nacional de Astrofíısica óptica y Electrónica.

Phillips, D. (2000). Image Processing in C Second Edition. Source, i(C), 794.

https://doi.org/10.1108/aa.1998.03318cad.010

Pitarque, A., Roy, J. F., & Ruiz, J. C. (1998). Redes neurales vs modelos estadísticos: Simulaciones sobre

tareas de predicción y clasificación. Psicológica, 19(1998), 387–400.

https://doi.org/10.3145/epi.2008.nov.01

Plataniotis, K. ., & Venetsanopoulos, A. . (2000). Color Image Processing and Applictions (1st ed.).

Springer-Verlag Berlin Heidelberg. https://doi.org/10.1007/978-3-662-04186-4

Raja, S. (2016). A Derivation of Backpropagation in Matrix Form. Retrieved from

https://sudeepraja.github.io/Neural/

Rita. (2016). RITAQDA. Retrieved from https://rita.udistrital.edu.co

Rodríguez Gómez, G., Gil Flores, E., & García Jiménez, J. (2011). Metodología de la Investigación

Cualitativa.

Rogé, J., El Zufari, V., Vienne, F., Ndiaye, D., Zhang, H., Lu, Y., … Electrónico, D. I. (2013).

Reconocimiento de imágenes utilizando redes neuronales artificiales. Estudios Gerenciales, 13(3),

1017–1030. https://doi.org/10.1016/j.estger.2015.05.002

Russell, S. J., & Norvig, P. (2016). Artificial intelligence: a modern approach. Malaysia; Pearson

Education Limited,.

Saito, T., & Rehmsmeier, M. (2015). The precision-recall plot is more informative than the ROC plot

when evaluating binary classifiers on imbalanced datasets. PLoS ONE, 10(3), 1–21.

https://doi.org/10.1371/journal.pone.0118432

Saldaña, J. (2015). The coding manual for qualitative researchers. Sage.

Sanabria, H., & Fonseca, A. (2017a). Output Labels. https://doi.org/10.6084/m9.figshare.5682571

Sanabria, H., & Fonseca, A. (2017b). RGB Histogram Inputs.

https://doi.org/10.6084/m9.figshare.5682610.v2

Sanabria, H., & Fonseca, A. (2017c). RGB input PCA dataset.

https://doi.org/10.6084/m9.figshare.5682658.v3

Sanabria, H., & Fonseca, A. (2017d). YUV Histogram Inputs.

https://doi.org/10.6084/m9.figshare.5682721.v1

Sanabria, H., & Fonseca, A. (2017e). YUV input PCA dataset.

https://doi.org/10.6084/m9.figshare.5682754

Sanabria, H., & Fonseca, A. (2018a, October). multiclass output labels. figshare.

https://doi.org/10.6084/m9.figshare.7203299

Sanabria, H., & Fonseca, A. (2018b, October). RGB color moments input dataset for coverages. figshare.

https://doi.org/10.6084/m9.figshare.7272626.v1

Sanabria, H., & Fonseca, A. (2018c, October). RGB Histogram Inputs for coverages. figshare.

https://doi.org/10.6084/m9.figshare.7272665.v1

Page 106: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

87

Sanabria, H., & Fonseca, A. (2018d, October). RGB input color moments dataset. figshare.

https://doi.org/10.6084/m9.figshare.7272563.v1

Sanabria, H., & Fonseca, A. (2018e, October). RGB input PCA dataset for coverages. figshare.

https://doi.org/10.6084/m9.figshare.7272719.v1

Sanabria, H., & Fonseca, A. (2018f, October). YUV color moments input dataset for coverages. figshare.

https://doi.org/10.6084/m9.figshare.7272647

Sanabria, H., & Fonseca, A. (2018g, October). YUV Histogram Inputs for coverages. figshare.

https://doi.org/10.6084/m9.figshare.7272677.v1

Sanabria, H., & Fonseca, A. (2018h, October). YUV input color moments dataset. figshare.

https://doi.org/10.6084/m9.figshare.7272482.v1

Sanabria, H., & Fonseca, A. (2018i, October). YUV input PCA dataset for coverages. figshare.

https://doi.org/10.6084/m9.figshare.7272833.v1

Sanabria, H., & Fonsecca, A. (2017). Image Data Base. https://doi.org/10.6084/m9.figshare.5677681.v1

Santo, R. do E. (2012). Principal Component Analysis applied to digital image compression, 10(55 11),

135–139. https://doi.org/10.1590/S1679-45082012000200004

Science, C., & Studies, M. (2015). RGB to Lab Transformation Using Image Segmentation, 8–16.

Shereena, V. B., & David, J. M. (2014). CONTENT BASED IMAGE RETRIEVAL :

CLASSIFICATION USING NEURAL NETWORKS, 6(5), 31–44.

Shih, F. Y. (2010). Image processing and pattern recognition: fundamentals and techniques. John Wiley

& Sons.

Shirazi, S. H., Umar, A. I., Naz, S., Ul, N., Khan, A., Razzak, M. I., & Alhaqbani, B. (2016). Content-

Based Image Retrieval Using Texture Color Shape and Region. IJACSA) International Journal of

Advanced Computer Science and Applications, 7(1), 418–426.

Silva, C., Freitas, P., Fulchi, L. A., & Muñoz Justicia, J. (2017). LibreQDA. Retrieved from

https://libreqda.github.io/

Stalman, R. (2013). FLOSS and FOSS. Retrieved from https://www.gnu.org/philosophy/floss-and-

foss.html

Sudhir, R. (2011). An Efficient CBIR Technique with YUV Color Space and Texture Features, 2(6), 78–

85.

Universitat de València. (2007). INTRODUCCIÓN AL ANÁLISIS CLUSTER. Retrieved from

https://www.uv.es/ceaces/multivari/cluster/criterios_de_similitud.htm

Vasa, H., Munagala, S. A., Tallapally, D., & Vishal, B. V. (2017). Google Images Download. Retrieved

from https://github.com/hardikvasa/google-images-download

Vasilachis de Gialdino, I., Ameigeira, A. R., & Chernobilsky, L. B. (2006). Estrategias de investigacion

cualitativa.

Vegad, S. P., & Italiya, P. K. (2015). Image Classification using Neural Network for Efficient Image

Retrieval. International Conference on Electrical, Electronics, Signals, Communication and

Optimization(EESCO), (January), 6. https://doi.org/10.1109/EESCO.2015.7253860

Visa, S., Ramsay, B., Ralescu, A., & Van Der Knaap, E. (2011). Confusion matrix-based feature

Page 107: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

88

selection. CEUR Workshop Proceedings, 710, 120–127.

Page 108: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

89

APÉNDICES

APÉNDICE A

APÉNDICE B

Page 109: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

90

APÉNDICE C

Page 110: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

91

APÉNDICE D

Page 111: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

92

APÉNDICE E

Page 112: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

93

APÉNDICE F

En la Figura 49 se puede apreciar la imagen de prueba recuperada con 1, 10, 50 y 100 componentes

principales. La diferencia en la nitidez entre la imagen recuperada con 50 componentes y la imagen

recuperada con 100 componentes es poca.

Page 113: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

94

A) B)

C) D)

Figura 49. Imagen de prueba reconstruida con: A) 1 componente principal. B) 10 componentes principales.

C) 50 componentes principales. D) 100 componentes principales

En la Figura 50 y en la Figura 51 se observa el efecto de variar la cantidad de componentes PCA

de Y, U y V en la imagen de prueba. En la Figura 50 se observa lo que pasa cuando se varía el

número de componentes principales de U y V en 1, 10 y 100 utilizando solo un componente

Page 114: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

95

principal en Y. En la Figura 51 se observa lo que pasa cuando se varía el número de componentes

principales de Y en 1, 10 y 100 pero utilizando solo un componente principal en U y V.

A) B) C)

Figura 50. Imagen de prueba recuperada con 1 componente principal en Y (luma) y: A) 1 componente principal en

U y V. B) 10 componentes principales en U y V.C) 100 componentes principales en U y V.

A) B) C)

Figura 51. Imagen de prueba recuperada con 1 componente principal en U y V y: A) 1 componente principal en Y.

B) 10 componentes principales en Y. C) 100 componentes principales en Y.

Page 115: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

96

APÉNDICE G

Page 116: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

97

Page 117: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

98

APÉNDICE H

Page 118: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

99

Page 119: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

100

APÉNDICE I

Desde la Figura 52 hasta la Figura 57 se presentan el comportamiento del MSE al variar el valor

de la tasa de aprendizaje eta, por cada método de extracción de característica utilizadas como valor

de entrada de la red neuronal de clasificación rural – no rural, para una y dos capas ocultas

respectivamente.

Figura 52. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los histogramas como características

de entrada para la red neuronal con una capa oculta.

Page 120: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

101

Figura 53. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los histogramas como características

de entrada para la red neuronal con dos capas ocultas.

Figura 54. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los momentos de color como

características de entrada para la red neuronal con una capa oculta.

Page 121: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

102

Figura 55. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los momentos de color como

características de entrada para la red neuronal con dos capas ocultas.

Figura 56. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los métodos de componentes

principales como características de entrada para la red neuronal con una capa oculta.

Page 122: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

103

Figura 57. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los métodos de componentes

principales como características de entrada para la red neuronal con dos capas ocultas.

Page 123: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

104

APÉNDICE J

Desde la Figura 58 hasta la Figura 63 se presentan las curvas ROC para cada método de obtención

de característica y modelo de color variando la cantidad de neuronas en la capa oculta respecto al

valor que se obtuvo mediante el método de la pirámide geométrica presentado en la Tabla 8.

Figura 58. Comparación de las curvas ROC al variar el número de neuronas en la capa oculta para el método de los

histogramas RGB.

Page 124: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

105

Figura 59. Comparación de las curvas ROC al variar el número de neuronas en la capa oculta para el método de

momentos de color RGB.

Figura 60. Comparación de las curvas ROC al variar el número de neuronas en la capa oculta para el método de

componentes principales RGB.

Page 125: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

106

Figura 61. Comparación de las curvas ROC al variar el número de neuronas en la capa oculta para el método de los

histogramas YUV.

Figura 62. Comparación de las curvas ROC al variar el número de neuronas en la capa oculta para el método de

coeficientes de predicción lineal YUV.

Page 126: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

107

Figura 63. Comparación de las curvas ROC al variar el número de neuronas en la capa oculta para el método de

componentes principales YUV.

APÉNDICE K

Desde la Figura 64 hasta la Figura 75 se presentan las curvas ROC para cada método de obtención

de características y modelo de color, variando la cantidad de neuronas en la primera y en la segunda

capa respecto al valor calculado por medio del método de la pirámide geométrica que se presentó

en la Tabla 9. Dicha variación se realizó aumentado la cantidad de neuronas en diez, veinte y

treinta neuronas sobre el valor obtenido en la Tabla 9.

Page 127: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

108

Figura 64. Comparación de las curvas ROC al variar la cantidad de neuronas en la primera capa oculta para el método

de los histogramas en el modelo de color RGB, manteniendo constante el número de neuronas en la segunda capa.

Figura 65. Comparación de las curvas ROC al variar la cantidad de neuronas en la segunda capa oculta para el método

de los histogramas en el modelo de color RGB, manteniendo constante el número de neuronas en la primera capa.

Page 128: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

109

Figura 66. Comparación de las curvas ROC al variar la cantidad de neuronas en la primera capa oculta para el

método de los momentos de color en el modelo de color RGB, manteniendo constante el número de neuronas en la

segunda capa.

Figura 67. Comparación de las curvas ROC al variar la cantidad de neuronas en la segunda capa oculta para el

método de los momentos de color en el modelo de color RGB, manteniendo constante el número de neuronas en la

primera capa.

Page 129: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

110

Figura 68. Comparación de las curvas ROC al variar la cantidad de neuronas en la primera capa oculta para el

método de los PCA en el modelo de color RGB, manteniendo constante el número de neuronas en la segunda capa.

Figura 69. Comparación de las curvas ROC al variar la cantidad de neuronas en la segunda capa oculta para el

método de los PCA en el modelo de color RGB, manteniendo constante el número de neuronas en la primera capa.

Page 130: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

111

Figura 70. Comparación de las curvas ROC al variar la cantidad de neuronas en la primera capa oculta para el método

de los histogramas en el modelo de color YUV, manteniendo constante el número de neuronas en la segunda capa.

Figura 71. Comparación de las curvas ROC al variar la cantidad de neuronas en la segunda capa oculta para el método

de los histogramas en el modelo de color YUV, manteniendo constante el número de neuronas en la primera capa.

Page 131: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

112

Figura 72. Comparación de las curvas ROC al variar la cantidad de neuronas en la primera capa oculta para el

método de los momentos de color en el modelo de color YUV, manteniendo constante el número de neuronas en la

segunda capa.

Figura 73. Comparación de las curvas ROC al variar la cantidad de neuronas en la segunda capa oculta para el

método de los momentos de color en el modelo de color YUV, manteniendo constante el número de neuronas en la

primera capa.

Page 132: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

113

Figura 74. Comparación de las curvas ROC al variar la cantidad de neuronas en la primera capa oculta para el

método de los PCA en el modelo de color YUV, manteniendo constante el número de neuronas en la segunda capa.

Figura 75. Comparación de las curvas ROC al variar la cantidad de neuronas en la segunda capa oculta para el

método de los PCA en el modelo de color YUV, manteniendo constante el número de neuronas en la primera capa.

Page 133: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

114

APÉNDICE L

Desde la Figura 76 hasta la Figura 78 se presentan el comportamiento del MSE al variar el valor

de la tasa de aprendizaje eta, por cada método de extracción de característica utilizadas como valor

de entrada de la red neuronal de clasificación de coberturas, para una capa oculta.

Figura 76. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los histogramas como características

de entrada para la red neuronal de clasificación de coberturas.

Page 134: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

115

Figura 77. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los momentos de color como

características de entrada para la red neuronal de clasificación de coberturas.

Figura 78. Comportamiento del MSE al variar la tasa de aprendizaje al utilizar los componentes principales como

características de entrada para la red neuronal de clasificación de coberturas.

Page 135: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

116

APÉNDICE M

A continuación, se presenta las curvas de precisión y exhaustividad obtenidas del diseño y prueba

de la red neuronal de clasificación de coberturas, en la sección 3.4.4.

Desde la Figura 79 hasta la Figura 82 se muestra las curvas para la red neuronal utilizando como

entradas las características de la imagen obtenidas por método de histogramas en el modelo de

color RGB.

Figura 79. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los histogramas RGB para el clasificador de cobertura de árboles.

Page 136: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

117

Figura 80. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los histogramas RGB para el clasificador de cobertura de césped.

Figura 81. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los histogramas RGB para el clasificador de cobertura de suelo descubierto.

Page 137: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

118

Figura 82. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los histogramas RGB para el clasificador de cobertura de cuerpos de agua.

Desde la Figura 83 hasta la Figura 86 se muestra las curvas para la red neuronal utilizando como

entradas las características de la imagen obtenidas por método de momentos de color en el modelo

de color RGB.

Page 138: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

119

Figura 83. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los momentos de color RGB para el clasificador de cobertura de árboles.

Figura 84. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los momentos de color RGB para el clasificador de cobertura de césped.

Page 139: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

120

Figura 85. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los momentos de color RGB para el clasificador de cobertura de suelo descubierto.

Figura 86. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de los momentos de color RGB para el clasificador de cobertura de cuerpos de agua.

Page 140: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

121

Desde la Figura 87 hasta la Figura 90 se muestra las curvas para la red neuronal utilizando como

entradas las características de la imagen obtenidas por método de componentes principales en el

modelo de color RGB.

Figura 87. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales RGB para el clasificador de cobertura de árboles.

Page 141: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

122

Figura 88. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales RGB para el clasificador de cobertura de césped.

Figura 89. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales RGB para el clasificador de cobertura de suelo descubierto.

Page 142: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

123

Figura 90. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales RGB para el clasificador de cobertura de cuerpos de agua.

Desde la Figura 91 hasta la Figura 94 se muestra las curvas para la red neuronal utilizando como

entradas las características de la imagen obtenidas por método de histogramas en el modelo de

color YUV.

Page 143: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

124

Figura 91. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de histogramas YUV para el clasificador de cobertura de árboles.

Figura 92. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de histogramas YUV para el clasificador de cobertura de césped.

Page 144: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

125

Figura 93. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de histogramas YUV para el clasificador de cobertura de suelo descubierto.

Figura 94. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de histogramas YUV para el clasificador de cobertura de cuerpos de agua.

Page 145: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

126

Desde la Figura 95 hasta la Figura 98 se muestra las curvas para la red neuronal utilizando como

entradas las características de la imagen obtenidas por método de momentos de color en el modelo

de color YUV.

Figura 95. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de momentos de color YUV para el clasificador de cobertura de árboles.

Page 146: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

127

Figura 96. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de momentos de color YUV para el clasificador de cobertura de césped.

Figura 97. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de momentos de color YUV para el clasificador de cobertura de suelo descubierto.

Page 147: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

128

Figura 98. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de momentos de color YUV para el clasificador de cobertura de cuerpos de agua.

Desde la Figura 99 hasta la Figura 102 se muestra las curvas para la red neuronal utilizando como

entradas las características de la imagen obtenidas por método de componentes principales en el

modelo de color YUV.

Page 148: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

129

Figura 99. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales YUV para el clasificador de cobertura de árboles.

Figura 100. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales YUV para el clasificador de cobertura de césped.

Page 149: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

130

Figura 101. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales YUV para el clasificador de cobertura de suelo descubierto.

Figura 102. Comparación de las curvas precisión y exhaustividad al variar el número de neuronas en la capa oculta

con el método de componentes principales YUV para el clasificador de cobertura de cuerpos de agua.

Page 150: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

131

APÉNDICE N

1. Vistas del módulo de imágenes:

@login_required

def view_image(request, pid, did, template='view_image.html'):

"""

vista encargada de la visualización.

:related models: Project, ImageInstance, Coberturas.

:template: view_image.html

:url: r'^project/(?P<pid>\d+)/images/(?P<did>\d+)/$'.

@params

:param request: Metadatos de la petición http.

:param pid: Id del proyecto al que pertenece la imagen

:param did: Id de la imagen

:param template: documento html asociado a esta vista.

:return: si el método es POST retorna las citaciones correspondientes a

la imagen

si el método es GET retorna el template de visualizacion de la

imagen y las citaciones

correspondientes a dicha imagen.

"""

p = get_object_or_404(Project, pk=pid)

d = get_object_or_404(ImageInstance, pk=did)

if request.method == 'POST':

citations = d.citations.all()

payload={"datos":[]}

for cit in citations:

payload["datos"].append({"serial":cit.serialized,"id":cit.id})

return JsonResponse(payload)

else:

texts = {

'add_code': _(u'Asignar códigos'),

'add_annotation': _(u'Asignar anotación'),

'view_details': _('Ver detalles'),

}

return render(request,

template,

{'project': p,

'image': d,

'citations': d.citations.all(),

'texts': texts})

@login_required

def upload_image(request, pid, template='upload_image.html'):

"""

Vista encargada de la subida de imágenes.

:template: upload_image.html

:related models: Image, ImageInstance, Coberturas.

Page 151: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

132

:url: r'^project/(?P<pid>\d+)/images/add/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param template: documento html asociado a la vista.

:return: Si el método es POST guarda los datos asociados a la imagen en

el modelo Image

creando una instancia en ImageInstance. Si la imagen subida

es rural guarda las coberturas

identificadas en el modelo Coberturas.

Si el método es GET renderiza el formulario de subida de

imágenes.

"""

p = get_object_or_404(Project, pk=pid)

if request.method == 'POST':

form = UploadImageForm(request.POST, request.FILES)

if form.is_valid():

name = form.cleaned_data['name']

comment = form.cleaned_data['comment']

image_file = request.FILES['image']

share = form.cleaned_data['share']

image = Image(name=name,

comment=comment,

uploaded_by=request.user,

file=image_file,

type=splitext(image_file.name)[1],

share=share)

image.save()

img_instance = ImageInstance(name=name,

project=p,

comment=comment,

image=image,

type=image.type,

uploaded_by=request.user)

img_instance.save()

image.file.close()

# sección para clasificación y guardado de códigos en la base de

datos

path_img = image.file.url

CLS = Clasificacion_rural(path_img)

salida = CLS.clasificar()

if salida == 1:

print("La imagen es rural!!!", salida)

DIV = Clasificacion_cobertura(path_img)

DIV.dividir_imagen()

DIV.obtener_momentos()

salida_cobertura_real = DIV.red_neuronal()

umbral = np.array([0.6655, 0.3936, 0.5175, 0.4249])

salida_cobertura = np.array_str(1 * (salida_cobertura_real >=

umbral))

Page 152: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

133

coverage = np.transpose(salida_cobertura_real)

tree = float(np.sum(coverage[0])) / float(len(coverage[0]))

grass = float(np.sum(coverage[1])) / float(len(coverage[1]))

ground = float(np.sum(coverage[2])) / float(len(coverage[2]))

water = float(np.sum(coverage[3])) / float(len(coverage[3]))

cobertura = Coberturas(id_image=img_instance,

coberturas=salida_cobertura,

parte_x=DIV.parx,

parte_y=DIV.pary,

arbol=tree,

cesped=grass,

suelo=ground,

agua=water)

cobertura.save()

else:

image.share = False

image.save()

print("la imagen no es rural", salida)

return redirect('browse_projects')

else:

form = UploadImageForm()

back_url = reverse('browse_projects')

form_action = reverse('upload_image', args=(pid,))

return render(request,

template,

{'project': p,

'documents': Image.objects.all(),

'form': form,

'form_action': form_action,

'back_url': back_url})

@login_required

def delete_image(request, pid, did):

"""

Vista encargada de eliminar una imagen.

:related models: Project, ImageInstance.

:url: r'^project/(?P<pid>\d+)/images/(?P<did>\d+)/delete/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param did: Id de la imagen.

:return: Redirige a la vista principal.

"""

p = get_object_or_404(Project, pk=pid)

d = get_object_or_404(ImageInstance, pk=did)

if p.owner == request.user:

d.image.delete()

d.delete()

else:

raise Http404

return redirect('browse_projects')

Page 153: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

134

@login_required

def add_code_to_image_citation(request, pid, cid, template='modal.html'):

"""

Vista encargada de agreagar un código a una citación de una imagen.

:template: modal.html

:related models: ImageCitation, Project.

:url: r'^project/(?P<pid>\d+)/image_citation/(?P<cid>.+)/code/assign/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param cid: Id de la citacion.

:param template: documento html asociado a la vista.

:return: Si el método es POST agrega un código a una citación de una

imagen, y retorna dicha citación.

Si el método es GET renderiza el formulario para agregar uno o

varios códigos a una citación.

"""

if request.method == 'POST':

form = AddCodeToCitationForm(request.POST)

p = get_object_or_404(Project, pk=pid)

cit = get_object_or_404(ImageCitation, pk=cid)

if form.is_valid():

response_data = {'success': True}

for code in form.cleaned_data['codes']:

if cit.codes.filter(pk=code.pk).exists():

response_data = {'error': _('Code already in project')}

break

cit.codes.add(code)

response_data['cid'] = cid

response_data['codes_str'] = cit.codes_str()

response_data['codes_color'] = cit.html_color()

response_data['top'] = cit.y_coordinate

response_data['left'] = cit.x_coordinate

response_data['width'] = cit.width

return JsonResponse(response_data)

else:

p = get_object_or_404(Project, pk=pid)

cit = get_object_or_404(ImageCitation, pk=cid)

form = AddCodeToCitationForm()

form_action = reverse('add_code_to_image_citation',

kwargs={'pid': pid, 'cid': cid})

available_codes =

Code.objects.filter(project=p).exclude(pk__in=cit.codes.all())

form.fields['codes'].queryset = available_codes

response_dict = {

'form': form,

'form_action': form_action,

'form_header': _(u'Asignar códigos a la imágen'),

}

html_response = render_to_string(

template, response_dict, RequestContext(request))

Page 154: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

135

response_data = {'html': html_response}

return JsonResponse(response_data)

@login_required

def image_citation_details(request, pid, cid,

template='image_citation_details.html'):

"""

Vista encargada mostrar información de una citación de una imagen.

:template: image_citation_details.html

:related models: ImageCitation, Project.

:url: r'^project/(?P<pid>\d+)/image_citation/(?P<cid>.+)/details/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param cid: Id de la citación.

:param template: documento html asociado a la vista.

:return: Si el método es GET retorna el html con los detalles de la

citación.

"""

p = get_object_or_404(Project, pk=pid)

cit = get_object_or_404(ImageCitation, pk=cid)

response_dict = {

'project': p,

'citation': cit,

'form_header': _('Detalles de la imagen'),

}

html_response = render_to_string(

template, response_dict, RequestContext(request))

response_data = {'html': html_response}

return JsonResponse(response_data)

@login_required

def remove_code_from_image_citation(request, pid, citid, codeid):

"""

Vista encargada eliminar un código asociado a una citación de una imagen.

:related models: ImageCitation, Code.

:url: r'^project/(?P<pid>\d+)/image_citation/(?P<cid>.+)/details/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param citid: Id de la citación.

:param codeid: Id del código.

:param template: documento html asociado a la vista.

:return: Si el método es GET retorna el html con los detalles de la

citación.

"""

cit = get_object_or_404(ImageCitation, pk=citid)

code = get_object_or_404(Code, pk=codeid)

if code not in cit.codes.all():

raise Http404

cit.codes.remove(code)

cit.save()

Page 155: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

136

return redirect('view_image', pid=pid, did=cit.image.pk)

@login_required

def browse_code_image_citations(request, cid,

pid,template='browse_code_image_citations.html'):

"""

Vista encargada visualizar las citaciones que tienen asignado un mismo

código.

:template: browse_code_image_citations.html

:related models: ImageCitation, Code.

:url: r'^project/(?P<pid>\d+)/image_codes/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param cid: Id de la citación.

:param template: documento html asociado a la vista.

:return: Si el método es GET rerenderiza las citaciones de imágnes

asigadas a un código.

"""

c = get_object_or_404(Code, pk=cid)

citas = ImageCitation.objects.filter(codes=cid)

return render(request, template, {'code': c, 'citas': citas, 'pid': pid})

@login_required

def browse_image_citations(request, pid, did,

template='browse_image_citations.html'):

"""

Vista encargada de visualizar las citaciones pertenecientes a una imagen.

:template: browse_image_citations.html

:related models: ImageInstance, Code.

:url: r'^project/(?P<pid>\d+)/images/(?P<did>\d+)/citations$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param cid: Id de la citación.

:param template: documento html asociado a la vista.

:return: Si el método es GET rerenderiza las citaciones pertenecientes a

una imagen.

Si el método es POST realiza una búsqueda y devuelve las

citaciones relacionadas

con dicha búsqueda.

"""

form_action = reverse('browse_image_citations', args=(pid, did,))

imagenes = ImageInstance.objects.filter(project_id=pid)

imagenes_ids = imagenes.values_list('id', flat=True)

if request.method == 'POST':

busqueda = request.POST['busqueda']

citas = ImageCitation.objects.filter(image_id__in=imagenes_ids,

comment__icontains=busqueda)

else:

citas = ImageCitation.objects.filter(image_id=did)

response_dict = {

'form_action': form_action,

Page 156: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

137

'citas': citas,

'pid': pid

}

html_response = render_to_string(template, response_dict,

RequestContext(request))

response_data = {'html': html_response}

return JsonResponse(response_data)

@login_required

def browse_codes_from_images(request, pid,

template='browse_codes_from_images.html'):

"""

Vista encargada retornar el codigo html con la información de los códigos

del proyecto,

para visualizarlo desde el template de visualización de una imagen.

:template: browse_codes_from_images.html

:related models: Project.

:url: r'^project/(?P<pid>\d+)/image_codes/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param template: documento html asociado a la vista.

:return: Si el método es GET retorna el código html con la informacion .

"""

p = get_object_or_404(Project, pk=pid)

response_dict = {'project': p}

html_response = render_to_string(

template, response_dict, RequestContext(request))

response_data = {'html': html_response}

return JsonResponse(response_data)

@login_required

def cit_image_add(request, pid, did):

"""

Vista encargada de agreagar una citación a una imagen.

:related models: ImageCitation,ImageInstance.

:url: r'^project/(?P<pid>\d+)/images/(?P<did>\d+)/cit_add/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param did: id de la imagen.

:return: si el metodo es POST agrega una citacion a una imagen.

"""

Page 157: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

138

i = get_object_or_404(ImageInstance, pk=did)

if request.method == 'POST':

serialized = request.POST.get("an")

citacion = json.loads(serialized)

add = ImageCitation(image=i,

created_by=request.user,

creation_date=datetime.now(),

modified_date=datetime.now(),

comment=citacion["text"],

x_coordinate=citacion["shapes"][0]['geometry']['x'],

y_coordinate=citacion["shapes"][0]['geometry']['y'],

width=citacion["shapes"][0]['geometry']['width'],

height=citacion["shapes"][0]['geometry']['height'],

serialized=serialized)

add.save()

if add.serialized.find('"id":') == -1:

serializ = add.serialized[:len(add.serialized) - 1] + ',"id":' +

str(add.id) + '}'

else:

serializ = add.serialized[:add.serialized.find(',"id":') - 1] +

',"id":' + str(add.id) + '}'

add.serialized = serializ

add.save()

citations = i.citations.filter(serialized=serializ)

payload = {"datos": []}

for cit in citations:

payload["datos"].append({"serial": cit.serialized, "id": cit.id})

return JsonResponse(payload)

else:

return redirect('http://localhost:8000/project/' + str(pid) +

'/images/' + str(did) + '/')

@login_required

def cit_image_update(request, pid, did):

"""

Vista encargada de modificar una citacion ya existente.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param did: id de la imagen.

:return: Si el método es POST modifica una citacion.

"""

if request.method == 'POST':

serialized = request.POST.get("an")

citacion = json.loads(serialized)

id = citacion["id"]

update = ImageCitation.objects.get(pk=id)

update.modified_date = datetime.now()

update.comment = citacion["text"]

Page 158: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

139

update.serialized = serialized

update.save()

return JsonResponse({"success": True})

else:

return redirect('http://localhost:8000/project/' + str(pid) +

'/images/' + str(did) + '/')

@login_required

def cit_image_del(request, pid, did):

"""

Vista encargada de eliminar una citacion perteneciente a una imagen.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param did: id de la imagen.

:return: devuelve un JSON con respuesta exitosa.

"""

if request.method == 'POST':

serialized = request.POST.get("an")

citacion = json.loads(serialized)

id = citacion["id"]

deleted = ImageCitation.objects.get(pk=id)

deleted.delete()

return JsonResponse({"success": True})

else:

return redirect('view_image', pid=pid, did=did)

@login_required

def sugerencia(request, pid, did):

"""

Vista encargada de enviar y agregar las sugerencias de códicos

identificados en la imagen.

:Related models: ImageCitation, Codes.

:url: r'^project/(?P<pid>\d+)/images/(?P<did>\d+)/sugerencia/$'.

@Params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param did: Id de la imagen.

:return: Si el método es POST agrega un código y una anotación a una

imagen.

Si el método es GET obtiene y envía en formato JSON las

coberturas identificadas por la red neuronal.

"""

if request.method == 'POST':

cid = request.POST.get("cid")

p = get_object_or_404(Project, pk=pid)

cit = get_object_or_404(ImageCitation, pk=cid)

selector = request.POST.get("selector")

name = request.POST.get("name")

Page 159: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

140

sugerencia = Code.objects.filter(name=name)

if sugerencia.count() <= 0:

if selector == 'arbol':

nombre = name

peso = 55

tecnicolor = 's'

comentario = "Cobertura de arboles"

elif selector == 'cesped':

nombre = name

peso = 45

tecnicolor = 'd'

comentario = "Cobertura de cesped"

elif selector == 'suelo':

nombre = name

peso = 20

tecnicolor = 'w'

comentario = "Cobertura de suelo descubierto"

elif selector == 'agua':

nombre = name

peso = 15

tecnicolor = 'i'

comentario = "Cobertura de cuerpos de agua"

else:

return JsonResponse({"success": False})

c = Code(project=p,

name=nombre,

weight=peso,

created_by=request.user,

color=tecnicolor,

comment=comentario,

modified_date=datetime.now(),

creation_date=datetime.now())

c.save()

cit.codes.add(c)

else:

c = Code.objects.get(name=name)

cit.codes.add(c)

response_data = {'success': True}

response_data['cid'] = cid

response_data['codes_str'] = cit.codes_str()

response_data['codes_color'] = cit.html_color()

response_data['top'] = cit.y_coordinate

response_data['left'] = cit.x_coordinate

response_data['width'] = cit.width

return JsonResponse(response_data)

else:

try:

coverage = Coberturas.objects.get(id_image=did)

datos = {"success": True,

"codigos": coverage.coberturas,

"x": coverage.parte_x,

"y": coverage.parte_y}

return JsonResponse(datos)

except:

datos = {"success": False}

return JsonResponse(datos)

Page 160: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

141

@login_required

def similar(request, pid, did, template='view_similar_image.html'):

"""

Vista encargada de Mostrar imagenes similares que hayan sido compartidas

por otros investigadores.

:Related models: Coberturas,Image,ImageInstance,

:url: r'^project/(?P<pid>\d+)/images/(?P<did>\d+)/similar/$'.

:template: view_similar_image.html.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param did: id de la imagen.

:param template: documento html asociado a la vista.

:return: Si el metodo es GET renderiza las imagenes similares encontradas

en la base de datos.

"""

coverage = Coberturas.objects.get(id_image=did)

coverages = Coberturas.objects.exclude(id_image=did)

image_duplicates =

Image.objects.values('file').annotate(file_count=Count('file')).filter(file_c

ount__gt=1)

excludes = []

data = []

if image_duplicates.exists():

for duplicate in image_duplicates:

data.extend(Image.objects.filter(file=duplicate['file']).values('id',

'file'))

id_url = {}

for dat in data:

id_url[str(dat['id'])] = dat['file']

instances =

ImageInstance.objects.filter(project_id=pid).values('image_id')

for id in instances:

iid = str(id['image_id'])

try:

id_url[iid]

excludes.append(id_url[iid])

except:

print("no esta repetido")

payload = {"coverage": []}

vector_a = np.array([coverage.arbol, coverage.cesped, coverage.suelo,

coverage.agua], dtype=float)

for cover in coverages:

vector_b = np.array([cover.arbol, cover.cesped, cover.suelo,

cover.agua], dtype=float)

manhattan = sum(abs(vector_a - vector_b)) #manhattan

if float(manhattan) < 0.9 and /

int(cover.id_image.project_id) !=int(pid): #si la imagen supera umbral

y no pertenece al mismo proyecto

if cover.id_image.image.share: #si la imagen esta compartida con

otros proyectos

if excludes.count(cover.id_image.image.file) == 0: #si la

Page 161: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

142

imagen no se repite en otro proyecto

cover.signature = manhattan

payload["coverage"].append(cover)

payload["coverage"].sort(key=attrgetter('signature'))

paginator = Paginator(payload["coverage"], 6)

page = request.GET.get('page')

try:

images = paginator.page(page)

except PageNotAnInteger:

# If page is not an integer, deliver first page.

images = paginator.page(1)

except EmptyPage:

# If page is out of range (e.g. 9999), deliver last page of results.

images = paginator.page(paginator.num_pages)

page_range = paginator.page_range

page_range = map(str, page_range)

return render(request, template, {"images": images,

"page_range": page_range,

"pid": pid,

"did": did})

@login_required

def add_image_to_project(request, pid, did):

"""

Vista encargada de agreagar una imagen sugerida al proyecto actual.

:related models: Image,ImageInstance.

:url:

r'^project/(?P<pid>\d+)/images/(?P<did>\d+)/similar/add_share_image/$'.

@params

:param request: Metadatos de la petición http.

:param pid: id del proyeto.

:param did: id de la imagen.

:return: Si el método es POST agrega una imagen sugerida al proyecto

actual.

"""

p = get_object_or_404(Project, pk=pid)

if request.method == 'POST':

id = request.POST.get("id")

i = get_object_or_404(Image, pk=id)

image = Image(name=i.name,

comment=i.comment,

uploaded_by=request.user,

file=i.file,

type=i.type,

share=False)

image.save()

img_instance = ImageInstance(name=i.name,

project=p,

comment=i.comment,

image=image,

type=i.type,

uploaded_by=request.user)

img_instance.save()

Page 162: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

143

im = ImageInstance.objects.get(image=id)

c = Coberturas.objects.get(id_image=im.id)

cobertura = Coberturas(id_image=img_instance,

coberturas=c.coberturas,

parte_x=c.parte_x,

parte_y=c.parte_y,

arbol=c.arbol,

cesped=c.cesped,

suelo=c.suelo,

agua=c.agua)

cobertura.save()

return JsonResponse({"success": True})

2. Modelos del módulo de imágenes:

# La siguiete parte son los modelos encargados para el funcionamiento del

módulo de imágenes:

# función para generar ruta de archivo de imagen

def get_new_image_path(instance, filename):

img_uuid = uuid.uuid4().hex

return os.path.join(

'libreqda/static/images',

img_uuid,

filename)

# Este es el modelo donde se guarda registro de todos las imágenes que alguna

vez se han subido al programa

class Image(models.Model):

name = models.CharField(max_length=250) # nombre de las imágenes

type = models.CharField(max_length=250) # tipo de imagen

comment = models.TextField(blank=True, null=True) # comentarios de la

imagen a subir

file = models.ImageField(

upload_to=get_new_image_path) # archivos de las imagenes subidos a

la carpeta libreqda/static/images

uploaded_by = models.ForeignKey(User) # usuario que subió la imagen

creation_date = models.DateTimeField(auto_now_add=True) # fecha de

creacion

# campo opcional para habilitar si se comparte o no la imagen a otros

proyectos y/o usuarios

share = models.BooleanField(default=True)

def __unicode__(self):

return "Image: %s" % (self.name) # retorna string unicode "Image -

name"

# Este modelo relaciona las imágenes con el proyecto donde se subió para

saber que imagen pertenece a un proyecto

class ImageInstance(models.Model):

image = models.ForeignKey(Image, related_name='instances')

project = models.ForeignKey(Project, related_name='images') # proyecto

Page 163: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

144

donde se subió la imagen

name = models.CharField(max_length=250) # Nombre con el que se subió la

imagen

type = models.CharField(max_length=250) # Tipo de imagen

comment = models.TextField(blank=True, null=True) # Comentarios

realizados

modified_date = models.DateTimeField(auto_now=True) # Fecha de

modificacion

uploaded_by = models.ForeignKey(User)

creation_date = models.DateTimeField(auto_now_add=True)

annotations = models.ManyToManyField('Annotation', related_name='images')

def __unicode__(self):

return "ImageInstance: %s" % (self.name)

# El siguiente modelo permite guardar las citaciones que se realizan sobre

una imagen y así separarlo de las citaciones realizadas a los textos

class ImageCitation(models.Model):

image = models.ForeignKey(ImageInstance, related_name='citations',

on_delete=models.CASCADE)

created_by = models.ForeignKey(User)

creation_date = models.DateTimeField(auto_now_add=True)

modified_date = models.DateTimeField(auto_now=True)

comment = models.TextField(null=True, blank=True)

x_coordinate = models.FloatField()

y_coordinate = models.FloatField()

width = models.FloatField()

height = models.FloatField()

serialized = models.TextField(null=True, blank=True)

#annotations = models.ManyToManyField(Annotation,

# null=True,

# blank=True,

# related_name='image_citations')

def __unicode__(self):

return self.comment

def codes_str(self):

return ', '.join(self.codes.all().values_list('name', flat=True))

def html_color(self):

if not self.codes.all():

return 'blank'

return self.codes.all()[0].html_color()

return ', '.join(self.codes.all().values_list('name', flat=True))

# El siguiente modelo es opcional, correspondiente a la identificación de

coberturas en imágenes rurales

class Coberturas(models.Model):

id_image = models.ForeignKey(ImageInstance, related_name='coberturas')

coberturas = models.CharField(max_length=1000, blank=False,

verbose_name=_("Codigos"))

parte_x = models.IntegerField()

parte_y = models.IntegerField()

Page 164: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

145

arbol = models.FloatField()

cesped = models.FloatField()

suelo = models.FloatField()

agua = models.FloatField()

3. Plantilla html de visualización de imágenes:

{% extends "base.html" %}

{% load i18n %}

{% block head %}

{{ block.super }}

<!-- Annotorious lib -->

<link type="text/css" rel="stylesheet" href="{{ STATIC_URL

}}annotorius/css/annotorious.css" />

<script type="text/javascript" src="{{ STATIC_URL

}}annotorius/annotorious.min.js"></script>

<!-- JQuery contextMenu lib-->

<link href="{{ STATIC_URL }}lib/jquery.contextMenu/jquery.contextMenu.css"

rel="stylesheet" type="text/css">

<script src="{{ STATIC_URL }}lib/jquery.contextMenu/jquery.contextMenu.js"

type="text/javascript"></script>

{% endblock head %}

{% block topbar_extra %}

{% endblock topbar_extra %}

{% block body %}

<div class="modal hide fade" id="codeModal">

</div>

<div class="modal hide fade" id="citationModal">

</div>

<div class="modal hide fade" id="codesModal">

</div>

<div class="modal hide fade" id="citationsModal">

</div>

<div id="documents-menu" class="menu left" style="left:-430px">

{% include "view_image_images_tab.html" %}

</div>

<div class="row-fluid">

<div class="span10 offset1">

<div class="toolbar move-up">

<a class="btn left-group-button pull-right" target="_blank" href="{%

url browse_categories pid=project.id %}"><i class="icon-tags"></i> {% trans

"Categorías" %}</a>

<!-- <a class="btn left-group-button pull-right disabled"><i

class="icon-file"></i> {% trans "Informes" %}</a> -->

<a class="btn left-group-button pull-right" target="_blank" href="{%

url browse_queries pid=project.id %}"><i class="icon-search"></i> {% trans

"Consultas" %}</a>

<!-- <a class="btn left-group-button pull-right disabled"><i

class="icon-filter"></i> {% trans "Filtros" %}</a> -->

<!--<a class="btn left-group-button pull-right" target="_blank"

Page 165: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

146

href="{% url browse_annotations pid=project.id %}"><i class="icon-

comment"></i> {% trans "Anotaciones" %}</a>-->

<a class="btn left-group-button pull-right codes" data-url="{% url

browse_codes_from_images pid=project.id %}"><i class="icon-book"></i> {%

trans "Códigos" %}</a>

<a class="btn left-group-button pull-right citations" data-url="{%

url browse_image_citations pid=project.id did=image.id %}"><i class="icon-

bookmark"></i> {% trans "Citas" %}</a>

<a class="btn left-group-button pull-right"

href="/project/{{project.id}}"><i class="icon-circle-arrow-left"></i> {%

trans "Regresar al proyecto" %}</a>

</div>

</div>

</div>

<div class="document-container white-background with-border row-fluid">

<div class="span9 document-text">

<h3>{{ image.name }} </h3>

<div id="doc-text-area">

{% for cit in citations %}

<div id="bar-id-{{ cit.id }}" class="citation-bar cit-{{

cit.html_color }}" title="{{ cit.codes_str }}" data-cid="{{ cit.id }}"

style="position:relative; z-index:-1; top:100px"></div>

{% endfor %}

<img src="/{{ image.image.file.url }}" alt="Error, la imagen no se

muestra" class="annotatable"/>

</div>

</div>

<div id="coberturas" class="btn-group" style="display:none">

<button class="btn" disabled>Códigos sugeridos:</button>

<button class="btn dropdown-toggle" data-toggle="dropdown">

<span class="caret"></span>

</button>

<ul id="sugerencias" class="dropdown-menu">

<li><a id="arbol" href="#" data-name="Árboles"

class="selector">Árboles</a></li>

<li><a id="cesped" href="#" data-name="Césped"

class="selector">Césped</a></li>

<li><a id="suelo" href="#" data-name="Suelo descubierto"

class="selector">Suelo descubierto</a></li>

<li><a id="agua" href="#" data-name="Cuerpos de agua"

class="selector">Cuerpos de agua</a></li>

</ul>

</div>

<div id="similar" class="btn-group" style="display:none">

<a class="btn" href="{% url similar pid=project.id did=image.id

%}?page=1">Buscar Imágenes Similares</a>

</div>

</div>

<script type="text/javascript">

/* the following codes are responsible in adding, updating and deleting

citations in a image using the Javascript

* API from annotorious

*/

/* this function creates an annotation in the image */

Page 166: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

147

var myVar;

function setAnnotation(){

$.ajax({

url:'{% url view_image pid=project.id did=image.id %}',

dataType:"json",

type:"POST",

data:{csrfmiddlewaretoken: csrftoken},

success: function(data) {

data.datos.forEach(function(element){

an = JSON.parse(element.serial);

an.id = element.id;

anno.addAnnotation(an);

barPosition(an);

barOffset();

});

}

});

clearInterval(myVar);

}

/* these functions load the annotations saved in the database in the image

*/

$(window).on("load", function() {

myVar = setInterval(function(){ loadAnnotation(); }, 300);

});

function loadAnnotation(){

$.ajax({

url:'{% url view_image pid=project.id did=image.id %}',

dataType:"json",

type:"POST",

data:{csrfmiddlewaretoken: csrftoken},

success: function(data) {

data.datos.forEach(function(element){

an = JSON.parse(element.serial);

an.id = element.id;

anno.addAnnotation(an);

barOffset();

barPosition(an);

positionTooltips(".citation-bar");

});

}

});

clearInterval(myVar);

}

/* this function create the csrftoken */

function getCookie(name) {

var cookieValue = null;

if (document.cookie && document.cookie !== '') {

var cookies = document.cookie.split(';');

for (var i = 0; i < cookies.length; i++) {

var cookie = jQuery.trim(cookies[i]);

// Does this cookie string begin with the name we want?

if (cookie.substring(0, name.length + 1) === (name + '=')) {

cookieValue = decodeURIComponent(cookie.substring(name.length

+ 1));

break;

}

Page 167: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

148

}

}

return cookieValue;

}

var csrftoken = getCookie('csrftoken');

/* when the citation is created this function calls a post to send the data

of the citation to a view for saving it

* in the database

*/

anno.addHandler('onAnnotationCreated', function(annotation) {

anot = JSON.stringify(annotation);

$.ajax({

url:'{% url cit_image_add pid=project.id did=image.id %}',

dataType:"json",

type:"POST",

data:{csrfmiddlewaretoken: csrftoken, an:anot},

success: function(data) {

data.datos.forEach(function(element){

an = JSON.parse(element.serial);

an.id = element.id;

$('.annotorious-annotationlayer').before('<div id="bar-id-' + an.id

+ '" class="citation-bar" data-original-title="<br>"></div>');

});

}

});

anno.reset();

myVar = setInterval(function(){ setAnnotation(); }, 150);

});

/* when the citation is updated this function calls a post to send the data

of the updated citation to a view for saving it

* in the database

*/

anno.addHandler('onAnnotationUpdated', function(annotation){

anot = JSON.stringify(annotation);

$.post( '{% url cit_image_update pid=project.id did=image.id %}', {

csrfmiddlewaretoken: csrftoken, 'an':anot});

});

/* when the citation is deleted this function calls a post to send the data

of the citation to be deleted to a view to

* delete it from the database

*/

anno.addHandler('onAnnotationRemoved', function(annotation){

anot = JSON.stringify(annotation);

$.post( '{% url cit_image_del pid=project.id did=image.id %}', {

csrfmiddlewaretoken: csrftoken, 'an':anot}, function(data){

var selector = '#bar-id-' + annotation.id;

$(selector).tooltip('hide');

habilitarBotones(selector);

$(selector).remove();

$('.citation-bar').each(function(element){

var sel = '#' + $(this).attr('id');

if ($(this).attr('id').split('bar-id-')[1] < annotation.id){

var top = parseInt($(sel).css('top').split('px')[0])-5;

var newtop = top.toString()+"px";

Page 168: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

149

$(sel).css('top',newtop);

}

});

});

});

/////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////

/* the following functions are responsible for assigning, displaying and

deleting label codes for citations */

anno.addHandler('onMouseOverItem', function(annotation){

$('.annotorious-item').contextMenu(false);

while (typeof $('.context-menu-list')[1] != 'undefined'){

$('.context-menu-list')[1].remove()

}

});

anno.addHandler('onMouseOverAnnotation', function(annotation){

if (typeof annotation.C != 'undefined'){

cid = annotation.C.id;

$('.annotorious-item').contextMenu(true);

$.contextMenu({

selector: '.annotorious-item',

callback: function(key, options) {

// Empty global callback

},

items: {

"addCode": {

name: "{{ texts.add_code }}",

icon: "edit",

callback: function(key, options) {

cit = cid;

url = '{% url add_code_to_image_citation pid=project.id

cid='CIT_ID' %}'.replace('CIT_ID', cit);

$.getJSON(url, function(data) {

$('#codeModal').html(data.html);

$('#codeModal').modal('show');

});

},

},

"addAnnotation": {

name: "{{ texts.add_annotation }}",

icon: "paste",

callback: function(key, options) {

// Empty global callback

},

},

"viewCodes": {

name: "{{ texts.view_details }}",

icon: "copy",

callback: function(key, options) {

cit = cid;

url = '{% url image_citation_details pid=project.id

cid="CIT_ID" %}'.replace('CIT_ID', cit);

$.getJSON(url, function(data) {

$('#codeModal').html(data.html);

$('#codeModal').modal('show');

Page 169: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

150

});

},

},

}

});

}

});

anno.addHandler('onMouseOutOfAnnotation', function(annotation){

$('.annotorious-item').contextMenu(false);

while (typeof $('.context-menu-list')[1] != 'undefined'){

$('.context-menu-list')[1].remove()

}

});

/* Modal on submit ** This function gets the JsonResponse after receiving

POST from code form */

$('#codeModal').on('submit', 'form', function() {

$.ajax({

type: $(this).attr('method'),

url: this.action,

data: $(this).serialize(),

context: this,

success: function(data, status) {

if (data.success) {

var selector = '#' + 'bar-id-' + data.cid;

barColor(data, selector);

$('#codeModal').modal('hide');

positionTooltips(selector);

}

else {

$('#codeModal').html(data.html);

}

}

});

return false;

});

/////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////

/* the following functions create the bar color for label codes */

function barOffset(){

$('.citation-bar').each(function(element){

var selector = '#' + $(this).attr('id');

var top = parseInt($(selector).css('top').split('px')[0])+5;

var newtop = top.toString()+"px";

$(selector).css('top',newtop);

});

}

function barPosition(data){

var selector = '#' + 'bar-id-' + data.id;

var width = Math.round(data.shapes[0].geometry.width *

$(".annotatable").width());

var top = Math.round(data.shapes[0].geometry.y *

$(".annotatable").height());

Page 170: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

151

var left = Math.round(data.shapes[0].geometry.x *

$(".annotatable").width());

$(selector).attr('style', "position: relative; z-index:1; width:" +

width + "px; top:" + top + "px; left:" + left +"px;")

}

function barColor(data,selector){

$(selector).attr('class', "citation-bar cit-" + data.codes_color)

.attr('title', data.codes_str)

.attr('data-original-title', data.codes_str);

}

function positionTooltips (selector) {

$(selector).each(function( index ) {

// Display tooltips

if ($(this).attr('title') != undefined) {

var code_list = $(this).attr('title').split(", ");

} else {

var code_list = $(this).attr('data-original-

title').split("<br>");

}

$(this).tooltip({

html: true,

placement: 'right',

delay: 0,

animation: false,

trigger: 'manual'

});

$(this).attr('title', code_list.join('<br>'))

.tooltip('fixTitle').tooltip('show');

});

}

/////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////

/* the following functions enable and display the suggested coverage codes

and also enable the similar image button */

var myAnnotation = {

src : '/{{image.image.file.url}}',

text : '',

shapes : [{

type : 'rect',

geometry : { x : 0, y: 0, width : 0.5, height: 0.5}

}]

}

/* this function enables the list of suggested coverage codes and displays

citation on image

* when mouse is over list

*/

$(document).ready(function() {

$.get('{% url sugerencia pid=project.id did=image.id %}', function(data){

if (data.success){

d = ((data.codigos.replace('[[', '[')).replace(']]',

']')).split('\n');

var codigo=[];

Page 171: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

152

d.forEach(function(element,index){codigo[index]=JSON.parse(($.trim(element)).

replace(new RegExp(" ", 'g'), ","));});

if (data.success){

$('#coberturas').show();

$('#similar').show();

var allAnnotations = [];

if (columnaCobertura(codigo, 0).length === 0)

$('#arbol').hide();

else {

var arbol = columnaCobertura(codigo,

0)[Math.floor(Math.random()*columnaCobertura(codigo, 0).length)];

$("#arbol").hover(function(){allAnnotations =

mouseOverRecommendation(allAnnotations, arbol, data, 1, 'cobertura de

árboles')},

function(){mouseOutOfRecommendation(allAnnotations, data)});}

if (columnaCobertura(codigo, 1).length === 0)

$('#cesped').hide();

else {

var cesped = columnaCobertura(codigo,

1)[Math.floor(Math.random()*columnaCobertura(codigo, 1).length)];

$("#cesped").hover(function(){allAnnotations =

mouseOverRecommendation(allAnnotations, cesped, data, 0.99, 'cobertura de

césped')},

function(){mouseOutOfRecommendation(allAnnotations, data)});}

if (columnaCobertura(codigo, 2).length === 0)

$('#suelo').hide();

else {

var suelo = columnaCobertura(codigo,

2)[Math.floor(Math.random()*columnaCobertura(codigo, 2).length)];

$("#suelo").hover(function(){allAnnotations =

mouseOverRecommendation(allAnnotations, suelo, data, 0.99*0.99, 'cobertura de

suelo descubierto')},

function(){mouseOutOfRecommendation(allAnnotations, data)});}

if (columnaCobertura(codigo, 3).length === 0)

$('#agua').hide();

else {

var agua = columnaCobertura(codigo,

3)[Math.floor(Math.random()*columnaCobertura(codigo, 3).length)];

$("#agua").hover(function(){allAnnotations =

mouseOverRecommendation(allAnnotations, agua, data, 0.99*0.99*0.99,

'cobertura de cuerpos de agua')},

function(){mouseOutOfRecommendation(allAnnotations, data)});}

}

}

}, "json");

/* this function shows window of codes from code button /*

$('.codes').click(function(ev) {

ev.preventDefault(); // prevent navigation

var url = $(this).data("url"); // get the form url

$.getJSON(url, function(data) { // load the url into the modal

$('#codesModal').html(data.html);

$("#codesModal").modal('show');

});

Page 172: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

153

return false; // prevent the click propagation

});

/* this function shows window of citations from citation button /*

$('.citations').click(function(ev) {

ev.preventDefault(); // prevent navigation

var url = $(this).data("url"); // get the form url

$.getJSON(url, function(data) { // load the url into the modal

$('#citationsModal').html(data.html);

$("#citationsModal").modal('show');

});

return false; // prevent the click propagation

});

});

/* if mouse's selector is over coverage option, it shows coverage location

within the image and hide other citations */

function mouseOverRecommendation(allAnnotations, aleatorio, data, decre,

texto){

myAnnotation.shapes[0].geometry.x = (aleatorio%data.x)/data.x;

myAnnotation.shapes[0].geometry.y = Math.trunc(aleatorio/data.x)/data.y;

myAnnotation.shapes[0].geometry.height = (1/data.y)*decre;

myAnnotation.shapes[0].geometry.width = (1/data.x)*decre;

myAnnotation.text = texto;

allAnnotations = anno.getAnnotations();

anno.removeAll();

anno.addAnnotation(myAnnotation);

return allAnnotations;

}

/* if mouse's selector is out of coverage option, it hides coverage

location within the image and enable other citations */

function mouseOutOfRecommendation(allAnnotations, data){

anno.removeAnnotation(myAnnotation);

allAnnotations.forEach(function(annotation){anno.addAnnotation(annotation)});

}

/* line up coverages array into columns and return array of index where

coverage exists */

function columnaCobertura(codigo, i){

indiceCobertura =(codigo.map(function(value, index){return

value[i];})).reduce(

function(a,element,index){

if(element===1)

a.push(index);

return a;

}, []);

return indiceCobertura

}

/*hide coverage option from list if coverage code is already being used in

image*/

$('#coberturas').click(function(){

$('.citation-bar').each(function(index,element){

id = '#' + $(this).attr('id');

if($(id).attr('data-original-title') == $('#arbol').attr('data-name'))

$('#arbol').hide();

Page 173: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

154

if($(id).attr('data-original-title') == $('#cesped').attr('data-name'))

$('#cesped').hide();

if($(id).attr('data-original-title') == $('#suelo').attr('data-name'))

$('#suelo').hide();

if($(id).attr('data-original-title') == $('#agua').attr('data-name'))

$('#agua').hide();

});

});

/*enable coverage option from list if coverage code is not being used in

image*/

function habilitarBotones(selector){

id = selector;

if($(id).attr('data-original-title') == $('#arbol').attr('data-name'))

$('#arbol').show();

if($(id).attr('data-original-title') == $('#cesped').attr('data-name'))

$('#cesped').show();

if($(id).attr('data-original-title') == $('#suelo').attr('data-name'))

$('#suelo').show();

if($(id).attr('data-original-title') == $('#agua').attr('data-name'))

$('#agua').show();

}

/* add citation and label coverage code after make click in the list

options */

var cid = 0;

$('.selector').click(function(){

selector = $(this).attr('id');

name = $(this).attr('data-name');

annotation = anno.getAnnotations()[0];

$.post('{% url cit_image_add pid=project.id did=image.id %}',

{csrfmiddlewaretoken: csrftoken, 'an': JSON.stringify(annotation)},

function(data) {

an = JSON.parse(data.datos[0].serial);

an.id = data.datos[0].id;

cid = data.datos[0].id;

$('.annotorious-annotationlayer').before('<div id="bar-id-' + an.id +

'" class="citation-bar" data-original-title></div>');

anno.addAnnotation(an);

barPosition(an);

barOffset();

$.post('{%url sugerencia pid=project.id did=image.id%}',

{csrfmiddlewaretoken: csrftoken, 'selector': selector, 'name': name, 'cid':

cid},

function(data){

var select = '#' + 'bar-id-' + data.cid;

barColor(data, select);

positionTooltips(select);

}, "json");

}, "json");

$(this).hide();

});

</script>

{% endblock %}

Page 174: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

155

Page 175: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

156

APÉNDICE O

class Clasificacion_rural(object):

# constructor de la clase

def __init__(self,nombre_imagen):

self.nombre_imagen=nombre_imagen

self.W1 = genfromtxt('pesos/Wyuv1.csv', delimiter=',') #carga la

primera capa de pesos de la red neuronal

self.W2 = genfromtxt('pesos/Wyuv2.csv', delimiter=',') #carga la

segunda capa de pesos de la red neuronal

self.W3 = genfromtxt('pesos/Wyuv3.csv', delimiter=',') #carga la

tercera capa de pesos de la red neuronal

# obtiene los histogramas de una imagen a partir de una matriz RGB

def clasificar(self):

self.obtener_histograma_yuv()

self.red_neuronal()

return self.Y

def obtener_histograma_RGB(self):

imagen_RGB = scipy.misc.imread(self.nombre_imagen)

rango = np.arange(257,dtype=float) # niveles de cada color 0 - 255

R , XX = np.histogram(imagen_RGB[:,:,0],rango) # histograma para el

color rojo

R = R.astype(float) # conversion de entero a coma flotante

R=R/max(R) # normalizacion de datos

G , XX = np.histogram(imagen_RGB[:,:,1],rango) # histograma para el

color verde

G=G.astype(float) # conversion de entero a coma flotante

G=G/max(G) # normalizacion de datos

B , XX = np.histogram(imagen_RGB[:,:,2],rango) # histograma para el

color azul

B=B.astype(float) # conversion de entero a coma flotante

B=B/max(B) # normalizacion de datos

histograma = np.concatenate((R,G),axis=0) # concatenamos histogramas

de rojo y verde

self.histograma = np.concatenate((histograma,B),axis=0).T #

concatenamos histograma azul con los dos anteriores

self.histograma=np.insert(self.histograma,len(self.histograma),1) #

extension para la red neuronal

def obtener_histograma_yuv(self):

imagen_RGB = scipy.misc.imread(self.nombre_imagen)

rango = np.arange(257,dtype=float) # niveles de cada color 0 - 255

imagen_RGB = imagen_RGB/255.0

Y =

0.299*imagen_RGB[:,:,0]+0.587*imagen_RGB[:,:,1]+0.114*imagen_RGB[:,:,2] #

obtencion de la luminancia

U = 0.493*(imagen_RGB[:,:,2]-Y) # obtencion de la crominancia U

V = 0.877*(imagen_RGB[:,:,0]-Y) # obtencion de la crominancia V

Y = (255*Y).astype(np.uint8) # mapeo de los valores al intervalo 0 -

255

Yh , XX = np.histogram(Y,rango) # obtencion del histograma de la

luminancia

Page 176: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

157

Yh = Yh/float(max(Yh)) # normalizacion de datos

U = ((255*U/0.872)+127.5).astype(np.uint8) # mapeo de los valores al

intervalo 0 - 255

Uh , XX = np.histogram(U,rango) # obtencion del histograma de la

crominancia U

Uh = Uh/float(max(Uh)) # normalizacion de datos

V = ((255*V/1.23) + 127.5).astype(np.uint8) # mapeo de los valores al

intervalo 0 - 255

Vh , XX = np.histogram(V,rango) # obtencion del histograma de la

crominancia V

Vh = Vh/float(max(Vh)) # normalizacion de datos

histograma = np.concatenate((Yh,Uh),axis=0)

histograma = np.concatenate((histograma,Vh),axis=0)

self.histograma = np.insert(histograma,len(histograma),1)

# clasifica Una imagen a partir de un histograma RGB

def red_neuronal(self):

G= np.dot(self.histograma,self.W1)#paso por la capa 1

# print(G)

G1=1/(1+np.exp(-G))#funcion de activacion de la capa1

G1=np.insert(G1,len(G1),1)

G = np.dot(G1,self.W2)#paso por la capa 2

# print(G)

G2=1/(1+np.exp(-G))#funcion de activacion de la capa2

G2=np.insert(G2,len(G2),1)

G = np.dot(G2,self.W3)#paso por la capa 3

# print(G)

self.Y=1/(1+np.exp(-G))#funcion de activacion de la capa3

# print(self.Y)

if self.Y>= 0.0036:

self.Y=1

else:

self.Y=0

# print int(self.Y)#salida de la red neuronal

class Clasificacion_cobertura(object):

def __init__(self, nombre_imagen):

self.nombre_imagen = nombre_imagen

self.momentos = np.array([0,0,0,0,0,0,0,0,0,0])

self.imagen_RGB = scipy.misc.imread(self.nombre_imagen)

self.imagen_RGB = self.imagen_RGB.astype(float)

self.ancho,self.alto,XX=self.imagen_RGB.shape

self.W1 = genfromtxt('pesos/Wmc1.csv', delimiter=',') # carga la

primera capa de pesos de la red neuronal

self.W2 = genfromtxt('pesos/Wmc2.csv', delimiter=',') # carga la

segunda capa de pesos de la red neuronal

#self.W3 = genfromtxt('libreqda/pesos/W3.csv', delimiter=',') #carga

la tercera capa de pesos de la red neuronal

def clasificar(self):

Page 177: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

158

self.obtener_momentos()

self.red_neuronal()

return self.Y

def obtener_momentos(self):

for tile in self.tiles:

img = np.array(tile.image)

ancho, alto, XX = img.shape

P= float(ancho*alto)

# Media: primer momento de color

Er = (np.sum(img[:,:,0]))/P # media de la banda roja de la imagen

Eg = (np.sum(img[:,:,1]))/P # media de la banda verde de la

imagen

Eb = (np.sum(img[:,:,2]))/P # media de la banda azul de la imagen

E = {'red':Er,'green':Eg,'blue':Eb}

# Desviacion standar: segundo momento de color

Dr = (np.sum((np.around(img[:,:,0]-

Er).astype(np.uint8)**2.0).astype(np.uint8))/P)**(1.0/2.0) # Desviacion

standar para la banda roja

Dg = (np.sum((np.around(img[:,:,1]-

Eg).astype(np.uint8)**2.0).astype(np.uint8))/P)**(1.0/2.0) # Desviacion

standar para la banda verde

Db = (np.sum((np.around(img[:,:,2]-

Eb).astype(np.uint8)**2.0).astype(np.uint8))/P)**(1.0/2.0) # Desviacion

standar para la banda azul

D = {'red':Dr,'green':Dg,'blue':Db}

# Simetria : tercer momento de color

Skr = (np.sum((np.around(img[:,:,0]-

Er).astype(np.uint8)**3.0).astype(np.uint8))/P)**(1.0/3.0) # Simetria para la

banda roja

Skg = (np.sum((np.around(img[:,:,1]-

Eg).astype(np.uint8)**3.0).astype(np.uint8))/P)**(1.0/3.0) # Simetria para la

banda verde

Skb = (np.sum((np.around(img[:,:,2]-

Eb).astype(np.uint8)**3.0).astype(np.uint8))/P)**(1.0/3.0) # Simetria para la

banda azul

Sk = {'red':Skr,'green':Skg,'blue':Skb}

momento =

(np.array([E["red"],D["red"],Sk["red"],E["green"],D["green"],Sk["green"],E["b

lue"],D["blue"],Sk["blue"],1])).T

self.momentos = np.vstack([self.momentos,momento])

self.momentos = np.delete(self.momentos,0,0)

def obtener_histograma(self):

# imagen_RGB = scipy.misc.imread(self.nombre_imagen)

rango = np.arange(257,dtype=float) # niveles de cada color 0 - 255

R , XX = np.histogram(self.imagen_RGB[:,:,0],rango) # histograma para

el color rojo

R = R.astype(float) # conversion de entero a coma flotante

R=R/max(R) # normalizacion de datos

G , XX = np.histogram(self.imagen_RGB[:,:,1],rango) # histograma para

el color verde

G=G.astype(float) # conversion de entero a coma flotante

G=G/max(G) # normalizacion de datos

Page 178: APLICACIÓN DE UN SISTEMA CBIR BASADO EN REDES …

159

B , XX = np.histogram(self.imagen_RGB[:,:,2],rango) # histograma para

el color azul

B=B.astype(float) # conversion de entero a coma flotante

B=B/max(B) # normalizacion de datos

histograma = np.concatenate((R,G),axis=0) # concatenamos histogramas

de rojo y verde

histograma = np.concatenate((histograma,B),axis=0).T # concatenamos

histograma azul con los dos anteriores

self.histograma=np.insert(histograma,len(histograma),1) # extension

para la red neuronal

def dividir_imagen(self):

parx = math.ceil(self.ancho/128.0)

pary = math.ceil(self.alto/128.0)

partes = parx*pary# numero de partes en los que se dividira la imagen

#print(parx)

#print(pary)

#print(partes)

self.tiles = image_slicer.slice(self.nombre_imagen, partes,

save=False)

self.parx = parx

self.pary = pary

def red_neuronal(self):

G= np.dot(self.momentos,self.W1)#paso por la capa 1

G1=1/(1+np.exp(-G))#funcion de activacion de la capa1

xx, yy = G1.shape

G1 = (np.vstack([G1.T, np.ones(xx)])).T

G = np.dot(G1,self.W2)#paso por la capa 2

Y=1/(1+np.exp(-G))#funcion de activacion de la capa3

#umbrales de calsificacion

#arboles 0.6655

#cesped 0.3936

#suelo descubierto 0.5175

#cuerpos de agua 0.4249

self.Y = Y

return self.Y