📝 Projet : Étude de Cas CNN (Kaggle)

🎯 Objectif Général

L’objectif de cette séance est de développer votre autonomie en appliquant les concepts de CNN (Jour 2) et de TensorFlow/GPU (Jour 1) à un jeu de données réel. Vous êtes libre de choisir tout dataset de classification d’images disponible sur Kaggle qui vous intéresse.

Attention : Le rendu attendu est un seul fichier Notebook Jupyter (.ipynb) qui doit être intégralement exécuté. Toutes les cellules de code doivent avoir leurs sorties (output) affichées pour valider l’exécution.


1. Initialisation et Configuration ⚙️

Cette première section valide l’environnement de travail.

Contenu du Notebook Sortie Attendue (OBLIGATOIRE)
Code : Installation des dépendances (!pip install...). Logs d’installation ou confirmation des paquets.
Code : Importation des librairies. Message d’initialisation (Version de TensorFlow...).
Code : Détection et configuration du GPU. Message confirmant explicitement si le GPU est utilisé ou si le CPU est sélectionné.
Markdown : Nom du Dataset choisi et source (URL Kaggle).

2. Phase 1 : Analyse Critique du Dataset (Rapport d’Analyse) 🔍

Cette section évalue votre capacité à analyser les données avant la modélisation.

Contenu du Notebook Sortie Attendue (OBLIGATOIRE)
Markdown : Problématique – Quel problème de classification l’algorithme doit-il résoudre ?
Code : Chargement et affichage des formes des données (.shape). Affichage des dimensions des données (ex: (N, 256, 256, 3)).
Code : Visualisation d’un échantillon d’images de différentes classes. Graphique ou affichage des images.
Markdown : Critique – Le dataset est-il équilibré ? Quel défi ce déséquilibre pourrait-il poser pour l’évaluation ?

3. Phase 2 : Construction et Entraînement du Modèle CNN 💻

Cette section démontre l’application des concepts du CNN.

Contenu du Notebook Sortie Attendue (OBLIGATOIRE)
Code : Pré-traitement et Normalisation (mise à l’échelle $0 \rightarrow 1$ et ajout/vérification de la dimension du canal).
Code : Définition de l’Architecture CNN (au minimum deux paires Conv2D/MaxPooling2D).
Code : Affichage du Résumé du Modèle (model.summary()). Tableau Keras affichant le nombre de couches et le nombre total de paramètres.
Code : Compilation (choix de l’optimiseur et de la fonction de perte).
Code : Entraînement du Modèle (model.fit(...)). Logs de l’entraînement par époque (Loss, Accuracy, Val_Loss, Val_Accuracy) doivent être entièrement visibles.

4. Phase 3 : Résultats et Critique Finale 📊

Cette section évalue votre capacité à interpréter la convergence.

Contenu du Notebook Sortie Attendue (OBLIGATOIRE)
Code : Évaluation finale sur le jeu de test/validation (model.evaluate). Score final de Perte et de Précision sur l’ensemble non vu.
Code : Tracé des courbes d’entraînement (matplotlib.pyplot). Deux graphiques distincts : Perte vs Époques ET Précision vs Époques (avec les courbes d’entraînement et de validation).
Markdown : Analyse de Convergence – Y a-t-il des signes d’Underfitting ou d’Overfitting ? Justifiez votre réponse en vous référant aux graphiques de la perte/précision.
Markdown : Proposition Technique – Quelle est la prochaine étape (technique) la plus critique que vous proposeriez pour améliorer la performance de ce modèle (ex: Data Augmentation, Early Stopping, Transfer Learning, etc.) ?