Les réseaux de neurones convolutifs.

im.jpg

Qu'est-ce que la convolution ?

La convolution est un outil mathématique simple qui est très largement utilisé pour le traitement d’image, ce qui explique que les réseaux de neurones à convolution sont particulièrement bien adaptés à la reconnaissance d’image. La convolution agit comme un filtrage. On définit une
taille de fenêtre qui va se balader à travers toute l’image (rappelez-vous qu’une image peut être vue comme étant un tableau). Au tout début de la convolution, la fenêtre sera positionnée tout en haut à gauche de l’image puis elle va se décaler d’un certain nombre de cases (c’est ce que l’on appelle le pas) vers la droite et lorsqu’elle arrivera au bout de l’image, elle se décalera d’un pas vers le bas ainsi desuite jusqu’à ce que le filtre est parcourue la totalité de l’image :

 Schéma du parcours de la fenêtre de filtre sur l'image.

Schéma du parcours de la fenêtre de filtre sur l'image.

Le but est de se servir des valeurs présentes dans le filtre à chaque pas. Par exemple si l’on définit une fenêtre 3 par 3, cela représentera 9 cases du tableau (c’est à dire 9 pixels). La convolution va effectuer une opération avec ces 9 pixels. Il peut s’agir de n’importe quelle opération, par exemple on extrait la valeur la plus grande (soit le pixel avec la plus grande valeur).

 Exemple d'une convolution dont la configuration est : Opération = Argument maximale, pas hrizontale = 1 pixel, pas vertical = 1 pixel.

Exemple d'une convolution dont la configuration est : Opération = Argument maximale, pas hrizontale = 1 pixel, pas vertical = 1 pixel.

On fait glisser la fenêtre en orange et à chaque pas on récupère la valeur la plus grande parmi les 9 valeurs de pixels.
On remarque que la sortie de la convolution, que l’on peut appeler «carte de caractéristiques», à des dimensions plus petites que celle de l’image en entrée.

Les réseaux de neurones convolutifs :

Les réseaux de neurones convolutifs sont directement inspirés du cortex visuel des vertébrés. Un réseau de neurones à convolution, appelé aussi convnet (pour «Convolutional Network»), ou encore CNN (pour «Convolutional Neural Network») se représente en général sous la forme suivante:

 Architecture d'un réseau de neurones convolutif.

Architecture d'un réseau de neurones convolutif.

On distingue deux parties, une première partie que l’on appelle la partie convolutive du modèle et la seconde partie, que l’on va appeler la partie classification du modèle qui correspond à un modèle MLP (Multi Layers Perceptron).

À quoi sert la partie convolutive des modèles CNN ?

Prenons un exemple simple. Imaginons qu’en entré de notre réseau de neurone, nous avons une image quelconque de 512 pixels de coté. Cette image comporte donc 262.144 pixels (512*512). Imaginons maintenant que nous n’avions jamais entendu parlé des CNN et que nous utilisons donc un réseau de neurones profond classique (MLP). Ce réseau, par exemple, présente sur sa première couche cachée 512 neurones. Cela aurait pour conséquences que sur la première couche cachée uniquement nous ayons plus de 13 millions de poids à calculer (262.144 * 512 ). Ce n’est pas envisageable.
Le CNN et en particulier sa partie convolutive permet de palier ce problème. Cela va  grandement diminuer le nombre de poids à calculer dans le modèle. En effet, comme nous l’avons vu ci-dessus, la convolution va avoir pour effet de réduire la dimension de «la carte de caractéristiques» que l’on obtient après convolution (en comparaison avec la taille de l’image en entrée). Si l’on répète ce processus plusieurs fois, en prenant comme nouvelle entrée (sur laquelle nous allons effectuer la convolution) la sorti de la convolution précédente, nous allons diminuer de plus en plus la taille de la carte de caractéristiques, et donc nous diminuons également le nombre de poids à calculer.
Si vous avez bien saisie la notion de convolution et le principe de fonctionnement des MPL, vous remarquerez que la convolution à pour avantage de n’avoir que quelques poids à calculer(ceux du filtre) et qu’elle les réutilises pour l’ensemble de l’image, tandis que les MLP vont avoir un poids unique à calculer pour chaque neurone. Cela réduit encore considérablement le nombre de calculs.


Pour simplifier l’explication du processus de la couche de convolution, je n’ai parlé que d’image et de carte de caractéristiques en 2D. Mais il faut savoir qu’une image se représente en 3D, il y a 2 dimensions qui correspondent à la largeur et à la hauteur de l’image et une troisième dimension qui correspond à la composante couleur (Rappelez-vous: un pixel est composé d’une composante rouge, d’une verte et d’une bleu). Ainsi uni image sera un tableau 3D de taille: (largeur, hauteur, 3).
Lorsque l’on effectuera une convolution sur une image nous aurons donc en sortie 3 cartes de caractéristiques (une pour chaque composante couleur). Il faut savoir également que nous pouvons effectuer plusieurs convolution sur une même image (ou sur une même carte de caractéristiques), l’idée est que chaque convolution que l’on effectuera sur une image
correspondra à une caractéristiques en particulier de cette image. Finalement en sortie d’une première convolution d’une image nous aurons 3 * nombre de caractéristiques choisies (3 = composante rouge , verte et bleu de l’image), cartes de caractéristiques différentes en sorties. C’est pour cela que sur l’image ci dessus, on observe plusieurs cartes les unes derrières les autres (en bleu) à la sortie de chaque convolution.

À la sortie de la partie convolutive nous avons donc un long vecteur qui comprend les caractéristiques les plus pertinentes de l’image. Nous connectons chaque valeur de ce vecteur à un neurone du réseau de neurone de la partie classification, que l’on appel réseau de neurone entièrement connecté (MLP). Cette partie agit donc comme un MLP (voir fonctionnement d’un MLP) et permet de classer les différentes classes que l’on souhaite classer.


La bonne approche lorsque l’on travail avec des images sera donc d’utiliser les CNN.

Vous avez un projet et vous pensez que le Deep learning peut améliorer vos résultats, contactez-nous !

Posted on April 17, 2018 and filed under Intelligence artificielle.