Lab01_2024_FR

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

Département de génie des systèmes

SYS800- Reconnaissance de formes et inspection


Automne 2024

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.

F IGURE 1: Example des images de la base MNIST.

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.

2 Extraction des caractéristiques


Les méthodes d’extraction de caractéristiques existantes pour la reconnaissance de chiffres manuscrits peuvent être
décomposées en deux grandes catégories : traditionelles (ou manuelles ) et automatiques. Parmi les méthodes tradi-
tionnelles, nous avons choisi la méthode de zonage, et pour les méthodes d’extraction automatique, nous avons choisi
l’autoencodeur.

2.1 Méthode de zonage


Le zonage est une technique classique de description d’images où une image est divisée en plusieurs zones ou sous-
régions. Chaque zone est ensuite analysée pour extraire des caractéristiques qui serviront à la classification. Cette méthode
permet de capturer la distribution spatiale des pixels dans l’image. Voici les étapes principales de cette méthode :
1. Division de l’image : L’image d’entrée est divisée en plusieur zones pour former une grille, par exemple une grille
de 4x4 ou 7x7 zones. En pratique, l’image d’entrée de chaque chiffre est initialement redimensionnée à une taille
m×n (hauteur x largeur) pixels (Fig.2-a-). L’image redimensionnée est ensuite divisée en plusieurs zones (ou blocs)
de taille mz × nz chacune. Ces zones forment une grille, qui peut être par exemple de 4x4 ou 7x7 zones, selon les
paramètres choisis. Le nombre total de zones obtenues verticalement (zr) et horizontalement (zc) est calculé en
fonction des dimensions de l’image redimensionnée et de la taille choisie pour chaque zone.

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)

- Le centre de gravité des pixels de l’objet.

- Les moments statistiques (variance, asymétrie, etc.)

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

𝑚!

(a) (b) (c)

hZ07 =

ℎ"!$% = 6.6
(d)

f=

(e)

F IGURE 2: Illustration de la technique de zonage.

2.2 Extraction automatique : Autoencodeur

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

L’architecture d’un autoencodeur comprend 3 composantes :


1. Endoceur : la couch d’encodage compresse l’entrée en un code (représentation latente) dans un espace de dimen-
sion réduite, appelé espace latent.
2. Code : cette couche cachée contient le code généré par la couch d’encodage qui représente l’entrée dans l’espace
réduit. L’espace latent correspond donc aux données compressées.
3. Décodeur : la couche de décodage décompresse le code généré afin de reconstruire une sortie qui ressemble à
l’entrée reçue.
Un auto-codeur fonctionne en recevant des données en entrée, en les compressant et en les codant, puis en reconstruisant
les données à partir de la représentation codée. L’entraînement du modèle consiste à minimiser l’erreur entre les données
reproduites et les données d’entrée afin d’avoir une sortie la plus proche possible de l’entrée.
Cette architecture rend un autoencodeur utile pour de nombreuses tâches come le débruitage, la compréssion et la
représentation des données (extraction des caractéristiques). Dans notre cas, nous allons l’utiliser pour la représentation
de chiffres manuscrits.

F IGURE 4: L’arrangement d’une image en vecteur d’entrée

3 Réduction de la dimensionnalité : ACP


Une représentation brute de l’information conduit souvent à des vecteurs de grandes dimensions, ce qui peut poser
un vrai problème de calcul pour analyser ces informations. Ainsi, le mathématicien Bellman, père de la programmation
dynamique, a introduit l’expression « malédiction de la dimensionnalité » (curse of dimensionality), pour signifier que
représenter les formes par des vecteurs de « grande » dimension est source de problème lorsque le nombre d’exemples
d’apprentissage est limité. Par ailleurs, au-delà des aspects de complexité de calcul et de capacité de stockage, la réduction
de la dimensionnalité d’un problème peut aussi parfois permettre d’améliorer les performances de classification.

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.

F IGURE 5: Illustration de l’ACP à l’aide d’un exemple en 2 dimensions.

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.

3.1 Nombre de composantes principales


Le nombre de composantes principales à retenir peut-être déterminer en examinant la contribution des valeurs propres
correspondantes. En pratique, on utilise le graphique des valeurs propres. On calcule la contribution apportée par chaque
composantes (axes) principales comme suit :
Pd
λi λ1 + · · · + λd
ed = Pi=1
n = < T, d << n, (1)
k=1 λ 1 + · · · + λn

où λi est la valeur propre de la ieme composante.

F IGURE 6: Energie cumulative exprimée en fonction du nombre de composantes principales.

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.

Taille de l’image 60x50 100x80


Taille des zones 5x5 10x10 5x5 10x10
Nbr de caractéristiques
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).

Vous aimerez peut-être aussi