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).

Schéma du projet de stage 2ème année

Schéma de l'architecture du projet de reconnaissance d'images

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