Rapport de stage (2ème année)

Reconnaissance automatique de chiffres et de panneaux routiers par Deep Learning

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

NumPy

Calcul numérique

OpenCV

Traitement d'images

MNIST & GTSRB

Datasets

Documentation technique

Retour aux projets