Machine learning benchmarking for land cover map production

Land cover map validation is a complex task. If you read French, you can check this post by Vincent Thierion which shows how the 2016 LC map of France produced by CESBIO stands with respect to data sources independent from those used for its production. But this is only one aspect of the validation. A land cover map is a map, and therefore, there are other issues than checking if individual points belong to the correct class. By the way, being sure that the correct class is known, is not so easy neither.


In this epoch of machine learning hype 1, it is easy to fall in the trap of thinking that optimising a single metric accounts for all issues in map validation. Typical approaches used in machine learning contests are far from enough for this complex task. Let's have a look at how we proceed at CESBIO when we assess the quality of a LC map produced by classification.


Supervised classification, training, testing, etc.

The iota2 processing chain is highly configurable in terms of how the images are pre-processed, how the reference data is prepared, how the classifiers are paremeterised, etc. We also continuously add new approaches. During this development work, we need to assess whether a change to the workflow performs better than the previous approaches. In order to do this, we use standard metrics for classification derived from the confusion matrix (Overall Accuracy, κ coefficient, F-Score). The confusion matrix is of course computed using samples which are not used for the training, but we go a little further than that by splitting the train and test sets at the polygon level. Indeed, our reference data is made of polygons which correspond to agricultural plots, forests, urban settlements, etc. Since images have a strong local correlation, pixels belonging to the same polygon have a high likelihood of being very similar. Therefore, allowing a polygon to provide pixels for both the training and test sets yields optimistic performance estimations.


Most of our tests are performed over very large areas (at least 25% of metropolitan France, often more than that), which means that, using reference data from Corine Land Cover, we have many more samples than we can deal with. Even in this situation, we perform several runs of training and testing by drawing different polygons for each run, which allows us to estimate confidence intervals for all our metrics and therefore assess the significance of the differences in performance between different parameter settings.


All this is good and well, but this is not enough for assessing the quality of the results of a particular algorithm.


Beyond point-wise validation

The data we feed to the classifier are images and they are pre-processed so that application agnostic machine learning approaches can deal with that. In iota2, we perform eco-climatic stratification, which can introduce artifacts around strata boundaries. We also perform temporal gapfilling followed by a temporal resampling of all data so that all the pixels have the same number of features regardless of the number of available clear acquisitions. After that, sometimes we compute contextual features which take into account the neighbourhood of the pixels, in Convolutional Neural Networks, a patch size is defined, etc.


All these pre-processing steps have an influence on the final result, but most of the time, their effect can't be observed on the global statistics computed from the confusion matrix. For instance, contextual features may produce a smeared out image, but since most of the validation pixels are inside polygons and not on their edges, the affected pixels will not be used for the validation. In our case, the reference data polygons are eroded in order to compensate for possible misregistrations between the reference data and the images. Therefore, we have no pixels on the boundaries of the objects.


In our paper describing the iota2 methodology, we presented some analysis of the spatial artifacts caused by image tiling and stratification, but we lack a metric for that. The same happens when using contextual features or CNNs. The global point-wise metrics increase when the size of the neighbourhoods increase, but the maps produced are not acceptable from the user point of view. The 2 images below (produced by D. Derksen, a CESBIO PhD candidate) illustrate this kind of issues. The image on the right has higher values for the classical point wise metrics (OA, κ, etc), but the lack of spatial accuracy is unacceptable for most users.


Even if we had an exhaustive reference data set (labels for all the pixels), the number of pixels affected by the over-smoothing are a small percentage of the whole image and they would just weight a little in the global metrics. We are working on the development of quantitative tools to measure this effects, but we don't have a satisfactory solution yet.


How good is your reference data?

All what has been said above does not consider the quality of the reference data. At CESBIO, we have learned many things over the years about the different kinds of impacts of the quality of reference data, both in the classifier training and the map validation step. We have people here who collect data on the field every year on hundreds of agricultural plots. We have also a bit of experience using off-the-shelf reference data. The quality of the results is much better when we use the data collected by our colleagues and we have a rather good understanding on what happens during training and validation. Ch. Pelletier recently defended her PhD and most of her work dealt with this issue. For instance, she analysed the impact of mislabelled reference data on the classifier training and showed that Random Forests are much more robust than SVM. She also developed techniques for detecting errors in the reference.

We also use simple ways to clean the reference data. For instance, when using Corine Land Cover polygons which have a minimum mapping unit (MMU) of 25 hectares, we use information coming from other data bases, as described from slide 34 in this presentation. An illustration of the results is shown below.

The reasons for having label noise in the reference data can be many, but the 2 main we face are: the MMU and the changes occurred since the collection of the reference data.


For our 2016 map, we used Corine Land Cover 2012, and therefore, we may assume that more than 5% of the samples are wrong because of the changes. Therefore, when validating with this data, if for some classes we have accuracies higher than 95%, we must be doing something wrong. If we add the MMU issue to that, for the classes for which we don't perform the cleansing procedure illustrated above, accuracies higher than 90% should trigger an alarm.


Our ML friends like to play with data sets to improve their algorithms. Making available domain specific data is a very good idea, since ML folks have something to compete (this is why the work for free for Kaggle!) and they provide us with state of the art approaches for us to choose from. This is the idea of D. Ienco and R. Gaetano with the TiSeLaC contest: they used iota2 to produce gapfilled Landsat image time series and reference data as the ones we use at CESBIO to produce our maps (a mix of Corine Land Cover and the French Land Parcel Information System, RPG) and provided something for the ML community to easily use: CSV files with labelled pixels for training and validation.


The test site is the Reunion Island, which is more difficult to deal with than metropolitan France mainly due to the cloud cover. Even with the impressive (ahem …) temporal gapfilling from CESBIO that they used, the task is difficult. Add to that the quality of the reference data set which is based on CLC 2012 for a 2014 image time series, and the result is a daunting task.


Even with all these difficulties, several teams achieved FScores higher than 94% and 2 of them were above 99%. It seems that Deep Learning can generalise better than other approaches, and I guess that the winners use these kind of techniques, so I will assume that these algorithms achieve perfect learning and generalisation. In this case, the map they produce, is perfect. The issue is that the data used for validation is not perfect, which means that an algorithm which achieves nearly 100% accuracy, not only has the same amount of error than the validation data, but also that the errors are exactly on the same samples!


I don't have the full details on how the data was generated and, from the contest web site, I can't know how the different algorithms work 2, but I can speculate on how an algorithm can achieve 99% accuracy in this case. One reason is over-fitting3, of course. If the validation and training sets are too similar, the validation does not measure generalisation capabilities, but it rather gives the same results as the training set. Several years ago, when we were still working on small areas, we had this kind of behaviour due to a correlation between the spatial distribution of the samples and local cloud patterns: although training and test pixels came from different polygons, for some classes, they were close to each other and were cloudy on the same dates and the classifier was learning the gapfilling artifacts rather than the class behaviour. We made this mistake because we were not looking at the maps, but only optimising the accuracy metrics. Once we looked at the classified images, we understood the issue.



In this era of kaggleification of data analysis, we must be careful and make sure that the metrics we optimise are not too simplistic. It is not an easy task, and for some of the problems we address, we don't have the perfect reference data. In other situations, we don't even have the metrics to measure the quality.

The solutions we use to solve mapping problems need an additional validation beyond the standard machine learning metrics.



Please correct me if my assumptions are wrong!


Deep neural networks are able to fit random labels by memorising the complete data set.

Premières validations de la carte d'occupation du sol OSO

En 2017, le Centre d'Expertise Scientifique OSO (Occupation du SOl) par l'intermédiaire du CESBIO a produit une carte d'occupation du sol de l'année 2016 à l'échelle du territoire métropolitain français et corse. On l'appelle la carte d'occupation du sol OSO ! Cette carte est le résultat de traitements automatiques massifs de séries temporelles d'images satellites optiques Sentinel-2. Comme les images Sentinel-2, cette carte a une résolution spatiale de 10 m correspondant à une unité minimale de collecte (UMC) de 0.01 ha. L'occupation du sol est décrite grâce à 8 classes au premier niveau et 17 classes à second niveau de détail, définies en fonction des potentialités de détection de l'imagerie Sentinel-2 et des besoins exprimés par des utilisateurs finaux. Ces classes couvrent les grands thèmes d'occupation du sol (surfaces artificialisées, agricoles et semi-naturelles).

Son principal avantage en comparaison avec d'autres cartes d'occupation du sol existantes, (loin de nous l'idée de les critiquer) est son exhaustivité territoriale et surtout sa fraîcheur ! Disposer d'une carte d'occupation du sol exhaustive sur l'ensemble du territoire national au premier trimestre de l'année suivante, c'est ce qu'OSO vous propose !

Quelle richesse thématique ?

Les classes détectées par télédétection sont celles du second niveau, celles du premier niveau sont obtenues par agrégation des classes du second niveau :

  • Culture annuelle
    • Culture d'hiver
    • Culture d'été
  • Culture pérenne
    • Prairie
    • Verger
    • Vigne
  • Forêt
    • Forêt de feuillus
    • Forêt de conifères
  • Formation naturelle basse
    • Pelouse
    • Lande ligneuse
  • Urbain
    • Urbain dense
    • Urbain diffus
    • Zone industrielle et commerciale
    • Surface route / asphalte
  • Surface minérale
    • Surfaces minérales
    • Plages et dunes
  • Eau
    • Eau
  • Glaciers et neiges éternelles
    • Glaciers et neiges éternelles

Avec quelle qualité ?

Valider une carte d'occupation n'est pas une procédure simple. Il s'agit de s'interroger sur :

  • la spécification des classes
  • l'échelle de validation
  • le jeu de données de validation

Dans tous les cas, il est rarement possible d'établir une validation exhaustive sur l'ensemble d'un territoire. Classiquement, une validation statistique permet d'appréhender partiellement la précision de la cartographie obtenue, et ne permet pas d'identifier l'ensemble des confusions thématiques et des erreurs géométriques de classification.

La suite de cet article tente de qualifier la précision de la carte d'occupation du sol OSO de 2016 grâce à des jeux de données de partenaires du CES OSO. Une première validation, intrinsèque au processus de classification, a été effectuée. Les résultats statistiques sont visibles ici.

Le jeu de données d'échantillons de la couverture de surface a été produit grâce à des bases de données nationales telles que la BD Topo, le Registre Parcellaire Graphique (RPG) et Corine Land Cover. 70% de ces échantillons ont été utilisés pour l'apprentissage et 30% pour la validation a posteriori visible sur la figure ci-dessous. Cette validation, bien que pertinente, s'appuie sur des échantillons dont la génération suit la même procédure que les échantillons d'apprentissage, biaisant quelque peu l'indépendance de la validation.

Validation de la carte d'occupation du sol OSO avec 30% des échantillons extraits des 3 jeux de données utilisés lors de la classification - BD Topo, Registre Parcellaire Graphique et Corine Land Cover)

De plus, il nous était impossible de valider les deux cultures annuelles de la classification. En effet, l'indisponibilité du RPG pour l'année 2016 et 2015 (toujours indisponible le jour de l'écriture de cet article), nous a amené à développer une méthode d'apprentissage basée sur le principe de l'adaptation de domaine utilisant des échantillons du RPG 2014. Cette méthode est très bien expliquée ici. Quoiqu'il en soit, il nous était impossible de valider la classification des cultures d'été et d'hiver de 2016, seuls des échantillons issus du terrain nous le permettait, en voilà la preuve !

Continue reading

Validation et amélioration des produits Theia Surfaces Enneigées à partir d'images haute résolution

Post préparé par Marine Bouchet pour le blog Kalideos Alpes (version originale)
Les séries temporelles d'images optiques des satellites Sentinel-2 permettent un suivi de la surface enneigée à une résolution spatiale de 20 m tous les 5 jours (en l’absence de nuages). Le CNES et le CESBIO développent, depuis 2015, une chaîne Let It Snow (LIS) pour extraire de façon robuste les masques de neige associés, distribués sur la plateforme Theia.
Continue reading

New version of fully automatic land cover map of France for 2014 from LANDSAT8


Over the last months, we worked a lot on our method for Land Cover map production. Three main topics (1) were studied with Arthur Vincent and David Morin at CESBIO :

  1. porting and validating the iota2 processor on the CNES High Performance Computing facilities (HPC);
  2. enhancing the method for reference data preparation. Reference data are used both for training and validation;
  3. developing a stratification method which allows to train and apply classifiers per eco-climatic area, for instance.

Using all these new features, we produced a lot (really a lot!) of maps for the continental France. We just released the 4 following examples, produced using all the available LANDSAT8 data in 2014 :

  • regarding reference data :
    1. including 4 classes of artificial surfaces : continuous urban , dicontinuous urban, road surfaces, and commercial and industrial areas (2);
    2. only one artificial class that gathers the 4 above (3);
  • regarding the stratification method :
    1. using eco-climatic areas (4);
    2. without stratification, but using a fusion of several classifiers trained over different sets of tiles.
The pink urban spot, in the center of brown zone, is the village of Chateauneuf du Pape which is famous for its wine, and the brown color is the vineyard class. Validated !

Continue reading

Nouvelle version des produits d'occupation des sols OSO sur la France en 2014


Nous avons beaucoup travaillé sur la procédure de génération des cartes d'occupation des sols ces derniers mois. Trois axes principaux1 ont été abordés par Arthur Vincent et David Morin au Cesbio :

  1. Le portage et la validation de la chaîne de traitement iota2 sur l'infrastructure de calcul à haute performance (HPC) du Cnes.
  2. L'amélioration de la procédure de préparation des données de référence utilisées pour l'apprentissage des classifieurs et la validation des cartes produites.
  3. La mise au point de la stratification qui permet de spécialiser les algorithmes de classification par zone éco-climatique, par exemple.

En utilisant toutes ces nouveautés, nous avons produit beaucoup (vraiment beaucoup!) de cartes sur la France métropolitaine. Nous venons de mettre en ligne quelques exemples sur l'année 2014 en utilisant toutes les données Landsat8 disponibles. Nous avons choisi de vous montrer les 4 cas qui correspondent aux combinaisons suivantes :

  • sur la donnée de référence :
    1. utilisation de 4 classes de surfaces artificielles (abusivement appelées "bâti") : urbain continu, urbain discontinu, surfaces "route" et zones industrielles et commerciales (2);
    2. regroupement a posteriori de ces 4 classes (3);
  • sur le mode de stratification :
    1. avec stratification par zone éco-climatique (4);
    2. sans stratification, mais avec une fusion de plusieurs (10) classifieurs appris sur des tuiles images différentes.

Le village en rose, au centre de la zone marron, c'est le village de Chateauneuf du Pape, et la zone marron autour du village, ce sont des vignes ! Pas besoin de vérité terrain pour le vérifier, mais on veut bien aller vérifier quand même.

Arthur nous a concocté une interface assez pratique pour la visualisation et la comparaison des différentes cartes.  Vous pouvez y accéder ici. L'icône en haut à droite vous permet de sélectionner les cartes qui seront affichées. A gauche, sous les boutons qui gèrent le niveau de zoom, vous avez la possibilité de sélectionner 2 des cartes pour lesquelles les statistiques de qualité (FScore par classe5) seront affichées sous la zone de visualisation. Cela vous permet d'apprécier les différences entre les approches.


Aux 4 nouvelles cartes, nous avons ajouté la version que nous avions publié en début d'année, dont la qualité est inférieure. Si vous regardez la précision globale de cette carte (Overall Accuracy) vous verrez qu'elle est en fait supérieure à celle des nouvelles cartes. Ceci est dû au fait que dans cette ancienne version, nous utilisions beaucoup de pixels d'eau pour la validation, et l'eau est très facile à classer. Le problème principal de cette ancienne version est le sur-classement des zones urbaines au dépens des surfaces minérales naturelles et des vergers. Ceci a été amélioré grâce au travail sur la préparation de la donnée de référence.


Pour comparer des cartes, il est utile de regarder les FScore par classe. Vous verrez ainsi que la stratification éco-climatique apporte des améliorations importantes sur les valeurs moyennes et sur les intervalles de confiance.


Si vous voulez récupérer les fichiers GeoTiff complets (attention, c'est volumineux!), vous pouvez utiliser les liens suivants :

N'hésitez pas à nous faire des retours. Nous continuons à travailler sur les améliorations des méthodes.


1Beaucoup d'autres tâches ont été réalisées, dont la préparation de l'ingestion des données Sentinel-2, par exemple.

2Ces 4 classes correspondent à la nomenclature de Corine Land Cover, dont les polygones du millésime 2012 ont été affinés en utilisant une procédure développée par David et Marcela et décrite dans cette présentation (à partir de la planche 33).

3L'apprentissage et la classification sont toujours faits avec les 4 classes séparées, mais elles sont regroupées à la fin, ce qui permet d'augmenter la précision de la carte en échange d'une perte de finesse thématique. Mais les pixels de 30 m. de Landsat ne nous permettent d'être très précis pour ces classes.

4Nous avons utilisé la carte publiée par Joly et al.

5Nous utilisons cette métrique, car elle combine les erreurs d'omission et de commission.


SPOT4 (Take 5) special issue is now complete

The last time I showed this post on the front page, in March, I thought the special issue about SPOT4 (Take5) was complete, but we were lacking a paper about snow cover, which came a little late, but still on time to join the special issue. The paper by Jean-Pierre Dedieu and colleagues was just released :

14 papers have finally been published in the SPOT4 (Take5) special issue in MDPI remote sensing. As this journal is an open access journal, all the papers may be accessed from the special issue webpage.

First Sentinel-2 snow map



In the framework of the THEIA land data center, we have developed a simple but robust method to map the snow cover from Sentinel-2-like level 2A products. This code was tested with SPOT-4 Take-5 and Landsat-8 series, but it remained to adapt it so that it can run on real Sentinel-2 images! This is now done thanks to Manuel Grizonnet, which allowed us to process the Sentinel-2A image acquired on 06-July-2015 in the Pyrenees as a first example. This image was produced at level 2A by Olivier Hagolle using the MACCS processor. The snow mask from Sentinel-2 images is calculated at 20 m resolution after resampling the green and red bands that are originally at 10 m resolution while the NIR band is at 20 m.

How to make sure everything went well? We can control the snow mask by superposing the mask boundaries on a false color composite:


The Sentinel-2A image of 06-July-2015 (level 2A, tile 30TYN) and its snow mask. The snow mask is in magenta and the background image is a color composite RGB NIR/Red/Green. We also show a zoom in the Vignemale area.

Continue reading

Premier masque de neige Sentinel-2


Dans le cadre du Centre d'expertise scientifique THEIA "surface enneigée" nous avons développé une méthode simple et robuste pour détecter la neige à haute-resolution à partir des produits de niveau 2A de type Sentinel-2. Ce code a été testé sur des séries SPOT-4 Take-5 et Landsat-8, mais il restait à l'adapter pour qu'il puisse tourner sur de vraies images Sentinel-2 ! C'est chose faite grâce à Manuel Grizonnet, ce qui nous a permis de traiter l'image Sentinel-2A du 06-juillet-2015 sur les Pyrénées. Cette image avait été produite au niveau 2A par Olivier Hagolle avec la chaine MACCS. Le masque de neige est calculé à 20 m de résolution après ré-échantillonnage des bandes vertes et rouges qui sont d'origine à 10 m de résolution alors que la bande MIR est à 20 m. Continuer à lire

First comparison of Sentinel-2 cloud masks delivered by MACCS and SEN2COR



A new version o Sen2cor has been published recently, and this comparison was re-iterated with Sen2cor 2.2.1. The corresponding post is published here.


While CNES is getting ready to produce and distribute Sentinel-2A  products obtained with our MACCS processor, I have been asked by impatient users what I thought of SEN2COR Sentinel-2 cloud masks. In this aim, I have downloaded SEN2COR and made a few runs. SEN2COR works on all sorts of multi-platform, and is rather easy to install and to run in its nominal configuration, which is not the case of MACCS, which is intended to be implemented in ground segments, and only works on a Red Hat environment. However, I have been able to process the same date on two sites, and here are the results I obtained.




Comparison of MACCS and SEN2COR cloud masks on a cloud free image of Toulouse. The contours of detected clouds (green), shadows (yellow), water (blue), and snow (pink) are overlayed on the images.
Continue reading

Première comparaison des masques de nuages Sentinel-2 produits par MACCS et SEN2COR


Une nouvelle version de Sen2cor a été publiée récemment, et nous avons refait la comparaison. Les résultats sont publiés ici.


Alors que le CNES se prépare à produire et distribuer des données de niveau 2A pour Sentinel-2 à partir de notre processeur MACCS, quelques utilisateurs impatients m'ont demandé ce que je pensais du masque de nuages fourni par l'outil SEN2COR distribué par l'ESA. Pour me faire une idée, j'ai téléchargé SEN2COR et je l'ai fait tourner sur quelques produits. SEN2COR fonctionne sur plusieurs types de plate-formes, dont Linux, et il est plutôt facile à installer et utiliser dans sa configuration nominale.





Comparaison des masques de nuages obtenus par MACCS et SEN2COR sur une scène complètement claire acquise sur Toulouse. Les contours des masques sont superposés aux images et tracés en vert pour les nuages, en jaune pour leurs ombres, en bleu pour l'eau, et en rose pour la neige.

Continue reading