Vous êtes sur la page 1sur 40

Convolutional Neural Networks

(ou apprentissage de représentation d’images)


Motivations
Motivations
Représentation et correspondance

• Représentation, descripteurs :
Couleur,

– Texture, -
– Points d’intérêts,
– Forme,
– Structure …

• Mesures de correspondance associées : +


– Dépendent du descripteur et du contexte d’application
+
• Attention à la taille des descripteurs è Temps de calcul !
Motivations

l Grande quantité d'images, de multiples applications


- généraliste, médicale, robotique, biométrie, surveillance, …
- apprentissage/classification, recherche d'information

l Besoin de comparer des images


- La comparaison s'opère à partir d'une représentation
- Les pixels constituent une première représentation mais très peu robustes
aux variations de luminosité, échelle, occlusion, rotation, …
Outline
l Retour sur l'analyse et les descripteurs d'image classiques
- L'ancêtre du CBIR : histogramme de couleur...
- Filtrage d'images, convolutions, points d'intérêts
- Paradigme "Bag of Visual Words"
- Pooling et pyramidal features

l Quelques mots sur l'apprentissage de dictionnaires (sparse


coding) pour l'image

l Apprentissage de représentation : la solution ?


l Convolutional Neural Network, comment ça marche ?
Image : la structure de donnée
l Un tableau de NxM pixels
- Une matrice 2D NxM
- Exemple : Image en niveaux de gris
N

L valeurs possibles
M Noir = 0 ≤ l < L = Blanc
avec L=256, 1 pixel = 1 octet

- Image couleur à image multi-channels

è 1 pixel = 3 octets
Quelques espaces de couleur
• Linéaires :
– RGB : Rouge, vert, bleu.
l Système de couleur additif
– YCbCr : Luminance, Chrominances (L-rouge, L-bleu)

• Non linéaires :
– HSV : Hue, Saturation, Value,
– LAB : Luminance, Chrominances
⇒ Les distances euclidiennes entre couleurs
sont plus proches des différences perçues
par les humains
Histogrammes de couleur

• Un histogramme par canal de couleur :


– Histogramme composante par composante ou histogramme unique si l’image est
monochrome,
– Discrétisation : l’espace des valeurs de l’intensité est décomposé en intervalles
complémentaires (batons ou « bins »),
– Pour chaque intervalle, on calcule le pourcentage de pixels de l’image dont
l’intensité s’y trouve

– Le vecteur de ces pourcentages est le descripteur


– Possibilité de considérer trois histogrammes pour les images en couleur
Histogrammes de couleur
• Multidimensionnels :
– L’espace des valeurs de pixels est
multidimensionnel (en général de dimension 3)
– L’espace des valeurs est décomposé (discrétisé)
en parallélépipèdes complémentaires (« bins »)
– Mesure les coocurrences entre canaux de
couleur

– Pour chaque parallélépipède, on calcule le


pourcentage de pixels de l’image dont l’intensité
s’y trouve,
– Ce tableau est le descripteur (on peut toujours le
voir comme un vecteur si on sérialise les
composantes).

> python color_histogram3D.py


Descripteurs à base de
points d’intérêt

• Points de « haute courbure » ou « coins »,


– Points géométriques « singuliers » de la surface Image[i][j]

• Extraits par divers filtres [Schmid 2000] :


– Calcul des dérivées spatiales à une échelle donnée,
– Convolution par des dérivées de gaussienne (Sobel, …)
– Construction d’invariants par une combinaison appropriée de ces diverses dérivées (module
du gradient par exemple),
– Chaque point est sélectionné puis représenté par un ensemble de valeurs de ces invariants
(histogramme de directions)

• L’ensemble des points sélectionnés est organisé


topologiquement (relations entre points « voisins ») : SIFT
– Descriptions très volumineuses !
Filtrage
l Le traitement d’un pixel dépend de ses voisins

l Permet de nombreuses opérations sur les images


- Flou, points d’intérêt, contour, réhaussement, …

l Espace Fourier / Spatial


- Une multiplication dans le domaine de Fourier équivaut à
une convolution dans le domaine spatial

l Opérateur de convolution
Filtrage : convolution
l Opérateur de convolution
- Parcourt de l’image par une fenêtre glissante : le noyau de
convolution

l Approximation dans un voisinage de pixels


- Typiquement 3x3, 5x5, 7x7, ...

l Exemple en 1D
[1 2 3 4 5 6 7]
[2 3 1] à 2 + 6 + 3 = 11

[1 2 3 4 5 6 7]
[2 3 1] à 4 + 9 + 4 = 14

[1 2 3 4 5 6 7]
[2 3 1] à 6 + 12 + 5 = 23

et ainsi de suite... à la fin, la réponse de la convolution est le vecteur :


[11 14 23 29 35]
Quelques filtres connus
1 1 1
l Filtre « Moyenneur » 1 1 1 1
9 1 1 1

l Alternative plus précise


1 1 2 1
2 4 2
16 1 2 1

l Intègre plus de 80% des approximations discrètes d’une


gaussienne
l Génère du « flou » è diminue le contraste
Détection d’orientations
• Noyaux des gradients horizontaux et verticaux :

Opérateurs de Sobel

• Convolution par ces noyaux → détection des orientations

• Un descripteur possible : Histogramme des directions


Histogramme des gradients
orientés (HOG) [Dalal, 2005]
• Norme du gradient :
• Direction du gradient :
• Seuil sur la norme ⇒ détection de points d'intérêts
Classification d'images "classique"
l Architectures "plates" (ou shallow)
Apprentissage de représentation

(apprentissage de dictionnaires)
Sparse Coding
l Codage du signal avec contrainte de sparsité [Olshausen and
Field, 1997]
- Apprentissage de dictionnaire (codebook) pour la représentation
parcimonieuse du signal

- La fonction induit la parcimonie sur les alpha


l Pseudo-norme L0 : #αi ≠ 0 (NP-hard)
l Norme L1 : Σ|αi| (~convex)

⇒ [Olshausen and Field, 1997], [Engan et al., 1999], [Lewicki and Sejnowski,
2000], [Aharon et al., 2006] , [Roth and Black, 2005], [Lee et al., 2007]
Sparse Coding
l Nombreuses applications
- Image denoising [Elad and Aharon, 2006]
Sparse Coding
l Nombreuses applications
- Image restoration [Mairal, Sapiro, and Elad, 2008]
Sparse Coding
l Nombreuses applications
- Inpainting [Mairal, Elad, and Sapiro, 2008b]
Sparse Coding
l Un patch de 14x14 pixels est représenté par 196
valeurs (souvent redondantes)

l Problème: Pouvons nous apprendre une meilleure


représentation ?
Sparse coding : illustration
Natural Images Learned bases (f1 , …, f64): “Edges”
50

100

150

200 50

250
100

300
150

350
200
400
250 50
450

300 100
500
50 100 150 200 250 300 350 400 450
150 500
350

200
400

250
450

300
500
50 100 150 200
350 250 300 350 400 450 500

400

450

500
50 100 150 200 250 300 350 400 450 500

Exemple test

» 0.8 * + 0.3 * + 0.5 *

X » 0.8 * f36 + 0.3 * f42 + 0.5 * f63


[0, 0, …, 0, 0.8, 0, …, 0, 0.3, 0, …, 0, 0.5, …]
Compact & easily
= [a1, …, a64] (feature representation)
interpretable
D'autres exemples

» 0.6 * + 0.8 * + 0.4 *

f15 f28 f37


Representé par: [0, 0, …, 0, 0.6, 0, …, 0, 0.8, 0, …, 0, 0.4, …]

» 1.3 * + 0.9 * + 0.3 *

f5 f18 f29

Representé par: [0, 0, …, 0, 1.3, 0, …, 0, 0.9, 0, …, 0, 0.3, …]


l Les images sont décomposées en patchs élémentaires, proches des filtres
de Gabors

l Les coéfficients constituent une représentation plus compacte et de plus


haut niveau que les pixels
Première étape du cortex visuel: V1
La première étape du cortex visuel fait de la “détection d'orientation” ..

Schematic of simple cell Actual simple cell “Gabor functions”

[Images from DeAngelis, Ohzawa & Freeman, 1995]


Sparse coding
pour la classification d'images

» 0.8 x + 0.3 x + 0.5 x

Xi » [0, 0, …, 0, 0.8, 0, …, 0, 0.3, 0, …, 0, 0.5, …]

è Bien meilleur qu'une représentation par pixels, mais pas


toujours compétitif
- Apprendre plus des représentations hierarchiques ?
Du Sparse Coding au CNN
l SC produit des filtres redontants qui sont souvent des versions
translatées des autres
- Chaque patch est traité indépendamment, ignore le traitement
par convolution
l Idée
- Sparse coding sur l'image entière et contraindre le dictionnaire
pour grouper les filtres

avec Dk un filtre 2D de taille s x s, x une image w x h et zk la réponse de la


convolution : une image (feature map) de taille (w + s − 1) × (h + s − 1)

- Avec non-linéarité
Apprentissage de représentation
"profondes"
Vers les réseaux convolutionnels
l Plusieurs idées, déjà vu dans les NN, sparse coding,
et bag-of-words
- Banque de filtres + non linéarité → espace non linéaire de grande
dimension
- Feature pooling → Réduction de dimension, contraintes spatiales

l Apprend des filtres à plusieurs niveaux d’abstraction

l [Fukushima 1974-1982], [LeCun 1988-now], ...


ConvNets

[Yann LeCun, 1998]


Réseaux de neurones convolutionnels
l C'est un DNN classique avec 2 propriétés supplémentaires

- Connexions locales

- Partage des poids entre couches

l Réduit le nombre de poids à apprendre !


Réseaux de neurones convolutionnels

Apprentissage de représentations
Convolution 2D

• Les poids d’une couche de convolution correspondent aux


filtres (appris)
• Les activations de la couche sont en 2D, sont la réponse à
la convolution (= feature map)
Convolution 2D

• Implémentation par produit matriciel


• Duplication d’informations
• Opération efficace sur GPU
Convolution 2D

• Paramètres :
1. Taille des filtres, ex : K x K
2. Nombre de filtres, ex : C
3. Stride : pas de la convolution
4. Padding : méthode de complétion sur les bords
5. + non-linéarité, biais, régularization, etc

• A la couche L, une couche de Convolution :


• Apprend CL filtres de tailles K x K x CL-1
• Retourne CL cartes réponses de tailles W x H si stride = 1 (et
padding = ‘same’)
• Taille = W/s x H/s dans le cas plus général
Pooling
• Méthode d’aggrégation locale
• Réduit la taille des représentations
• Augmente l’invariance aux transformations

• Classiquement, 2 types de pooling


• Average Pooling à conserve le plus d’information
• Max Pooling à focus sur les forts contrastes
Un exemple de réseau convolutionnel
A gagné ImageNet 2012 LSVRC [Krizhevsky, 2012]
60 million de paramètres appris par SGD
25 % d'erreurs → 15 % d'erreurs !
VERY DEEP CONVOLUTIONAL NETWORKS FOR
LARGE-SCALE IMAGE RECOGNITION
• [Simonyan & Zisserman, 2015] (Oxford)
• Plusieurs variantes : VGG16, VGG19, …
VERY DEEP CONVOLUTIONAL NETWORKS FOR
LARGE-SCALE IMAGE RECOGNITION
• [Simonyan & Zisserman, 2015] (Oxford)
• Plusieurs variantes : VGG16, VGG19, …

Vous aimerez peut-être aussi