Vous êtes sur la page 1sur 14

République Algérienne Démocratique et Populaire

Ministère de l'Enseignement Supérieur et de la


Recherche Scientifique
Université Mostapha Ben Boulaid
Faculté de Technologie

Département de Génie Industriel


Filière Génie Industriel

Option INGENIERIE LOGISTIQUE (Master 1)

  Travaux d'Etude et de Recherche (TER)

Thème

Les réseaux convolutifs


de neurones(CNN)
convolutifs
  CNN

Réalisé par Dirigé par


Zireg Khadija Mr. HASSAN BOUZGOU

Noui Abdellah

Année universitaire : 2021/2022


Sommaire

1. Introduction (Motivation:apprendre les features) ;

2. Réseau de neurones à convolution CNN (définition) ;

3. Couche convolution ;

3.1. La couche de convolution ;

3.2 Couche pooling ;

3.3 Couche fullconnected ;

4. Application ;

5 Quelques plateformes d’implémentation des réseaux de neurones  ;

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.

Le cerveau humain traite une énorme quantité d'informations à la seconde où nous


voyons une image. Chaque neurone travaille dans son propre champ réceptif et est connecté à
d'autres neurones de manière à couvrir l'ensemble du champ visuel. De même que, dans le
système de vision biologique, chaque neurone ne répond aux stimuli que dans la région
restreinte du champ visuel appelée champ réceptif, chaque neurone d'un réseau CNN traite
également les données uniquement dans son champ réceptif. Les couches sont disposées de
telle sorte qu'elles détectent d'abord les motifs simples (lignes, courbes, etc.) et ensuite les
motifs plus complexes (visages, objets, etc.). En utilisant un CNN, on peut donner la vue aux
ordinateurs.

3. Architecture des réseaux neuronaux convolutifs


Un CNN comporte généralement trois couches : la couche de convolution, la couche
de pooling et la couche fully-connected.
3.1. La couche de convolution
La couche de convolution est l'élément central du CNN. Elle concentre la majeure
partie de la charge de calcul du réseau.

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. 

La couche de convolution reçoit donc en entrée plusieurs images, et calcule la


convolution de chacune d'entre elles avec chaque filtre. Les filtres correspondent exactement
aux features que l'on souhaite retrouver dans les images. 

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. 

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

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

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 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.

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 calculs :
figure 3: la carte de caractéristiques

3.2. La couche de pooling


La couche de pooling 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è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.

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.

3.3. La couche fully-connected


La couche fully-connected 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ù Nest 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.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.

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.

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.

La couche fully-connected détermine le lien entre la position des features dans l'image et


une classe. En effet, le tableau en entrée étant le résultat de la couche précédente, il
correspond à une carte d'activation pour une feature donnée : les valeurs élevées indiquent la
localisation (plus ou moins précise selon le pooling) de cette feature dans l'image.
Si la localisation d'une feature à un certain endroit de l'image est caractéristique d'une certaine
classe, alors on accorde un poids important à la valeur correspondante dans le tableau.

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.

2. Segmentation sémantique : En 2015, un groupe de chercheurs de Hong Kong a développé


un Deep Parsing Network basé sur le CNN pour intégrer des informations riches dans un
modèle de segmentation d'images. Des chercheurs de l'UC Berkeley ont également construit
des réseaux entièrement convolutifs qui ont amélioré grandement la segmentation sémantique.
3. Sous-titrage d'images : Les CNN sont utilisés avec des réseaux neuronaux récurrents pour
rédiger des légendes d'images et de vidéos. Cela peut être utilisé pour de nombreuses
applications telles que la reconnaissance d'activités ou la description de vidéos et d'images
pour les malvoyants. Cette technique a été largement déployée par YouTube pour donner un
sens au nombre considérable de vidéos téléchargées régulièrement sur la plateforme.

5.Quelques plateformes d’implémentation des réseaux de


neurones
Cette section introduit brièvement les technologies que nous avons adopté dans cette
thèse. Le langage Python et ses librairies TensorFlow et Kears seront ainsi introduits,
permettant la satisfaction du bas niveau de notre outil semi-automatique d’annotation.

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

Un examen détaillé de l'application des algorithmes de vision par ordinateur de


l'apprentissage profond est étudié dans le cadre de la résolution du problème de l’annotation
des vidéos du web dans le domaine du football. Dans ce chapitre, l'accent est mis sur l'analyse
vidéo, où le problème de détection d'objet a été discuté à la base d’étude de l’apprentissage
profond. Nous avons présenté les différentes architectures de la littérature, ceci nous a permis
de discuter par la suite les CNNs pour la vision par ordinateur. Entre autres, la classification
est une base de détection d’objets dans les images de la vidéo, nous avons dans cette partie
discuté les différentes architectures où nous nous sommes approfondis plus sur le Mask
RCNN comme c’est l’architecture de base pour notre travail de recherche. A la fin du
chapitre, nous avons présenté quelques technologies pour implémenter notre outil semi-
automatique d’annotation des vidéos du web. Nous allons voir dans le chapitre 4 suivant un
état de l’art détaillé de l’annotation et la recherche de vidéos sur le web
8. Références
https://towardsdatascience.com/simple-introduction-to-convolutional-neural-networks-
cdf8d3077bac

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

Vous aimerez peut-être aussi