ATELIER : IA Frugal appliquée à la Segmentation Sémantique d'Images

Présentation de l'intervenant

  • Denis Marraud, Image Processing Senior Expert at Airbus Defence and Space

Introduction

Cet atelier vise à mettre en pratique et comparer l'intérêt de techniques d'IA frugale pour résoudre un problème d'adaptation de domaine sur des images à des fins de segmentation sémantique.
En effet, l'annotation d'images aérienne ou satellite étant couteuse et complexe, toute technique contribuant à la réduction du nombre d'annotations manuelles s'avère être intéressante.
Les techniques envisagées peuvent inclure des méthodes avancées d'augmentation de données et d'auto-annotation, des méthodes d'apprentissage faiblement supervisées ou auto-supervisées. Diverses tâches d'adaptation de domaine peuvent être envisagées : soit la spécialisation de domaine (ou l'apprentissage transductif) où le domaine de test est connu à l'avance et fermé, l'extension de domaine où la performance doit être optimisée à la fois pour le domaine source et le domaine cible, ou l'adaptation de domaine où la performance doit être optimisée sur le domaine cible uniquement.
Présentation des données 
Pour ce projet nous disposons de deux dataset. Un premier constitué de 2975 images aériennes de la ville de Potsdam, qui sont labellisées. Le deuxième dataset comporte 459 images aériennes de la ville de Vaihingen, et ne sont pas labélisées (en théorie, en pratique nous possédons les labels afin d'évaluer la performance de notre segmenteur).
Ces deux dataset sont labélisés selon 6 classes :
  • Background
  • Building
  • Low vegetation
  • Tree
  • Car
  • Impervious surface.
Les photos de Vaihingen ont la particularité de ne pas avoir été prises avec un capteur classique, ce qui a pour conséquence un rougissement important de la végétation. Ce changement colorimétrique empêche d'obtenir des résultats satisfaisant en utilisant un segmenteur entrainé uniquement sur Potsdam.
L'objectif est donc de trouver des méthodes qui permettront d'obtenir des résultats meilleurs qu'un tel segmenteur, en utilisant aucune (ou peu) d'annotations de Vaihingen.
Approches et résultats (les résultats seront disponibles bientôt) 
  • Groupe 1 - pseudo-labélisation pure
La pseudo  est une méthode d'entraînement qui consiste à ajouter des images cibles (ici Vaihingen) au jeu d'images sources (Potsdam) au fur et à mesure de l'entrainement. En effet à chaque itération, le modèle tente de segmenter l'image, et ce avec un certain taux de confiance. Il est possible de définir un taux de confiance à partir duquel on considère que la prédiction du modèle est suffisamment sûre pour que l'image puisse être intégré au jeu d'images d'entrainement. Lors de l'époque suivante, son label sera donc celui qui aura été prédis par le modèle à l'étape précédente.
Cette méthode a le bénéfice de se passer de toute annotation manuelle, et permet parfois d'améliorer les résultats de prédiction.
Le groupe 1 a défini un seuil de confiance de 0.6 (ie 60%). Cela permet d'ajouter 150 des images de Vaihingen au jeu d'entrainement, et améliore la performance du modèle (mesurée via la mIoU) sur certaines classes, notamment les buildings et les arbres. En revanche, la performance diminue sur d'autres classes.
  • Groupe 2 -pseudo-labélisation avec split
Le groupe 2 a choisit une approche qui utilise 10% des données de Vaihingen. 5% sont utilisées dans le jeu d'entraînement avec leur véritables annotations (utiliser un volume de données annotées < 10% est toléré, puisque cela reste une approche ou l'on annote très peu des données cibles, ce qui correspond toujours à un contexte d'IA frugale) et les 5% restants sont placés dans le jeu de validation, sans annotation, et seront ajoutés au jeu d'entrainement par pseudo-labélisation au fil de l'entrainement du modèle.
Cela permet au final au modèle de s'entrainer avec 44 images (22 + 22) de Vaihingen dont uniquement 22 été annotées manuellement.
Les performances sont meilleures que celles obtenues avec un modèle entraîné uniquement sur Potsdam, et équivalente à celle obtenues avec un modèle entrainé sur Potsdam + 10% de Vaihingen.
  • Groupe 3 - SAM 
Le groupe 3 a utilisé un l'outil SAM (Segment Anything) développé par Meta, en libre accès sur le web, qui permet de faire de la segmentation automatiquement et de manière très précise. Seule difficulté : cet outil crée une nouvelle classe pour chaque élément qu'elle segmente, il fait en quelques sortes de la segmentation par instance. On obtient donc des segmentations nettes et précises, mais une classification qui n'a rien à voir avec notre problème.
La solution développée a donc été la suivante : pour chaque zone segmentée par SAM, on regarde quelle classe est prédite par notre segmenteur entrainé uniquement sur Potsdam. Dans cette zone, on regarde laquelle de nos 6 classes a le plus de pixels qui lui ont été attribués. Si il y a une majorité de pixels attribués à la classe tree, on considère alors que toute la zone segmentée par SAM appartient à la classe tree. En faisant cela pour toutes les zones segmentées par le SAM, on arrive alors à une segmentation de l'image en 6 classes.
Malheureusement aucun résultat n'a pu être obtenu dans le temps imparti, mais l'approche reste pertinente et vaut la peine d'être approfondie.
  • Groupe 4 - pseudo-labélisation partielle
Le groupe 4 propose une approche subtile de la pseudo-labélisation. Il faut savoir que le pourcentage de confiance de prédiction d'un modèle de segmentation est la moyenne du pourcentage de confiance pour chaque pixel. En effet, le modèle prédit pour chaque pixel la probabilité que celui-ci appartienne à chacune des 6 classes, et on détermine que le pixel appartient à la classe qui a la probabilité la plus forte.
A partir de cette information, plutôt que de faire passer des images entières du jeu de test au jeu d'entrainement, le groupe 4 a décidé de ne faire passer que les pixels dont la probabilité d'appartenance à une classe est supérieure à un certain seuil (0.85 ici). Cette manipulation est réalisée en créant une 7e classe, qui va regrouper tous les pixels dont le taux de confiance est inférieur à 85%, et qui sera ignorée par notre modèle durant l'entraînement (cette opération est réalisée en modifiant la loss).
Ce seuil de 85% conserve environ 40% des pixels des images de Vaihingen. Les résultats obtenus sont meilleurs que ceux du modèle entrainé uniquement sur Potsdam (mIoU : +12, F1 score : +15, OVA : +20)
Share