UE Analyse Multi-r´
esolution et Ondelettes
Apprentissage de dictionnaires image
Travaux sur Machines Encadr´
es
Dans ce TME, on propose d’apprendre un dictionnaire pour repr´
esenter images naturelles. `
A toutes
fins utiles, se reporter `
a l’url http://webia.lip6.fr/thomen/Teaching/AMO.html. On utilisera la base Kyoto 1
fournie, dont quelques images sont pr´
esent´
ees `
a la figure 1.
FIGURE 1 – Base d’images naturelles ”Kyoto”
Plus pr´
ecisemment, on cherche `
a d´
ecomposer de mani`
ere parcimonieuse des patchs d’image (i.e.
r´
egions carr´
ees de taille s×s) sur un ensemble redondant d’´
el´
ements de base. Chaque patch est alors
mod´
elis´
e par une combinaison lin´
eaire des ´
el´
ements du dictionnaire visuel. La contrainte de parcimonie
implique que seul un ”petit” nombre d’´
el´
ements du dictionnaire intervient dans la d´
ecomposition (i.e. les
autres ont des coefficients nuls).
L’exercice 1 consiste `
a g´
en´
erer la base de patchs n´
ecessaire `
a l’apprentissage du dictionnaire. L’exer-
cice 2 pr´
esente le coeur de l’algorithme d’apprentissage parcimonieux de dictionnaire.
1. http://www.cnbc.cmu.edu/cplab/data kyoto.html
Universit´
e Pierre et Marie Curie 1 Master 2 Informatique - Sp´
ecialit´
eIMA
Exercice 1 G´
en´
eration de la base de patchs
On va ici mettre au point le code pour extraire une base de patchs de l’enemble de la base d’images.
Ces patchs seront ensuite utilis´
es pour apprendre un dictionnaire (exercice 2).
R´
ecup´
erer tout d’abord la base ”Kyoto” (chaque image est stock´
ee dans une matrice au format matlab
.mat), ainsi que les fonctions suivantes :
[p,r] = samplePatchesIm( I , n, s, seuil) pour extraire de mani`
ere al´
eatoire n
patches de taille s×sd’une image stock´
ee dans la matrice I.seuil correspond au niveau d’in-
tersection maximal autoris´
e entre les patches, exprim´
e en pixels : par exemple pour des pacthes
de taille s= 14,seuil = 49 = 162
4correspond `
a un niveau d’intersection maximal du quart de
l’aire du patch. La fonction samplePatchesIm renvoie une liste de patchs p(matrice conte-
nant les imagettes stock´
ees selon des vecteurs ligne, taille s2×n), et la liste des coordonn´
ees de
ces patches (matrice de taille 2×n- on ne stocke que minx et miny pour chaque rectangle).
drawPatches(p) qui affiche la liste des patches contenus dans pdans une grande image
drawRectsImage(I,r,s) qui affiche les r´
egions dans l’image de d´
epart Io`
u les patches ont
´
et´
e extraits.
On demande de mettre au point le code matlab suivant :
1. Mettre au point un script testSamplePatchImage qui charge une image de la base (quel-
conque), utilise la fonction samplesPatchesIm pour extraire des patchs, puis les visualise
le r´
esultat de l’extraction avec les fonction drawPatches et drawRectsImage. La figure2
montre par exemple le r´
esultat de l’extraction de 900 patches de taille 14 ×14 sur l’image 17 de
la base, avec un seuil d’intersection de 49.
FIGURE 2 – Exemple d’extraction de patches
2. Mettre au point un script samplePatchesKyoto qui va extraire les patches de toute la base,
et stocker sur le disque (.mat) la matrice correspondante (taille s2×M). Afficher l’ensemble des
patchs extraits. La figure 3 montre par exemple le r´
esultat attendu pour M= 10000 patchs de
taille s= 14, avec un seuil d’intersection de s2
4= 49.
3. Mettre au point une fonction pn = normalizePatch(p) qui effectue pour un patch pde la
base les pr´
e-traitements suivants :
2
FIGURE 3 – 10000 patches de taille 14 ×14 extraits sur la base Kyoto
Centrage : on soustraite de chaque pixel sa valeur moyenne p0(x, y) = p(x, y)¯p,
o`
u¯p=1
s2
s
P
x=1
s
P
y=1
p(x, y).
Normalisation du patch centr´
e pour qu’il soit de norme l2(euclidienne) unit´
e : p00(x, y) =
p0(x,y)
||p0||2, avec ||p0||2=ss
P
x=1
s
P
y=1
p0(x, y)2. N.B : utiliser la fonction norm de matlab pour
calculer ||p0||2. Dans le cas o`
u||p0||2= 0 (cas des r´
egions homog`
enes), on n’effectuera pas
cette normalisation.
4. Mettre au point un script normalizeBase qui normalise chacun de patchs de la base et stocke
la matrice normalis´
ee sur le disque.
3
Apprentissage de dictionnaires parcimonieux
1 Notations
Dans tout ce qui suit, on notera les matrices en gras et majuscule, e.g. Xest une matrice, et les vecteurs
en minuscule, e.g. xest un vecteur.
2 Formulation du probl`
eme d’apprentissage de dictionnaire parci-
monieux
On consid`
ere un ensemble de Npatchs d’images : {yi}i∈{1;N}. Chaque yiest un vecteur de IRn,
n=s2o`
usest la taille du patch carr´
e consid´
er´
e. Matriciellement, les donn´
ees d’entr´
ee seront repr´
esent´
es
par la matrice Y, de taille n×N, o`
u les {yi}sont les vecteurs colonne. On va chercher `
a repr´
esenter Y
par une combinaison lin´
eaire Xd’´
el´
em´
ents de base, not´
es D:
YDX (1)
Dest une matrice de taille n×Kdont les vecteurs colonnes sont les K´
el´
ements du dictionnaire
qu’on cherche `
a apprendre, i.e. {dj}j∈{1;K}.Xest la matrice de taille K×Ncontenant l’ensemble des
projections de Ysur D. Les vecteurs colonne de X,{xk}k∈{1;N}, contiennent l’ensemble des projection
de yksur D:ykDxk.
Afin de repr´
esenter au mieux les donn´
ees, le probl`
eme consiste donc `
a trouver Det Xminimisant le
probl`
eme d’optimisation suivant :
min
D,X ||YDX||2
F(2)
o`
u||X||Fest la norme de Frobenius de la matrice X. Si n < K, la matrice Dest de rang plein, si
bien qu’une infinit´
e de solutions existe au probl`
eme. Des contraintes doivent donc ˆ
etre impos´
ees pour
restreindre l’esapce de recherche. Parmi celles-ci, des contraintes restreignant la projection yisur le dic-
tionnaire D`
a une d´
ecompostion parcimonieuse ont beaucoup ´
et´
e´
etudi´
ees. On est alors ramen´
e`
a r´
esoudre
le probl`
eme suivant :
min
D,X ||YDX||2
Ftel que : i||xi||0T0(3)
o`
u||xi||0est la norme l0du vecteur xi,i.e. le nombre de ses composantes non nulles.
3 L’algorithme K-SVD
L’algorithme K-SVD est un algorithme pour r´
esoudre le probl`
eme d’apprentissage de dictionnaire
parcimonieux formul´
e`
a l’´
equation 3. Il a ´
et´
e pr´
esent´
e par Aharon [1, 2]. Pour des raisons d’efficacit´
e,
une version optimis´
ee de l’algorithme a r´
ecemment ´
et´
e propos´
ee ici [3].
L’algorithme de K-SVD pour r´
esoudre l’´
equation 3 consiste en une optimisation altern´
ee. On r´
esoud
it´
erativement un probl`
eme partiel en X,`
aDfix´
e. Cette ´
etape est appel´
ee ´
etape de codage parcimonieux
(”sparse coding”) dans laquelle on cherche `
a r´
esoudre :
min
X||YDX||2
Ftel que : i∈ {1; N} ||xi||0T0(4)
4
Le probl`
eme de l’´
equation 4 est convexe. Cependant, la combinatoire li´
ee `
a l’utilisation de la norme
`0rend la r´
esolution exacte du probl`
eme intractable. Des m´
ethodes choisissent d’approximer la norme `0
par la norme `1. Pour cette formulation modifi´
ee du probl`
eme d’optimisation, des r´
esolutions exactes et
efficaces existent.
On propose dans ce TME de s’attaquer le probl`
eme complexe pr´
esent´
ee `
a l’´
equation 4 (norme `0),
en utilisant un algorithme approxim´
e pour la r´
esolution. On utilisera une m´
ethode `
a base d’Orthogonal
Matching Pursuit (OMP). Les fonctions correspondantes seront fournies.
La seconde ´
etape du K-SVD consiste `
a optimiser sur D`
aXfix´
e. On cherche donc `
a r´
esoudre :
min
D||YDX||2
F(5)
L’algorithme K-SVD va en fait successivement optimiser chaque atome du dictionnaire dkind´
ependamment
des autres, suppos´
es fixes. La fonction objectif de l’´
equation 5 peut ˆ
etre r´
e-´
ecrite de la mani`
ere suivante :
f(D) = ||YDX||2
F=
Y
K
X
j=1
djxj
T
2
F
=
Y
K
X
j6=k
djxj
T
dkxk
T
2
F
=
Ekdkxk
T
2
F(6)
Chaque produit djxj
Test une matrice de taille n×NLe terme Ekdans l’´
equation 6 est l’erreur de
reconstruction des donn´
ees faite `
a partir des K1´
el´
ements du dictionnaire {dj}j6=k. Comme on suppose
que ces ´
el´
ements sont fix´
ees, on cherche `
a minimiser f(dk). Il est possible de minimiser f(dk)par
moindres carr´
ees, mais on veut garantir que la solution mise `
a jour permette toujours une d´
ecomposition
parcimonieuse. Pour assurer cette propri´
et´
e, on va d´
efinir :
wk=i|1iN, xk
T(i)6= 0(7)
wkrepr´
esente l’ensemble d’indices (pour les exemples Y={yi})qui utilisent l’atome dk(cad ceux
pour lesquels xk
T(i)6= 0).Lam´
ethode utilis´
ee pour optimiser dkest alors la suivante
On restreint la matrice Ek, pour former ER
ken ne consid´
erant que les colonnes correspondant `
a
wk. Si on note kma matrice de taille N× |wk|correspondant `
a recopier Nfois le vecteur ligne
wk, on a ER
k=Ekket xk
R=xk
Tk.
La solution va en fait minimiser
ER
kdkxk
R
2
F`
a la fois par rapport `
adket xk
R, en assurant que
le support des xk
T(cad wk, ceux non nuls) reste inchang´
e. Pour d´
eterminer min
dk,xk
R
ER
kdkxk
R
2
F,
on utiliser une d´
ecomposition en valeur singuli`
ere (Singular Value Decomposition SVD) de ER
k=
UVT. La solution pour dket xk
Rest alors la suivante :
1. dkest la premi`
ere colonne de U
2. xk
Rest la premi`
ere colonne de Vmulitpli´
e par ∆(1,1)
La figure 4 donne une vision globale de l’algorithme
5
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !