Skip to content
Snippets Groups Projects
Commit c1a593b0 authored by Denis Thomas's avatar Denis Thomas
Browse files

Delete RAPPORT.md

parent 4062a3ef
No related branches found
No related tags found
No related merge requests found
# Rapport : Classification d'Images
## Introduction
Ce TP à pour objectif le développement d'un programme complet de classification d'images. On développe deux model comme le sujet le demande : les k plus proches voisins (k-NN) et les réseaux de neurones (NN). Le jeu de données utilisé est CIFAR-10 (60 000 images couleur de taille 32x32 réparties en 10 classes)
## Préparation des Données CIFAR
Les données CIFAR-10 ont été chargé et préparé à l'aide de plusieurs fonctions utilitaires :
- `read_cifar_batch` : Lecture d'un batch unique de données CIFAR.
- `read_cifar` : Lecture de tous les batches (5 batches d'entraînement et 1 batch de test).
- `split_dataset` : Division aléatoire des données en ensembles d'entraînement et de test.
## Classification k-NN
L'implémentation du classificateur k-NN repose sur plusieurs fonctions demandé dans le README.md :
- `distance_matrix` : Calcul de la matrice des distances euclidiennes L2 entre deux matrices. Cette implémentation utilise uniquement des manipulations matricielles pour optimiser les performances.
- `knn_predict` : Prédiction des étiquettes pour les données de test en fonction des k plus proches voisins.
- `evaluate_knn` : Évaluation de la précision du modèle sur un ensemble de test.
On effectue finalement un test avec 20 valeures de k différente pour juger de l'évolution de l'accuracy par rapport a k. La meilleure performance est obtenue avec k=1, atteignant environ 35.7% de précision. Or les valeurs pour 1 et 2 semble étonnante on se serait attendu a une courbe en cloche, on a éssayé de corrigé le tri mais impossible on a touojours ce saut pour k=1 et 2. Cependant observe ensuite une évolution assez cohérente, avec une max vers k=5 puis une diminution de l'accuracy. Cette diminution de performance avec l'augmentation de k suggère que les classes sont relativement bien séparées localement, mais que l'augmentation du nombre de voisins introduit du bruit dans la classification.
## Réseau de Neurones Artificiel
Le développement du classificateur basé sur un perceptron multicouche (MLP) a nécessité plusieurs étapes, notamment la compréhension théorique de la rétropropagation du gradient.
### Formules de Rétropropagation
On présente ici les formules que l'on nous demand de fournir :
1. La dérivée de la fonction sigmoïde est donnée par : $\sigma' = \sigma \times (1-\sigma)$
2. $\frac{\partial C}{\partial A^{(2)}} = \frac{2}{N_{out}}(A^{(2)} - Y)$
3. $\frac{\partial C}{\partial Z^{(2)}} = \frac{\partial C}{\partial A^{(2)}} \times A^{(2)} \times (1-A^{(2)})$
4. $\frac{\partial C}{\partial W^{(2)}} = [A^{(1)}]^T \times \frac{\partial C}{\partial Z^{(2)}}$
5. $\frac{\partial C}{\partial B^{(2)}} = \frac{\partial C}{\partial Z^{(2)}}$
6. $\frac{\partial C}{\partial A^{(1)}} = \frac{\partial C}{\partial Z^{(2)}} \times [W^{(2)}]^T$
7. $\frac{\partial C}{\partial Z^{(1)}} = \frac{\partial C}{\partial A^{(1)}} \times A^{(1)} \times (1-A^{(1)})$
8. $\frac{\partial C}{\partial W^{(1)}} = [A^{(0)}]^T \times \frac{\partial C}{\partial Z^{(1)}}$
9. $\frac{\partial C}{\partial B^{(1)}} = \frac{\partial C}{\partial Z^{(1)}}$
Ensuite on passe a l'implémentation des fonctions demandé :
- `learn_once_mse` : Apprentissage avec l'erreur quadratique moyenne.
- `learn_once_cross_entropy` : Apprentissage avec l'entropie croisée.
- `train_mlp` : Entraînement complet du réseau.
- `test_mlp` : Évaluation sur l'ensemble de test.
Les résultats montrent une amélioration continue de la précision d'entraînement avec les epochs, atteignant environ 45% après 100 époques. Cette progression régulière indique que le modèle apprend efficacement les patterns des données, bien que la performance finale reste modeste en raison de la complexité du jeu de données CIFAR-10.
## Conclusion
Les deux modèles implémentées montrent des performances différentes sur le jeu de données CIFAR-10. Le k-NN offre une performance de base intéressante mais limitée, tandis que le MLP montre une capacité d'apprentissage progressive avec de meilleures performances finales. Ces résultats soulignent l'importance du choix de l'architecture et des hyperparamètres dans les tâches de classification d'images.
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment