Lab01_2024_FR
Lab01_2024_FR
Lab01_2024_FR
Laboratoire #1 :
Extraction de caractéristiques et réduction de la dimensionalité
1 Introduction
Dans le cadre de cette série de laboratoires nous sommes intéressé à la reconnaissance de chiffres manuscrits, qui est
un problème classique de reconnaissance de formes. Un système de reconnaissance de chiffres manuscripts est composé
de trois grandes étapes : la collecte et prétraitement de données, l’extraction de caractéristiques et l’apprentissage d’un
modèle de prise de décision.
Tout au long de ces séances nous allons effectuer les différents tests sur la célèbre base de données de chiffres manus-
crits MNIST (pour Mixed National Institute of Standards and Technology), dont quelques exemples sont présentés dans
la figure 1.
La base de données MNIST est largement utilisée pour tester l’efficacité des algorithmes de traitement d’images et de
l’apprentissage automatique. Cette base contient 70000 images de 10 classes de chiffres manuscrits (de 0 à 9). Un sous-
ensemble de 60000 échantillons est destiné à l’apprentissage et les 10000 échantillons restants représentent l’ensemble de
test. Chaque image est de 28 × 28 pixels.
1
2. Calcul des caractéristiques par zone : Pour chaque zone (cellule), on calcule une ou plusieurs caractéristiques.
Les plus courantes sont :
- La densité de pixels de l’objet (somme des valeurs des pixels divisée par le nombre de pixels dans la zone)
la densité (valeur moyenne) de chaque bloc est calculée puis placée dans la zone correspondante dans la matrice Z
de taille zr × zc (voir Fig.2-e-).
3. Création du vecteur de caractéristiques : Finalement, la matrice Z des valeurs moyennes est vectorisée, ce qui
nous donne un vecteur de caractéristiques de zr × zc éléments. En plus de ces zr × zc valeurs, zr + zc valeurs
caractéristiques supplémentaires sont aussi ajoutées en calculant les moyennes de toutes les lignes et les colonnes
de la matrice Z. Le vecteur final f comporte (zr × zc + zr + zc) éléments
A titre d’exemple, considérons une image m × n. Le résultat de chaque étape est illustré sur la figure 2.
n 𝑧# 𝑛!
𝑧"
m
𝑚!
hZ07 =
ℎ"!$% = 6.6
(d)
f=
(e)
A suivre... L’autoencodeur est un type de réseau neuronal où la couche de sortie à la même dimension que la couche
d’entrée. Un autoencodeur reproduit les données de l’entrée à la sortie de manière non supervisée, c’est pourquoi il est
parfois appelé un réseau neuronal réplicateur.
2
F IGURE 3: L’architecture d’un autoencodeur
3
Ainsi, vous chercherez donc à diminuer les dimensions des données de manière à réduire la complexité de calcul des
algorithmes d’apprentissage. Pour ce faire, nous vous proposons d’utiliser l’analyse en composantes principales (ACP).
L’ACP est une méthode statistique qui consiste à extraire les vecteurs propres et les valeurs propres de la matrice de
covariance calculée à partir de l’ensemble de données d’apprentissage. L’objectif de cette technique est donc de trouver
les axes principaux de l’ensemble des données, c’est-à-dire les axes suivant lesquels la variance est la plus grande. Ainsi,
il est possible de transformer un vecteur de n caractéristiques en projetant le point correspondant à ce vecteur sur les m
axes principaux (d < n) ayant les plus grandes valeurs propres. Le vecteur obtenu après projection est donc de dimension
d et est composé de caractéristiques décorrélées.
La figure 5 illustre le fonctionnement de l’ACP à travers un exemple simple. À partir d’un ensemble de données
d’apprentissage décrit par trois caractéristiques x1 et x2, il est possible de déterminer deux nouvelles caractéristiques
P C1 et P C2 formant un repère défini par les vecteurs propres et la moyenne des données. Alors, si on considère que
l’information discriminante contenue dans les caractéristiques ayant les plus grandes valeurs propres, il est possible de
supprimer la caractéristique P C2 qui peut être considérée comme étant moins représentative.
4
4 Travail à réaliser
Afin de rendre le code facile à lire, il est demandé d’organiser le votre sous forme d’une fonction principale et des
functions secondaries à appeller pour générer les bases de données selon la méthode choisie.
A. Méthode 1 : zonage
1. Implementer la méthode de zonage telle qu’expliquée en Section 2.1 pour générer les caractéristiques et former les
bases de données (ensembles d’apprentissage et de test en vue du deuxième laboratoire). La fonction à coder recevra
donc en argument la matrice correspondante à l’image à traiter et renverra en sortie un vecteur ligne contenant les
valeurs du profil de l’objet.
2. Tout en faisant varier la taille de l’image, étudier l’impact de cette taille sur le taux de chevauchement.
3. En fixant la taille optimale de l’image et à l’aide de l’ACP, réduire la dimension des vecteurs de caractéristiques de
la base correspondante.
Vous pouvez utiliser le script calcul_acp.m afin de déterminer le nombre optimal de composantes principales.
Ensuite, vous pouvez utiliser le script projection_acp.m pour réduire la dimension du vecteur de caractéristiques en
projetant les données sur les axes principaux.
4. Enfin, une fois que vous aurez fixé les paramètres correspondant à la taille de l’image et aux nombres de com-
posantes principales conservées, il vous faudra extraire les caractéristiques des images de la base de test aves les
mêmes paramètres.
Attention ! il ne faut pas recalculer de nouveaux les vecteurs propres mais utiliser plustôt ceux qui ont été déjà
déterminés à partir des données d’apprentissage.
B. Méthode 2 : Autoencodeur
1. En utilisant les libraries spécialisées du language Python, implémenter une architecture d’un autoencodeur simple
entièrement connectée avec une seule couche d’encodeur, une seule couche de décodeur, et un nombre arbitraire de
neurounes dans la couche cachée.
- Implémenter une deuxième architecture d’un autoencodeur profond, cette fois-ci composée de deux couches dans
l’encodeur et deux couches dans le décodeur. Fixer le nombre de neurones de la deuxième couche de l’encodeur à
512.
2. Pour chaque architecture, varier la dimension de la couche cachée (256, 128, 64, 8) pour explorer l’impact sur les
performances du modèle, puis :
a- Comparer des échantillons des images d’entrée avec celles reconstruites pour les différents modèles obtenus.
b- Mesurer la qualité des images reconstruites par l’autoencodeur en calculant les deux métriques PSNR (Peak
Signal-to-Noise Ratio, ou le rapport du pic du signal sur bruit) et SSIM (Structural Similarity Index Measure)
entre les images originales et les images reconstruites. Compléter le tableau suivant et discuter les résultats.
Quelle est la meilleure configuration en termes de qualité de reconstruction, et pourquoi ?
Simple Profond
Couche cachée 256 128 64 8 256 128 64 8
PSNR
SSIM
Avec :
M AXI2
PSNR = 10 · log10 (2)
MSE
où : MSE est l’erreur quadratique moyenne entre l’image originale et l’image reconstruite, et M AXI est la valeur
maximale possible d’un pixel dans l’image (par exemple, 255 pour une image 8 bits).
et :
(2µx µy + C1 )(2σxy + C2 )
SSIM(x, y) = 2 (3)
(µx + µ2y + C1 )(σx2 + σy2 + C2 )
5
où : µx et µy sont les moyennes des images x et y, σx2 et σy2 sont les variances des images x et y, σxy est la
covariance entre x et y, C1 et C2 sont des constantes pour stabiliser la division.
Barème : (15pts)
- Question A.1 : 2pts (code, commentaires).
- Question A.2 : 2pts.
- Question A.3 : 0.5pt.
- Question A.4 : 0.5pt.
- Question B.1 : 1pt (code, commentaires).
- Question B.2-a : 2pts (code, commentaires).
- Question B.3 : 3pts.
- Rapport : 4pts (Contenu, organization).