Madrid Rooftops

Madrid Rooftops

4 minutos de lectura

A Mask R-CNN project for Madrid Rooftops Image Segmentation

Enlaces con información ampliada: Informe / Presentación


Este proyecto lo he realizado para el Bootcamp de Data Science en The Bridge en septiembre de 2021, como trabajo individual de Machine Learning. Mi background relacionado con la imagen y el vídeo me ha arrastrado a tareas de Computer Vision, y la idea de este proyecto me aterrizó tras escuchar un muy interesante podcast de Data Stand-Up! con el entrevistado David Rey (Chief Data Officer en Idealista). En la entrevista se menciona el proyecto de Idealista Energy que ofrece información sobre los tejados y su posible aprovechamiento para la instalación de paneles solares (área del tejado, número de paneles solares a instalar, coste aproximado de su instalación, cálculo de ahorro posterior en el consumo energético…).

El objetivo del proyecto es acercarme a este servicio de Idealista Energy y detectar tejados residenciales, piscinas y áreas deportivas, en imágenes aéreas de la Comunidad de Madrid. Para ello he utilizado el framework Mask R-CNN (Mask Region Convolutional Neural Network) para la detección, clasificación y segmentación de imágenes. El framework elegido nos permite hacer segmentación de la imagen para seleccionar el área del tejado por su forma lo que nos podría permitir calcular el área de la máscara predicha. Además, esta implementación de Mask R-CNN parte de una red ResNet101 preentrenada con el dataset de imágenes MS COCO.

Dataset

He descargado 102 imágenes de Google Maps con un zoom fijo de 19, y las he etiquetado con el software VGG Imagen Annotator (VIA) que permite seleccionar instancias con polígonos y asignarles una clase. El número final de polígonos etiquetados para las 102 imágenes fue de 2.291.

Para ver información más detallada sobre el dataset revisar el notebook: /notebooks/inspect_data.ipynb

Entrenamiento

Una vez heredadas las clases necesarias para cargar el dataset y configurar el modelo según especificaciones de Mask R-CNN, entrené las 69 imágenes con sus 1.488 máscaras durante 80 epochs. Evalué con el Mean Average Precision (mAP@IoU=50) cada epoch resultando el modelo del epoch 60 el mejor con los siguientes valores:

Evaluación modelo epoch 60:

  • Train_set mAP@50: 0.720
  • Test_set mAP@50: 0.624

Estos valores sugieren seguir entrenando el modelo, posiblemente con un dataset mayor, pero con tan solo 69 imágenes y 60 epochs se ha conseguido un mAP@IoU=50 de 0.624, así que el proyecto se presenta prometedor.

Para ver información más detallada sobre el modelo seleccionado revisar el notebook: /notebooks/inspect_model.ipynb

Para comprender mejor los resultados revisé las predicciones del modelo con el dataset de validación porque tenía la intuición de que el modelo tiene un buen desempeño para la segmentación de residencias aisladas pero no de adosados o edificios. A continuación muestro ambos casos:

Ejemplo de predicción y evaluación en imagen con edificios

(imagen: pozuelo 2021-09-13 200628.png)

Predicciones AUC-PR - AR@IoU=50

Ejemplo de predicción y evaluación en imagen con casas o chalets

(imagen: pozuelo 2021-09-13 200628.png)

Predicciones AUC-PR - AR@IoU=50

Así podemos concluir que el modelo consigue unos buenos resultados con imágenes:

  • En zonas de viviendas residenciales aisladas (casas y chalets)
  • Y un número de instancias no muy superior a 20

Fuentes y recursos

Ana
Ana

Data scientist Jr