Satellite view witht tiles from QGIS

Deep learning pour la prédiction de la densité


BEAT THAT A.I !

Devinez la densité de l'image suivante


1. Introduction

Le but de ce projet est de prédire la densité de population à partir des données satellites.

Le diagramme suivant résume les différentes étapes suivies ; depuis la récupération des données jusqu'à la prédiction du modèle (et la comparaison avec vos propres prédictions si vous avez joué au jeu ci-dessus).

Diagramme des étapes
Schéma des grandes étapes du projet.

On peut distinguer 3 grandes étapes, qui sont détaillées tout au long de cet article :

  1. La récupération des données satellites et des données sur la densité (sous forme de carreaux)
  2. L'extraction de l'image satellite définie par le carreau et de l'information statistique associé grâce au logiciel QGIS
  3. La définition et l'entraînement du modèle de deep learning
  4. (Si vous avez joué au jeu) la comparaison de vos prédictions avec celles du modèle

2. Les données

Provenances des données

Deux types de données sont nécessaires :

  1. Des données satellites
  2. Des données sur la densité

Les données satellites proviennent de la base BD Ortho 5m[1] mise à disposition par l'IGN. Comme ces données sont très volumineuses, j'ai opté pour une version compréssée fournie par Christian Quest sur data.gouv.fr[2].

Diagramme des étapes
Vue satellite

Les données sur la densité sont fournies par l'INSEE. Ces données, dites carroyées, fournissent des informations statistiques, comme la densité de population, pour une zone géographique donnée (voir la figure ci-dessous). Cette zone géographique correspond à un carrré d'1 km carré[3] ou de 200 m carré. Ce projet utilise les carreaux d'1 km carré mais peut être facilement étendu aux carreaux de 200 m, qui ont pour avantage d'être plus nombreux et de contenir des variables supplémentaires.

Diagramme des étapes
Vue satellite avec les carreaux superposés

Je me suis restreint dans ce projet aux carreaux des régions Île de France et Picardie (désormais comprise dans la région Hauts-de-France). Cette zone correspond à environ 15 000 carreaux. Cette échantillon à pour avantage de pas être trop grand (ce qui accélère le temps de calcul) et contient une variété de densité suffisante.

Préparation des données

L'appariemment de ces deux types de données constitue la partie la plus laborieuse du projet, notamment car je n'avais jamais travaillé avec un système d'information géographique (SIG) auparavant. Comme dans quasiment tous les projets data science, 50 à 80% du temps est dédié à la récupération et la mise en forme des données[4]. L'appariemment a été fait à l'aide du logiciel open source QGIS[5]. Je recommande chaudement ce logiciel, qui est relativement facile à prendre en main (une fois la phase initiale de confusion passée).

Concrètement, le modèle a besoin d'une image faible résolution au format jpeg (ou png), avec la densité associée dans le nom du fichier. Pour réaliser cet export, j'ai utilisé la fonctionnalité Atlas du logiciel QGIS. Cette fonctionnalité permet d'exporter, pour chaque carreau, un fichier image composé de l'image satellite et de l'information statistique associée (la densité dans notre cas).

Diagramme des étapes
Export de chaque carreau avec la fonctionnalité Atlas

3. Le modèle

Présentation du modèle

Il est aujourd'hui facile grâce à des librairies comme Keras[7] d'entraîner des modèles de deep learning. Cette librairie offre des fonctions de haut niveau permettant de définir puis d'entraîner des réseaux de neurones, sans avoir à en gérer l'implémentation. Toutefois, la phase d'entraînement nécessite bien souvent un PC équipé d'une carte graphique. Comme ce n'était pas mon cas, j'ai utilisé les services de Google Cloud (voir la section section compléments).

Le modèle choisi est un réseau neuronal convolutif (Convolutional neural networks en anglais), qui est particulièrement adapté à la reconnaissance d'images. À partir d'une image, ces modèles ont à la capacité d'extraire certains éléments, appelés représentations, qui seront ensuite utilisés pour la prédiction. Dans l'exemple classique de la classification des chiens et des chats, un exemple de représentation serait les yeux en amande, dont le modèle va se servir pour reconnaître un chat. Dans ce projet, les représentations extraites seront la présence de maisons ou appartements, la présence de champs ou de forêts.

Ces représentations serviront d'aide pour la prédiction ; si beaucoup de maisons ont été détectées la densité sera élevée. Un des avantages des modèles de deep learning est que la recherche et la conception des représentations sont réalisées directement par le modèle, sans intervention humaine.

Architecture et entraînement du modèle

Cette partie décrit les caractéristiques techniques du modèle et de son entraînement. Si vous n'êtes pas familier avec les modèles de deep learning, rendez vous directement à la section suivante !

L'architecture du modèle est la suivante :

Table détaillant l'architecture du modèle
Caractéristique Valeur
Modèle Réseau neuronal convolutif
Image en entrée (250, 250) pixels en RGB (3 champs)
La cible Densité par km carré, transformation logarithmique
Architecture du réseau 5 couches de convolution avec 1 couche complètement connectée (Fully connected layer)
En sortie des couches de convolution Fonction d'activation de type ReLU puis couche de pooling (avec fonction max)
Profondeur des couches de convolution 16, 32, 32, 64, 64. Le nombre de neurones pour la couche complètement connectée est de 512
Nombre de neurones pour la couche complètement connectée 512
Nombre de paramètres à estimer ~ 1.7 millions

En résumé, un modèle simple, avec relativement peu de paramètres (au regard des standards actuels) et peu profond.

En ce qui concerne l'entraînement :

Table détaillant les caractéristiques de l'entraînement
Caractéristique Valeur
Nombre d'images
  • 13 000 pour l'entraînement
  • 1100 pour la validation
  • 1100 pour le test
Optimizer Adam
Learning rate
  • Initialisé à 0.001
  • divisé par 2 lorsque l'entraînement atteint un plateau
  • Early stopping avec une valeur de patience de 8
Fonction de perte Erreur absolue moyenne
Epoch et batch
  • 30 epochs
  • 1500 batchs par epoch
  • Taille de batch de 52
Augmentation des données Transformations par retournement horizontal et/ou vertical. Les autres transformations ne m'ont pas paru souhaitables pour ce projet.
Durée de l'entraînement Environ 30 minutes

4. Résultats

Conversion des prédictions du modèle en catégories

Le modèle est entraîné pour prédire la densité par km carré mais il est possible de convertir cette prédiction en catégorie de densité. Je me suis inspiré de la typologie des carreaux d'Eurostat[7]. Néanmoins cette typologie est utilisé pour classifier des ensembles de carreaux contigus à partir de la densité par carreau et du nombre total d'individu dans l'ensemble des carreaux. Puisqu'il s'agit d'évaluer chaque carreau séparemment, seul la contrainte sur la densité par carreau est retenue. Il en résulte 3 catégories de carreaux (correspondant aux catégories du jeu en introduction):

Catégorie Description
Densément peuplée > 1500 habitants par km²
Densité intermédiaire Entre 300 habitants et 1500 habitants par km²
Peu dense Moins de 300 habitants par km²

En ce qui concerne la performance du modèle, sur les 1100 et quelques images de l'échantillon de test, 94% sont classifiées avec succès.

Erreurs commises par le modèle

L'étude des erreurs sur les densités effectivement prédites, et non les catégories, offre un autre constat. La figure ci-dessous compare les prévisions de densité du modèle avec les réalisations (la vraie densité de l'image). Les points au dessus de la ligne noire correspondent aux cas où le modèle surestime la vraie densité, et les points en dessous correspondent à une sous-estimation de la vraie densité.

Prédiction vs réalisation scatter plot
Prédiction vs réalisation, échelle logarithmique

Deux constats:

  • Le modèle commet peu d'erreurs pour les densités allant de 1 à 5000 habitants. L'écart moyen entre la prédiction et la vraie densité est d'environ 80 habitants.
  • Pour les densités supérieures à 5000 habitants, les erreurs sont biens plus grandes, l'écart moyen entre les prédictions du modèle et la vraie densité est de 9500 habitants.

Le fait que les erreurs soient plus grandes pour les densités élevées peut s'expliquer par un simple effet d'échelle. Toutefois, la présence de nombreux points en dessous la ligne noir pour les densités très élevées signifie que le modèle sous-estime quasi-systématiquement la vraie densité. Aussi, cette mauvaise performance est imputable au fait qu'il existe relativement peu d'images avec des densités très élevées sur lequel le modèle a pu s'entraîner : seulement 5% des images ont une densité supérieure à 5000 habitants.

Ce que le modèle a appris

Afin de mieux comprendre comment le modèle se sert de l'image pour établir sa prédiction, il est possible d'étudier comment s'activent les différentes couches du modèle. En particulier, les dernières couches contiennent les représentations complexes apprises par le modèle. Ces différentes représentations sont encodées sous forme de filtres.

Bien qu'inexacte, on pourrait comparer la manière dont les filtres extraient l'information de l'image à un spectable d'ombres chinoises. La lumière serait l'image en entrée, le filtre la forme prise par la main, et la projection sur le mur l'extraction (ou activation) réalisée par le filtre. L'observation directe de la main (ou du filtre dans le cas du modèle) ne serait pas appropriée pour comprendre ce qu'elle représente. En revanche, l'étude de la projection sur le mur (l'extraction réalisée par le filtre) nous permet de comprendre que cette forme de main représente le cerf (dans l'exemple de l'image ci-dessous).

Ombres chinoises
Ombres chinoises

La figure ci-dessous présente l'image extraite par les différents filtres de la dernière couche pour une certaine image. Deux catégories de filtres se distinguent nettement :

  • Les filtres représentant les maisons et appartements entourés en bleu
  • Les filtres représentant les forêts et les champs agricoles entourés en rouge
Diagramme des étapes Diagramme des étapes
Activation des filtres de la dernière couche du modèle

Le modèle va ensuite utiliser ces deux représentations "maisons et appartements" et "champs et/ou forêts" extraites par les filtres pour former sa prédiction. Ainsi, une activation forte des filtres pour la représentation "maisons et appartements" aura pour effet d'augmenter la valeur de la densité prédite, et inversement pour la représentation "forêts et/ou champs".

5. Compléments : Configuration requise

Il est en général nécessaire de disposer d'une carte graphique pour entraîner les modèles de deep Learning. Mon PC actuel est un Dell Inspiron 15R Core i5-3210M acheté il y a 7 ans. Autrement dit je n'ai pas de carte graphique.

La solution retenue a donc été de profiter des possibilités offertes par les services de cloud computing. Plusieurs plateformes existents : Google Cloud, Microsoft Azure, Amazon Web Services. Mon choix s'est porté sur Google Cloud, qui offre généreusement 300 $ de crédit (par carte bleu inscrite).

Un avantage de ce genre de services est qu'ils proposent bien souvent des machine virtuelles préconfigurées pour le deep learning. Il n'y a donc pas à installer les plugins pour la carte graphiques ni les frameworks deep learning. Chez Google Cloud, ces machine virtuelles s'appellent Deep learning VM[7].

Avec une configuration minimaliste comme la machine virtuelle (2vCPU, 13Go de mémoire et carte graphique Tesla K80), les 300 $ permettent de tenir 1 mois pour une utilisation à temps plein. Bien sûr, en prenant soin d'éteindre la machine virtuelle lorsqu'on a fini, il est possible de tenir beaucoup plus longtemps. Pour une utilisation quotidienne de 3h par jour, il faut environ 8 mois pour épuiser le crédit.






Réferences

1. Base BD Ortho, Institut National de l'Information Géographique et Forestière.

2. BD ortho 5m reformatée, data.gouv.fr.

3. Données carroyées à 1km, INSEE.

4. Furche, T., Gottlob, G., Libkin, L., Orsi, G., & Paton, N. W. (2016, March). Data Wrangling for Big Data: Challenges and Opportunities., EDBT (Vol. 16, pp. 473-478).

5. Page d'accueil de QGIS, www.qgis.org.

6. Territorial typologies, Eurostat.

7. Page d'accueil de la librairie Keras, keras.io.

8. Deep learning VM, Google Cloud Plateform.