* Période : Septembre 2024 - Novembre 2024
* Description :
- Développement d'un modèle de classification, à partir de la base de données MNIST contenant des images de chiffres tracés à la main.
- Développement du modèle au travers d'un réseau de neurones convolutif, à l'aide de Python et du module TensorFlow.
- Brève analyse de chaque étape, ainsi que des résultats obtenus.
* Axes d'amélioration :
- A voir prochainement.
Conception et développement d’un modèle de reconnaissance de chiffres écrits à la main, à partir de la base de données du MNIST, fournissant notamment des images de 28×28 pixels en noir et blanc de chiffres écrits à la main. Projet principalement effectué en totale autonomie, sans cours introductif préalable aux notions techniques abordées et requises tout au long du projet.
Travail découpé en plusieurs étapes :
- Analyser et gérer les données utilisées pour développer le modèle.
Cela inclus la création de deux jeux de données distincts : un jeu de données dédié à l’entraînement du modèle, et un jeu de données dédié eu test du modèle. C’est une étape nécessaire, car mélanger les données d’entraînement et de test pour entraîner ou tester le modèle faussera les résultats obtenus (test du modèle sur des données déjà connues, et non sur de nouvelles données), ce qui pourrait introduire des biais conséquents dans l’évolution du modèle.
On obtenait donc un jeu d’entraînement constitué de 60000 images et un jeu de test constitué de 10000 images. - Construire, entraîner et évaluer un modèle de réseau de neurones convolutif.
On utilisait pour cela la classe Sequential() de TensorFlow, permettant de créer un modèle séquentiel de réseau de neurones convolutif, disposant d’une structure linéaire dans laquelle les couches sont empilées les unes après les autres. Ainsi, chaque couche a une entrée provenant de la couche précédente et une sortie allant vers la couche suivante. - Evaluer le modèle de classification sur les données de test et utilisation le modèle pour la détection de chiffres.
On devait ici principalement s’occuper d’évaluer la qualité de l’entraînement du modèle, vérifier la présence éventuelle de biais évidents (erreurs algorithmiques, mauvaise normalisation des données fournies, contamination des données d’entraînement par des données de test, etc.) dans l’apprentissage du modèle, en analysant les résultats de classification fournis par le modèle entraîné.
On procédait alors à la création d’une matrice de confusion, un tableau qui permet de résumer les performances d’un modèle de classification en comparant les prédictions du modèle avec les valeurs réelles. Cette matrice fournit une vue détaillée sur les erreurs commises par le modèle et permet d’évaluer sa capacité à classifier correctement les données.
En ce qui concernait l’entraînement du modèle, j’ai pris l’initiative de développer quelques fonctions Python permettant :
- D’enregistrer l’entraînement du modèle, de conserver l’état du modèle entraîné au terme des programmes exécutés. Sans cela, les programmes conçus entraînaient et évaluaient alors un modèle éphémère, voué à disparaître au terme des programmes exécutés. Cela n’a pas de sens et représente une perte de temps.
- De réutiliser dans les programmes un modèle précédemment enregistré, afin de pouvoir poursuivre l’entraînement d’un modèle entre deux séances de travail et de pouvoir également comparer les résultats fournis par plusieurs états d’entraînement d’un même modèle.
Ce projet constituant également un module d’introduction au développement de modèles d’intelligence artficielle, un document résumant les avancées et recherches menées pour comprendre et traverser chaque étape devait aussi être rédigé et sera inclus dans les livrables fournis ci-dessous.
Documents et livrables