1 of 23

Projet INFO0702

Segmentation sémantique d’images de plantes malades

SATORI Khaireddine

2 of 23

  • Annotation des images
  • Téléchargement et prétraitement des données
  • Conception et évaluation des modèles
  • Difficultés rencontrées

3 of 23

Annotation des images

Dossier 5 et 6

( environ 50 images pour chaque dossier)

Utilisation de LabelMe

  • Long et fastidieux
  • Nécessaire pour le bon déroulement d projet

4 of 23

Les différentes phases de développement

5 of 23

1. Téléchargement 1/2

  • Les données sont divisée en 2 parties

Dossier racine

Test

Train

Label

Image

Label

Image

6 of 23

1. Téléchargement 2/2

  • 2 modules spécifiques utilisés pour stocker les images :
  • Glob : pour chercher les images dans les différents répertoires
  • Natsort : pour trier le nom des images avant de les sauvegardées dans des listes

7 of 23

2. Prétraitement des données

  • Ensemble de modifications essentielle sur la représentation des données comme:
  • Normalisation des valeurs de pixel en bites
  • Décodage
  • Réduction

8 of 23

3. Conception 1/5

  • Implémentation de l’architecture de réseaux de neurones des modèles Unet et DeepLab à l’aide de la bibliothèques keras
  • Difficulté d’implémenter les modèles directement avec keras
  • Utilisation de tensorflow pour intégrer des fonctions de modèles plus simples et plus récentes

9 of 23

3. Conception (Unet) 2/5

  • architecture principale :

10 of 23

3. Conception (Unet) 3/5

  • 2 fonctions principales pour construire l’architecture du réseaux :
  • fonction d’encodeur (Bloc de sous-échantillonage)

  • C’est une pile de différents blocs convolutionnels

11 of 23

3. Conception (Unet) 4/5

  • fonction décodeur (Bloc de suréchantillonnage)

  • Le décodeur suréchantillonne les entités à la taille d'origine de l'image en concaténant chaque sortie de niveau du bloc de l'encodeur avant d’alimenter le bloc de décodeur suivant.

12 of 23

3. Conception (Deeplab) 5/5

  • Architecture principale :

  • Utilisation d’une structure d'encodeur-décodeur.
  • Le module encodeur encode les informations contextuelles multi-échelles en appliquant une convolution atreuse à plusieurs échelles.
  • Le décodeur simple mais efficace. Il affine les résultats de la segmentation le long des limites de l'objet.

13 of 23

4. Entrainement du modèle

  • 3 Étapes pour entraîner le modèle :

1. Appel au fonction du modèle

2. Configuration du modèle en spécifiant l'algorithme d’optimisation et les pertes de métriques avec model.compile()

3. Entraînement du modèle avec model.fit() en réglant les paramètres si besoin (nombre d’époques, nombre de lots …)

14 of 23

5. Evaluation du modèle 1/2

  • Plusieurs façons pour évaluer le modèle
  • Évaluation visuelle avec la bibliothèque Matplotlib :

Résultat pour Deeplab :

Résultat pour Unet

Remarque :

Pour faire une comparaison pertinente, l'entraînement des 2 modèles a été fait en spécifiant des valeurs identiques de paramètres (même nombre d’époque, nombre de lots…)

15 of 23

5. Evaluation du modèle 2/2

  • Évaluation par la fonction model.evaluate() de keras qui renvoie la valeur finale de perte et de la précision

Résultat pour Deeplab :

Résultat pour Unet:

16 of 23

6. Prédiction à l’aide du modèles entraînés 1/5

  • Utilisation du modèle entraîné et sauvegardé pour effectuer des prédictions avec la fonction model.predict() du keras sur les échantillons de test.
  • L’objectif et de rapprocher le plus possible les masques prédits par rapport au vrai masques des images d’entrée originales
  • Une implémentation spécifique a été ajouté pour vérifier visuellement l’exactitude de la prédiction par rapport à ce qui est attendu.

17 of 23

6. Prédiction à l’aide du modèles entraînés 2/5

  • Exemple de résultat avec Unet:

18 of 23

6. Prédiction à l’aide du modèles entraînés 3/5

  • la même image avec Deeplab:

19 of 23

6. Prédiction à l’aide du modèles entraînés 4/5

  • Comme pour la phase d'entraînement, on finit par faire un bilan d’évaluation.

  • C’est l’évaluation finale qui permet de comparer entre les modèles et savoir qui répond au mieux à la problématique.

  • Utilisation de la fonction model.evaluate() sur l'échantillon qui a été testé.

20 of 23

6. Prédiction à l’aide du modèles entraînés 5/5

Résultat pour Unet :

Résultat pour Deeplab:

Conclusion : Deeplab est un peu mieux que Unet en terme de précision.

21 of 23

Difficultés rencontrées

  • La subdivision et le stockage des images par nom n’était pas assez facile.

  • L’implémentation des modèles n’est pas simple à faire (problème de versions, complexité, inadaptation)

  • Temps d’exécution accéléré limité (GPU sur Google Colab) avec une longue durée pour entraîner les modèles.

22 of 23

Références

23 of 23

Merci pour votre attention