Full text
Equation Chapter 1 Section 1 Proyecto Fin de Carrera Ingeniería de Telecomunicación Emparejamiento de imágenes tomadas desde diferentes perspectivas utilizando técnicas de Aprendizaje Máquina Dpto. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Autor: Aitor Laiseca Valencia Tutor: Francisco José Simois Tirado Sevilla, 2023
2
Proyecto Fin de Carrera Ingeniería de Telecomunicación Emparejamiento de imágenes tomadas desde diferentes perspectivas utilizando técnicas de Aprendizaje Máquina Autor: Aitor Laiseca Valencia Tutor: Francisco José Simois Tirado Profesor titular Dpto. de Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2023
4
Proyecto Fin de Carrera: Emparejamiento de imágenes tomadas desde diferentes perspectivas utilizando técnicas de Aprendizaje Máquina Autor: Aitor Laiseca Valencia Tutor: Francisco José Simois Tirado El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de:
6 Sevilla, 2023 El Secretario del Tribunal
A mi familia A mis maestros
8
Agradecimientos Estos años de carrera han sido unos años de aprendizaje, no solo a nivel académico, sino también a nivel personal. He pasado por muchas etapas malas, pero gracias a mi familia y amigos he sido capaz de sacar adelante todo el trabajo de estos años. Estuve a punto de dejar la carrera, pero mi familia me hizo no rendirme y seguir con ella. He conocido gente maravillosa en la carrera que también han sido pilares fundamentales para conseguir este logro.
16 ÍNDICE DE TABLAS Tabla 8-1. Comparación entornos de trabajo disponibles 55 Tabla 10-1. Media de la precisión media de cada modelo para las imágenes de entrenamiento y su covisibilidad media 67 Tabla 10-2. Tabla comparativa de los tiempos de procesado de los distintos modelos para los datos de entrenamiento 67 Tabla 10-3. Tabla comparativa de “keypoints” utilizados y aceptados 70 Tabla 10-4. Tabla comparativa de los tiempos de procesado de los distintos modelos 73
ÍNDICE DE FIGURAS Figura 2-1. Resultado encuesta de Gartner sobre cómo usan las empresas las IA ....................................... 24 Figura 2-2. Robot humanoide Ameca .......................................................................................................... 25 Figura 2-3. Resultado de encuesta sobre cuándo se logrará crear la primera AGI ....................................... 25 Figura 2-4. Resultado de encuesta de Emerj sobre cuándo se llegará a la singularidad tecnológica ............ 26 Figura 2-5. Garry Kasparov enfrentándose a Deep Blue en una partida de ajedrez ..................................... 27 Figura 2-6. Esquema de un sistema experto ................................................................................................ 28 Figura 3-1. Clasificación de clases del Aprendizaje Automático ................................................................... 31 Figura 4-1. Paso de una imagen en blanco y negro a matriz binaria ............................................................ 34 Figura 4-2. Representación de una imagen de forma matricial en escala de grises ..................................... 34 Figura 4-3. Representación de un píxel de una imagen a color siguiendo el patrón RGB ............................ 35 Figura 4-4. Representación de la resolución de una imagen ....................................................................... 35 Figura 5-1. Imagen ilustrativa de las partes de una neurona biológica ........................................................ 36 Figura 5-2. Modelo matemático de procesamiento de la información de una neurona .............................. 37 Figura 5-3. Esquema neurona artificial ........................................................................................................ 37 Figura 5-4. Modelo de red neuronal con cuatro capas ................................................................................ 38 Figura 5-5. Representación función Sigmoide ............................................................................................. 39 Figura 5-6. Representación función Tangente hiperbólica .......................................................................... 39 Figura 5-7. Representación función ReLU .................................................................................................... 40 Figura 5-8. Representación función Leaky ReLU .......................................................................................... 40 Figura 5-9. Esquema Red Neuronal Monocapa ........................................................................................... 43 Figura 5-10. Esquema Red Neuronal Multicapa .......................................................................................... 44 Figura 5-11. Esquema Red Neuronal Recurrente ......................................................................................... 44 Figura 5-12. Esquema Red de Base Radial ................................................................................................... 44 Figura 5-13. Esquema Red Neuronal Convolucional .................................................................................... 45 Figura 6-1. Representación de puntos de interés en una imagen ................................................................ 48 Figura 6-2. Representación de coincidencia de características de dos imágenes similares .......................... 49 Figura 7-1. Formas de representar una imagen como grafo ........................................................................ 51 Figura 7-2. Entrada y salida de un gráfico intentando detectar qué patrón tiene dos anillos ...................... 52 Figura 7-3. Representación de la extracción de información de una imagen a nivel de borde .................... 53 Figura 7-4. Representación de las conexiones de la figura 7-3 a nivel de nodos .......................................... 53 Figura 8-1. Competición “Image Matching Challenge 2022” ....................................................................... 54 Figura 8-2. Logo de la plataforma Kaggle .................................................................................................... 55 Figura 8-3. Primera pareja de imágenes de testeo ...................................................................................... 56
18 Figura 8-4. Segunda pareja de imágenes de testeo ..................................................................................... 57 Figura 8-5. Tercera pareja de imágenes de testeo ....................................................................................... 57 Figura 8-6. Datos relativos al número de imágenes del dataset de entrenamiento ..................................... 58 Figura 9-1. Imagen representativa de la geometría proyectiva ................................................................... 59 Figura 9-2. Imagen representativa de la geometría epipolar ....................................................................... 59 Figura 9.1-1: Arquitectura del modelo Kornia LoFTR ................................................................................... 60 Figura 9.2-1: Imagen representativa fase de utilización SuperGlue ............................................................. 61 Figura 9.2-2: Arquitectura del modelo SuperGlue ....................................................................................... 62 Figura 9.3-1: Arquitectura de ASLFeat ......................................................................................................... 63 Figura 9.4-1: Arquitectura del modelo DKM ................................................................................................ 65 Figura 10-1: Pareja de imágenes de ejemplo de la Plaza de San Marco ....................................................... 68 Figura 10-2: Pareja de imágenes de ejemplo de la fachada frontal de Notre-Dame .................................... 68 Figura 10-1: Resultado obtenido con LoFTR en Kaggle ................................................................................ 69 Figura 10-2: Resultado obtenido con SuperGlue en Kaggle ......................................................................... 69 Figura 10-3: Resultado obtenido con ASLFeat en Kaggle ............................................................................. 69 Figura 10-4: Resultado obtenido con DKM en Kaggle .................................................................................. 69 Figura 10-5. Ejemplo de emparejamiento pareja 1 ...................................................................................... 71 Figura 10-6. Ejemplo de emparejamiento pareja 2 ...................................................................................... 72 Figura 10-7. Ejemplo de emparejamiento pareja 3 ...................................................................................... 72 Figura A-1. Datasets necesarios para LoFTR ................................................................................................ 76 Figura A-2. Librerias y dependencias utilizadas en LoFTR ............................................................................ 77 Figura A-3. Inicialización “matcher” de LoFTR ............................................................................................. 77 Figura A-4. Carga imágenes de testeo LoFTR ............................................................................................... 77 Figura A-5. Funciones necesarias en LoFTR.................................................................................................. 78 Figura A-6. Código para obtener “matches” en LoFTR ................................................................................. 79 Figura A-7. Creación fichero con matrices fundamentales para Kaggle ....................................................... 79 Figura A-8. Datasets necesarios para ASLFeat ............................................................................................. 80 Figura A-9. Librerias y dependencias utilizadas en ASLFeat ......................................................................... 80 Figura A-10. Inicialización modelo de ASLFeat ............................................................................................. 81 Figura A-11. Carga imágenes de testeo ASLFeat .......................................................................................... 81 Figura A-12. Funciones necesarias en LoFTR ................................................................................................ 83 Figura A-13. Código para obtener “matches” en LoFTR ............................................................................... 83 Figura A-14. Creación fichero con matrices fundamentales para Kaggle ..................................................... 83 Figura A-15. Datasets necesarios para SuperGlue ....................................................................................... 84 Figura A-16. Librerias y dependencias utilizadas en SuperGlue ................................................................... 84 Figura A-17. Inicialización “matcher” de SuperGlue .................................................................................... 85
Figura A-18. Carga imágenes de testeo SuperGlue ...................................................................................... 85 Figura A-19. Funciones necesarias en SuperGlue ........................................................................................ 85 Figura A-20. Código para obtener “matches” en SuperGlue ........................................................................ 86 Figura A-21. Creación fichero con matrices fundamentales para Kaggle ..................................................... 86 Figura A-22. Datasets necesarios para DKM ................................................................................................ 87 Figura A-23. Librerias y dependencias utilizadas en DKM ............................................................................ 87 Figura A-24. Carga imágenes de testeo DKM .............................................................................................. 88 Figura A-25. Funciones necesarias en DKM ................................................................................................. 88 Figura A-26. Código para obtener “matches” en DKM ................................................................................ 89 Figura A-27. Creación fichero con matrices fundamentales para Kaggle ..................................................... 90 Figura A-28. Librerías y dependencias adicionales ...................................................................................... 90 Figura A-29. Funciones adicionales ............................................................................................................. 93 Figura A-30. Lectura de los factores de escalado ......................................................................................... 93 Figura A-31. Creación del dataframe necesario para calcular el mAA ......................................................... 93 Figura A-32. Presentación de los resultados obtenidas para todos los monumentos .................................. 93
20 Notación x Producto vectorial · Producto escalar f(.) Función escalón {. , .} Set de valores [. , .] Intervalo cerrado (. , .) Intervalo abierto Tanh Parte real Max(. , .) Parte imaginaria ∑ Sumatorio ≤ Menor o igual ≥ Mayor o igual ∈ Perteneciente a ∀ Para todo 𝞩f Gradiente de la función 𝛿. 𝛿. Derivada parcial Pc Matriz de confianza
Abreviaturas IA Inteligencia Artificial ANI Inteligencia Artificial Reducida AGI Inteligencia Artificial General ASI Superinteligencia Artificial IBM International Business Machines Corporation SE Sistemas Expertos RNA Redes Neuronales Artificiales ML Machine Learning AA Aprendizaje Automático RGB Rojo, Verde y Azul BGD Descenso del gradiente en lotes SCD Descenso del gradiente estocástico RNN Red Neuronal Recurrente RBF Red de Base Radial CNN Red Neuronal Convolucional LMS Sistema de gestión de aprendizaje GNN Red Neuronal Gráfica GPU Unidad de Procesamiento Gráfico CPU RAM Unidad Central de Procesamiento Memoria de Acceso Aleatorio CVPR Conferencia sobre visión por computador y reconocimiento de patrones SfM Estructuras a partir del movimiento SLAM Localización y mapeo simultáneos GUI Interfaz gráfica de usuario DCN Red Convolucional Deformable mAA Precisión media TP Verdadero Positivo TN Verdadero Negativo FP Falso Positivo FN Falso Negativo
22 1 INTRODUCCIÓN 1.1 Motivación del Proyecto En la era actual, la tecnología de la Inteligencia Artificial ha avanzado de manera exponencial y se ha convertido en un elemento omnipresente en diversos aspectos de la vida. Desde asistentes virtuales en nuestros móviles hasta aplicaciones más complejas en la medicina o la industria, la IA ha demostrado su utilidad y capacidad para transformar el mundo que nos rodea. Por ello, las empresas están invirtiendo muchos recursos en diversas aplicaciones que mejoren su productividad o lleguen a ser de uso cotidiano en la sociedad. El propósito de este Proyecto es explorar y comprender más profundamente el potencial de la Inteligencia Artificial y su impacto en la sociedad. En un mundo donde la automatización, el análisis de datos y la toma de decisiones basada en algoritmos está cada vez más presente, es esencial acercarse a estas tecnologías para ver cómo pueden mejorar la eficiencia, precisión e innovación en muchos campos. Para arrojar luz en el tema, se ha decidido elaborar este proyecto y así comprender las ventajas, desafíos y complicaciones de la Inteligencia Artificial. 1.2 Objetivos del Proyecto Con el presente trabajo se pretende adquirir conocimientos básicos sobre el campo del Aprendizaje Automático y las Redes Neuronales para utilizarlos posteriormente en resolver un problema real, el emparejamiento de imágenes, y comparar resultados obtenidos por medio de modelos creados en el lenguaje de programación Python. 1.3 Organización de la Memoria La memoria se divide en dos grandes partes, para llegar finalmente a las conclusiones del proyecto. La primera parte se ha dedicado a la explicación de los conceptos teóricos básicos para la comprensión y resolución del problema. La segunda parte se centra en la explicación de los diferentes modelos utilizados para realizar la comparativa de los resultados obtenidos con los mismos empleando los conceptos teóricos de la primera parte. En otras palabras, poner en práctica los conocimientos adquiridos. Para la parte teórica, se busca empezar desde una perspectiva general del tema hasta llegar a una parte más detallada de la base en la que se sustenta nuestro problema a resolver. Se partirá de una introducción a la Inteligencia Artificial en la que se mostrarán todas sus posibles clasificaciones y utilidades, que servirá para poner en contexto el proyecto. A continuación, se explican más en detalle dos de sus ramas: el Aprendizaje Automático y la Visión Artificial pues las técnicas que utilizaremos se fundamentan en estos dos apartados que cooperan entre sí. Para concluir esta parte, se hará hincapié en los fundamentos de las Redes Neuronales Artificiales y, más en concreto, en las técnicas de “Feature Detection and Matching” pues en esto se basan los modelos utilizados. Para la parte práctica, se exponen las Soluciones Propuestas al Problema. En este apartado se explicarán en detalle cada uno de las arquitecturas utilizadas para terminar con una comparativa de las mismas y las Conclusiones obtenidas.
2 INTELIGENCIA ARTIFICIAL En este capítulo se busca dar una visión global de la Inteligencia Artificial. Es un buen punto de partida pues es la disciplina de la que surgen los métodos que se utilizaran posteriormente. Se empezará dando una definición y sus utilidades actuales y se terminará haciendo una clasificación en las que deriva: según su nivel de evolución y según su funcionalidad. 2.1 ¿Qué es la inteligencia artificial? La inteligencia artificial (IA) se refiere a sistemas o máquinas que imitan la inteligencia humana para realizar tareas y pueden mejorar iterativamente a partir de la información que recopilan. Podemos ver algunos ejemplos en los que la IA se manifiesta para aportar un valor diferente: - Chatbots: utilizan la IA para comprender más rápido los problemas de los clientes y proporcionar respuestas más eficientes. - Asistentes inteligentes: utilizan la IA para analizar información crítica proveniente de grandes conjuntos de datos de texto libre para mejorar la programación. - Motores de recomendación: utilizan la IA para automatizar las recomendaciones de productos según los hábitos de visualización de los usuarios. 2.2 Introducción a la inteligencia artificial El término “Inteligencia Artificial” fue adoptado en 1956 pero este se ha vuelto más popular hoy en día debido al incremento en los volúmenes de datos, algoritmos y mejoras en el poder de cómputo y almacenaje. Inicialmente, las investigaciones de la inteligencia artificial exploraban temas como la solución de problemas y métodos simbólicos, pero a partir de 1960, el Departamento de Defensa de los Estados Unidos, mostró un alto interés en este tipo de trabajos y comenzó a entrenar computadoras para que imitaran el razonamiento humano básico. Este trabajo inicial abrió el camino para la automatización y el razonamiento que vemos hoy en las computadoras, incluyendo sistemas de soporte a decisiones y sistemas de búsqueda inteligentes que complementan y aumentan las capacidades humanas [1]. Aunque la IA se muestra al mundo como robots de aspecto humano de alto funcionamiento que se apoderan del mundo, la IA no pretende reemplazar a los humanos. Su objetivo es mejorar significativamente las capacidades y contribuciones humanas. Esto lo convierte en un activo empresarial muy valioso. 2.3 IA en la empresa Actualmente, la IA mejora el rendimiento y productividad de la empresa mediante la automatización de procesos o tareas que antes requerían esfuerzo humano. La IA también puede dar sentido a los datos a una escala que ningún ser humano jamás podría. Por ejemplo, Netflix utiliza el “machine learning” para proporcionar un nivel de personalización que ayudó a la empresa a aumentar su base de clientes en más de un 25% en 2017 [3]. La mayoría de empresas ha hecho de la ciencia de los datos una prioridad y está realizando grandes inversiones en ella. Según una encuesta de Gartner realizada en 2019 a más de 3.000 directores de tecnología y sistemas, clasificaron la analítica y la inteligencia empresarial como las tecnologías más importantes para sus organizaciones. También consideraban que estas tecnologías son las más estratégicas y por ello están atrayendo nuevas inversiones [2]. De acuerdo con la Harvard Bussines Review, las empresas utilizan la IA principalmente para:
24 - Detectar y corregir intrusiones de seguridad (44%). - Resolver problemas tecnológicos de los usuarios (41%). - Reducir el trabajo de la gestión de producción (34%). - Medir el cumplimiento interno en el uso de los proveedores aprobados (34%). Figura 2-1. Resultado encuesta de Gartner sobre cómo usan las empresas las IA 2.4 Niveles de la Inteligencia Artificial La inteligencia artificial tiene tres etapas o evoluciones determinadas por el grado de inteligencia del sistema. 2.4.1 Inteligencia Artificial Reducida La inteligencia artificial reducida (también conocida como IA débil) o Artificial Narrow Intelligence (ANI) es un tipo de inteligencia artificial más inflexible, que no se amolda ni se adapta a los requisitos de un sistema o máquina en particular. Su función es centrarse en un trabajo único y dedicarle toda su capacidad. El funcionamiento del modelo ANI se proyecta a través de la programación de sus acciones. En esa etapa, debe estar preparada para actuar en un solo rol, reduciendo su desempeño tanto como sea posible. Esto también garantizará que pueda desempeñar plenamente su papel. Puede que esto parezca una limitación, pero también puede verse como una dedicación amplia e integral [4]. Entre sus características, ANI es una inteligencia artificial con carácter reactivo y memoria limitada. Las clasificaciones técnicas ubican al ANI como una inteligencia incapaz de reproducir el comportamiento humano, solo es capaz de simularlo. En la última década la IA débil ha experimentado numerosos descubrimientos los cuales vienen de la mano de los logros conseguidos por las técnicas de “Machine Learning” y “Deep Learning”. Algunos ejemplos de estos resultados pueden ser [4]: - Asistentes virtuales (Siri, Alexa, Cortana, etc.). - Reconocimiento facial. - Filtros de spam en correos electrónicos.
- Sistema de vehículos autónomos. 2.4.2 Inteligencia Artificial General La inteligencia artificial general (AGI), también conocida como fuerte o de Nivel Humano, se refiere a aquellas máquinas que pueden realizar cualquier actividad intelectual que los seres humanos hagan. A diferencia del tipo de Inteligencia Artificial nombrado anteriormente, crear estos procesadores es mucho más difícil y todavía no se ha logrado. Según Linda Gottfredson, la inteligencia humana es capaz de «razonar, planear, resolver problemas, pensar de manera abstracta, comprender ideas complejas, aprender rápidamente y aprender de la experiencia», por lo que, para estar en este nivel de Inteligencia Artificial, la máquina debería poder realizar todas esas acciones [5]. Es muy difícil definir el alcance que debería tener un procesador para lograr el nivel de la inteligencia humana debido a que estos tipos de Inteligencia Artificial deberían ser capaces de generar múltiples pensamientos al mismo tiempo, percibir el entorno y producir recuerdos que no necesariamente se relaciona de forma directa con la toma de decisiones de la máquina. Este desarrollo va muy ligado a la teoría de la mente donde no solo se busca una simulación o réplica de una acción sino crear la habilidad de discernir entre necesidades, emociones o sentimientos [5]. Hasta el momento, lo más cercano a la Inteligencia Artificial General son los robots humanoides que son capaces de imitar, analizar y registrar expresiones humanas [6]. Figura 2-2. Robot humanoide Ameca De acuerdo a una encuesta realizada por KDNuggets a más de 1200 científicos repartidos por todo el mundo sobre cuándo se alcanzará la primera AGI se llegaron a los siguientes resultados [7]: Figura 2-3. Resultado de encuesta sobre cuándo se logrará crear la primera AGI
32 mucho mejor si les ofrecemos características relevantes en vez de los datos puros. Así, la tarea de aprendizaje es más fácil. - Normalización de datos: en muchos casos, es útil normalizar los datos para hacer más fácil la técnica del aprendizaje a la máquina. Por normalizar nos referimos a poner todos los datos en una escala similar. 3.2.4 Fase 4: Elección del algoritmo Durante esta fase tenemos que elegir qué tipo de técnica de machine learning queremos usar de acuerdo al objetivo que tengamos [17]. 3.2.5 Fase 5: Entrenar el modelo Un porcentaje de los datos, comúnmente el 70% del total, los utilizaremos como datos de entrenamiento. El algoritmo aprenderá automáticamente a obtener los resultados adecuados con los datos históricos que hemos preparado [17]. 3.2.6 Fase 6: Validación del modelo Dado que ya tenemos el modelo entrenado, usaremos el 30% restante de los datos. Simplemente ejecutaremos el algoritmo y evaluaremos los resultados obtenidos. Debemos ser conscientes que existe la posibilidad de que el modelo funcione bien para los datos de entrenamiento y no para los datos de validación. Volveremos a la etapa 6 hasta que nuestro modelo se ajuste bien a las dos particiones [17]. 3.2.7 Fase 7: Predicción Ya estamos listos para utilizar nuestro modelo de Aprendizaje Automático con nueva información y comenzar a predecir o inferir resultados en “la vida real”.
4 VISIÓN ARTIFICIAL En este capítulo se busca dar una primera visión básica de la Visión Artificial centrándonos en las similitudes entre la percepción del ojo humano de las imágenes y la percepción de una computadora, así como los métodos que emplea. 4.1 Introducción a la visión artificial La visión artificial es una parte de la inteligencia artificial (IA) que está en alza. Se centra en el desarrollo y el perfeccionamiento de técnicas que permiten a las máquinas ver, identificar y procesar imágenes de la misma manera que lo hace la visión humana. Esta comprensión se consigue gracias a distintos campos como la geometría, la estadística, la física y otras disciplinas. La adquisición de los datos se consigue por varios medios como secuencias de imágenes, vistas desde varias cámaras de video o datos multidimensionales desde un escáner médico. El objetivo último de la visión artificial es conseguir el desarrollo de estrategias automáticas para el reconocimiento de patrones complejos en imágenes de múltiples dominios. En la actualidad, muchos son los campos que se han visto beneficiados por este conjunto de técnicas. Uno de los más conocidos es el de la robótica, ya que los robots con cierta autonomía deben reconocer con precisión la localización de los objetos de su entorno para no colisionar contra ellos, por ejemplo. A menudo, esto lo consiguen por medio de sensores o de cámaras. Sin embargo, la robótica no es el único ámbito que se ha visto beneficiado por este conjunto de técnicas. Podemos destacar el ámbito de la imagen médica, con sistemas capaces de reconocer, por ejemplo, patrones patológicos en una modalidad de imagen determinada y diagnosticar enfermedades de forma automatizada. También se emplean en otros ámbitos, como en sistemas de seguridad, seguimiento de objetos (por ejemplo, seguimiento de un futbolista en vídeo durante un partido de fútbol) o detección de anomalías en piezas fabricadas en una cadena de producción [18][19]. 4.2 Visión Humana La visión humana gira en torno a la luz y no implica repetición ni patrones, es decir, no necesitamos aprender a ver, está biológicamente arraigado en nosotros [20]. La visión humana consta de varios pasos. Primero, la luz rebota en la imagen y entra en los ojos a través de la córnea. Luego, la córnea dirige la luz a las pupilas y al iris, que trabajan juntos para controlar la cantidad de luz que ingresa al ojo. Una vez que la luz atraviesa la córnea, entra en la retina; la retina tiene sensores especiales llamados conos y bastones, que participan en la visualización del color. Por lo tanto, la visión es, en primer lugar, una tarea de procesamiento de información ya que para poder entender lo que hay en una imagen, nuestro cerebro debe ser capaz de representar esta información como: color, forma, movimiento, detalle y belleza. 4.3 ¿Cómo funciona la Visión Artificial? Para entender cómo percibe el mundo una computadora, comencemos por definir qué es una imagen digital y el procesamiento básico que realiza. 4.3.1 Imagen Una imagen digital es una matriz. Una imagen digital está compuesta de un número finito de elementos, cada uno tiene una posición en un plano con coordenadas x, y, y un valor asociado al color de la imagen en ese punto. A estos elementos se les llama puntos elementales de la imagen o píxeles, siendo este el término usado para
34 denotar la unidad mínima de medida de una imagen digital. 4.3.2 Color La representación del color de la imagen en un pixel, puede ser binaria, para el caso de blanco y negro, o un número que representa la intensisdad en la escala del gris o una gama de colores. La primera imagen es una representación binaria de una imagen en blanco y negro. Se asigna 1 al color negro y 0 al color blanco. Figura 4-1. Paso de una imagen en blanco y negro a matriz binaria La segunda imagen representa una imagen con 256 niveles de intensidad. Cada uno de los píxeles representa un número entero que es interpretado como el nivel de intensidad luminosa en la escala de grises. Figura 4-2. Representación de una imagen de forma matricial en escala de grises En una imagen en color, cada píxel de la imagen se representa con tres valores que codifican su color como una combinación de la cantidad de rojo, verde y azul (conocido en inglés como RGB). El color resultante del píxel vendrá dado por tanto por la intensidad que tenga cada componente.
Figura 4-3. Representación de un píxel de una imagen a color siguiendo el patrón RGB 4.3.3 Resolución La resolución es la cantidad de píxeles que contiene una imagen. La resolución de una imagen se representa en dos valores numéricos, donde el primero es la cantidad de columnas de píxeles (ancho) y el segundo es la cantidad de filas de píxeles (alto). Figura 4-4. Representación de la resolución de una imagen
36 5 REDES NEURONALES ARTIFICIALES Una vez explicadas las técnicas de creación de modelos y visión de las imágenes en las computadores, en este capítulo se aborda el tema de las Redes Neuronales Artificiales pues son las responsables de arrojarnos los resultados que buscamos aplicando lo aprendido en los capítulos anteriores. Así, a lo largo del capítulo, se hará una introducción a las Redes Neuronales Artificiales, como se clasifican, las formas de entrenarlas y los fundamentos matemáticos en los que se basan para obtener los resultados. 5.1 Introducción a las redes neuronales Las Redes Neuronales fueron originalmente una simulación abstracta de los sistemas nerviosos biológicos, constituidos por un conjunto de unidades llamadas neuronas o nodos conectados unos con otros. El primer modelo de red neuronal fue propuesto en 1943 por McCulloch y Pitts. Este modelo era un modelo binario, donde cada neurona tenía un escalón o umbral prefijado, y sirvió de base para los modelos posteriores. 5.2 Redes Neuronales de tipo biológico Se estima que el cerebro humano contiene más de cien mil millones (1011) de neuronas y 1014 interconexiones (sinapsis) en el sistema nervioso. Estudios sobre la anatomía del cerebro humano concluyen que, en general, hay más de 1000 conexiones a la entrada y salida de cada neurona. El tiempo de conmutación de las neuronas biológicas es casi un millón de veces mayor que el tiempo de los actuales componentes de los ordenadores y las neuronas naturales tienen una conectividad miles de veces superior a las artificiales [18]. Una neurona tiene tres partes: 1º El cuerpo de la neurona. 2º Las dendritas, que reciben las entradas. 3º El axón, que llevará la salida de la neurona a las dendritas de otras neuronas. Figura 5-1. Imagen ilustrativa de las partes de una neurona biológica Las neuronas y las conexiones entre ellas -sinapsis- constituyen la clave para el procesado de la información. La mayor parte de las neuronas poseen una estructura de árbol, llamada dendritas, que reciben las señales de entrada
procedentes de otras neuronas a través de las sinapsis. Este proceso es a menudo modelizado como una regla de propagación representada por una función u (·). La neurona recoge las señales por su sinapsis sumando todas las influencias excitadoras e inhibidoras. Si las influencias excitadoras positivas dominan, entonces la neurona produce una señal positiva y manda este mensaje a otras neuronas por sus sinapsis de salida. En este sentido la neurona actúa como una simple función escalón f (·) [21]. Figura 5-2. Modelo matemático de procesamiento de la información de una neurona Las redes neuronales se enmarcan dentro del campo de la Inteligencia Artificial. La idea principal del Deep Learning es observar el cerebro humano e inspirarse en él para intentar reproducir de forma informática su comportamiento. 5.3 Redes Neuronales en Inteligencia Artificial A nivel esquemático, una neurona artificial se representa así: Figura 5-3. Esquema neurona artificial En el caso de las neuronas artificiales, la suma de las entradas multiplicadas por sus pesos asociados determina el “impulso nervioso” que recibe la neurona. Este valor se procesa en el interior de la célula mediante una función de activación que devuelve un valor que se envía como salida de la neurona [22]. Una red neuronal artificial, al igual que nuestro cerebro, está formada por neuronas artificiales conectadas entre sí y agrupadas en diferentes niveles llamados capas. Capa: Una capa es un conjunto de neuronas cuyas entradas provienen de una capa anterior (o de los datos de entrada en el caso de la primera capa) y cuyas salidas son la entrada de una capa posterior.
38 Figura 5-4. Modelo de red neuronal con cuatro capas En esta imagen podemos ver una red con cuatro capas. Las neuronas de la primera capa reciben como entrada los datos reales que alimenta a la red neuronal. Por eso la primera capa se denomina como capa de entrada. La salida de la última capa es el resultado visible de la red, por lo que la última capa se conoce como la capa de salida. Las capas que se sitúan entre la capa de entrada y la capa de salida se conocen como capas ocultas ya que desconocemos sus valores de entrada y de salida [22]. Así, podemos afirmar que una red neuronal siempre está compuesta por una capa de entrada, una capa de salida y puede contener 0 o más capas ocultas. El concepto de Deep Learning nace a raíz de utilizar un gran número de capas ocultas en la red. 5.4 Funciones de activación La función de activación se encarga de devolver una salida a partir de un valor de entrada. Las funciones de activación pueden ser binarias o continuas según el valor que envían a la siguiente capa. Las funciones binarias convertirán la combinación lineal de la entrada a solamente dos valores que suelen ser {0,1} o {-1,1}. Por otro lado, las funciones continuas devolverán un número cualquiera dentro de un rango predefinido, usualmente [- 1,1]. Se buscan funciones cuyas derivadas sean simples, para minimizar con el coste computacional. 5.4.1 Tipos de funciones de activación 5.4.1.1 Sigmoide (Sigmoid) Transforma los valores introduces a una escala (0,1) donde los valores altos tienden de manera asintótica a 1 y los valores muy bajos tienden de manera asintótica a 0 [23]. Características: - Satura y mata el gradiente. - Lenta convergencia. - No está centrada en el cero. - Está acotada entre 0 y 1. - Buen rendimiento en la última capa.
Figura 5-5. Representación función Sigmoide 5.4.1.2 Tangente hiperbólica (Tanh) Transforma los valores introducidos a una escala (-1,1), donde los valores altos tienden de manera asintótica a 1 y los valores muy bajos tienden de manera asintótica a -1 [23]. Características: - Satura y mata el gradiente. - Lenta convergencia. - Centrada en 0. - Acotada entre -1 y 1. - Se utiliza para decidir entre una opción y la contraria. - Buen desempeño en redes recurrentes. Figura 5-6. Representación función Tangente hiperbólica 5.4.1.3 Rectified Lineal Unit (ReLU) Transforma los valores introducidos anulando los valores negativos y dejando los positivos tal y como entran [20]. Características: - Activación Sparse – solo se activa si son positivos. - No está acotada. - Se pueden morir demasiadas neuronas. - Se comporta bien con imágenes. - Buen desempeño en redes convolucionales.
40 Figura 5-7. Representación función ReLU 5.4.1.4 Leaky Rectified Lineal Unit (Leaky ReLU) Transforma los valores introducidos multiplicando los negativos por un coeficiente rectificativo y dejando los positivos según entran [23]. Características: - Similar a la función ReLU. - Penaliza los negativos mediante un coeficiente rectificador. - No está acotada. - Se comporta bien con imágenes. - Buen desempeño en redes convolucionales. Figura 5-8. Representación función Leaky ReLU
5.4.1.5 Softmax Transforma las salidas a una representación en forma de probabilidades, de tal manera que el sumatorio de todas las probabilidades de las salidas sea 1 [23]. Características: - Se utiliza cuando queremos tener una representación en forma de probabilidades. - Acotada entre 0 y 1. - Muy diferenciable. - Se utiliza para normalizar tipo multiclase. - Buen rendimiento en las últimas capas. 5.5 Algoritmo del descenso del gradiente El algoritmo más utilizado para entrenar redes neuronales es el descenso del gradiente. De forma simple, el gradiente es un cálculo que nos permite saber cómo ajustar los parámetros de la red de tal forma que se minimice su desviación a la salida [24]. En RNA, los parámetros que buscamos ajustar son los pesos y sesgos. La función de coste estará en función de estos parámetros. Al comenzar el entrenamiento de un modelo, los valores de los parámetros, salvo que los usuarios indiquen lo contrario, son inicializados con unos valores aleatorios. Esto produce un valor inicial aleatorio de la función de coste, es decir, un punto de la representación multidimensional función de costeparámetros [25]. Nuestro objetivo es minimizar el error pero no podemos conocer a priori todos los valores de la función de pérdida frente a los parámetros por lo que se opta por calcular la pendiente (derivada de la función de coste) en la posición actual. Al tratarse de una función multidimensional, calculamos las derivadas parciales para cada uno de los pesos, “w”, y sesgos, “b”, consiguiendo la pendiente en el eje de cada parámetro. Si agrupamos todas las derivadas parciales en un vector, se obtiene el gradiente de la función, 𝞩f [25]. 𝛻𝑓 = [𝛿𝑐𝑜𝑠𝑡𝑒 𝛿𝑤1,𝛿𝑐𝑜𝑠𝑡𝑒 𝛿𝑤2,…,𝛿𝑐𝑜𝑠𝑡𝑒 𝛿𝑤𝑁 ,𝛿𝑐𝑜𝑠𝑡𝑒 𝛿𝑏1,𝛿𝑐𝑜𝑠𝑡𝑒 𝛿𝑏2,…,𝛿𝑐𝑜𝑠𝑡𝑒 𝛿𝑏𝐿 ] (5.1) Cuando una derivada parcial toma un valor grande, hace falta una modificación del parámetro en cuestión para reducir el error. Si toma un valor pequeño, significa que el valor actual no perjudica al desempeño de la RNA. Para calcular cada una de las derivadas parciales, el algoritmo de descenso del gradiente utiliza otro algoritmo conocido como “backpropagation”. Este algoritmo comienza calculando las derivadas parciales en la “output layer” de la RNA para ir progresando hacia atrás hasta la primera “hidden layer”, reutilizando las derivadas parciales calculadas y las salidas de las neuronas. El funcionamiento se basa en la composición de funciones y la regla de la cadena. Así, en la última capa, el coste es función de la salida, la salida es función de la combinación lineal y la combinación lineal es función de los pesos y sesgo de la capa anterior. Podemos resumir esto en sólo cuatro ecuaciones [25]: 𝛿𝐿= 𝛿𝐶 𝛿𝛼𝐿∙ 𝛿𝛼𝐿 𝛿𝑍𝐿 (5.2) 𝛿𝑙−1 = 𝛿𝑧𝑙 𝛿𝛼𝑙−1 ∙ 𝛿𝑙∙𝛿𝛼𝑙−1 𝛿𝑍𝑙−1 (5.3) 𝛿𝑐𝑜𝑠𝑡𝑒 𝛿𝑏𝑙−1 = 𝛿𝑙−1 (5.4) 𝛿𝐶 𝛿𝑤𝑙−1 = 𝛿𝑙−1 ∙ 𝛼𝑙−2 (5.5) Donde: - Superíndice L representa la capa de salida de la RNA. - Superíndice l representa la capa actual, l-1 la anterior y l-2 la anterior a esta.
48 disperso de medidas locales que aporten la esencia subyacente de las imágenes de entrada y codifique sus estructuras de interés. Para poder lograr esto, los detectores -y extractoresde características deben tener ciertas propiedades importantes para utilizar estas características [33]: - Robustez: los algoritmos deberían ser capaces de detectar las mismas características independientemente del escalado, rotación, traslación, deformaciones fotométricas, artefactos de compresión y ruido. - Repetibilidad: los algoritmos deberían ser capaces de detectar las mismas características de la misma escena u objeto repetidamente bajo una variedad de condiciones de visualización. - Precisión: los algoritmos deberían ser capaces de localizar las características de la imagen, especialmente para tareas de correspondencia de imágenes, donde correspondencias precisas se requieren para estimar la geometría epipolar – la geometría que estudias las relaciones entre dos puntos de vista distintos. - Generalidad: los algoritmos deberían ser capaces de detectar características que puedan ser usadas en diferentes aplicaciones. - Eficiencia: los algoritmos deberían ser capaces de detectar características en nuevas imágenes para poder soportar aplicaciones en tiempo real. - Cantidad: los algoritmos deberían ser capaces de detectar todos o la mayoría de las características de la imagen. Figura 6-1. Representación de puntos de interés en una imagen 6.4.1 Algunos algoritmos utilizados Estos son algunos de los algoritmos utilizados para la obtención y localización de características locales en una imagen: - SIFT: Scale Invariant Feature Transform. - SURF: Speeded Up Robust Feature. - BRISK: Binary Robust Invariant Scalable Keypoints. - BRIEF: Binary Robust Independent Elementary Features. - ORB: Oriented FAST and Rotated BRIEF [35]. 6.4 Coincidencia de características La coincidencia de características, presente en muchas aplicaciones de la visión artificial, es la tarea de establecer correspondencias entre dos imágenes de la misma escena u objeto. Un enfoque para la coincidencia de imágenes
consiste en detectar un conjunto de puntos de interés, cada uno de los cuales estará asociado con descriptores de imágenes. Una vez extraídas las características y sus descriptores de dos o más imágenes, el siguiente paso es establecer algunas coincidencias preliminares de características entre estas imágenes. Figura 6-2. Representación de coincidencia de características de dos imágenes similares El rendimiento de los métodos de coincidencia basados en puntos de interés depende tanto de las propiedades de los puntos como de la elección de los descriptores de imagen asociados. Por tanto, se deben utilizar detectores y descriptores apropiados para la aplicación. Por ejemplo, si una imagen contiene células bacterianas, se debe usar el detector de manchas en lugar del detector de esquinas. Pero, si la imagen es una vista aérea de una ciudad, el adecuado será el detector de esquinas [34].
50 7 REDES NEURONALES GRÁFICAS (GRAPH NEURAL NETWORKS) Para finalizar la parte teórica, se abordarán las Redes Neuronales Artificiales basadas en Grafos pues las arquitecturas que vamos a utilizar, basan parte de esta en una Red Neuronales Gráfica. Se hará una breve introducción al tema para luego explicar las distintas etapas por la que pasan los datos hasta obtener un resultado que se podrá dividir según cual sea nuestra finalidad. 7.1 Introducción Las Redes Neuronales Gráficas son una clase de modelos de “deep learning” diseñados para trabajar con datos estructurados en forma de grafos. Un grafo es una representación matemática que consiste en nodos (también llamados vértices) conectados por enlaces (o aristas). A diferencia de los datos tabulares o imágenes que son tratados por las redes neuronales más tradicionales, los grafos son inherentemente irregulares y no tienen una estructura fija haciendo que desarrollar modelos efectivos sea complicado [34][35]. La idea principal de las GNNs (Graph Neural Network) es aprovechar la información estructural del grafo y permitir que los nodos aprendan de sus vecinos. Cada nodo del grafo tiene un vector de características que representa ciertas propiedades del mismo. Las GNNs tienes una serie de capas neuronales que propagan y actualizan la información de los nodos vecinos para mejorar cada uno de los nodos de los grafos. Este proceso se llama “neighborhood aggregation”. Esto hace que puedan aprender patrones y características complejas basadas en la topología del grafo y las relaciones entre los nodos [39]. 7.2 Etapas de una GNN Para que la GNN pueda obtener un resultado deberá pasar por una serie de procesos antes de realizar una predicción. Estos son [36][39]: 7.2.1 Representación del grafo El primer paso es representar el grafo en una forma que pueda ser procesada por una red neuronal. Para ello, cada nodo del grafo se asigna a un vector de características inicial. Estas características pueden ser atributos asociados a cada nodo o simplemente identificadores únicos. Además, es posible representar los enlaces entre nodos mediante matrices de adyacencia o listas de adyacencia. Dependiendo del dato que queramos representar seguiremos un proceso u otro. Nos centraremos en la representación de las imágenes como grafos pues es el dato que utilizaremos en nuestro problema, pero podríamos representar datos tales como textos, moléculas, redes sociales, redes de citas, etc. 7.2.1.1 Imágenes como grafos La representación de imágenes mediante grafos es una técnica que se ha utilizado en diversas aplicaciones de procesamiento de imágenes y visión artificial. Para lograr esto, se construye un grafo en el que los nodos representan las partes significativas de la imagen tales como regiones o características específicas extraídas de la imagen. Los enlaces entre los nodos se establecen para capturar las relaciones entre estas partes [36] [40]. Para representar imágenes con grafos tenemos tres representaciones: - Grafo de píxeles: cada píxel de la imagen es un nodo en el grafo y los enlaces entre los píxeles se
establecen de acuerdo a alguna medida de proximidad o similitud entre ellos, como por ejemplo la distancia euclidiana o la intensidad de color. Esta representación se utiliza en tareas de segmentación de imágenes. - Grafo de superpíxeles: a diferencia de la anterior representación, aquí las imágenes se procesan utilizando algoritmos de segmentación que agrupan píxeles similares en regiones más grandes llamadas superpíxeles. Estos superpíxeles se convierten en nodos del grafo y los enlaces entre ellos se basan en la proximidad espacial o características compartidas. - Grafo de características: en lugar de utilizar píxeles como nodos, se extraen características relevantes de la imagen mediante técnicas de extracción de características tales como descriptores de texturas o descriptores de características visuales. Cada característica obtenida se convierte en un nodo del grafo y los enlaces se definen por similitud de características [36][40]. Figura 7-1. Formas de representar una imagen como grafo 7.2.2 Agregación de vecindario (neighborhood aggregation) El proceso principal de una GNN es la propagación de información a través del grafo, permitiendo que los nodos aprendan de sus vecinos y actualicen sus características. En cada capa de propagación, cada nodo del grafo recopila información de sus vecinos y la combina para actualizar su propia representación. El proceso de agregación generalmente se realiza en dos pasos: a. Paso de mensaje (message passing): Cada nodo envía un mensaje a sus vecinos con información sobre su estado actual (características). El mensaje se obtiene al aplicar una función de transformación a las características del nodo emisor. b. Agregación (aggregation): Una vez que todos los nodos han enviado sus mensajes, cada nodo receptor recopila los mensajes entrantes de sus vecinos y los combina mediante una función de agregación, como la suma, el promedio o alguna función más compleja. Esta agregación captura la información global de los vecinos y la integra en la actualización del nodo. 7.2.3 Actualización de nodos Después de que todos los nodos hayan agregado la información de sus vecinos, cada nodo actualiza sus características utilizando la información agregada y sus propias características actuales. Este paso se realiza mediante una función de actualización que toma en cuenta tanto el mensaje agregado como las características del nodo, lo que le permite capturar tanto la información local como la información de la estructura global del grafo. 7.2.4 Repetición en varias capas de propagación El proceso de propagación (paso de mensajes y actualización de nodos) se repite a través de varias capas de la GNN. Cada capa refina gradualmente las representaciones de los nodos, permitiendo que la información se propague a través del grafo a diferentes niveles de profundidad. Esto permite a la GNN capturar patrones y características complejas basadas en la estructura del grafo. 7.2.5 Obtención de un resultado Finalmente, una vez que la GNN ha propagado la información a través de varias capas, se puede usar una
52 estructura específica para realizar una tarea en particular. Por ejemplo, para clasificación de nodos, se puede agregar una capa de clasificación para predecir las etiquetas de los nodos; para predicción de enlaces, se puede usar una capa para predecir la existencia o el valor de enlaces entre nodos; para tareas de regresión, se puede utilizar una capa de regresión para predecir valores numéricos. 7.3 Tipos de tareas de predicción en gráficos Hay tres tipos generales de tareas de predicción en gráficos: nivel de gráfico, nivel de nodo y nivel de borde [36]. 7.3.1 Tareas de nivel de gráfico En este tipo de tarea, nuestro objetivo es predecir la propiedad de un gráfico completo. Por ejemplo, para una molécula representada como un gráfico, podríamos querer predecir si esta se unirá a un receptor implicado en una enfermedad. Esto es análogo a los problemas de clasificación de imágenes, donde queremos asociar una etiqueta a una imagen completa. Figura 7-2. Entrada y salida de un gráfico intentando detectar qué patrón tiene dos anillos 7.3.2 Tarea a nivel de nodo Las tareas a nivel de nodo se ocupan de predecir la identidad o el rol de cada nodo dentro de un gráfico. Un ejemplo clásico de un problema de predicción a nivel de nodo es el club de kárate de Zach. El conjunto de datos es un único gráfico de red social compuesto por personas que han jurado lealtad a uno de los dos clubes de kárate después de una ruptura política. Según cuenta la historia, una disputa entre el Sr. Hi (Instructor) y John H (Administrador) produce un revuelo en el club. Los nodos representan practicantes de karate individuales y los bordes representan interacciones entre estos miembros fuera del karate. El problema de predicción consiste en clasificar si un miembro determinado se vuelve leal al Sr. Hi o a John H, después de la disputa. En este caso, la distancia entre un nodo y el Instructor o el Administrador está altamente correlacionada con esta etiqueta. Los problemas de predicción a nivel de nodo son análogos a la segmentación de imágenes, en las que intentamos etiquetar la función de cada píxel en una imagen.
7.3.3 Tarea de nivel de borde Un ejemplo de uso es la comprensión de la escena de la imagen. Más allá de identificar objetos en una imagen, los modelos de aprendizaje se pueden utilizar para predecir la relación entre ellos. Dados los nodos que representan los objetos en una imagen, deseamos predecir cuáles de estos nodos comparten un borde o cuál es el valor de ese borde. Si buscamos descubrir conexiones entre entidades, podríamos considerar el gráfico completamente conectado y, en función de su valor, llegar a un gráfico disperso. Figura 7-3. Representación de la extracción de información de una imagen a nivel de borde Figura 7-4. Representación de las conexiones de la figura 7-3 a nivel de nodos
54 8 PROBLEMA A RESOLVER A la hora de solucionar el problema propuesto (emparejamiento de imágenes) lo más común es utilizar modelos de Redes Neuronales pre-entrenados sobre los que se realizan ajustes menores o se tratan los datos de modo que sean mejor interpretados por este debido a que se necesitan una cantidad inmensa de datos para que una red neuronal que trabaje en este campo obtenga resultados positivos. Así, en el capítulo se hará una introducción a nuestro problema y cómo trabajaremos. 8.1 Introducción al problema El problema se ha sacado de la famosa página web Kaggle. Es una plataforma web que reúne a la comunidad del “Data Science” recibiendo más de 150 mil publicaciones al mes, que brindan todas las herramientas y recursos para progresar en data science. Kaggle permite acceder de manera gratuita a un banco de trabajo para construir, entrenar y evaluar modelos además de acceso a GPUs. También ofrece una gran cantidad de datos y códigos publicados por la comunidad, e incluso hay tutoriales para iniciarse y avanzar en el mundo de las IA. Kaggle ofrece una serie de competiciones o “challenges” con premios que son publicadas por empresas y van desde competencias para principiantes hasta tareas de investigación. En este trabajo nos vamos a centrar, precisamente, en uno de estos desafíos. Concretamente, el problema es propuesto por Google Research y se corresponde a una competición con el nombre “Image Matching Challenge 2022” en la que participaron 642 equipos. El objetivo principal es crear un modelo capaz de identificar los puntos físicos coincidentes entre dos imágenes similares tomadas desde distinto ángulo. Se proporcionan dos sets de datos, uno para el entrenamiento del modelo y otro para el testeo del mismo. Los resultados se evalúan con una cierta métrica y el tiempo de ejecución del archivo debe ser inferior a 9 horas. Se pueden usar modelos pre-entrenados y datos externos públicos. Figura 8-1. Competición “Image Matching Challenge 2022”
8.2 Entorno de trabajo Para desarrollar se tienen dos opciones. O bien utilizar un ordenador personal o utilizar entornos de programación en línea como Kaggle o Google Colab. Estas son las características de cada uno de ellos: Ordenador sobremesa Kaggle Google Colab RAM 16 GB 13 GB 12 GB CPU AMD Ryzen 5 5600X 6-Core Processor 3.70 GHz 2.30Ghz x4 2.30GHz x2 GPU NVIDIA GeForce RTX 3060 NVIDIA Tesla P100 NVIDIA Tesla K80 Horas máximas por ejecución Sin límite 12 12 Horas de uso por semana Sin límite De 30 a 40 84 (máximo 12 cada 24 horas) Tabla 8-1. Comparación entornos de trabajo disponibles Además de estas características, debemos tener en cuenta otros factores. Los entornos en línea pueden ejecutar el código tanto con los recursos del ordenador desde el que se accede como con los recursos propios que la plataforma reserva al usuario. Aunque los entornos en línea tengan un límite de uso en cada sesión y a la semana, pueden ejecutarse aún con el navegador cerrado por lo que no es necesario que el ordenador esté encendido durante la ejecución del código, lo que es una gran ventaja en este problema pues el entrenamiento puede prolongarse durante varias horas. Adicionalmente, si se usan los entornos en línea, no hay que configurar nada en el ordenador ni descargar las librerías pues bastaría con importarlas sumado a que todas las versiones de un código quedan guardadas en la nube y se pueden consultar en cualquier momento sin riesgo de pérdida. Dados los argumentos anteriores, nos decantaremos por los entornos en línea. Entre Google Colab y Kaggle se ha decidido utilizar la plataforma de Kaggle para el desarrollo del código debido a que son entornos muy parecidos, pero Kaggle cuenta con la ventaja de que todo el “dataset” que se va a utilizar se encuentra en esta plataforma y es muy cómodo utilizarlo ya que para utilizarlo en Google Colab habría que descargarlo y añadir código para poder incorporarlo [48]. Figura 8-2. Logo de la plataforma Kaggle
56 Durante la ejecución del código se utilizará la GPU que ofrece Kaggle en lugar de la CPU. Las CPUs consumen menos energía y son mejores para cálculos secuenciales pero, sin embargo, las GPU funcionan mejor en operaciones que necesitan paralelismo y están pensadas para problemas de computación gráfica tales como el mapeo de texturas, iluminación, proyecciones, ... Así, la GPU es la mejor opción para trabajar con el manejo de imágenes y CNN pues reducirá el tiempo de procesado y mejorará la eficiencia del modelo. 8.3 Lenguaje de programación A la hora de programas problemas de esta índole, los lenguajes más utilizados son R y Python. El código se elaborará en lenguaje Python debido a los conocimientos previos que se tienen y la gran variedad de bibliotecas que incorpora junto con las bibliotecas de cada uno de los modelos de redes pre-entrenadas que vamos a utilizar. 8.4 Imágenes de testeo Al utilizar redes pre-entrenadas, no necesitamos entrenar a nuestros modelos por lo que utilizaremos únicamente las imágenes de testeo para, posteriormente, enviar los resultados a Kaggle. Estas son las parejas de imágenes que queremos emparejar. Figura 8-3. Primera pareja de imágenes de testeo
Figura 8-4. Segunda pareja de imágenes de testeo Figura 8-5. Tercera pareja de imágenes de testeo En cuanto a las imágenes de testeo, las dos primeras parejas parecen tener un grado de disparidad bajo con respecto a la tercera pareja. Con la primera pareja se produce un movimiento de traslación pequeño y un cambio de luz lo que hace que los colores de las imágenes sean distintos pero las fachadas de los edificios están en posiciones similares.
64 9.3.2 Arquitectura 9.3.2.1 Capa de Red Convolucional Deformable (DCN) La capa de red convolucional deformable (DCN) es una parte fundamental de la arquitectura de ASLFeat. Esta capa permite que la red aprenda desplazamientos locales en las operaciones de convolución estándar. Esto es particularmente útil para capturar características locales que pueden estar deformadas o desplazadas en la imagen. La inclusión de la capa DCN es relevante para mejorar la robustez de ASLFeat ante cambios de escala y distorsiones en los objetos presentes en las imágenes. 9.3.2.2 Detección Multinivel (MulDet) La detección multinivel (MulDet) es otro componente importante de ASLFeat. Esta detección se realiza en múltiples niveles de la pirámide de características de la red. La pirámide de características es una representación a diferentes escalas de la imagen, que permite detectar características locales en diversas dimensiones. Al realizar la detección en múltiples niveles de la pirámide, ASLFeat puede capturar características en diferentes tamaños y escalas, lo que mejora su capacidad para abordar la variabilidad de escala en los objetos presentes en las imágenes. 9.3.2.3 Medición de Picos para la Puntuación de Puntos Clave La medición de picos es una parte crucial del proceso para obtener la puntuación de los puntos clave detectados por ASLFeat. Los puntos clave son ubicaciones distintivas en la imagen que son relevantes para el emparejamiento y otras tareas de visión por computadora. La medición de picos permite evaluar y asignar una puntuación a los puntos clave detectados, lo que ayuda a seleccionar los puntos clave más relevantes y discriminativos para la tarea en cuestión. Estos componentes trabajan en conjunto para permitir que ASLFeat aprenda características locales precisas y robustas, especialmente en escenarios con cambios de escala y oclusiones. La combinación de la capa de red convolucional deformable, la detección multinivel y la medición de picos contribuye al éxito de ASLFeat en diversas aplicaciones de visión por computadora que requieren una extracción de características locales confiable y precisa. 9.3.3 Entrenamiento ASLFeat se entrena de manera auto-supervisada, lo que significa que no requiere anotaciones explícitas de puntos clave o descriptores durante el entrenamiento. En su lugar, aprovecha la relación geométrica entre ejemplos positivos y negativos para aprender características locales discriminatorias. 9.4 DKM 9.4.1 Introducción DKM es un modelo de visión por computadora enfocado en el establecimiento de correspondencias densas entre imágenes basado en la coincidencia de características kernelizadas. El proyecto de investigación fue presentado en el CVPR de 2020 en el artículo de investigación “DKM: Dense Kernelized Feature Matching for Geometry Estimation” por Johan Edstedt, Ioannis Athanasiadis, Marten Wadenback y ˚Michael Felsberg [44]. El objetivo principal de DKM es lograr una odometría visual precisa y en tiempo real, que es el proceso de estimar el movimiento (posición y orientación) de una cámara basado en imágenes consecutivas. Las correspondencias densas entre imágenes son esenciales para una estimación de movimiento precisa, especialmente en entornos desafiantes y dinámicos.
Figura 9.4-1: Arquitectura del modelo DKM La arquitectura de DKM consta de un detector y un descriptor de características, seguidos de la kernelización de descriptores y la correspondencia de características. Todo esto termina con la estimación de la geometría para lograr una odometría visual precisa y en tiempo real. 9.4.2 Arquitectura 9.4.2.1 Detector de Características El primer componente de la arquitectura es un detector de características que se encarga de identificar puntos clave o características distintivas en las imágenes. Estas características son ubicaciones importantes en las imágenes que pueden usarse para establecer correspondencias entre ellas. 9.4.2.2 Descriptor de Características Una vez que se han detectado las características, el siguiente componente es el descriptor de características. Este componente se encarga de generar descripciones o representaciones compactas de las características detectadas. Los descriptores capturan la información local alrededor de cada característica y se utilizan para comparar y establecer correspondencias entre características en imágenes diferentes. 9.4.2.3 Kernelización de Descriptores Uno de los aspectos clave de la arquitectura de DKM es la utilización de métodos de kernel para la coincidencia de descriptores. Los métodos de kernel permiten realizar mapeos no lineales de los descriptores a un espacio de características de mayor dimensión. Esto permite capturar relaciones complejas entre descriptores y mejorar el rendimiento de la coincidencia, especialmente en situaciones con cambios significativos en la apariencia y variaciones en el punto de vista. 9.4.2.4 Correspondencia de Características El componente de correspondencia de características es responsable de emparejar los descriptores entre las imágenes. Utilizando los descriptores kernelizados, este componente busca establecer correspondencias precisas y densas entre características en las imágenes consecutivas. La correspondencia de características es fundamental para estimar el movimiento de la cámara en la odometría visual. 9.4.2.5 Estimación de la Geometría Finalmente, la arquitectura de DKM utiliza las correspondencias de características para estimar la geometría del movimiento de la cámara entre las imágenes. Esto implica determinar la posición y orientación relativa de la cámara en cada imagen sucesiva. La estimación precisa de la geometría es crucial para lograr una odometría visual precisa y en tiempo real.
66 10 RESULTADOS 10.1 Mean Average Accuracy (mAA) La media de la precisión media (o mean Average Accuracy) se utiliza comúnmente para analizar el rendimiento de los sistemas de segmentación y detección de objetos. La media de los valores de precisión promedio se calcula sobre los valores entre 0 y 1. La fórmula se basa en las siguientes submétricas [45] [46]: - Precisión: la precisión mide el porcentaje de las predicciones que son correctas. - Recuperación: la recuperación mide qué tan bien se encuentran los casos positivos en el modelo. 𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 = 𝑇𝑃 𝑇𝑃+𝐹𝑃 (10.1.1) 𝑅𝑒𝑐𝑢𝑝𝑒𝑟𝑎𝑐𝑖ó𝑛 = 𝑇𝑃 𝑇𝑝+𝐹𝑁 (10.1.2) 𝐹1 𝑠𝑐𝑜𝑟𝑒 = 2 · 𝑝𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 · 𝑟𝑒𝑐𝑢𝑝𝑒𝑟𝑎𝑐𝑖ó𝑛 𝑝𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛+𝑟𝑒𝑐𝑢𝑝𝑒𝑟𝑎𝑐𝑖ó𝑛 (10.1.3) 𝑚𝐴𝐴 = 1 𝑁∑𝐴𝑃𝑖 𝑁 𝑖=1 (10.1.4) El mAA incorpora el equilibrio entre precisión y recuperación y considera tanto los falsos positivos como los falsos negativos. Esta propiedad hace que sea una métrica adecuada para la mayoría de las aplicaciones de detección. 10.2 Cálculo “a mano” del mAA para un conjunto reducido del dataset de entrenamiento Debido al reducido número de imágenes de testeo que ofrece Kaggle para que la propia página nos ofrezca los resultados, se ha optado por calcular el mAA “a mano” para un conjunto reducido de parejas de imágenes del dataset de entrenamiento elegidas de forma aleatoria. Dentro de todos los datos que se describieron en el apartado 8.5 del documento, vamos a tener en cuenta el valor medio de la covisibilidad de las parejas de imágenes que hemos utilizado para hacer esta nueva prueba. Indicar que se utilizaran las mismas 50 parejas de imágenes para todos los modelos. LoFTR mAA SuperGlue mAA ASLFeat mAA DKM mAA Covisbilidad media Museo Británico 0.636 0.506 0.344 0.632 0.36268 Puerta de Brandeburgo 0.638 0.462 0.376 0.58 0.30838 Palacio de Buckingham 0.294 0.188 0.12 0.178 0.21836 Exterior del Coliseo Romano 0.302 0.152 0.228 0.256 0.3112 Gran plaza de Bruselas 0.354 0.304 0.238 0.380 0.2482 TP = Verdadero positivo TN = Verdadero negativo FP = Falso positivo FN = Falso negativo AP = Precisión media
Estatua de Lincoln 0.790 0.712 0.732 0.784 0.33824 Fachada frontal de Notre-Dame 0.844 0.642 0.734 0.804 0.3621 Exterior del Panteón 0.742 0.336 0.392 0.448 0.37312 Plaza de San Marco 0.184 0.196 0.130 0.268 0.2889 Sagrado Corazón 0.724 0.532 0.518 0.628 0.28242 Sagrada Familia 0.696 0.556 0.614 0.756 0.4529 Catedral de San Pauls 0.588 0.388 0.422 0.480 0.40576 Plaza de San Pedro 0.406 0.176 0.198 0.250 0.27146 Taj Mahal 0.732 0.57 0.420 0.714 0.32914 Templo japonés de Nara 0.526 0.408 0.404 0.466 0.31606 Fontana di Trevi 0.734 0.55 0.566 0.682 0.49882 Media del dataset 0.57438 0.41738 0.40225 0.51913 Tabla 10-1. Media de la precisión media de cada modelo para las imágenes de entrenamiento y su covisibilidad media GPU Tiempo de procesado LoFTR P100 27min, 44s SuperGlue P100 3min, 12s ASLFeat P100 1h, 21min, 49s DKM P100 3min, 19s Tabla 10-2. Tabla comparativa de los tiempos de procesado de los distintos modelos para los datos de entrenamiento De la tabla 10-1, podemos ver como los modelos obtienen mejores y peores puntuaciones en los mismos monumentos. Obteniendo, por ejemplo, buenas puntuaciones en la Fachada frontal de Notre-Dame, entre 0.65 y 0.85, y bajas puntuaciones en monumento tales como la Plaza de San Marco, rondando valores entre 0.13 y
68 0.27. Por otro lado, se han elegido imágenes con una covisibilidad media baja para que esto suponga un desafío para nuestros modelos. A continuación, se muestran dos parejas de imágenes: una de la Plaza de San Marco y otra de la fachada frontal de Notre-Dame. Figura 10-1: Pareja de imágenes de ejemplo de la Plaza de San Marco Figura 10-2: Pareja de imágenes de ejemplo de la fachada frontal de Notre-Dame Por último, comentar de esta tabla, que LoFTR se destaca como el modelo más preciso, con una puntuación de 0.57, seguido de DKM con un 0.52. SuperGlue y ASLFeat obtienen puntuaciones más bajas que los dos modelos anteriores y con valores muy similares. En la tabla 10-2 se han recogido los tiempos de procesamiento de cada uno de los modelos. Tanto SuperGlue como DKM son modelos rápidos pues tardan en procesar los emparejamientos unos 3 minutos respecto a los 27 minutos que tarda LoFTR. ASLFeat se desmarca mucho de estos tiempos con más de 1 hora y 20 minutos.
10.3 Resultados envío Kaggle Tras los resultados obtenidos con los datos de entrenamiento, se opta por resolver el propio problema que nos ofrece Kaggle. Esto es, a través de las imágenes de testeo. Para comprobar la precisión de las distintas arquitecturas de una manera sencilla se ha recurrido al envío de los resultados obtenidos con cada modelo a la propia competición de Kaggle. Esta te devolverá un resultado que consiste en calcular la mAA (mean Average Accuracy) de las matrices fundamentales (la matriz fundamental encapsula la geometría proyectiva entre dos vistas de la misma escena. No se ve afectada por el contenido de la escena y depende únicamente de los parámetros intrínsecos y extrínsecos de las dos cámaras) de las tres imágenes de testeo. Dicho esto, se han obtenido los siguientes resultados: Figura 10-1: Resultado obtenido con LoFTR en Kaggle Figura 10-2: Resultado obtenido con SuperGlue en Kaggle Figura 10-3: Resultado obtenido con ASLFeat en Kaggle Figura 10-4: Resultado obtenido con DKM en Kaggle Vemos que los resultados son muy similares y dan un grado de confianza muy similar. Esto puede ser así por el bajo tratamiento de las imágenes de testeo. Podemos ver que LoFTR es el modelo que mejores resultados da con un grado de confianza del 71.6% y esto se ha conseguido simplemente cambiando la resolución de la imagen a una más apropiada; a 840p.
70 10.4 Datos recuperación modelos Keypoints Good Keypoints % LoFTR 883 511 57.87 537 331 61.64 238 54 22.69 SuperGlue 1024 196 19.14 1024 209 20.41 1024 54 5.27 ASLFeat 728 170 23.35 339 45 13.27 212 16 7.55 DKM 2000 1031 51.55 2000 1357 67.85 2000 600 30 Tabla 10-3. Tabla comparativa de “keypoints” utilizados y aceptados Otra de las estadísticas que podemos obtener es el número de “keypoints” que ha utilizado cada uno de los modelos y, por consiguiente, el número de “keypoints” que ha conseguido emparejar correctamente entre las dos imágenes. De la tabla anterior podemos comparar DKM y SuperGlue como modelos con un número fijo de características para las tres parejas de imágenes, utilizando 2000 y 1024 respectivamente. SuperGlue acepta como válidas el 19.14%, 20.41% y 5.27% de los puntos para las imágenes 1,2 y 3 y por otro lado, DKM acepta como válidas el 51.55%, 67.85% y 30% de los puntos. Por otra parte, LoFTR y ASLFeat utilizan un número distinto para cada una de las imágenes, los cuales podemos ver en la tabla 9-3. También se recoge el porcentaje de puntos que toma como correctos. Atendiendo a los porcentajes de los 4 modelos, podemos deducir que la segunda pareja de imágenes es la más fácil de emparejar, seguida de la primera pareja por un corto porcentaje para terminar con la tercera pareja que
se encuentra mucho más alejada en cuanto a porcentaje de puntos aceptados se refiere. También podemos dividir los modelos en dos grupos según estos porcentajes pues LoFTR y DKM oscilan en torno al 50-60% para la primera pareja, 60-70% para la segunda y 20-30% para la tercera. SuperGlue y ASLFeat oscilan sobre el 19-25% para la primera, 13-21% para la segunda y 5-8% para la última. ASLFeat se destaca como la única arquitectura que posiciona a la segunda pareja de imágenes como la más difícil de emparejar. De los dos resultados que hemos obtenido, podemos destacar a LoFTR como el modelo más fiable al ser el segundo modelo que menos puntos utiliza y el segundo modelo que mayor porcentaje de puntos toma como válidos dando además la mayor fiabilidad de las 4 arquitecturas con un 72% aproximadamente. Por otro lado, podemos ver los datos con otra perspectiva. Si queremos, posteriormente, utilizar nuestros resultados para realizar un modelo 3D de un elemento, buscaremos el modelo que nos ofrezca un mayor número de “Good Keypoints” puesto que, a mayor número de puntos, mayor fidelidad tendrá nuestra reconstrucción 3D. En ese caso DKM se destaca como el mejor modelo, seguido de LoFTR. Figura 10-5. Ejemplo de emparejamiento pareja 1
72 Figura 10-6. Ejemplo de emparejamiento pareja 2 Figura 10-7. Ejemplo de emparejamiento pareja 3
Las imágenes 10-5, 10-6 y 10-7 son un ejemplo de cómo se representan los emparejamientos de los puntos que sacan los modelos. En este caso es de la arquitectura ASLFeat. En las imágenes, podemos ver una serie de puntos representados en azul. Si entre dos de estos puntos hay una línea verde, significa que estos son dos puntos emparejados correctamente, según el modelo. 10.4 Tiempo de procesado de los modelos GPU Tiempo de procesado LoFTR P100 112.1s SuperGlue P100 32.6s ASLFeat P100 48.7s DKM P100 87.8s Tabla 10-4. Tabla comparativa de los tiempos de procesado de los distintos modelos Otro de los datos que podemos extraer de los modelos es el tiempo que han tardado en procesar y obtener los resultados que buscamos. Indicar que en todos los casos hemos utilizado la misma GPU de entre todas las que nos ofrece Kaggle. Esta es GPU-P100. El modelo más rápido es Superglue con 32.6s, seguido de ASLFeat, 48.7s. En tercer lugar, tenemos a DKM que es capaz de realizar todo el proceso en 87.8s para terminar con LoFTR con 112.1s.
80 ASLFeat [53], [54] Datasets necesarios Figura A-8. Datasets necesarios para ASLFeat Librerias y dependencias Figura A-9. Librerias y dependencias utilizadas en ASLFeat
Inicialización del modelo Figura A-10. Inicialización modelo de ASLFeat Carga de las imágenes de testeo a utilizar Figura A-11. Carga imágenes de testeo ASLFeat
82 Definición de funciones necesarias
Figura A-12. Funciones necesarias en LoFTR Obtener “matches” y matriz fundamental Figura A-13. Código para obtener “matches” en LoFTR Creación fichero de envío a Kaggle Figura A-14. Creación fichero con matrices fundamentales para Kaggle
84 SuperGlue [54], [55], [56] Datasets necesarios Figura A-15. Datasets necesarios para SuperGlue Librerias y dependencias Figura A-16. Librerias y dependencias utilizadas en SuperGlue
Inicialización del “matcher” Figura A-17. Inicialización “matcher” de SuperGlue Carga de las imágenes de testeo a utilizar Figura A-18. Carga imágenes de testeo SuperGlue Definición de funciones necesarias Figura A-19. Funciones necesarias en SuperGlue
86 Extracción de Keypoints y “matches” Figura A-20. Código para obtener “matches” en SuperGlue Creación fichero de envío a Kaggle Figura A-21. Creación fichero con matrices fundamentales para Kaggle
DKM [57], [58] Datasets necesarios Figura A-22. Datasets necesarios para DKM Librerias y dependencias Figura A-23. Librerias y dependencias utilizadas en DKM
88 Carga de las imágenes de testeo a utilizar Figura A-24. Carga imágenes de testeo DKM Definición de funciones necesarias Figura A-25. Funciones necesarias en DKM
Extracción de Keypoints y “matches” Figura A-26. Código para obtener “matches” en DKM
96 [28] Sebastian Ruder, <<An overview of gradient descent optimization algorithms>>, 19 de enero 2016, [En línea]. Available: https://www.ruder.io/optimizing-gradient-descent/. [Último Acceso 30 julio 2023]. [29] Diego Calvo, <<Clasificación de redes neuronales artificiales>>, 13 julio 2017, [En línea]. Available: https://www.diegocalvo.es/clasificacion-de-redes-neuronales-artificiales/. [Último Acceso 21 abril 2023]. [30] Na8, << ¿Cómo funcionan las Convolutional Neural Networks? Visión por Ordenador>>, 29 noviembre 2018, [En línea]. Available: https://www.aprendemachinelearning.com/comofuncionan-las-convolutional-neural-networks-vision-por- ordenador/#:~:text=Si%20tenemos%20una%20imagen%20con,es%20nuestra%20capa%20de% 20entrada. [31] A. Oliva y A. Torralba, <<Modeling the shape of the scene: a holistic representation of the spatial envelope>>. Int. J. Comput. 145-175. Publicado en 2001. [32] S. Bianco, D. Mazzini, D. Pau y R. Schettini, <<Local detectors and compact descriptors for visual search: a quantitative comparison>>. Digital Signal Process. 1-13. Publicado en 2015. [33] K. Tuytelaars, T. y Mikolajczyk, <<Local invariant feature detectors: a survey>>. Found. Trends Comput. 177-280. Publicado en 2007. [34] Deepanshu Tyagi, <<Introduction To Feature Detection and Matching>>, Data Breach, 3 enero 2019, [En línea]. Available: https://medium.com/data-breach/introduction-to-feature-detection-and- matching-65e27179885d. [Último Acceso 28 mayo 2023]. [35] Sanjaysdev0901, <<Feature Detection and Matching with opencv python>>, 3 enero 2023, [En línea]. Available: https://www.geeksforgeeks.org/feature-detection-and-matching-with- opencv-python/. [Último Acceso 12 julio 2023]. [36] Sanchez-Lengeling, et al., <<"A Gentle Introduction to Graph Neural Networks">>, Distill, 2021. [En línea]. Available: https://distill.pub/2021/gnn-intro/. [Último Acceso 2 junio 2023]. [37] Rick Merritt, << ¿Qué son las Graph Neural Networks?>>, 31 octubre 2022, [En línea]. Available: https://la.blogs.nvidia.com/2022/10/31/que-son-las-graph-neural-networks/. [Último Acceso 4 junio 2023]. [38] Amrita Pathak, <<Redes neurales gráficas explicadas en 5 minutos>>, GeekFlare, 24 enero 2023, [En línea]. Available: https://geekflare.com/es/graph-neural-networks/. [Último Acceso 1 agosto 2023]. [39] Thomas Kipf y Max Welling, <<Graph Neural Networks: A Review of Methods and Applications>>, Revista arXiv año 2020, [En línea]. Available: https://arxiv.org/ftp/arxiv/papers/1812/1812.08434.pdf. [Último Acceso 3 agosto 2023]. [40] Saba Dadsetan, David Pichler, David Wilson, Naira Hovakimyan y Jennifer Hobbs, <<Superpixels and Graph Convolutional Neural Networks for Efficient Detection of Nutrient Deficiency Stress from Aerial Imagery>>, CVPR 2021, [En línea]. Available: https://openaccess.thecvf.com/content/CVPR2021W/AgriVision/papers/Dadsetan_Superpixels _and_Graph_Convolutional_Neural_Networks_for_Efficient_Detection_of_CVPRW_2021_pape r.pdf. [Último Acceso 2 agosto 2023].
[41] @article{sun2021loftr, title={{LoFTR}: Detector-Free Local Feature Matching with Transformers}, author={Sun, Jiaming and Shen, Zehong and Wang, Yuang and Bao, Hujun and Zhou, Xiaowei}, journal={CVPR}, year={2021} } [En línea]. Available: https://zju3dv.github.io/loftr/ y https://arxiv.org/pdf/2104.00680.pdf. [42] inproceedings{sarlin20superglue, author = {Paul-Edouard Sarlin and Daniel DeTone and Tomasz Malisiewicz and Andrew Rabinovich}, title = {{SuperGlue}: Learning Feature Matching with Graph Neural Networks}, booktitle = {CVPR}, year = {2020}, url = {https://arxiv.org/abs/1911.11763} } [En línea]. Available: https://arxiv.org/pdf/1911.11763.pdf y https://github.com/magicleap/SuperGluePretrainedNetwork. [43] @article{luo2020aslfeat, title={ASLFeat: Learning Local Features of Accurate Shape and Localization}, author={Luo, Zixin and Zhou, Lei and Bai, Xuyang and Chen, Hongkai and Zhang, Jiahui and Yao, Yao and Li, Shiwei and Fang, Tian and Quan, Long}, journal={Computer Vision and Pattern Recognition (CVPR)}, year={2020} } [En línea]. Available: https://arxiv.org/pdf/2003.10071.pdf y https://github.com/lzx551402/ASLFeat. [44] @inproceedings{edstedt2023dkm, title={{DKM}: Dense Kernelized Feature Matching for Geometry Estimation}, author={Edstedt, Johan and Athanasiadis, Ioannis and Wadenbäck, Mårten and Felsberg, Michael}, booktitle={IEEE Conference on Computer Vision and Pattern Recognition}, year={2023} } [En línea]. Available: https://arxiv.org/pdf/2202.00667.pdf y https://github.com/Parskatt/DKM. [45] Deval Shah, <<Mean Average Precision (mAP) Explained: Everything You Need to Know>>, v7labs, 7 marzo 2022, [En línea]. Available: https://www.v7labs.com/blog/mean-average-precision [46] Jonathan Hui, <<mAP (mean Average Precision) for Object Detection>>, 7 marzo 2018, [En línea]. Available: https://jonathan-hui.medium.com/map-mean-average-precision-for-object-detection-45c121a31173 [47] Profesor de Dibujo, <<Geometría Proyectiva>>, [En línea]. Available: https://www.profesordedibujo.com/sistema-diedrico/fundamentos-del-sistema/geometria-proyectiva/ [48] Catetos de la geometría, <<Origen de la geometría proyectiva: Renacimiento>>, 14 marzo 2010, [En línea]. Available: http://catetos-catetos.blogspot.com/2010/03/origen-de-la-geometria-proyectiva.html. [49] Addison Howard, Eduard Trulls, etru1927, Kwang Moo Yi, old-ufo, Sohier Dane, Yuhe Jin. (2022). <<Image Matching Challenge 2022>>. Kaggle. [En línea]. Available: https://kaggle.com/competitions/imagematching-challenge-2022. [50] AMMARALI32, <<IMC 2022-kornia LoFtr from 0.533 to 0.721>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/ammarali32/imc-2022-kornia-loftr-from-0-533-to-0-721. [51] RIGHT GOOSE, <<IMC 2022-kornia; Score 0.725>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/ilyaryabov/imc-2022-kornia-score-0-725. [52] REMEK KINAS, <<Whales feature matching LoFTR - Kornia (Open CV - SURF comparision)>>. Kaggle. [En línea]. Available: https://www.kaggle.com/competitions/happy-whale-and- dolphin/discussion/310092. [53] ROBIN SMITS, <<Tensorflow ASLFeat Inference>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/rsmits/tensorflow-aslfeat-inference.
98 [54] BOBFROMJAPAN, <<SuperGlue and LoFTR and ASLFeat>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/bobfromjapan/superglue-and-loftr-and-aslfeat. [55] RICKY, <<SuperGlue baseline>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/losveria/superglue-baseline. [56] YUXIANG HUANG, <<50th Place's Solution: SuperGlue+LoFTR (lb0.810)>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/anonymousyuxiang/50th-place-s-solution-superglue-loftr-lb0-810. [57] CADAR, <<Public Baseline DKM - 0.667>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/radac98/public-baseline-dkm-0-667. [58] CHAN KHA VU, <<LoFTR + SuperGlue + DKM with Inspiration>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/chankhavu/loftr-superglue-dkm-with-inspiration. [59] EDUARD TRULLS, <<imc2022-training-data>>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/eduardtrulls/imc2022-training-data?scriptVersionId=92062607. [60] THE NAM, <<LoFTR Validation Score >>. Kaggle. [En línea]. Available: https://www.kaggle.com/code/namgalielei/loftr-validation-score.