Desarrollo de algoritmos de estimación de mapas profundidad a partir de imágenes RGB mediante técnicas de aprendizaje profundo
80
0
0
Texto completo
(2)
(3) GRADO EN INGENIERÍA DE TECNOLOGÍAS Y SERVICIOS DE TELECOMUNICACIÓN. TRABAJO DE FIN DE GRADO Tı́tulo: Desarrollo de algoritmos de estimación de mapas profundidad a partir de imágenes RGB mediante técnicas de aprendizaje profundo. Autor: Alan Alfredo Vargas del Campo Tutor: Alberto Belmonte Hernández Departamento: Grupo de Aplicación de Telecomunicaciones Visuales (GATV). MIEMBROS DEL TRIBUNAL Presidente: Vocal: Secretario:. Fecha de lectura:. Calificación:.
(4)
(5) Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros de Telecomunicación. Grado en Ingenierı́a de Tecnologı́as y Servicios de Telecomunicación TRABAJO FIN DE GRADO. Desarrollo de algoritmos de estimación de mapas profundidad a partir de imágenes RGB mediante técnicas de aprendizaje profundo. Alan Vargas del Campo. 2020.
(6)
(7) Resumen La utilización de redes neuronales para el procesamiento de imágenes ha crecido de manera exponencial en los últimos años. Concretamente, la estimación de mapas de profundidad ha sido una problemática para la cual se han presentado diversas soluciones tanto software como hardware. En este proyecto se presentará el desarrollo, entrenamiento, análisis y comparación en términos de precisión de tres redes neuronales. Las dos primeras propuestas con arquitectura tipo Autoencoder y una tercera con arquitectura GAN, Para la comparación de las redes, se escogerán los parámetros de entrenamiento buscando optimizar el aprendizaje y se analizarán los resultados obtenidos mediante distintas métricas de validación. Finalmente se validará la solución sobre dos aplicaciones reales para justificar el uso de los resultados en ambientes reales. El proyecto será desarrollado en el lenguaje de programación Python. El dataset (con parte de creación propia) ha sido recolectado mediante la utilización de una cámara RGB-D la cual proporciona la imagen RGB y su mapa de profundidad correspondiente. Las imágenes obtenidas han sido mezcladas con un dataset especı́fico para la estimación de profundidad con el objetivo de entrenar de forma óptima las redes propuestas. Se han utilizado librerı́as tales como OpenCV y Keras para facilitar el procesamiento de las imágenes y la creación y entrenamiento de las redes neuronales.. Palabras clave ‘Machine-Learning’, ’Deep-Learning’, ’Auto-encoder’, GAN, Pix2Pix, Redes Neuronales, Redes Neuronales Convolucionales, Métricas de Similitud, MSE, SSIM, PSNR, NYU, Profundidad, ’Información Mutua’, ’Perceptual Similarity’, ’Procesamiento de Imágenes’, ‘Computer Vision’, Python, Tensorflow, Keras, Pytorch, OpenCV..
(8) Summary The use of neural networks for image processing has grown exponentially in recent years. Specifically, the estimation of depth maps has been a problem for which several software and hardware solutions have been presented. In this project will be developed, trained, analyzed and compared three neural networks in terms of accuracy. The first two proposal take the advantage of Autoencoder architecture and the third one with GAN arquitecture. For the comparison of the networks, some training parameters will be chosen in order to optimize learning and the results obtained will be analyzed using different validation metrics. Finally, the solution will be validated on two real applications in order to check the use of the results in real environments. The project has been developed in Python programming language. The dataset (which we partially developed by ourselves) has been collected using a RGB-D camera which provides the RGB images and its corresponding depth maps. The other part of the dataset was downloaded from internet and combined with the collected dataset to make our more complete. Libraries such as OpenCV and Keras have been used to facilitate the processing of the images and the creation and training of deep neural networks.. Keywords ‘Machine-Learning’, ’Deep-Learning’, Auto-encoder, GAN, Pix2Pix, Neural networks, Convolutional Neural Networks, Similarity Metrics, MSE, SSIM, PSNR, NYU, Depth, ’Mutual Information’, ‘ Perceptual Similarity’, ‘Image Processing’, ‘Computer Vision’, Python, Tensorflow, Keras, Pytorch, OpenCV..
(9) En primer lugar quiero agradecer a mis queridos padres Cristina y Alfredo, y a mi hermana Valentina por siempre apoyarme, ayudarme a cumplir mis sueños y ser mi inspiración dı́a a dı́a. A mis amigos del colegio por estar siempre para mı́ a pesar de la distancia, en especial a Lucho, Daniel y Jorge. También expresar mi agradecimiento a Karla, Maria Pilar y sus familias por acogerme como a uno más durante mis primeros años. A mis amigos venezolanos que conocı́ en Madrid y han formado parte de todo el proceso, en especial a Camila, Gabriel y a mi roomie Alejandro. A la familia que conocı́ en la universidad, con la que he formado lazos especiales y compartido mil sonrisas en estos 4 años. No los puedo nombrar a todos porque serı́a interminable la lista, pero quiero resaltar en particular a mis hermanos Almo, Samir y Kike, a los que admiro y agradezco su sincera amistad. Por último, pero no menos importante, a mi tutor Alberto Belmonte, por su apoyo incondicional y por desvelarse tantas noches para ayudarme a finalizar este trabajo... sin duda alguna, el mejor tutor..
(10)
(11) Índice. 1 INTRODUCCIÓN Y OBJETIVOS. 1. 2 ESTADO DEL ARTE. 5. 3. DESARROLLO 3.1. 15. Fases en la creación de un proyecto de DL . . . . . . . . . . . . . . . . . . . . . 15 3.1.1. Recolección de los datos (Dataset) . . . . . . . . . . . . . . . . . . . . . 15. 3.1.2. Preparación de los datos (Pre-procesado) . . . . . . . . . . . . . . . . . 16. 3.1.3. Creación del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16. 3.1.4. Entrenamiento del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . 17. 3.1.5. Testeo del modelo entrenado . . . . . . . . . . . . . . . . . . . . . . . . 18. 3.2. Creación del dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18. 3.3. Deep Neural Networks for depth estimation . . . . . . . . . . . . . . . . . . . . 20. 3.4. 3.5. 3.3.1. Resnet-Unet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21. 3.3.2. Deep Autoencoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24. 3.3.3. Pix2Pix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28. Evaluación de similitud entre imágenes . . . . . . . . . . . . . . . . . . . . . . . 32 3.4.1. Normalized Root Mean-Square Error . . . . . . . . . . . . . . . . . . . . 32. 3.4.2. Normalized Mutual Information. 3.4.3. Peak Signal-to-Noise Ratio . . . . . . . . . . . . . . . . . . . . . . . . . 33. 3.4.4. SSIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34. 3.4.5. Perceptual Similarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34. . . . . . . . . . . . . . . . . . . . . . . 33. Obtención de distancia real a partir de imágenes de profundidad . . . . . . . . 35.
(12) 4. 5. RESULTADOS. 36. 4.1. Resultados red neuronal ResNet-UNet . . . . . . . . . . . . . . . . . . . . . . . 36. 4.2. Resultados red neuronal Deep Autoencoder . . . . . . . . . . . . . . . . . . . . 39. 4.3. Resultados red neuronal GAN Pix2Pix . . . . . . . . . . . . . . . . . . . . . . . 41. 4.4. Comparación entre redes mediante métricas de comparación de imágenes . . . . 44. 4.5. Aplicación del trabajo a soluciones reales . . . . . . . . . . . . . . . . . . . . . 45 4.5.1. Estimación de distancia a objetos . . . . . . . . . . . . . . . . . . . . . . 47. 4.5.2. Reconstrucción 3D de escenas . . . . . . . . . . . . . . . . . . . . . . . . 48. CONCLUSIONES Y LÍNEAS FUTURAS. 50. Referencias. 51. Anexos. 59. A ASPECTOS ÉTICOS, ECONÓMICOS, SOCIALES Y AMBIENTALES. 59. A.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 A.2 Descripción de impactos relevantes relacionados con el proyecto . . . . . . . . . 60 A.2.1 Impacto ético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 A.2.2 Impacto económico y social . . . . . . . . . . . . . . . . . . . . . . . . . 60 A.2.3 Impacto medioambiental . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 A.3 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 B PRESUPUESTO ECONÓMICO. 62.
(13) Listado de figuras 1. Cámara RGB-D Asus Xtion y sensores incorporados.[1] . . . . . . . . . . . . .. 1. 2. Ejemplos de utilización de mapas de profundidad en el ámbito profesional.[2] Izquierda: Imagen de profundidad de un brazo obtenida mediante una cámara. Derecha: Estudio de profundidad de un terreno realizado con tecnologı́as LIDAR.[3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3. Izquierda: Artificial Intelligence. [4] Derecha: Crecimiento del mercado de Deep Learning.[5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4. 4. Muestra de imagen RGB y su respectiva imagen de profundidad. [6] . . . . . .. 5. 5. Izquierda: Modelo de tecnologı́a de cámara dual.[7] Derecha: Funcionamiento de tecnologı́a de pı́xel dual.[8] . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 6. Izquierda: Funcionamiento de sistemas con Sensores IR. [9] Derecha: Funcionamiento de los pulsos emitidos por LIDAR.[10] . . . . . . . . . . . . . . . . . .. 7. 7. Izquierda: Representación de la Esterópsis Visual. [11] . . . . . . . . . . . . . .. 8. 8. Diferencia entre ML y DL.[12] . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8. 9. Estructura de un Autoencoder.[13] . . . . . . . . . . . . . . . . . . . . . . . . .. 9. 10. Ilustración de la red propuesta para la estimación de la profundidad monocular. [14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11. 11. Ejemplo de funcionalidades del pixtopix [15] . . . . . . . . . . . . . . . . . . . . 11. 12. Arquitecture de “Unsupervised Learning of Depth and Ego-Motion from Video“. [16] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12. 13. Red utilizada en “Unsupervised Monocular Depth Estimation with Left-Right Consistency“. [17] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13. 14. Arquitectura GAN. [18] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13. 15. Pasos para la creación de un proyecto de DL. . . . . . . . . . . . . . . . . . . . 15. 16. High-level general CNN architecture. [19] . . . . . . . . . . . . . . . . . . . . . 17. 17. Par de imágenes recogido por la cámara Intel Depth D435.. 3. 6. . . . . . . . . . . . 19.
(14) 18. Par de imágenes del dataset NYU. . . . . . . . . . . . . . . . . . . . . . . . . . 19. 19. Imagen eliminada del dataset en la limpieza.. . . . . . . . . . . . . . . . . . . . 20. 20. Ejemplo Arquitectura U-net.[20] . . . . . . . . . . . . . . . . . . . . . . . . . . 21. 21. (a)Arquitectura de la red. (b) Bloques ”bottleneck”. (c) Significado de los bloques empleados en la red. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22. 22. Arquitectura de la red Deep Autoencoder.[21] . . . . . . . . . . . . . . . . . . . 25. 23. DenseNet de 5 capas.[22] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25. 24. Deep DenseNet con 3 DenseBlocks. . . . . . . . . . . . . . . . . . . . . . . . . . 26. 25. Arquitecturas Deep Autoencoder. . . . . . . . . . . . . . . . . . . . . . . . . . . 27. 26. Entrenamiento de una GAN condicional. El objetivo del discriminador es diferenciar imágenes generadas de imágenes verdaderas mientras que el objetivo del generador es engañar al discriminador. . . . . . . . . . . . . . . . . 28. 27. Arquitectura Pix2pix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29. 28. Arquitectura Markovian discriminato . . . . . . . . . . . . . . . . . . . . . . . . 30. 29. Loss ResNet-UNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37. 30. Ejemplo de estimación ResNet-UNet, con SSIM por debajo de 0.47. Izquierda: Imagen RGB. Centro: Imagen estimada. Derecha : Imagen real. . . . . . . . . . 38. 31. Ejemplo estimación ResNet-UNet con SSIM mayor de 0.7. Izquierda: Imagen RGB. Centro: Imagen estimada. Derecha : Imagen real. . . . . . . . . . . . . . 38. 32. Loss Deep Autoencoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39. 33. Ejemplo de estimación con Deep Autoencoder con SSIM menor de 0.55. Izquierda: Imagen RGB. Centro: Imagen estimada. Derecha : Imagen real. . . . 40. 34. Ejemplo de estimación Deep Autoencoder con SSIM mayor de 0.7. Izquierda: Imagen RGB. Centro: Imagen estimada. Derecha : Imagen real. . . . . . . . . 41. 35. Loss Pix2pix Generador y Discriminador . . . . . . . . . . . . . . . . . . . . . . 42. 36. Ejemplo estimación Pix2Pix con SSIM menor de 0.3. Imagen RGB. Centro: Imagen estimada. Derecha : Imagen real. . . . . . . . . . . . . . . . . . . . . . . 43.
(15) 37. Ejemplo predicción Pix2PIx con SSIM mayor de 0.7. Fila superior imagen capturada por nuestra cámara y fila inferior, imagen del dataset NYU. Izquierda: Imagen RGB.Centro: Imagen estimada.Derecha: Imagen real. . . . . 43. 38. Ejemplo de predicciones con todas las redes. Orden: RGB, Imagen de profundidad original, ResNet-UNet, DeepAutoencoder, Pix2Pix . . . . . . . . . . . . 46. 39. Imagen RGB , su mapa de profundidad real e imagen con los objetos a los que se le medirá la distancia recuadrados. . . . . . . . . . . . . . . . . . . . . . . . . 47. 40. Izquierda: Estimación UNet. Centro: Estimación Deep Autoencoder. Derecha: Estimación Pix2Pix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47. 41. Imagen RGB y su mapa de profundidad real . . . . . . . . . . . . . . . . . . . . 48. 42. Izquierda: Estimación UNet. Centro: Estimación Deep Autoencoder. Derecha: Estimación Pix2pix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49. 43. Reconstrucciones 3D generadas a partir de las estimaciones de cada red. . . . . 49.
(16)
(17) Glosario LIDAR - Light Detection and Ranging SLAM - Localización y modelado simultáneos RGB - Red, Green, Blue RGB-D - Red, Green, Blue and Depth AI - Artificial Intelligence ML - Machine Learning DL - Deep Learning IoT - Internet of Things CMOS - Complementary Metal-Oxide-Semiconductor IR - Infrared SIFT - Scale-invariant Feature Transform GAN - Generative Adversarial Network CNN - Convolutional Neural Network CRF - Conditional Random Field FPS - Frames Per Second ReLU - Rectified Linear Unit MSE - Mean Squared Error NRMSE - Normalized Root Mean Squared Error PSNR - Peak Signal-to Noise Ratio SSIM - Structural SIMilarity IQA - Image Quality Assessment NMI - Normalización de la Información Mutua.
(18)
(19) 1. 1. INTRODUCCIÓN Y OBJETIVOS Este proyecto se centra en la estimación de mapas de profundidad mediante redes neuronales que toman como entrada imágenes RGB. La idea principal es desarrollar, analizar y comparar diferentes redes neuronales capaces de realizar dicha predicción en función de los parámetros que se aprenderán. Para el entrenamiento de las redes se ha utilizado un dataset de creación propia mezclado con el existente “NYU Depth Dataset V2” [23], para lograr un dataset completo que contemple no sólo información del dataset existente, sino imágenes reales para el entorno de aplicación del proyecto. Se utilizarán cámaras RGB-D para la recolección de imágenes tanto RGB como de profundidad y se obtendrá un dataset lo suficientemente completo con el que entrenar las redes para que logren predecir los mapas de profundidad correspondientes a las imágenes RGB de entrada. Por último, se validará la solución obtenida con diferentes métricas de similitud y se propondrán ejemplos reales de aplicación de la solución propuesta.. Figura 1: Cámara RGB-D Asus Xtion y sensores incorporados.[1]. Las cámaras RGB-D hacen referencia a la información que proporcionan. Por un lado, los 3 primeros canales de la imagen, RGB (cuyas siglas en inglés hacen referencia a Red, Green y Blue), son aquellos que contienen los datos necesarios para componer una imagen según la intensidad de sus colores primarios de luz. Por otro lado, la letra D (Depth) hace referencia al cuarto canal de la imagen, el de profundidad, que nos brinda una información pı́xel a pı́xel, respecto a la imagen RGB, de la profundidad de toda la escena captada. Conociendo los parámetros del sensor de profundidad, es posible mapear el valor real de distancia para cada una de las intensidades de los pı́xeles en la imagen de profundidad obtenida. Como se observa en la Figura 1, las cámaras RGB-D están conformadas por 3 componentes principales [24]: cámara infrarroja (IR), cámara RGB convencional y un proyector de láser infrarrojo. La combinación de los 3 hace posible la obtención de la profundidad por medio de la detección de la luz infrarroja, que ha sido reflejada en los objetos que se encuentran frente a la cámara. Los datos resultantes son combinados con elementos software que hacen posible la representación de la estimación de profundidad. Por otro lado, estás cámaras también poseen.
(20) 2. una lente RGB clásica, que se puede combinar con el lente infrarrojo para la obtención de imágenes de color en condiciones de poca luz. Existen muchas cámaras de profundidad en el mercado. Una de las primeras en aparecer fue la Kinect v1 [25], la cual revolucionó el mundo al presentarse como una alternativa para las interacciones humanas con las consolas sin necesidad de contacto fı́sico. Además, desde su lanzamiento fue hackeada múltiples veces, dando a conocer el gran potencial de estas fuera del control de videojuegos. Gracias a esto, comenzaron a aparecer nuevos fabricantes con alternativas similares tales como la ASUS Xtion, Orbbec, Intel e incluso versiones mejoradas como el Kinect v2. En el entorno profesional, aparecieron alternativas que lograban generar estimaciones de profundidad muy precisas. Ejemplo de estas son los mecanismos O3D303, Lidar, entre otras alternativas que ofrecen estimaciones de alta calidad por un alto precio. Por lo tanto, tradicionalmente existı́an 2 tipos de artefactos capaces de generar imágenes de profundidad: aquellos excesivamente costosos y muy precisos o los económicos, pero menos fiables. La Tabla 1 muestra el coste aproximado de estas cámaras mencionadas anteriormente: Modelo Intel RealSense D435[26] Orbbec Astra[27] Microsoft - Sensor Kinect (Xbox One)[28] URG-04LX[29] UTM-30LX-EW[29]. Precio 216.71€ 149.00€ 150.00€ 1775.00€ 4500.00€. Tabla 1: Comparación de precio de las cámaras RGB-D.. Esta tecnologı́a ha sido aplicada en distintos ámbitos desde hace muchos años. Pasando por la generación de imágenes en 3 dimensiones para la transición del mundo del cine hacia las pelı́culas innovadoras en 3D, hasta el desarrollo de robots autónomos, la ciencia y salud, entre otros campos de investigación. En robótica, un campo donde los usuarios suelen tener presupuestos ajustados, estas alternativas son de gran ayuda. Incluso grandes compañı́as hacen uso de estos algoritmos en sus nuevos robots autónomos (utilizados para mapeado, movimiento autónomo, entregas, etc.) [30]. En cuanto a aplicaciones cientı́ficas, las imágenes de profundidad son utilizadas por empresas mineras [31], constructoras, en el espacio [32], en organismos medio ambientales [33] que estudian el deterioro de la tierra a través de la degradación de los suelos. Estos estudios han sido realizados hasta el dı́a de hoy con sistemas como el LIDAR [34] que son de coste mucho mayor [29]. También se contemplan como objetivos cercanos su utilización en el espacio, e incluso en el sector de la salud. En este último la tecnologı́a ya existe, pero desde el punto de vista de la monitorización, como por ejemplo, en personas mayores [35] es utilizado para.
(21) 3. prevenir caı́das, estudiar algunas enfermedades como el Parkinson, monitorizar actividad, ejercicios, patrones de movimiento, entre otros. Lo que se busca es llegar a utilizarla para detectar anomalı́as de manera fiable en partes especı́ficas del cuerpo y ayudar ası́ a detectar e incluso prevenir ciertas enfermedades.. Figura 2: Ejemplos de utilización de mapas de profundidad en el ámbito profesional.[2] Izquierda: Imagen de profundidad de un brazo obtenida mediante una cámara. Derecha: Estudio de profundidad de un terreno realizado con tecnologı́as LIDAR.[3]. El crecimiento de los distintos mercados que utilizan los mapas de profundidad para alguna aplicación, ha ido de la mano con el desarrollo de nuevas alternativas que disminuyan los costes de producción y aumenten la fiabilidad. La alternativa predominante surge a través de diferentes algoritmos por medio de los cuales se han obtenido resultados que satisfacen las expectativas. Esto produce un cambio importante ya que dejan de ser necesarias las cámaras RGB-D y son sustituidas por simples cámaras RGB, que a través del software son capaces de generar una estimación de profundidad similar a la generada por una cámara RGB-D. El coste de una cámara RBG de buena calidad (HD) varı́a aproximadamente entre 20-40e[36], que en comparación con las anteriores es mucho menor. Por lo que, mediante la utilización de elementos hardware accesibles y de algoritmos software que se encuentran en constante optimización, se pueden sustituir aquellas cámaras costosas que se presentaban como única solución para la obtención de mapas de profundidad. Los mapas obtenidos por medio de estas técnicas innovadoras presentan un balance beneficioso para los consumidores, tanto en términos económicos como de fiabilidad. Cuando hacemos referencia a algoritmos de Artificial Intelligence (AI) en realidad nos centramos en dos de sus ramas: Machine Learning (ML) y Deep Learning (DL) como se observa en la izquierda de la figura 3. Ambas han crecido de forma exponencial en la última década [37] gracias a la capacidad de procesamiento de los ordenadores y al abaratamiento del almacenamiento. Ambas son un conjunto de operaciones matemáticas y funciones que permiten generar unos datos de salida a partir de unos valores de entrada y aprender un patrón gracias a esto. Mediante el proceso de entrenamiento, los algoritmos son capaces de aprender y adaptar sus.
(22) 4. parámetros para resolver problemas complejos gracias al uso de gran cantidad de datos como entrada.. Figura 3: Izquierda: Artificial Intelligence. [4] Derecha: Crecimiento del mercado de Deep Learning.[5]. El crecimiento del mercado de DL como se observa en la parte derecha de la Figura 3, va de la mano con el crecimiento de los elementos hardware y los servicios que son utilizados en el desarrollo de las mismas. La disciplina del aprendizaje automático está en plena ebullición gracias a su aplicación en el mundo del Big Data y el IoT, que son tecnologı́as que manejan gran cantidad de datos y por ende la utilización de estas redes para el procesado y fácil manejo de los mismos es esencial. Por lo tanto, tal como se menciona en el blog de AI del portal Xataca [38], nos encontramos ante una “tormenta perfecta”, originada gracias a la convergencia de las tecnologı́as Cloud, Móvil, IoT, Big Data y Computación Cognitiva. Por todas estas razones, el trabajo se va a centrar en el uso de tecnologı́as de sensores de imagen (RGB y RGB-D), la creación de un dataset lo suficientemente completo mediante combinación de datos reales recogidos por las cámaras en combinación con datos existentes de otros datasets y la aplicación del actual paradigma del Deep Learning, para resolver el problema de la estimación de profundidad de la manera más precisa posible..
(23) 5. 2. ESTADO DEL ARTE Se denomina profundidad a la distancia de un elemento con respecto a un plano horizontal de referencia [39], y en imágenes, se suele representar utilizando una escala de colores en la cual cada color representa la distancia de dicho objeto respecto a la cámara (Figura 4). Los algoritmos de estimación de profundidad buscan generar esta representación a partir de diferentes tipos de información como entrada, siendo el caso más extendido el uso de una imagen RGB.. Figura 4: Muestra de imagen RGB y su respectiva imagen de profundidad. [6]. La aplicación de la estimación de profundidad consiste en sustituir aquellos métodos que ya proporcionaban el mapa de profundidad pero que no eran económicos por otros que sean tanto económicos como fiables. Los resultados obtenidos son utilizados en distintos campos como: el suavizado de partes borrosas de una imagen, mejorar la representación de escenas en 3D, automóviles autónomos, robótica, cirugı́a asistida por robots, conversión automática de 2D a 3D en pelı́culas, entre otros. El objetivo de este apartado será analizar distintos enfoques con los que se ha afrontado la estimación de profundidad a lo largo de los años. Se presentarán tanto métodos previos como posteriores a los algoritmos de aprendizaje. Primero se centrará la presentación en aquellos enfoques que se han realizado a través de componentes hardware. Se resaltan las 3 tecnologı́as más importantes, que son la tecnologı́a de cámara dual [40], la tecnologı́a del pı́xel dual y los sistemas basados en sensores. En cuanto a la primera, algunos dispositivos poseen dos cámaras separadas por una pequeña distancia que capturan la misma imagen desde diferentes puntos de vista, como se observa a la izquierda de la Figura 5. A estas imágenes se les llama par estéreo, este par es utilizado para calcular la información de profundidad. Por otro lado, la técnica de pı́xel dual [41], consiste en que cada pı́xel está compuesto por dos fotodiodos separados una pequeña distancia (generalmente.
(24) 6. menos de un milı́metro). Cada fotodiodo analiza las imágenes captadas como diferentes y las analiza como un conjunto. Sorprendentemente, la distancia de separación es suficiente para considerar un par de imágenes estéreo. Una representación de dicho funcionamiento se observa en la parte derecha de la Figura 5.. Figura 5: Izquierda: Modelo de tecnologı́a de cámara dual.[7] Derecha: Funcionamiento de tecnologı́a de pı́xel dual.[8]. Por último, en la Figura 6 se observa la utilización de sensores infrarrojos y los sistemas LIDAR. Ambos son otros tipos de sistemas hardware para estimación de profundidad. Por un lado, los sensores infrarrojos (utilizados por ejemplo en las primeras versiones del Kinect) proyectan en el entorno una maya y un sensor CMOS monocromo [42] (colocado a unos centı́metros de distancia) recibe los rayos reflejados. Se calcula la diferencia entre los rayos IR esperados y los recibidos. Los datos obtenidos a partir de esta diferencia son procesados por elementos software que hacen posible la representación de los mismos como un mapa de profundidad. Los sistemas LIDAR en cambio, disparan pulsos a los objetos del entorno y miden el tiempo que tardan estos pulsos en volver. También miden el cambio en la longitud de onda de los pulsos, y mediante la unión de estos dos cálculos se da una aproximación bastante acertada de la profundidad. A partir de este punto, se describirán brevemente algunas de las soluciones software que surgieron, ya que la utilización de muchos elementos hardware aumentaba los costes de producción y limitaba su utilización para ciertos dispositivos. Existen 2 ramas principales para la estimación por software: los métodos de múltiples imágenes y los de imagen única. Los métodos de múltiples imágenes son la forma más sencilla de estimar la profundidad sin utilizar hardware adicional. Consisten en la utilización de múltiples imágenes del mismo entorno con ligeras diferencias, comparando los puntos clave de cada imagen se puede reconstruir un modelo 3D. Un ejemplo es el cálculo por imágenes de disparidad [43], que no es otra cosa, que una representación de las diferentes profundidades a las que se encuentran los objetos respecto.
(25) 7. de la ubicación de las cámaras. Posteriormente, mediante una simple relación geométrica por semejanza de triángulos y conocidos algunos parámetros de las cámaras tales como, la separación existente entre ellas y las distancias focales de sus sistemas ópticos, es posible determinar las distancias buscadas.. Figura 6: Izquierda: Funcionamiento de sistemas con Sensores IR. [9] Derecha: Funcionamiento de los pulsos emitidos por LIDAR.[10]. La obtención del mapa de disparidad requiere realmente la identificación del mismo punto u objeto en las dos imágenes y que representa la misma entidad fı́sica en la escena tridimensional. Es en esta identificación donde surgen los problemas con este procedimiento, ya que los algoritmos asumen que las imágenes vienen alineadas y que por ende los pı́xeles coincidirán. Los algoritmos que emplean este método aplican ciertas restricciones para intentar llegar a un funcionamiento óptimo. Generalmente en los algoritmos el funcionamiento es óptimo con cierta estructura geométrica de la escena, pero cuando alguna de las restricciones en la estructura o hipótesis de la escena no se verifican, se generan errores. Como se observa en la Figura 7, la obtención de la estimación de profundidad a partir del método de disparidad de imágenes se asemeja a la estereopsis visual realizada por el ojo humano [44], donde la información de cada ojo se envı́a por separado al cerebro, el cual se encarga de combinarlas emparejando las similitudes y añadiendo las diferencias, para producir finalmente una imagen en estéreo, de forma que percibamos la sensación de profundidad, lejanı́a o cercanı́a de los objetos que nos rodean. Gracias a la visión en estéreo podemos ver los objetos como sólidos en tres dimensiones espaciales: anchura, altura y profundidad. Es esta percepción de la profundidad la que hace de la visión estereoscópica algo tan especial, ya que gracias a ella somos capaces de apreciar las diferentes distancias y volúmenes de nuestro entorno. En cuanto a los métodos de imagen única, vale la pena destacar a los métodos SLAM [45]. SLAM significa Localización y modelado simultáneos, La localización y el modelado pueden.
(26) 8. ser realizados por una cámara. Suelen estar compuestos fundamentalmente por 5 módulos diferenciados. Estos son la inicialización, la localización, el mapeado, la relocalización y por último la optimización del mapeado. La idea fundamental de estas técnicas es poder obtener, únicamente con imagen o con ayuda de sensores adicionales, la posición de la cámara en el espacio gracias a una secuencia de frames.. Figura 7: Izquierda: Representación de la Esterópsis Visual. [11]. Coloquialmente, se denomina AI cuando una máquina imita las funciones cognitivas que los humanos asocian con otras mentes humanas, como por ejemplo: “percibir”, “razonar”, “ aprender” y “resolver problemas”[46]. Concretamente destacan los métodos de aprendizaje automático encuadrados en los campos del Machine Learning (ML) y el Deep Learning (DL), los cuales, son capaces de realizar funciones complejas tras un aprendizaje sobre una serie de datos. A partir de este punto, se describirán algunos algoritmos de ML y DL que se han presentado como alternativas para la estimación de profundidad.. Figura 8: Diferencia entre ML y DL.[12].
(27) 9. La Figura 8 representa la principal diferencia entre el ML y DL, que radica principalmente en que los algoritmos de ML requieren normalmente de un trabajo previo (humano) de extracción de caracterı́sticas que describan apropiadamente la información de entrada. En cambio, en DL éstas tareas normalmente desaparecen, ya que la red es capaz de aprender patrones complejos directamente sobre los datos de entrada ( que pueden ser imágenes). Un ejemplo de funcionalidad de la AI en la estimación de los mapas es Scale-invariant feature transform (SIFT) [47]. Este algoritmo consiste en la extracción de caracterı́sticas relevantes de las imágenes que posteriormente pueden usarse en reconocimiento de objetos, detección de movimiento, estereopsis, registro de la imagen y otras tareas. Estas caracterı́sticas se toman como entrada para un algoritmo de ML que intenta predecir la profundidad de ciertos puntos caracterı́sticos. Debido a las limitaciones de los algoritmos de ML para generar mapas de profundidad completos, los actuales métodos de AI suelen involucrar una red neuronal entrenada a partir de pares de imágenes RGB con sus respectivos mapas de profundidad. A continuación, se presentan algunos ejemplos de los algoritmos basados en el aprendizaje automático mediante DL. Los datasets se componen normalmente de un conjunto de imágenes donde se proveen el par con la imagen RGB y la de profundidad correspondiente. Existen otros tipos de datasets formados por otras etiquetas distintas al mapa de profundidad, como variaciones de imágenes; por ejemplo una imagen borrosa, movida o tomada desde otro ángulo, entre otros. Luego, se puede entrenar el modelo utilizando imágenes borrosas e imágenes en buen estado y mediante una función relacionar dicha imagen borrosa con valores de profundidad [48]. En este proyecto se centra el estudio en aquellos modelos que utilizan los mapas de profundidad asociados a las imágenes RGB como etiquetas.. Figura 9: Estructura de un Autoencoder.[13].
(28) 10. El primer tipo de redes encuadradas en este campo son los Autoencoders, las cuales buscan generar nuevos datos comprimiendo la información de entrada mediante una primera parte de la red (Encoder) y luego tratan de reconstruir la salida a través de esta información comprimida para realizar un cambio de modalidad en este caso de RGB a Depth (Decoder). La Figura 9 representa un ejemplo de arquitectura de este tipo de red donde se presentan las dos partes mencionadas, el Encoder (comprime información) y el Decoder (genera-recupera información). Los autoencoders se encuentran entre las redes más utilizadas para la estimación de profundidad. Las variantes más populares implican el uso de las redes en U, que son autocodificadores convolucionales con conexiones de salto residual que comparten información entre capas. Algunos ejemplos de estas redes se recogen a continuación: • La publicación realizada en la universidad de KAUST en 2019 denominada “High Quality Monocular Depth Estimation via Transfer Learning” [49]. Los autores indican que logran conseguir unas estimaciones de profundidad de calidad mediante una arquitectura basada en el aprendizaje por transferencia. • La publicación hecha en la Universidad de Freiburg, Alemania en 2015.“U-Net: Convolutional Networks for Biomedical Image Segmentation” [50]. Red utilizada para la segmentación de imágenes. A partir de estas redes, se han realizado una gran cantidad de mejoras y modificaciones que permiten que el resultado sea cada vez más acertado. Se presentan ahora tres casos principales que usando como base estas arquitecturas, lograron mejorar el rendimiento al realizar cambios sobre la estructura básica de la misma: • La publicación “Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Architecture”[51]. La utilización de múltiples redes neuronales, donde cada una trabaja en diferentes escalas de entrada y los parámetros de cada red son distintos, facilitan el aprendizaje de patrones. Los autores aseguran que el extraer información de diferentes escalas como lo hace esta red, permite aumentar la calidad de la imagen de profundidad respecto a una red que genere el mapa de profundidad a partir de una sola escala. • “Structured Attention Guided Convolutional Neural Fields for Monocular Depth Estimation” [52] (Figura 10). Consiste en la utilización de un solo modelo que fusiona las caracterı́sticas de distintas escalas utilizando campos aleatorios condicionales, que son modelos estocásticos utilizados habitualmente para etiquetar y segmentar secuencias de datos o extraer información de documentos, guiados por la atención estructurada (CRF) [53] antes de alimentarlo como entrada de la última operación de convolución..
(29) 11. Figura 10: Ilustración de la red propuesta para la estimación de la profundidad monocular. [14] Los bloques azules de la Figura 10 indican la CNN frontal, que representan el codificador (Encoder) y el decodificador (Decoder) asociado. El cuadro gris contiene una representación esquemática del modelo de CRF propuesto guiado por la atención estructurada. En el interior, los recuadros verdes indican los mapas de atención estimados, mientras que los de color azul claro representan los rasgos inferidos conjuntamente por el módulo CRF. Las flechas indican las dependencias entre las variables estimadas y las flechas punteadas indican las actualizaciones del modelo de atención. • Por último, existen métodos que tratan la estimación de profundidad como un problema de traducción de imagen a imagen. Normalmente, estos métodos están basados en la publicación de la red Pix2Pix [54], en la cual se describen redes que no solo aprenden el mapeo de la imagen de entrada a la de salida, sino que también aprenden una función de pérdida para entrenar este mapeo. Esto hace posible aplicar el mismo enfoque genérico a problemas que tradicionalmente requerirı́an formulaciones de pérdida muy diferentes. En la figura 11 se observan varios ejemplos de aplicación de la misma arquitectura red pero entrenada con datos diferentes.. Figura 11: Ejemplo de funcionalidades del pixtopix [15].
(30) 12. Es difı́cil obtener conjuntos de datos de profundidad de alta calidad que tengan en cuenta todas las condiciones posibles. Por lo que mejorar el rendimiento de los métodos supervisados más allá de algún punto puede ser una tarea complicada, debido a la falta de datos precisos y que contemplen todas las variaciones posibles. Como solución a esta restricción sobresalen los métodos semi-supervisados y no supervisados, que eliminan el requisito de una imagen de profundidad objetivo. Un ejemplo de aprendizaje no supervisado es “Unsupervised Learning of Depth and EgoMotion from Video“ [16], donde los autores toman una desviación de lo que se venı́a presentando ya que proponen entrenar conjuntamente una red que estime la profundidad y una que estudie los posibles movimientos de la cámara a partir de secuencias de video no estructuradas. El método utiliza tanto redes de profundidad como de movimiento (Figura 12) , con una función de pérdida basada en la deformación cercana al objetivo utilizando la profundidad y posturas calculadas. Las redes están ası́ acopladas por la pérdida durante el entrenamiento, pero puede aplicarse de forma independiente en el momento de la prueba.. Figura 12: Arquitecture de “Unsupervised Learning of Depth and Ego-Motion from Video“. [16]. Otro ejemplo se puede encontrar en el artı́culo “Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue” [55], el cual es un método de aprendizaje no supervisado con el que se genera una de las imágenes del par de imágenes estéreo a partir de la otra. Utilizando el modelo entrenado es posible calcular las diferencias pı́xel a pı́xel entre ambas imágenes. Mediante esta diferencia se logra calcular la profundidad, dada la distancia focal de la cámara y la distancia entre las imágenes. Este método es considerado realmente no supervisado cuando el algoritmo es capaz de adaptarse a pares de imágenes que no sean estéreo. Esto se logra mediante un control de la distancia entre las imágenes. Se han realizado otras mejoras centradas en el cálculo de la diferencia entre las imágenes, como en el caso de “Unsupervised Monocular Depth Estimation with Left-Right Consistency “ [56], donde se toman en cuenta tanto los resultados respecto a la imagen dere-.
(31) 13. cha como a la de izquierda y a partir de ahı́ se calcula la diferencia. La Figura 13 presenta el módulo de pérdidas que genera a la salida mapas de disparidad para las imágenes derecha e izquierda. El módulo de pérdidas combina la suavidad, la reconstrucción y los resultados de disparidad para generar una imagen de salida.. Figura 13: Red utilizada en “Unsupervised Monocular Depth Estimation with Left-Right Consistency“. [17]. Actualizado en 2019, bajo el tı́tulo de “Semi-Supervised Monocular Depth Estimation with Left-Right Consistency Using Deep Neural Network “ [57], destaca la utilización de un entrenamiento Semi-supervisado ya que no sufre las debilidades del entrenamiento supervisado (resultantes de los distintos puntos de vista de las cámaras y los LiDARs), ni del entrenamiento no supervisado (debidas a la poca precisión de la estimación a partir de imágenes estéreo.) Otras redes que han ganado mucho espacio dentro del mundo de la estimación de la profundidad son las GAN [58]. Una GAN está formada por dos módulos, un generador y un discriminador, que suelen ser implementados en forma de redes neuronales. Como se observa en la Figura 14, El módulo generador captura la distribución de los datos y genera nueva información mientras que el discriminador estima la probabilidad de que una muestra provenga de los datos de captación o haya sido generada.. Figura 14: Arquitectura GAN. [18].
(32) 14 “Se puede entender una GAN como: un modelo discriminatorio que aprende a determinar si una muestra es de la distribución del modelo o de la distribución de datos. El modelo generativo puede considerarse análogo a un equipo de falsificadores, tratando de producir moneda falsa y usarla sin ser detectada, mientras que el modelo discriminatorio es análoga a la policı́a, tratando de detectar la moneda falsa. La competencia en este juego impulsa ambos equipos para mejorar sus métodos hasta que las falsificaciones sean indistinguibles de las genuinas.” Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley,Sherjil Ozair, Aaron Courville, Yoshua Bengio, 2014. Un ejemplo de una red GAN utilizada para la estimación de profundidad es “Generative adversarial networks for depth map estimation from RGB video” [59]. El autor propone introducir a la red tres tipos distintos de datos (pares de imágenes, secuencias de imágenes y la utilización de RGB-D con flujo óptico) para lograr obtener, mediante la prueba de la red, cual es el formato de datos de entrada que genera el mejor mapa de profundidad a la salida. Para finalizar con el estado del arte, el trabajo “Monocular Depth Prediction using Generative Adversarial Network” [60] propone un generador que consiste en dos subredes. La subred de profundidad que predice el mapa de profundidad de la imagen del objetivo (centro) y la subred de posicionamiento, que aprende a predecir los parámetros de posicionamiento de los tripletes imágenes. El triplete es alimentado a la subred de posicionamiento, que transforma las imágenes de origen (izquierda y derecha) en la imagen de destino (centro), mientras que la imagen central es alimentada a la subred de profundidad que produce un mapa de profundidad. Usando los parámetros estimados de profundidad y posicionamiento, el generador transforma las imágenes de la fuente, que luego se interpolan usando Redes de Transformadores Espaciales [61], para producir un par de imágenes. La subred discriminadora aprende entonces a diferenciar las imágenes reales de las generadas. Como conclusión de esta publicación se resalta que el uso de las pérdidas por confrontación para el aprendizaje ha sido demostrado con éxito, tanto cualitativa como cuantitativamente, para mejorar la profundidad y la exactitud de la predicción, que son dos de los puntos de referencia importantes para definir, a partir del mismo, un nuevo estado del arte..
(33) 15. 3.. DESARROLLO. El objetivo de esta sección será orientar al lector sobre los pasos seguidos en este trabajo y proporcionarle la información necesaria para la fácil comprensión del mismo. Para ello, se describirán brevemente los pasos a seguir en el desarrollo de un proyecto de DL, luego se profundizará en el proceso de creación del dataset utilizado, los elementos necesarios en la creación de un modelo, los algoritmos empleados y sus arquitecturas detalladas y los conceptos utilizados para la comparación de los resultados obtenidos.. 3.1. Fases en la creación de un proyecto de DL. Figura 15: Pasos para la creación de un proyecto de DL.. Para comenzar el desarrollo del proyecto, se realizará una breve descripción de los pasos a seguir en la creación de un proyecto de DL. La Figura 15 recoge los pasos generales en los que se divide un proyecto de este tipo. Fundamentalmente son 5 pasos una vez se ha definido el objetivo [62]: Creación del dataset, preparación del dataset, creación-entrenamiento-validación del modelo, test del modelo y despliegue del modelo.. 3.1.1. Recolección de los datos (Dataset). En esta primera fase del proyecto, se procederá a recolectar los datos que se utilizarán en el entrenamiento de la red. Lo que se busca es tener un conjunto final lo más completo posible para lograr un entrenamiento óptimo de la red. En caso de que los datos que se poseen no.
(34) 16. seas suficientes, se procede a buscar en fuentes externas que puede ser cero coste (Datasets abiertos) y en el caso de no ser ası́, comprar la información a entidades especializadas en recolección de datos. La organización del dataset da paso a lo que se conoce como aprendizaje supervisado, cuando la información está clasificada por etiquetas (labels) o aprendizaje no supervisado, cuando la información no se encuentra organizada en categorı́as o clases teniendo que plantear otro tipo de soluciones.. 3.1.2. Preparación de los datos (Pre-procesado). En segundo lugar, se procede a la limpieza de los datos recolectados para eliminar aquellos que puedan deteriorar el entrenamiento de la red (outliers, datos mal recolectados, etc.). Una vez terminada la limpieza, se procede a dividir el dataset en 3 partes: una parte para el entrenamiento, otra para la validación del modelo y por último, una parte para probar el funcionamiento del modelo. Una ventaja del DL, es que permite que la extracción de caracterı́sticas de los datos (antes realizada en la etapa de pre-procesado) se realice de manera automática en la red, sin intervención humana. El pre-procesado que se se realiza en estas fases suele incluir una normalización o la inclusión del concepto de ’Data Augmentation’.. 3.1.3. Creación del modelo. En tercer lugar, se procede a la creación del modelo (arquitectura de red) que será la encargada de aprender sobre los datos recolectados y pre-procesados en las fases previas. Para el caso de imágenes como es el de este proyecto las redes más usadas son las arquitecturas de redes convolucionales (CNN) [63]. Dependiendo del problema bajo estudio las arquitecturas varı́an en gran medida. Como base de ejemplo una CNN simple para clasificación podrı́a conformarse como se presenta en la Figura 16. La capa de entrada (input) toma las imágenes. Estos datos se transmiten a las capas de extracción de caracterı́sticas (Feature-extraction), que suelen ser una combinación de las conocidas capas convolucionales junto con las funciones de activación (por ejemplo ’ReLu’) ası́ como otro tipo de capas como Batch Normalization y Max Pooling, Esta última para reducción de la dimensionalidad. Estas capas suelen seguir un patrón de secuencia que consiste en: • Capa de Convolución [64] : es la aplicación de una serie de filtros a los datos de entrada que resulta en una activación. La aplicación repetida del mismo filtro a una entrada da como resultado un mapa de activaciones llamado mapa de caracterı́sticas, que indica.
(35) 17. las ubicaciones y la fuerza de una caracterı́stica detectada en una entrada, como una imagen. • Capa de agrupación (Pooling) [65] : Un problema con los mapas de caracterı́sticas de salida es que son sensibles a la ubicación de las caracterı́sticas en la entrada. Estas capas proporcionan un enfoque de los mapas de las caracterı́sticas de muestreo hacia abajo, resumiendo la presencia de las caracterı́sticas en parches del mapa de las caracterı́sticas. • Capas de normalización (Batch Normalization): Permiten normalizar los datos a lo largo de la red lo que facilita en gran medida y en la mayorı́a de las ocasiones el aprendizaje. • Capas de clasificación [63] : toman los rasgos de orden superior de las capas anteriores (mapas de caracterı́sticas finales) y producen probabilidades o puntuaciones de clase para realizar diferentes tareas dependiendo del objetivo final.. Figura 16: High-level general CNN architecture. [19]. Finalmente, tras crear el modelo se deben seleccionar una serie de hiperparámetros para el entrenamiento como son el número de épocas, tamaño del batch, ratio de aprendizaje, ası́ como el optimizador y sus parámetros.. 3.1.4. Entrenamiento del modelo. El cuarto paso consiste en entrenar el modelo que ha sido creado para comprobar su funcionamiento. Primero, se ajustan los parámetros de entrenamiento del modelo introduciendo muestras de nuestro dataset en lotes (batches), ajustando el ratio de aprendizaje (learning rate), número de vueltas de la red (Epochs), y el método de optimización utilizado entre otros. Luego, el modelo intenta categorizar los datos de entrada y se compara el resultado con su verdadera etiqueta, esta comparación es representada por la función de coste. Se ajustarán los parámetros de entrenamiento con el objetivo de minimizar dicha función. El ajuste de los parámetros se realiza de la siguiente forma [66]:.
(36) 18. • Forward propagation: se compara el error que existe entre la etiqueta real y la salida generada por la predicción de nuestra red sobre los datos de entrada. • Backward propagation: al contrario que el paso anterior, consiste en propagar en el otro sentido utilizando el algoritmo gradiente descenso mediante cualquier método de optimización de redes neuronales [67]. Mediante este proceso, de manera iterativa los datos pasan por la red y se va convergiendo, buscando poder minimizar la función de coste. Además. los datos de validación se utilizarán durante el entrenamiento para obtener algunas métricas que nos indican el comportamiento del modelo [68]: precisión (’accuracy’), sensibilidad (’sensitivity’) , F-measure, pérdidas (’loss’), entre otras. Estas métricas nos ayudan a evitar el ’Overfitting’, que es un problema muy común entre otros. Tras la finalización del entrenamiento el modelo final es obtenido y puede ser utilizado para testear nuestra aplicación real sobre datos de entrada totalmente nuevos.. 3.1.5. Testeo del modelo entrenado. El quinto y último paso se basa es utilizar información que el modelo no ha visto aún y que suele encuadrarse en el campo real de aplicación. Mediante diferentes métricas se evalúa el funcionamiento de la red y sus resultados frente a nuevos datos (dataset de test) y si estos no son adecuados, se procede de nuevo al análisis del modelo, creación de uno nuevo o cambios sobre el mismo y reentrenamiento. En casos extremos, el problema puede provenir directamente del dataset y no del modelo, debido a que los datos recolectados no son lo suficientemente representativos, no son suficientes o no son adecuados para el aprendizaje.. 3.2. Creación del dataset. Como se explicó en apartados anteriores del proyecto, para el entrenamiento y prueba de las redes será utilizado un dataset de creación propia combinado con un dataset especializado, que ha sido utilizado para entrenar distintas redes de estimación de profundidad conocido como NYU. El dataset creado se divide en dos partes, las imágenes RGB (las cuales serán la entrada a las redes) y sus correspondientes mapas de profundidad (que se tratarán como las etiquetas). Para la obtención de estos, se ha utilizado una cámara RGB-D como las descritas en la introducción. Especı́ficamente se ha utilizado la Intel Realsense D435 [69], introducida al mercado a principios de 2018. La cámara RGB tiene un máximo de resolución de 1920x1080 y puede captar hasta 30 fps. Por otro lado, la cámara de profundidad tiene una resolución máxima de 1280x720 y es capaz de capturar 90 fps. Para el dataset se han capturado ambas imágenes a una resolución de.
(37) 19. 640*480 y 30 fps. Se utiliza esta resolución con el fin de reducir espacio de almacenamiento y ya que las redes utilizadas no trabajan con imágenes con tan alta resolución. Las imágenes de profundidad son almacenadas tras ser convertidas a un mapa de colores para facilitar su utilización. Ha sido necesaria la implementación de una alineación de las imágenes de profundidad respecto a las RGB ya que tienen el mismo punto de vista pero se encuentran desplazadas por su ubicación en el dispositivo. Además, se ha realizado un ajuste en la captura de imágenes para guardar solo 1 de cada 10 frames capturados, de esta forma se evita la redundancia de imágenes y se reduce el problema de imágenes borrosas capturadas en movimiento. Para realizar la recolección se conecta la cámara a un ordenador portátil y desplazándose a lo largo de diferentes salas se van recogiendo imágenes a diferentes distancias y vistas.. Figura 17: Par de imágenes recogido por la cámara Intel Depth D435.. En total se han recogido con la cámara 3132 pares de imágenes y el dataset de NYU consta de 1446 pares de imágenes. Por lo que el dataset final consta de 4578 pares de imágenes RGB y profundidad. Estas imágenes han sido capturadas en distintos entornos cerrados tales como oficinas, escaleras, salones de clase, salas de estar, cocinas, baños, entre otros. En cuanto a la parte del dataset obtenido a través de internet [23], ”NYU Depth Dataset V2”, la Figura 18 presenta un ejemplo de las imágenes que lo describen. Este consiste en un conjunto de pares de imágenes RGB y profundidad capturadas con la cámara Microsoft Kinect.. Figura 18: Par de imágenes del dataset NYU..
(38) 20. En la captura de las imágenes con la cámara no todas son óptimas para el entrenamiento de los modelos, por lo que se realiza una limpieza de aquellas con grandes distorsiones, rasgos borrosos o que hayan sido capturadas con un movimiento que no permita que el mapa de profundidad se aprecie de manera correcta. Un ejemplo de esas imágenes se observa en la Figura 19. Figura 19: Imagen eliminada del dataset en la limpieza... Con la limpieza se asegura que la red no aprenda de forma incorrecta con datos que no están bien conformados. Para todas las redes utilizadas se usará este dataset con algunos ajustes para su fácil gestión. Se separó el dataset entre imágenes destinadas para el entrenamiento e imágenes para realizar las pruebas del funcionamiento. Se ha utilizado el 75 % para entrenamiento y 25 % para validación. Se buscará que las imágenes de prueba sean situaciones muy diferentes entre sı́ para poder probar el funcionamiento de los algoritmos en distintas condiciones de luz, presencia de personas y objetos, distancias, entre otras.. 3.3. Deep Neural Networks for depth estimation. En esta parte del trabajo se van a detallar las arquitecturas de red empleadas durante el desarrollo del trabajo. Como se mencionó anteriormente, el Deep Learning es una rama de la AI. El enfoque del Deep Learning [70] se basa en imitar el funcionamiento de las neuronas del sistema nervioso humano mediante redes profundas. Las redes profundas consisten en la introducción de varias capas intermedias que permitan el aprendizaje de cada vez conceptos más complejos en el interior de la red. En esta sección se pretende realizar una descripción completa de las arquitecturas de las redes empleadas en el trabajo. Para las redes “Resnet-Unet”,“Deep Autoencoder”,“Pix2Pix”serán explicadas las funciones de pérdidas utilizadas en cada caso al igual que las componentes importantes de su arquitectura..
(39) 21. 3.3.1. Resnet-Unet. En casos de regresión, donde el objetivo es obtener imágenes de buena resolución, existe un problema. Las arquitecturas CNN suelen contener una parte que deteriora progresivamente la resolución de las imágenes que se le introducen a través de una serie de operaciones realizadas en sus capas de convolución y pooling, dándole a las neuronas de mayor nivel un gran campo receptivo [71], a cambio de capturar información más global. Se propone una arquitectura completamente convolucional, donde el campo receptivo es uno de los aspectos claves ya que no trabajaremos con una red completamente conectada.. Figura 20: Ejemplo Arquitectura U-net.[20]. Se comenzará introduciendo las redes “U-Net”. Tal como se observa en la Figura 20, consiste en una parte de contracción o encoder (parte izquierda de la imagen) y una de expansión o decoder(parte derecha de la imagen). El camino de contracción tiene una arquitectura tı́pica de red convolucional constituida por la constante aplicación de 2 convoluciones 3x3, cada una de ellas seguida por una función de activación ReLU y un “Max pooling”de 2x2 para la disminución de la resolución. En el camino de la expansión, en cada paso se realiza un “Upsampling” del mapa de caracterı́sticas, seguido de una convolución 2x2 que reduce a la mitad el número de canales de caracterı́sticas. El resultado se concatena con la parte equivalente de la parte de contracción de la red y se pasan por dos convoluciones 3x3 y una ReLU. En la capa final se utiliza una convolución 1x1 para convertir cada vector de caracterı́sticas de 64 componentes en el número deseado de canales de salida. En la parte de contracción, la información espacial es reducida mientras que la información de.
(40) 22. caracterı́sticas es incrementada y en la parte de expansión se combinan estas caracterı́sticas con la información espacial para generar caracterı́sticas de alta resolución. Debido a que el problema bajo estudio requiere una tarea más compleja se hace necesario el uso de una arquitectura más profunda para obtener mejores resultados y para ello se utiliza la primera parte de la red (encoder) como una ResNet. Las arquitecturas ResNet introducen las capas de salto. Estas capas pasan 2 o más convoluciones y son sumadas a su salida con el mapa de caracterı́sticas de entrada de cada bloque, incluyendo la normalización tras cada convolución. Mediante estas redes se pueden crear arquitecturas de mayor profundidad sin los problemas de degradación comentados anteriormente y, además, obtener largos campos receptivos. Una vez introducida una imagen a la red, el resultado de la última capa convolucional son 2048 mapas de caracterı́sticas de resolución espacial 10x8 pı́xeles (tras remover la última capa de pooling).. Figura 21: (a)Arquitectura de la red. (b) Bloques ”bottleneck”. (c) Significado de los bloques empleados en la red..
(41) 23. El modelo propuesto para esta red en la parte Decoder utiliza “Residual Up-convolutions” y genera una imagen de salida final de 160x128 pı́xeles. Estas convoluciones surgen como soluciones a la gran cantidad de memoria que serı́a necesaria en esta red si se utilizara una red completamente conectada, que necesita más pesos y obtiene peores resultados en la precisión de las imágenes generadas. Por último, la arquitectura Resnet es combinada con la parte decoder para lograr que mediante sus conexiones laterales se pueda incrementar la precisión manteniendo la arquitectura inicial propuesta para una red UNet. En la Figura 21 se observa la arquitectura de la red propuesta (a). La primera parte (la que va hacia abajo) de la arquitectura se basa en la ResNet-50, los números que se encuentran a la izquierda de las capas representados mediante xN hacen referencia al número N de veces que dicho bloque ResNet (bottleneck) se repite, por lo que se observa que queda una red bastante profunda con el fin de aprender unos mapas de caracterı́sticas muy complejos. La segunda parte guı́a a la red a aprender el “Upscaling” a través de una secuencia de capas de convoluciones y “Unpooling”. Finalmente se generaparte la pre la figuradicción tras pasar por una capa convolucional. La parte (b) de la figura 21 hace referencia a los bloques ”bottleneck”que ayudan a ahorrar espacio de memoria al realizar una convolución 1x1, que reduzcan el número de canales de la entrada antes de realizar las convoluciones 3x3, y luego utilizan otra convolución 1x1 para recuperar el tamaño original. Adicionalmente en esta red se introduce un nuevo concepto referente a los bloques UpProjection. Estos son aquellas capas que realizan la operación inversa al “Pooling” aumentando la resolución espacial de los mapas de caracterı́sticas. Se basa en implementar un núcleo 2x2 para mapear las entradas. Estas capas son seguidas de una convolución 5x5 de forma que sea aplicada a más una un elemento distinto de cero en cada ubicación y luego se le aplica una función ReLU de activación. Este bloque se observa en la figura previa como “Up-convolutional blocks”. Las operaciones Up-Convolution originales presentan una serie de problemas dependiendo del campo de aplicación. En este trabajo y para esta red se propone el uso de las Fast UpConvolutions. Estas surgen como una alternativa para hacer más eficientes las operaciones de los bloques “Up-convolution” y ası́, reducir el tiempo de entrenamiento de toda la red. Con esta mejora, se logra reducir el tiempo alrededor de un 15 %. Tras la operación de “Unpooling” se obtiene un mapa que en su mayorı́a está formado por ceros, por lo que la capa 5x5 de convolución que le sigue trabaja con casi en su totalidad con ceros, lo que se evita con esta modificación. Los detalles de esta operación se pueden consultar en [72]. La función de pérdidas utilizada es Mean square error (MSE) [73], que simboliza la media de la diferencia entre los pı́xeles de las imágenes. Un MSE alto simboliza una mayor diferencia entre la imagen original y la imagen estimada. Sin embargo, es muy importante prestar atención a.
(42) 24. los bordes. La fórmula para el cálculo del MSE es:. M SE =. 1 X X i j(Eij − Oij )2 N. (1). Donde N significa el tamaño de la imagen, E es la imagen predicha y O la imagen original. Es útil utilizar esta función ya que realiza una comparación pı́xel a pı́xel de la imagen predicha con la imagen original, por lo que permite examinar detalladamente diferencias de valores de pı́xel entre ambas.. 3.3.2. Deep Autoencoder. Esta arquitectura surge con el objetivo de solucionar el problema que tiene la estimación de profundidad ya que usualmente se producen imágenes borrosas o de baja calidad. En esta arquitectura de red se utiliza una estructura de autoenconder compuesta por dos ramas principales un encoder y un decoder. El encoder es una primera rama que se encarga de realizar una compresión de la información mientras que el decoder, basándose en la información comprimida intenta recuperar una información general para reconstruir una nueva imagen. Este autoencoder se puede encuadrar en el tipo de autoencoders de cambio de modalidad donde la entrada es un tipo de imagen (en este caso una imagen RGB real) y la salida es una modalidad diferente como es en este caso una imagen de profundidad de un solo canal de color. Estos métodos no realizan un submuestreo tan agresivo en cuanto a la resolución espacial de la imagen de entrada, lo que ayuda a producir estimaciones de profundidad mucho más acertadas. La idea de esta arquitectura es utilizar un autoencoder con “skip connections” para cumplir los objetivos de precisión compartiendo información de las capas iniciales con las capas más profundas de la red. Esto hace a la arquitectura muy similar a la presentada anteriormente (UNet). La diferencia principal en esta implementación radica en la red de base utilizada como “Encoder” y el tipo de funciones de “ Up-sampling ” empleadas, ası́ como en que la arquitectura previa utiliza el mismo número de bloques de “ Upsampling” que la arquitectura original respetando su diseño. El “Decoder ” de la nueva arquitectura cumple la función de ser profundo (”Deep”) presentando varias capas intermedias entre cada bloque Up-Sampling y proporcionando mediante la nueva arquitectura imágenes de resolución mayor a la salida que con la arquitectura UNet..
(43) 25. Figura 22: Arquitectura de la red Deep Autoencoder.[21]. Se comenzará describiendo la arquitectura utilizada para el “ Encoder ”. La imagen de entrada es convertida a un vector de caracterı́sticas mediante la utilización de la red “ DenseNet-169 ” [74]. Las redes DenseNet toman los conceptos de las redes Resnet, que tal como se explicó en la arquitectura “ ResNet-Unet ”, se diferencia de las redes tradicionales que conectaban cada capa de neuronas con la siguiente, pudiendo ahora conectar una capa con cualquiera que venga después de ella sin necesidad de que sea la inmediata. La ventaja de la utilización de las ResNets es que el gradiente puede fluir directamente por la función identidad desde las capas del final hasta las del comienzo. Un inconveniente es que, aunque al final de cada bloque de la red es necesario sumar la función identidad con la salida de las capas, esto puede impedir el flujo de la información en la red de manera adecuada.. Figura 23: DenseNet de 5 capas.[22]. Para mejorar este flujo de información, en las redes DenseNet se agrega una caracterı́stica denominada “Dense connectivity” donde se diferencian del concepto de conexión entre capas que se utilizaba en las ResNets. Como se observa en la Figura 23, se propone la conectividad de cualquier capa de neuronas con todas las capas subsecuentes. Por lo tanto, la capa N.
(44) 26. recibirá los mapas de caracterı́sticas de todas las capas anteriores como entrada:. xl = Hl ([x0 , x1 , ..., xl−1 ]). (2). Figura 24: Deep DenseNet con 3 DenseBlocks.. La diferencia entre las distintas redes DenseNet se basa en el número de funciones compuestas que utilizan en cada capa del proceso. La Figura 24 muestra que existen unos DenseBlocks que están formados por las funciones compuestas y que están descritos en la Ecuación 2 como H. Estas funciones están compuestas de una normalización (“Batch Normalization”) seguidas de una activación (“ReLU”) y de una Convolución con Kernel 3x3. Entre estos bloques mencionados, se encuentran unas de las partes más esenciales de toda CNN, como lo son las “Pooling Layers”, que se utilizan para disminuir el tamaño del mapa de caracterı́sticas a uno más pequeño. Las capas de transición entre los DenseBlocks están compuestas por una capa Pooling 2x2 y una capa convolucional 1x1.Estas capas convolucionales son utilizadas como cuellos de botella para reducir el número de parámetros de entrada y ası́ aumentar la eficiencia de la red. El vector resultante de pasar la imagen de entrada a través del encoder es alimentado luego a una serie de capas de “Up-sampling” sucesivas para lograr construir un mapa de profundidad final con la mitad de la resolución que la imagen de entrada. Estas capas “Up-sampling” y sus asociadas conexiones (“Skip-Connections”), forman el decoder de esta arquitectura. El decoder comienza con una capa convolucional 1x1 con el mismo número de canales de salida que los del encoder. Luego de esto, se añaden bloques de “Up-sampling” seguidos de capas convolucionales con kernels 3x3 con la mitad de filtros a la salida de los que hay a la entrada. La primera de las capas de convolución es aplicada a la salida de la capa anterior y a la capa de Pooling del encoder, logrando obtener las mismas dimensiones espaciales. Cada bloque de “upsampling” viene seguido por una función de activación Leaky ReLU. Las capas que se observan en la Figura 25 hasta CON V 2 son las correspondientes a la red DenseNet-169. Luego se describen todas las capas del decoder (dónde cada convolución es seguida de normalización y activación) teniendo finalmente a la salida una dimensión de 240x320x1 para imágenes de entrada de tamaño 480x640x3. La dimensión final de la salida consigue una resolución mayor que con la red anterior (diseño original de la UNet) ası́ como de nuevo proporcional un único canal de color de salida que representará la profundidad de cada pı́xel..
(45) 27. Figura 25: Arquitecturas Deep Autoencoder.. La función de pérdidas utilizada en esta arquitectura busca un balance entre la reconstrucción de los mapas de profundidad a través de la mı́nima diferencia de los valores de profundidad, pero también penalizando las distorsiones que ocurren en la estimación de la imagen de profundidad. Básicamente estos detalles se encuentran en los bordes de los objetos de la imagen. Por lo tanto, para el entrenamiento de esta red se define una función de pérdidas L como la suma de tres funciones de pérdidas:. L(y, ŷ) = αLdepth (y, ŷ) + Lgrad (y, ŷ) + LSSIM (y, ŷ).. (3). Los valores y y ŷ representan la imagen original de profundidad y la predicha por la red respectivamente. El primer valor con subı́ndice “depth” corresponde a la comparación respecto a cada punto definido en los valores de profundidad como representa la Ecuación 4, definiendo ası́ la norma L1: n. 1X Ldepth (y, ŷ) = |y − ŷ|. n p. (4). El segundo término es la función/norma L1 definida sobre el gradiente g de la imagen estimada que se puede representar mediante la Ecuación 5: n. Lgrad (y, ŷ) =. 1X |gx (y, ŷ)| + |gy (y, ŷ)|. n p. (5).
(46) 28. Donde los valores de g corresponden a las diferencias entre las componentes x e y de los gradientes de las imágenes real y estimada. Esto permite tener en cuenta los problemas de border tratando con esta función de aprenderlos de una manera más precisa. Por último, el término correspondiente a ”Structural Similarity (SSIM)”se presenta en la Ecuación 6:. LSSIM (y, ŷ) =. 1 − SSIM (y, ŷ) 2. (6). La función SSIM es una métrica muy utilizada en el campo del “Computer Vision”para la comparación de imágenes y esta será detallada posteriormente en apartados siguientes. El parámetro α que se define en la ecuación 3 se fija a un valor de 0,1 tras pruebas empı́ricas buscando el equilibrio entre los tres términos de la función.. 3.3.3. Pix2Pix. Las estructuras GAN, consisten en un generador que es entrenado para producir una salida que no pueda ser distinguida de una imagen real por la red entrenada del discriminador, cuya función es detectar lo mejor posible cuales son imágenes generadas y cuáles son imágenes reales. La Figura 26 muestra un ejemplo de una GAN siendo entrenada para generar texturas de zapatos en base a una imagen de bordes en blanco y negro:. Figura 26: Entrenamiento de una GAN condicional. El objetivo del discriminador es diferenciar imágenes generadas de imágenes verdaderas mientras que el objetivo del generador es engañar al discriminador.. Por una parte, el Generador de la red producirá una imagen de salida y esta junto a su entrada original pasarán por el discriminador que decidirá si esta es F ake (generada) o Real. Seguidamente el discriminador toma como entrada la imagen original del zapato y la de bordes para predecir de nuevo si es F ake o Real. En este juego de engaño continuo se intenta hacer a la red más robusta para generar cada vez imágenes con mayor calidad que no puedan ser distinguidas de una Real. Este concepto puede ser utilizado de la misma manera para generar otro tipo de datos y es por eso que es aplicable al campo bajo estudio de este proyecto. Por estos.
(47) 29. motivos se ha decidido utilizar una arquitectura tipo GAN para de nuevo intentar generar una imagen de profundidad de gran calidad basándose en la muy conocida arquitectura Pix2Pix. Esta red ha sido aplicada con éxito en gran cantidad de proyectos para realizar cambios de modalidad y generar imágenes de muy alta calidad. En cuanto a la arquitectura de la Pix2Pix, como se observa en la Figura 27 se destaca la utilización de una estructura basada en la arquitectura “UNet” (como la descrita en las redes anteriores) como generador y como discriminador se utiliza un clasificador convolucional ”PatchGAN”, que sólo penaliza la estructura a escala de los parches de imagen. Tanto en el generador como el discriminador utilizan módulos compuestos por convolución, normalización y función de activación ReLu. En esta red se trabajarán con imágenes de entrada 256x256 y se obtendrán salidas del mismo tamaño, en caso de ser más grandes se aplica zero-padding. El diseño del generador de esta red se realizó considerando el problema de la baja resolución en las imágenes de salida mencionado en las redes anteriores y en un nuevo problema que se basa en las diferencias entre las apariencias de superficies de las imágenes para una misma estructura. Esta diferencia ocasiona que las estructuras en las imágenes de entrada raramente se encuentren alineadas con las de las imágenes de salida. Para solucionar este problema es muy importante que la información de bajo nivel sea compartida entre la entrada y la salida, y pasar esta información a través de la red (por ejemplo, para el coloreado de imágenes la entrada y la salida comparten la ubicación de los bordes).. Figura 27: Arquitectura Pix2pix. La arquitectura UNet consiste en comprimir una imagen de entrada en un vector de caracterı́sticas de menor tamaño. Luego la red aprende como realizar el “upsampling”de este vector para conseguir la imagen de salida. Esta arquitectura permite esta conexión entre capas, y además se añaden conexiones de tipo “Skip Connections”. Como se observa en la figura 27 las.
Documento similar