Présentation du stage
Stage de deuxième année réalisé à la Faculté des Sciences et Techniques de l'Université de Limoges. Ce stage a porté sur la conception et l'implémentation de modèles de deep learning pour la reconnaissance automatique d'images.
Le projet principal consistait à créer des programmes capables de reconnaître automatiquement des chiffres manuscrits (dataset MNIST) puis des panneaux de signalisation routière (dataset GTSRB), en utilisant des réseaux de neurones convolutifs (CNN).
Semaine 1 et 2 : Reconnaissance des chiffres manuscrits (MNIST)
Objectif : Créer un programme capable de reconnaître automatiquement un chiffre manuscrit à partir d'une image, en utilisant un réseau de neurones convolutif (CNN) entraîné sur le dataset MNIST.
Introduction et découverte
- Présentation du sujet du stage et des objectifs du projet
- Compréhension du principe de reconnaissance de chiffres à partir d'images
- Découverte de l'utilisation du langage Python dans l'intelligence artificielle
- Introduction au deep learning et aux réseaux de neurones
- Consultation de la documentation FIDLE pour comprendre les bases du deep learning
Mise en place de l'environnement
- Installation de Python sur la machine de travail
- Installation du logiciel JupyterLab
- Configuration de l'environnement de développement
- Vérification du bon fonctionnement de JupyterLab
- Création d'un premier notebook Jupyter
- Tests simples en Python (affichage, calculs, import de bibliothèques)
Apprentissage des outils
- Prise en main de la bibliothèque Keras pour la conception et l'entraînement de réseaux de neurones
- Manipulation et prétraitement d'images numériques à l'aide de NumPy et OpenCV
Travail sur les données
- Analyse de la structure du dataset MNIST (format, dimensions, labels)
- Compréhension de la représentation numérique d'une image (pixels, niveaux de gris)
- Mise en œuvre de techniques de normalisation des données afin d'améliorer la stabilité et la vitesse d'apprentissage du modèle
- Adaptation du format des données aux exigences des réseaux de neurones convolutifs (ajout du canal)
Conception du modèle
- Conception d'une architecture de réseau de neurones convolutif adaptée à un problème de classification d'images
- Utilisation de couches convolutives pour l'extraction automatique de caractéristiques visuelles
- Mise en œuvre de couches de pooling afin de réduire la dimension des données et limiter le surapprentissage
- Intégration de couches entièrement connectées pour la classification finale
- Utilisation de l'algorithme d'optimisation Adam pour l'ajustement automatique des poids du réseau
Semaine 3 et 4 : Approfondissement et découverte du dataset GTSRB
Objectif : Créer un programme capable de reconnaître automatiquement un panneau de signalisation routière à partir d'une image, en utilisant un réseau de neurones convolutif (CNN) entraîné sur le dataset GTSRB (German Traffic Sign Recognition Benchmark).
Amélioration du modèle MNIST
- Amélioration du modèle de reconnaissance des chiffres manuscrits
- Modification des paramètres d'entraînement (epochs, batch size)
- Analyse des courbes accuracy et loss
- Ajout de couches Dropout pour limiter le surapprentissage
Tests et validation
- Tests sur des images externes
- Adaptation du prétraitement pour correspondre au format MNIST
- Observation et analyse des erreurs de prédiction
Découverte du dataset GTSRB
- Découverte du dataset GTSRB pour la reconnaissance des panneaux routiers
- Étude des 43 classes de panneaux
- Compréhension des contraintes liées aux images en couleur
- Mise en place du chargement automatique des images et labels
Semaine 5 et 6 : Implémentation du modèle de reconnaissance des panneaux
Préparation des données
- Prétraitement des images (redimensionnement, normalisation)
- Encodage des labels en one-hot
- Séparation des données en entraînement et validation
Conception et entraînement du modèle
- Conception d'un réseau de neurones convolutif (CNN)
- Ajout de couches de convolution, pooling et denses
- Utilisation de la fonction Softmax pour la classification
- Compilation du modèle avec l'optimiseur Adam
- Entraînement du réseau et suivi des performances
Évaluation et analyse
- Évaluation sur le jeu de validation
- Tests sur des images personnelles
- Analyse des confusions entre panneaux similaires
- Identification des limites du modèle en conditions réelles
- Proposition d'améliorations possibles (augmentation de données, modèles plus profonds)
Technologies utilisées
Python
Langage de programmation
JupyterLab
Environnement de développement
Keras
Framework Deep Learning
OpenCV
Traitement d'images
Documentation technique