[Data & crise] Saison #3 E5 — Super Caméléon protège les abeilles (2/2)

Nadia Zabeti
INVYO
Published in
4 min readJan 12, 2022

Bienvenue dans la dernière aventure de Super Caméléon! Après l’avoir suivi dans la première partie de sa mission pour sauver les abeilles 👇

Le voilà prêt pour… prédire les envahisseurs des ruches ! 🐝

Formater ses données pour un réseau de neurones

Le CNN (Conventional Neural Network)

Nous sommes maintenant prêts à construire notre réseau de neurones! Tout d’abord, nous allons le doter de plusieurs couches, que nous allons construire successivement.

Nous choisissons pour cela un réseau dit “sequential” avec les couches suivantes:

● Les couches Conv2D qui savent traiter le format image

● Les couches MaxPooling qui récupèrent les valeurs maximales des pixels

● Les couches Dropout qui évitent le surapprentissage

● Les couches Flatten qui transforment le format de la donnée en 1 seule dimension, et permettent ainsi par exemple de rendre la donnée acceptable pour une couche Dense

● La couche Dense est la couche qui est toujours “fully-connected” : les neurones de la couche d’avant sont intégralement connectés aux neurones de la couche d’après

Voilà les courbes d’apprentissages que nous obtenons:

En Data Science, la performance s’évalue au cas par cas, en fonction de notre problématique.

Ici, nous avons choisi l’accuracy (qui mesure le pourcentage de données correctement identifiées) pour mesurer la performance du modèle, et les epochs représentent le nombre de fois où nos données d’entraînement vont être traitées intégralement par le modèle.

En bleu, nous avons la valeur de l’accuracy pour le jeu d’entraînement, en orange l’accuracy pour les données que le modèle ne connaissait pas (jeu de test). On constate que le modèle apprend correctement, même si toutefois il connaît quelques pics de sur-apprentissage (lorsque le modèle performe mieux sur les données d’entraînement que sur les données test).

La loss permet de mesurer la somme des erreurs commises par le modèle. Le fait qu’elle diminue au fur et à mesure des itérations confirme que notre modèle apprend correctement.

Les prédictions 🔮

GO pour les prédictions!

On rentre des images de notre jeu de données test à notre modèle, et il nous retourne la catégorie à laquelle cette abeille appartient selon lui (plus précisément dans notre étude, la maladie dont l’abeille de la ruche est affectée).

Voici quelques exemples:

Plutôt impressionnant non ? A partir d’une simple image, le modèle que nous avons construit ensemble peut déceler les maladies de la ruche dont vient l’abeille.

Pour finir, voici la Matrice de Confusion, qui fait l’état des lieux des images correctement labellisées et de celles où il y a eu des erreurs.

Matrice de confusion pour le CNN sur les parasites de ruche

Comment lit-on cette matrice ? Prenons la dernière ligne. 114 est le nombre d’images d’abeille provenant de ruches ayant des varroas et coléoptères qui ont été correctement identifiées. Néanmoins, il y a 4 images qui appartenaient aux abeilles issues de ruches ayant seulement des coléoptères.

Si on se promène sur toute cette matrice, on remarque la plus grande difficulté du modèle est d’identifier les abeilles issues de ruches ayant seulement des coléoptères, et non à la fois coléoptères+varroas.

Comme solution, on peut préconiser de récupérer davantage d’images avec seulement des coléoptères, ou d’effectuer un feature matching* entre des images coléoptère/coléoptère+varroas pour repérer la technique d’extraction de features qui les distingue le mieux.

Merci pour votre lecture 🌱

*Feature matching : technique pour mettre en avant les keypoints communs à 2 images

--

--