Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Support de Cours - Deep Learning-Chapitre3-Cnn

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

1

Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

Chapitre 3 : Réseau de neurones convolutionel CNN


Plan du chapitre :

1. Introduction (Motivation : apprendre les features)


2. Réseau de neurones à convolution CNN (définition)
3. Couche convolution
4. Couche pooling
5. Couche full connected
6. Architecture d’un CNN

1. Introduction

Dans les algorithmes traditionnels de machine learning, la notion de features


(caractéristiques) en vision sont utilisées pour faire de la classification d'images. Ces méthodes
consistent à extraire les features de chaque image du jeu de données manuellement par un
expert, puis à entraîner un classifieur sur ces features. Ces techniques d'apprentissage
supervisé peuvent fournir de très bons résultats, et leur performance dépend fortement de la
qualité des features préalablement trouvées. Il existe plusieurs méthodes d'extraction et de
description de features (tel SIFT).

Mais en 2012, une révolution se produit : lors de la compétition annuelle de vision par
ordinateur ILSVRC, un nouvel algorithme de Deep Learning explose les records ! Il s'agit d'un
réseau de neurones convolutif CNN.

Les réseaux de neurones convolutifs ont une méthodologie similaire à celle des méthodes
traditionnelles d'apprentissage supervisé : ils reçoivent des images en entrée, détectent les
features automatiquement de chacune d'entre elles, puis entraînent un classifieur dessus.
Donc les CNN réalisent eux-mêmes tout le boulot fastidieux d'extraction et description de
features.

Lors de la phase d'entraînement, l'erreur de classification est minimisée afin d'optimiser les
paramètres du classifieur et les features ! De plus, l'architecture spécifique du réseau permet
d'extraire des features de différentes complexités, des plus simples au plus
sophistiquées. L'extraction et la hiérarchisation automatiques des features, qui s'adaptent au
problème donné, constituent une des forces des réseaux de neurones convolutifs.

Aujourd'hui, les réseaux de neurones convolutifs, aussi appelés CNN ou ConvNet pour
Convolutional Neural Network, sont toujours les modèles les plus performants pour la
classification d'images. Cette partie leur est donc naturellement consacrée.

2. Définition CNN

Quelle est la différence entre un réseau de neurones et un réseau de neurones convolutif ?

Univ-batan2 Dr. Merzougui Deep learning


2
Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

Les réseaux de neurones convolutifs désignent une sous-catégorie de réseaux de neurones.


Cependant, les CNN sont spécialement conçus pour traiter des images en entrée. Leur
architecture est alors plus spécifique : elle est composée de deux blocs principaux.

1- Le premier bloc fait la particularité de ce type de réseaux de neurones, puisqu'il


fonctionne comme un extracteur de features. Pour cela, en appliquant des opérations
de filtrage par convolution. La première couche filtre l'image avec plusieurs noyaux de
convolution, et renvoie des "feature maps", qui sont ensuite normalisées (avec une
fonction d'activation) et/ou redimensionnées. Ce procédé peut être réitéré plusieurs
fois : on filtre les features maps obtenues avec de nouveaux noyaux, ce qui nous
donne de nouvelles features maps à normaliser et redimensionner, et qu'on peut
filtrer à nouveau, et ainsi de suite. Finalement, les valeurs des dernières feature
maps sont concaténées dans un vecteur. Ce vecteur définit la sortie du premier bloc,
et l'entrée du second.
2- Le second bloc : Les valeurs du vecteur en entrée sont transformées (avec plusieurs
combinaisons linéaires et fonctions d'activation) pour renvoyer un nouveau vecteur en
sortie. Ce dernier vecteur contient autant d'éléments qu'il y a de classes : l'élément i
représente la probabilité que l'image appartienne à la classe i

Comme pour les réseaux de neurones ordinaires, les paramètres des couches sont déterminés
par rétropropagation du gradient : l'entropie croisée est minimisée lors de la phase
d'entraînement. Mais dans le cas des CNN, ces paramètres désignent en particulier les
features des images. Voir maintenant les différents types de couches d'un CNN.

Il existe quatre types de couches pour un réseau de neurones convolutif : la couche de


convolution, la couche de pooling, la couche de correction ReLU et la couche fully-connected.

3. Couche convolution

La convolution, d’un point de vue simpliste, est le fait d’appliquer un filtre mathématique à
une image. D’un point de vue plus technique, il s’agit de faire glisser une matrice par-dessus
une image, et pour chaque pixel, utiliser la somme de la multiplication de ce pixel par la valeur
de la matrice. Cette technique nous permet de trouver des parties de l’image qui pourraient
nous être intéressantes. Prenons la Figure ci-dessous à gauche comme exemple d’image et la
Figure à droite comme exemple de

F
M
Exemple de valeurs d’une
Exemple simpliste des valeurs des matrice utilisée comme
pixels d’une image 5x5 filtre

Univ-batan2 Dr. Merzougui Deep learning


3
Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

Dans le cas de la Figure 17, les valeurs sont binaires. Dans un cas réel, les valeurs devraient
varier entre 0 et 255. Dans la Figure 18, les valeurs sont représentées par des 1 et 0. Dans un
cas réel, ces valeurs sont continues et peuvent être positives ou négatives.
Appliquer le filtre sur l’image : dans la
matrice image M, nous pouvons voir que
chaque valeur des pixels de l’image tuile
(les cases orange) est multipliée par chaque
valeur correspondante du filtre (1x1, 1x0,
1x1 ….). Puis additionner tous ces valeurs
pour obtenir une seule valeur ’4’ qui fera
partie d’une nouvelle image convoluée.

Le filtre doit se déplacer d’une case à chaque itération jusqu’à ce que la première ligne soit
finie. Lorsque nous avons fini la première ligne, le filtre « descend » d’une case et la même
procédure se répète pour chaque ligne et colonne. Voir l’animation suivante :

Matrice « Image » matrice « filtre » résultat de convolution

Noté qu’une convolution 3x3 de profondeur 1 effectuée sur une carte de caractéristiques
d'entrée 5x5, également de profondeur 1. Comme il y a neuf emplacements 3x3 possibles
pour extraire les tuiles de la carte de caractéristiques 5x5, cette convolution génère une carte
de caractéristiques de sortie 3x3.

Un réseau de neurones à convolution contient de multiples filtres et ces filtres sont appliqués
sur l’image d’origine. Après la première étape nous avons donc autant de nouvelles images

Univ-batan2 Dr. Merzougui Deep learning


4
Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

que de filtres. La phase de convolution peut aussi être vue comme des couches de neurones
cachées où chaque neurone n’est connecté qu’à quelques neurones de la couche suivante.

Effets d’application de filtres

Pour expliquer comment un filtre peut trouver des parties intéressantes dans les images. Prenons le
Filtre précédant. Les valeurs qui sont à 1 forment un « X ». Pendant la phase de convolution, lorsque
ce filtre sera appliqué à une forme qui correspond exactement à un « X », alors la valeur obtenue sera
plus élevée. Moins la forme de l’image correspond à la forme du filtre, plus la valeur obtenue sera
basse. Nous pouvons donc réduire la taille de l’image et en faire ressortir les éléments intéressants.

Afin de démontrer les effets d’une phase de convolution, la figure suivante, qui est une image de
synthèse du bâtiment B, sera modifiée avec plusieurs filtres mathématiques. Par exemple, si nous
voulons trouver des arêtes, nous pouvons utiliser les valeurs du filtre F2.

F2

Les filtres sont aussi adaptés à chaque itération d’apprentissage car les valeurs des filtres
mathématiques utilisés sont des poids comme dans les réseaux de neurones multicouches

ReLu – Unité linéaire rectifiée


ReLu est une fonction qui doit être appliquée à
chaque pixel d’une image après convolution, et
remplace chaque valeur négative par un 0. Si
cette fonction n’est pas appliquée, la fonction
créée sera linéaire et le problème XOR persiste
puisque dans la couche de convolution, aucune
fonction d’activation n’est appliquée.

ReLu est très utilisée dans les réseaux de neurones à convolution car il s’agit d’une fonction rapide à
calculer : 𝑓(𝑦) = 𝑚𝑎𝑦(0,𝑦). Sa performance est donc meilleure que d’autres fonctions où des opérations
coûteuses doivent être effectuées.

Comment choisir les features ?

Contrairement aux méthodes traditionnelles, les features ne sont pas pré-définies selon un formalisme
particulier (par exemple SIFT), mais apprises par le réseau lors la phase d'entraînement ! Les noyaux
des filtres désignent les poids de la couche de convolution. Ils sont initialisés puis mis à jour
par rétropropagation du gradient.

C'est là toute la force des réseaux de neurones convolutifs : ceux-ci sont capables de déterminer tout
seul les éléments discriminants d'une image, en s'adaptant au problème posé. Par exemple, si la
question est de distinguer les chats des chiens, les features automatiquement définies peuvent décrire
la forme des oreilles ou des pattes.

Univ-batan2 Dr. Merzougui Deep learning


5
Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

4. Pooling

Ce type de couche est souvent placé entre deux couches de convolution : elle reçoit en entrée plusieurs
feature maps, et applique à chacune d'entre elles l'opération de pooling. L'opération de pooling
consiste à réduire la taille des images, tout en préservant leurs caractéristiques importantes. Pour cela,
on découpe l'image en cellules régulière, puis on garde au sein de chaque cellule la valeur maximale.

La méthode utilisée consiste à imaginer une fenêtre de 2 ou 3 pixels qui glisse au-dessus d’une image,
comme pour la convolution. Mais, cette fois-ci, nous faisons des pas de 2 pour une fenêtre de taille 2,
et des pas de 3 pour 3 pixels. La taille de la fenêtre est appelée « kernel size » et les pas s’appellent
«strides » Pour chaque étape, nous prenons la valeur la plus haute parmi celles présentes dans la
fenêtre et cette valeur constitue un nouveau pixel dans une nouvelle image. Ceci s’appelle Max
Pooling.

La couche de pooling permet de réduire le nombre de paramètres et de calculs dans le réseau. On


améliore ainsi l'efficacité du réseau et on évite le sur-apprentissage.

Les valeurs maximales sont repérées de manière moins exacte dans les feature maps obtenues après
pooling que dans celles reçues en entrée – c'est en fait un grand avantage ! En effet, lorsqu'on veut
reconnaître un chien par exemple, ses oreilles n'ont pas besoin d'être localisées le plus précisément
possible : savoir qu'elles se situent à peu près à côté de la tête suffit !

Ainsi, la couche de pooling rend le réseau moins sensible à la position des features : le fait qu'une
feature se situe un peu plus en haut ou en bas, ou même qu'elle ait une orientation légèrement
différente ne devrait pas provoquer un changement radical dans la classification de l'image.

5. Couche fully-connected

La couche fully-connected constitue toujours la dernière couche d'un réseau de neurones. Ce type de
couche reçoit un vecteur en entrée et produit un nouveau vecteur en sortie. Pour cela, elle applique
une combinaison linéaire puis éventuellement une fonction d'activation aux valeurs reçues en entrée.

La dernière couche fully-connected permet de classifier l'image en entrée du réseau : elle renvoie un
vecteur de taille N , où N est le nombre de classes dans notre problème de classification d'images.
Chaque élément du vecteur indique la probabilité pour l'image en entrée d'appartenir à une classe.

Par exemple, si le problème consiste à distinguer les chats des chiens, le vecteur final sera de taille 2 :
le premier élément (respectivement, le deuxième) donne la probabilité d'appartenir à la classe
"chat" (respectivement "chien"). Ainsi, le vecteur [0.9 0.1] signifie que l'image a 90% de chances de
représenter un chat.

Univ-batan2 Dr. Merzougui Deep learning


6
Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

Pour calculer les probabilités, la couche fully-connected multiplie donc chaque élément en entrée par
un poids, fait la somme, puis applique une fonction d'activation (logistique si N=2 , softmax si N>2) :
Ce traitement revient à multiplier le vecteur en entrée par la matrice contenant les poids. Le fait
que chaque valeur en entrée soit connectée avec toutes les valeurs en sortie explique le terme fully-
connected.

6. Architecture d’un CNN

Un réseau de neurones à convolution peut avoir plusieurs étapes de convolution, ReLu et Pooling. Une
règle à respecter est que la fonction de ReLu doit obligatoirement être appliquée après une étape de
convolution afin d’avoir une réponse non-linéaire, mais le Pooling n’est pas obligatoire.

Après être passé par toutes les étapes de convolution, ReLu et Pooling, nous pouvons passer à la
classification des images. La dernière phase consiste à envoyer tous les pixels dans un réseau de
neurones multicouches. Étant donné que nous avons pu récupérer les parties les plus importantes
d’une image que nous avons condensée, la phase de classification sera beaucoup plus performante
qu’en utilisant un réseau de neurones artificiels sans convolution.

Un CNN est simplement un empilement de plusieurs couches de convolution, pooling, correction ReLU
et fully-connected. Chaque image reçue en entrée va donc être filtrée, réduite et corrigée plusieurs
fois, pour finalement former un vecteur. Dans le problème de classification, ce vecteur contient les
probabilités d'appartenance aux classes.

Tous les réseaux de neurones convolutifs doivent commencer par une couche de convolution et finir
par une couche fully-connected. Les couches intermédiaires peuvent s'empiler de différentes
manières, à condition que la sortie d'une couche ait la même structure que l'entrée de la suivante. Par
exemple, une couche fully-connected, qui renvoie toujours un vecteur, ne peut pas être placée avant
une couche de pooling, puisque cette dernière doit recevoir une matrice 3D.

En général, un réseau de neurones empile plusieurs couches de convolution et de correction


ReLU, ajoute ensuite une couche de pooling (facultative), et répète ce motif plusieurs fois ; puis, il
empile des couches fully-connected.

Plus il y a de couches, plus le réseau de neurones est "profond" : on est en plein dans le Deep Learning!

Univ-batan2 Dr. Merzougui Deep learning


7
Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

La première couche de convolution apprend des features simples, qui représentent des éléments de
structure rudimentaires de l'image (contours, coins...) Plus les couches de convolution sont "hautes",
c'est-à-dire loin de l'entrée du réseau, plus les features apprises sont complexes : celles-ci se
composent des features plus simples des couches précédentes. Un carré est un exemple
de feature complexe, formée de contours et de coins.

Les couches de convolution les plus hautes apprennent donc des features sophistiquées : par exemple
couche convolution 2, dans le cas de la reconnaissance de chat ci-dessous, elles peuvent correspondre
aux oreilles, nez ou l’oeuil..

Le paramétrage des couches

Un réseau de neurones convolutif se distingue d'un autre par la façon dont les couches sont
empilées, mais également paramétrées. Les couches de convolution et de pooling possèdent
en effet des hyperparamètres, c'est-à-dire des paramètres dont vous devez préalablement
définir la valeur.

Remarque : Les features de la couche de convolution et les poids de la couche fully-


connected ne sont pas des hyperparamètres, puisqu'ils sont appris par le réseau de
neurones lors de la phase d'entraînement. La taille des feature maps en sortie des couches
de convolution et de pooling dépend des hyperparamètres.

Chaque image (ou feature map) est de dimensions W × H × D

où W est sa largeur en pixels, H sa hauteur en pixels et D le nombre de canaux (1 pour une


image en noir et blanc, 3 pour une image en couleurs).

La couche de convolution possède quatre hyperparamètres :

1. Le nombre de filtres K
2. La taille F des filtres : chaque filtre est de dimensions F×F×D pixels.
3. Le pas S avec lequel on fait glisser la fenêtre correspondant au filtre sur l'image. Par
exemple, un pas de 1 signifie qu'on déplace la fenêtre d'un pixel à la fois.
4. Le zero-padding P : : on ajoute à l'image en entrée de la couche un contour noir
d'épaisseur P pixels. Sans ce contour, les dimensions en sortie sont plus petites. Ainsi,
plus on empile de couches de convolution avec P=0, plus l'image en entrée du réseau
rétrécit. On perd donc beaucoup d'informations rapidement, ce qui rend la tâche
d'extraction de features difficile.

Univ-batan2 Dr. Merzougui Deep learning


8
Chapitre 2 Réseaux de neurones (Master 2 SDS) 2021

Pour chaque image de taille W×H×D en entrée, la couche de convolution renvoie une matrice
𝑊−𝐹+2𝑃 𝐻−𝐹+2𝑃
de dimensions 𝑊𝑐 ∗ 𝐻𝑐 ∗ 𝐷𝑐 , 𝑜ù 𝑊𝑐 = + 1, 𝐻𝑐 = + 1 𝑒𝑡 𝐷𝑐 = 𝐾
𝑆 𝑆

𝐹−1
Choisir 𝑃 = 2 𝑒𝑡 𝑆 = 1 permet ainsi d’obtenir des features maps de même largeur et
hauteur que celles reçues en entrée.

La couche de pooling présente seulement deux hyperparamètres :

• La taille F des cellules : l'image est découpée en cellules carrées de taille F×F pixels
• Le pas S : les cellules sont séparées les unes des autres de S pixels

Pour chaque image de taille W×H×D en entrée, la couche de pooling renvoie une matrice de
𝑊−𝐹 𝐻−𝐹
dimensions : 𝑊𝑝 ∗ 𝐻𝑝 ∗ 𝐷𝑝 , 𝑜ù 𝑊𝑝 = 𝑆 + 1, 𝐻𝑝 = 𝑆 + 1 𝑒𝑡 𝐷𝑝 = 𝐷

Tout comme l'empilement, le choix des hyperparamètres se fait selon un schéma classique :

• Pour la couche de convolution, les filtres sont de petite taille et glissés sur l'image d'un
pixel à la fois. La valeur du zero-padding est choisie de sorte que la largeur et la hauteur du
volume en entrée ne soient pas modifiées en sortie. En général, on choisit alors F=3, P=1,
S=1 ou F=5, P=2, S=1
• Pour la couche de pooling, F=2 et S=2 est un choix judicieux. Cela permet d'éliminer 75%
des pixels en entrée. On peut également trouver F=3 et S=2 : dans ce cas, les cellules se
chevauchent. Choisir des cellules de plus grande taille provoque une perte trop
importante d'informations, et donne de moins bons résultats en pratique

Voilà, vous avez les bases pour construire votre propre CNN ! En pratique, il est conseillé de
ne pas créer un réseau de neurones convolutif de A à Z pour résoudre votre problème : la
stratégie la plus efficace consiste à prendre un réseau existant qui classifie bien une large
collection d'images (comme ImageNet) et d'appliquer le Transfer Learning – voir la prochaine
section !

Univ-batan2 Dr. Merzougui Deep learning

Vous aimerez peut-être aussi