République Algérienne Démocratique Et Populaire
République Algérienne Démocratique Et Populaire
République Algérienne Démocratique Et Populaire
Thème
Noui Abdellah
3. Couche convolution ;
4. Application ;
7.Conclusion ;
8.Références ;
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 Conv Net 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.
1.1. Quelle est la différence entre un réseau de neurones et un réseau de
neurones convolutif ?
Les réseaux de neurones convolutifs désignent une sous-catégorie de réseaux de
neurones : ils présentent donc toutes les caractéristiques listées ci-dessus. 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.
Le premier bloc fait la particularité de ce type de réseaux de neurones, puisqu il fonctionne
comme un extracteur de features. Pour cela, il effectue du template matching en appliquant
des opérations de filtrage par convolution.
La première couche filtre image avec plusieurs noyaux de convolution, et renvoie des quot
feature maps quot , 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 q’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.
Le second bloc n’est pas caractéristique d’un CNN : il se retrouve en fait à la fin de tous les
réseaux de neurones utilisés pour la classification. 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
. Chaque élément est donc compris entre 0 et 1, et la somme de tous vaut 1. Ces probabilités
sont calculées par la dernière couche de ce bloc (et donc du réseau), qui utilise une fonction
logistique (classification binaire) ou une fonction softmax (classification multi-classe) comme
fonction d’activation.
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
2
2. Définition
Un réseau neuronal convolutif, également connu sous le nom de CNN ou ConvNet, est
une classe de réseaux neuronaux spécialisés dans le traitement de données présentant une
topologie en forme de grille, comme une image. Une image numérique est une représentation
binaire de données visuelles. Elle contient une série de pixels disposés à la manière d'une
grille, dont les valeurs indiquent la luminosité et la couleur de chaque pixel.
Son but est de repérer la présence d'un ensemble de features dans les images reçues en entrée.
Pour cela, on réalise un filtrage par convolution : le principe est de faire "glisser" une fenêtre
représentant la feature sur l'image, et de calculer le produit de convolution entre la feature et
chaque portion de l'image balayée. Une feature est alors vue comme un filtre : les deux termes
sont équivalents dans ce contexte.
On obtient pour chaque paire (image, filtre) une carte d'activation, ou feature map,
qui nous indique où se situent les features dans l'image : plus la valeur est élevée, plus
l'endroit correspondant dans l'image ressemble à la feature.
Le but est de se servir des valeurs présentes dans lefiltre à 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
Figure 1 Exemple d'une convolution dont la configuration est : Opération = Argument
maximale, pas horizontale = 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
On remarque que la sortie de la convolution, que l’on peut appeler «carte de caractéristiques»,
à des dimensions plus petites quecelle de l’image en entrée.
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:
Figure 2: Architecture d'un réseau de neurones convolutif.
On distingue deux parties, une première partieque l’on appelle la partie convolutive du
modèle et la seconde partie, que l’on vappeler la partie classification du modèle qui
correspond à un modèle MLP (Multi Layers Perceptron).
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ésentesursa première couche cachée 512 neurones. Cela a pour conséquences que sur la
première couche cachée uniquement nous avons plus de 13 millions de poids à calculer
(262.144 * 512 ). Ce n’est pas envisageable.
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ères, puis on garde au sein de chaque cellule la
valeur maximale. En pratique, on utilise souvent des cellules carrées de petite taille pour ne
pas perdre trop d'informations. Les choix les plus communs sont des cellules adjacentes de
taille 2×2 pixels qui ne se chevauchent pas, ou des cellules de taille 3×3 pixels, distantes les
unes des autres d'un pas de 2 pixels (qui se chevauchent donc).
On obtient en sortie le même nombre de feature maps qu'en entrée, mais celles-ci sont bien
plus petites.
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 !
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.90.1] signifie que l'image a 90%
de chances de représenter un chat.
Chaque valeur du tableau en entrée "vote" en faveur d'une classe. Les votes n'ont pas tous la
même importance : la couche leur accorde des poids qui dépendent de l'élément du tableau et
de la classe.
, 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.
Le réseau de neurones convolutif apprend les valeurs des poids de la même manière
qu'il apprend les filtres de la couche de convolution : lors de phase d'entraînement, par
rétropropagation du gradient.
4. Application
Voici quelques applications des réseaux neuronaux convolutifs utilisés aujourd'hui :
1. Détection d'objets : Avec le CNN, nous disposons désormais de modèles sophistiqués tels
que le R-CNN, le Fast R-CNN et le Faster R-CNN, qui constituent le pipeline prédominant
pour de nombreux modèles de détection d'objets déployés dans les véhicules autonomes, la
détection faciale, etc.
3.6.1 Python Python (Pilgrim et al., 2004), est un langage de programmation interprété open
source multiplateforme. Python a été inventé par un programmeur néerlandais et fan de
Monty Python Flying Circus Guido van Rossum, en 1991. En raison de sa structure
conviviale et lisible, il est de plus en plus populaire actuellement. C'est également l'un des
langages les plus populaires dans le domaine des SIG open source.
3.6.2 TensorFlow TensorFlow est une bibliothèque de logiciels open source développée par
Google Brain Team6 principalement à des fins de recherche sur les réseaux de neurones.
TensorFlow utilise le flux de données graphiques, où un nœud représente une opération
mathématique et un arc représente un tenseur (un tableau multidimensionnel). Une boîte à
outils pour la visualisation de ces graphiques est appelée TensorBoard. TensorFlow est
disponible pour les langages de programmation Python et C ++. Son utilisation optimise les
expressions mathématiques et comme il a été développé à des fins des réseaux de neurones, la
priorité a été consacrée à ce domaine et TensorFlow fournit beaucoup de fonctions utiles pour
l'apprentissage profond. Un bon point de départ est le livre Getting Started with TensorFlow
(Zaccone et al., 2016). Une documentation et des exemples sont également disponibles sur le
site officiel7 .
3 Keras Keras8 est une bibliothèque de logiciels open source écrite en Python et utilisant
TensorFlow, Microsoft Cognitive Toolkit, Theano ou MXNet comme bibliothèque de
manipulation de tenseur backend. Keras est à nouveau développé dans le but d'un
apprentissage profond. Sa fonction puissante est le contenu des objets extensibles permettant
de définir différents types de couches, modèles, fonctions de perte et autres outils largement
utilisés dans le domaine des ANNs.
6. Conclusion
https://openclassrooms.com/fr/courses/4470531-classez-et-segmentez-des-donnees-visuelles/
5083336-decouvrez-les-differentes-couches-dun-cnn
https://towardsdatascience.com/convolutional-neural-networks-explained-9cc5188c4939