OpenSolarMap cA?tA� data-sciences (0/3)

Aucun commentaire sur OpenSolarMap cA?tA� data-sciences (0/3)

Le projet OpenSolarMapA�dA�montre comment il est possible d’amA�liorer la connaissance du territoire franA�ais en utilisant astucieusement les ressources de la multitude et des data-sciences. Son objectif concret est de classifier les toitures en quatre catA�gories : orientation nord/sud; orientation est/ouest; toit plat; autre ou indA�terminA�. Cela permet, par exemple, d’A�valuer le potentiel d’installation de panneaux solaires ou la possibilitA� de vA�gA�taliser. Quelques milliers d’exemples ont A�tA� recueillis grA?ce A� une plateforme de crowdsourcing. Puis, des algorithmes ont A�tA� utilisA�s pour couvrir l’ensemble du territoire. UneA�prA�sentation gA�nA�rale du projetA�est accessible sur le blog d’Etalab.

Cet article est le premier d’une sA�rie qui prA�senteA�la partie data-science du projet. C’est l’occasionA�de brosser A� grands traits la dA�marche du data-scientist et de faire le tour de quelques techniques frA�quemment utilisA�es. La sA�rie vise avant tout un public technique mais non spA�cialiste. Des rA�fA�rencesA�permettent d’approfondir les notions survolA�es.A�

Le code source A�crit pour le projet OpenSolarMap est accessible sur la plateforme GitHub. La partie data-sciences est contenue dans le repository solml.

Analyse des contributions

Nous avons voulu tout d’abord procA�der A� une analyse des contributions faites sur l’interfaceA�opensolarmap.org. Au 21 dA�cembre 2014, nous disposions deA�130.374 contributions, sur 38.553 bA?timents, permettant de classifier avec confiance 10.771 bA?timents par un systA?me de vote. CesA�contributionsA�sont accessibles sur la plateforme data.gouv.fr.

L’interface de contribution ne connaA�t le contributeur que par son adresse IP. Cette adresse IP est ensuite hashA�e pourA�prA�server l’anonymat. Les contributions proviennent de 1081 utilisateurs.

Mauvaises contributions

Certaines contributions portent sur des bA?timents dont on ne connait pas encore avec certitude la vraie classe. Pour faire une analyse des erreurs, il ne faut garder que les prA�dictions qui portent sur les bA?timents dA�jA� classifiA�s. Ces contributions, dont on peut dire si elles sont justes ou fausses, sont au nombre deA�60.436.

scatterplot_users

Figure 1

Parmi ces contributions, il y aA�1.998 erreurs. Cela reprA�sente 3.3% des contributions. Il faut cependant noter que les bA?timents classifiA�s avec certitude sont en moyenne plus faciles A� classifier que les autres. Les contributions sur ces bA?timents sont donc moins susceptibles d’A?tre erronA�es. Le taux d’erreurs rA�el est donc sans doute plus A�levA� que cette valeur observA�e.

La figure 1 montre la rA�partition des utilisateurs suivant leur nombre de contributions et leur taux de contributions correctes. On ranger les contributeurs en plusieurs catA�gories :

  • des contributeurs ayant un nombre de contributions A�levA� et un un taux de contributions correctes proche de 1. Dans cette catA�gorie, on remarque un contributeur ayant environ 8.000 contributions A� lui seul : c’est Christian Quest !
  • des contributeurs ayant un nombre faible de contributions et un taux de contributions correctes faible. On peut faire l’hypothA?se que ce sont des contributeurs n’ayant pas compris comment utiliser l’interface de contribution.
  • un contributeur a quelques centaines de contributions et un taux faible, proche de 55%. L’analyse de ses contributions montrent qu’il s’agit sans doute d’un comportement malveillant. On peut A?tre A�tonnA� de rencontrer ici un comportement malveillant, mais comme on va le voir tout de suite, il est trA?s facile de s’en prA�venir.

En ignorant les contributions des utilisateurs ayant un taux observA� de contributions correctes de 70%, on peut A�liminer 191 contributeurs pour 725 erreurs, c’est A� dire plus d’un tiers des erreurs.

Influences sur le taux de contributions correctes

fatigue

Figure 2

On peut se demander s’il existe des facteurs qui influencent le taux de contributions correctes.

Existe-t-il un effet de fatigue avec un taux de contributions correctes qui baisserait d’autant que le contributeur a contribuA� au cours de 20 derniA?res minutes ? La figure 2 indiquerait plutA?t le contraire.

Quelle est l’influence du temps de rA�ponse sur le taux de contributions correctes ? La figure 3 montre que ce taux est optimal entre 1 et 3 secondes environ. En dessous d’une seconde, il chute rapidement A� 93% pour un temps d’environ 0.5 seconde. Dans ces cas, le contributeur n’a peut-A?tre pas pris assez de temps pour rA�pondre prA�cisA�ment. Au delA� de 3 secondes il chute aussi. Le contributeur a peut-A?tre hA�sitA� face A� un bA?timent plus difficile A� classifier que la moyenne.

response_time

Figure 3

EntraA�ner un classifieur automatique

L’ensemble des bA?timents dont on connaA�t l’orientation grA?ce aux contributeurs est bien plus petit que le nombre total de bA?timents construits sur le territoire franA�ais. Mais il est possible d’automatiser une tache de classification, A� la condition d’avoir un nombre suffisant d’exemples prA�alablement classifiA�s.

Pour simplifier le problA?me, on ne va s’attaquer dans un premier temps qu’aux deux premiA?res classes :

  • les toitures orientA�es au nord et au sud
  • les toitures orientA�es A� l’est et A� l’ouest

De plus, ces deux classes seront de tailles A�gales, ce qui ne correspond pas A� la rA�alitA�.

On verra dans plus tardA�comment gA�nA�raliser une solution A� deux classes pour distinguer quatre classes de tailles inA�gales.

Flux de donnA�es

Voici la description du flux des donnA�es traitA�es, depuis les informations requA?tA�es depuis l’extA�rieur vers le rA�sultat de la classification :

  • Le cadastre est consultA� via la base de donnA�e d’OpenStreetMap. Le cadastre contient le contour des murs extA�rieurs. Ce contour est simplifiA� en un rectangle. Le bA?timent n’est pas examinA� davantage si la toiture n’est pas susceptible d’A?tre orientA�e au sud, c’est-A�-dire si l’orientation du rectangle s’A�carte trop des directions cardinales.
  • L’image satellite des toits est requA?tA�e avec GDALA�sur l’API de Mapbox. GDAL est une excellente librairie de traitement d’images gA�ospaciales. Dans ce projet, toutes les conversions entre rA�fA�rentiels gA�ographiques et rA�fA�rentiels cartographiques sont gA�rA�es par GDAL. GDAL permet A�galement d’aller chercher les images satellite des toits A� partir des coordonnA�es voulues, et gA?re de maniA?re transparente le requA?tage par internet, le dA�coupage parA�tuiles et le cache.
  • AprA?s cette A�tape de tA�lA�chargement, les images satellites des toits sont stockA�es localement au format jpg. Une image est une grille de pixels de tailleA�variableA�souvent proche de 100 par 100. Chaque pixel est composA�e de 3 valeurs entiA?res comprises entre 0 et 255 pour coder l’intensitA� des couleurs rouge, vert et bleu.
  • Les images subissent une rA�duction de la taille et/ou un passage en noir et blanc suivant les besoins du classifieur. A l’issue de ce prA�traitement, les images ont toutes la mA?me taille et le classifieur pourra traiter l’image comme un tableau numA�rique de taille fixA�e. Une image pourra A?tre vue selon les cas comme un tableau A� deux dimension auquel cas la gA�omA�trie de l’image est prA�servA�e, ou comme un tableau A� une dimension (un vecteur). Dans ce cas les valeurs de chaque pixel sont dA�pliA�es sur une seule dimension. On parle de « features » pour dA�signer ces valeurs numA�riques caractA�risant une image.
  • Un classifieur automatique intervient ici pour produireA�un avis pour chaque toit. Cet avis se compose de l’indice de la classe jugA�e la plus probable et d’un indice de confiance.
  • Ce score peut ensuite A?tre reversA� dans la base OpenStreetMap.

Un premier algorithme trA?s simple

Par principe, nous commenA�ons toujours nos analyses par un algorithme extrA?mement simple. Cette A�tape est trA?s importante pour ces raisons :

  • Si ce premier algorithme, aussi simple qu’il soit, rA�pond complA?tement au besoin initial, il n’y a pas de temps perdu A� dA�velopper un autre modA?le plus complexe. De maniA?re gA�nA�rale, un algorithme est d’autant mieux acceptA�, rapide d’implA�mentation et d’exA�cution, maintenable et robuste qu’il est simple.
  • Sinon, il fournit une base de comparaison pour d’autres algorithmes plus sophistiquA�s.
  • En cas de calendrier serrA� ou de dA�lai non anticipA� durant le dA�veloppement d’un algorithme mieux adaptA�, il constitue une solution de substitution immA�diatement utilisable.

OpenSolarMap ne dA�roge pas A� la rA?gle. Une image de toit est divisA�e en 4 parties A�gales comme reprA�sentA� sur le figure 4.A�Pour chacune de ces zones, on somme la valeur de chaque couleur de chaque pixel. On va noter ces sommes S1, S2, S3 et S4.

 

dummy

Figure 4

 

Puis A� partir de ces sommes on calcule la diffA�rence entre la partie droite et la partie gauche de l’image, puis entre la partie haute et la partie base de l’image.

I�NS = |(S1+S2) a�� (S3+S4)|
I�EW = |(S1+S3) a�� (S2+S4)|

On peut s’attendre A� ce que la premiA?re diffA�rence soit plus importante pour les toitures orientA�es est-ouest alors que la seconde diffA�rence soit plus importante pour les toitures orientA�es nord-sud. Calculons donc la diffA�rence entre ces deux diffA�rences :

Y = I�NS – I�EW + c

La constante c est introduite pour prendre en compte l’asymA�trie causA�e par la position du soleil, toujours au sud, et de l’ombre, toujours au nord. Sa valeur est fixA�e pour maximiser la performance du modA?le.

Le rA�sultat de l’algorithme est le signe de Y. Si Y est positif, l’algorithme prA�dit une orientation nord-sud, si le signe est nA�gatif il prA�dit une orientation est-ouest. Avec une valeur deA�c optimale, le taux d’erreur est de 38%.A�C’est mieux que le classifieur alA�atoire, qui rA�pond 0 ou 1 avec une probabilitA� A�gale et qui a donc un taux d’erreur de 50%. Mais ce n’est pas satisfaisant. Il faut donc chercher un algorithme plus compliquA�a��

 

À propos de l'auteur:

Haut de page