Update README.md, ReLu.png, conv.png, maxpooling.png, dropout.png
Compare changes
Files
5+ 102
− 1
@@ -50,12 +50,111 @@ Après une analyse approfondie du projet existant, nous avons opté pour l'IDE A
La conception et l'intégration du modèle d'IA ont constitué le principal défi technique de ce projet. La mémoire limitée de la Spresense (environ 200 Ko disponibles pour le modèle) nous a contraints à trouver un équilibre délicat entre performance et compacité. Nous avons opté pour un modèle relativement simple, entraîné à reconnaître un nombre restreint d'espèces animales (chamois, sanglier, lapin…) et l'absence d'animal ("Vide"). Ce choix, bien que limitant la portée du système, nous a permis de garantir un temps d'inférence rapide et une utilisation optimale des ressources de la carte. L'entraînement du modèle a été réalisé avec un jeu de données d'images d'animaux, collectées et annotées manuellement.
Afin d'obtenir des performances optimales sur le modèle, nous avons fait de nombreux essais de structure de réseau de neurones. Nous avons testé plusieurs architectures, en jouant sur le nombre de couches et de neurones par couche. Nous avons finis par opter pour un modèle de classification d'images basé sur un réseau de neurones convolutifs (CNN).
La couche de convolution 2D est la couche principale du modèle. Elle permet d'extraire les caractéristiques des images en appliquant des filtres de convolution. Ces filtres sont entraînés pour détecter des motifs spécifiques dans les images, tels que des contours, des textures ou des formes. La sortie de cette couche est une carte de caractéristiques qui représente les informations pertinentes extraites de l'image d'entrée.
La couche de pooling (ou sous-échantillonnage) réduit la taille de la carte de caractéristiques tout en conservant les informations essentielles. Elle permet de diminuer le nombre de paramètres et de calculs nécessaires, ce qui contribue à réduire le temps d'inférence et à éviter le surapprentissage. Dans notre modèle, nous avons utilisé une couche de pooling max, qui sélectionne la valeur maximale dans chaque région de la carte de caractéristiques.
La couche de flattening transforme la carte de caractéristiques 2D en un vecteur 1D. Cela permet de préparer les données pour les couches denses suivantes, qui nécessitent une entrée sous forme de vecteur. Cette étape est cruciale pour connecter les couches convolutives aux couches denses du réseau.
Les couches denses (ou fully connected layers) sont des couches de neurones où chaque neurone est connecté à tous les neurones de la couche précédente. Elles permettent de combiner les caractéristiques extraites par les couches de convolution pour effectuer la classification finale. Dans notre modèle, nous avons utilisé une couche dense avec une fonction d'activation softmax pour produire les probabilités de chaque classe.
La couche de sortie du modèle est une couche dense de taille `TODO` (nombre d'animaux) avec une fonction d'activation softmax. Cette couche produit un vecteur de probabilités pour chaque classe, indiquant la probabilité que l'image d'entrée appartienne à chaque classe. La classe avec la probabilité la plus élevée est considérée comme la prédiction du modèle.
Les couches denses sont suivies d'une couche de dropout, qui est une technique de régularisation utilisée pour prévenir le surapprentissage. Le dropout consiste à désactiver aléatoirement un certain pourcentage de neurones pendant l'entraînement, ce qui force le modèle à apprendre des représentations plus robustes et généralisables. Cela permet d'améliorer la performance du modèle sur des données non vues.
- **Sélection des images :** Les classes du dataset n'ont pas un nombre égal d'images. Nous avons donc choisi de ne garder que les classes ayant au moins 30 images. Nous avons aussi choisi d'enlever les images de chiens car elles étaient trop peu nombreuses par rapport aux autres classes. Les images de chiens représentaient plusieurs espèces différentes, ce qui rendait la classification difficile.
- **Redimensionnement :** Les images d'entrée sont redimensionnées afin d'enlever les bordures noires du bas des images. En effet, les images du dataset de base possèdait des bordures noires en bas, qui contenaient des méta-données sur l'image. Nous avons enlevé ces bordures afin que le modèle s'entraîne non pas a reconnaître les métadonnées mais bien les animaux. Cela permet de réduire la complexité du problème en enlevant des variables. Dans les faits, nous avons vu une amélioration de la précision du modèle de `TODO` en moyenne.
- **Séparation des images de nuit et de jour :** Nous avons séparé les images de jour et de nuit, afin d'entraîner deux modèles différents. En effet, les images de jour sont en couleurs et les images de nuit sont en noir et blanc. Avec des images en couleurs on obtient 3 fois plus de données pour les 3 composantes de couleurs d'une image. En séparant les images, nous avons pu entraîner un modèle plus performant pour chaque type d'image. Nous avons vu une amélioration de la précision du modèle de `TODO` en moyenne.
- **Augmentation des données :** Nous avons utilisé une technique d'augmentation des données pour enrichir notre jeu de données. Cela consiste à appliquer des transformations sur les images rotation et bruit afin de créer de nouvelles images à partir des originales. Cela permet d'augmenter la diversité du jeu de données et d'améliorer la robustesse du modèle. Nous avons vu une amélioration de la précision du modèle de `TODO` en moyenne.
Le firmware gère l'acquisition des images depuis la caméra intégrée à la Spresense. Avant d'être soumise au modèle d'IA, chaque image subit un prétraitement : redimensionnement pour correspondre à la taille d'entrée du modèle, et conversion au format de couleur approprié. Ces opérations sont cruciales pour optimiser le temps d'inférence et minimiser l'utilisation de la mémoire.
Le module LoRa, intégré à la Spresense, permet la transmission des données de classification vers le serveur via le réseau LoRaWAN. Un protocole de communication spécifique a été implémenté pour encoder les informations avant leur transmission, et les décoder côté serveur. Ce protocole assure la compacité des messages et l'intégrité des données transmises. Le choix de LoRaWAN est justifié par sa faible consommation d'énergie et sa longue portée, essentielles pour des applications en milieu forestier.
@@ -76,6 +175,8 @@ Malgré les résultats encourageants, le système actuel présente certaines lim
* **Robustesse du modèle face aux variations d'illumination :** Le modèle actuel peut être sensible aux variations de luminosité et aux conditions d'éclairage difficiles (nuit, contre-jour). Le développement de modèles spécifiques pour les conditions diurnes et nocturnes améliorerait la robustesse du système.