Vous êtes sur la page 1sur 65

Département d’informatique

Licence fondamentale : Sciences Mathématique et Informatique


2021-2022

Projet de Fin d’Etudes


Sur le thème :

APPLICATION DE DEEP LEARNING POUR LA


DÉTECTION ET SUIVI D’OBJETS EN TEMPS RÉEL

Réalisé par :
AMMARI Abdelhafid
ICHMAWIN Hamza

Encadré par :
ISMAILI ALAOUI El Mehdi

Soutenu le 18 juillet 2022 devant le jury:

Mr. ISMAILI ALAOUI El Mehdi Faculté des Sciences, Meknès


Mr. BOURRAY Hamid Faculté des Sciences, Meknès
Mr. EL BELRHITI EL ALAOUI Abdelbaki Faculté des Sciences, Meknès

Faculté des Sciences, B.P. 11201 Zitoune Meknès, Maroc.


Tel: +212 5 35 53 73 21, Fax: +212 5 35 53 68 08, http://www.fs-umi.ac.ma.
ii
Avant-propos

Tout d’abord, ce travail ne serait pas aussi riche et n’aurait pas pu avoir le jour sans l’aide et l’encadrement
de Mr ISMAILI ALAOUI El Mehdi, on le remercie pour la qualité de son encadrement exceptionnel,
pour sa patience, sa rigueur et sa disponibilité durant notre préparation de ce PFE. Nous adressons
également nos remerciements à tous les membres du jury pour avoir agréé d’évaluer ce travail. Nos
profonds remerciements vont également à toutes les personnes qui nous ont aidés et soutenue de près ou de
loin pour la réalisation de ce projet.
Table des matières

Table des matières v

Liste des figures vii

Chapitre 1 : Introduction général 1

Chapitre 2 : Reseau de neurones 3


2. 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. 2 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. 3 Perceptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. 3. 1 Perceptron lineaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. 3. 2 Biais Perceptron affine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2. 3. 3 Recapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2. 4 Descente de gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2. 4. 1 Fonction associee a un reseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2. 4. 2 Descente de gradient classique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. 4. 3 Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2. 5 Rétropropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2. 5. 1 Objectif du réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2. 5. 2 Descente de gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2. 5. 3 Prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Chapitre 3 : Réseau de neurones convolutif à apprentissage profond 21


3. 1 Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3. 2 Réseau de neurones convolutif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3. 2. 1 Qu’est ce qu’un réseau de neurones convolutif ? . . . . . . . . . . . . . . . . . . . . 24
vi TABLE DES MATIÈRES

3. 2. 2 Les différentes couches d’un CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


3. 3 Apprentissage par transfert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Chapitre 4 : Detection des objets basée sur le CNN: État de l’art 31


4. 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4. 2 R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4. 2. 1 Les concepts importants de RCNN . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4. 2. 2 RCNN Comment ça marche ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4. 2. 3 Exemple de motivation de la detection à l’aide de R-CNN . . . . . . . . . . . . . . 36
4. 3 Fast R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4. 4 faster R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4. 5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Chapitre 5 : Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
Implementation 43
5. 1 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5. 1. 1 Architecture RPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5. 1. 2 La méthode Faster R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5. 2 Environnement software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5. 3 Développement de l’application de detection d’objet . . . . . . . . . . . . . . . . . . . . . 49
5. 4 Résultats expérimentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5. 5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Chapitre 6 : Conclusion générale 55

Bibliographie 57
Liste des figures

2.1 chiffres manuscrits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3


2.2 exemples d’entrainement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 courbe du fonction de marche de Heaviside . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 perceptron linéaire avec fonction de marche de Heaviside . . . . . . . . . . . . . . . . . . . 7
2.5 représentation un perceptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6 perceptron linéaire et biais avec fonction de marche de Heaviside . . . . . . . . . . . . . . . 8
2.7 représentation un perceptron avec biais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.8 perceptron avec deux deux entrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.9 un neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.10 représentation primitif d’un reseau de neuron . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.11 courbe d’une fonction de deux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.12 lignes de niveau d’un point de départ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.13 deuxième pas de gradient descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.14 plusieur pas de gradient descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.15 direction de changement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.16 meilleur choix de delta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.17 minimum global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.18 régression lineaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.19 deux types de points dans l’espace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.20 réseau de neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1 Architecture d’un réseau de neurone convolutif . . . . . . . . . . . . . . . . . . . . . . . . 24


3.2 Exemple de convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Fonctionnement du max-pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 Fonction d’activation ReLu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
viii LISTE DES FIGURES

4.1 formule pour calculer IOU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


4.2 recherche sélective partie 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 recherche sélective partie 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4 recherche sélective partie 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5 Algorithme de recherche selective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6 Fonctionnement de l’algorithme NMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7 Support Vector Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.8 L’algorithme de R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.9 Algorithme de Fast R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.10 Algorithme de Faster R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.11 Exemple d’Anchor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5.1 Les ancres possibles dans la carte des caractéristiques. . . . . . . . . . . . . . . . . . . . . 44


5.2 Pipeline du Faster R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 logo du python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4 logo du colab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5 logo du openCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.6 logo du tensorflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.7 logo du numpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.8 Architecture VGG16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.9 Courbe de précision de vgg16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.10 Resultat de detection 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.11 Resultat de detection 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.12 Resultat de detection 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
C HAPITRE 1

I NTRODUCTION GÉNÉRAL

La vision par ordinateur est à la base de tout système de vision artificielle. C’est une branche de
l’intelligence artificielle dont l’objectif est de permettre à une machine d’analyser, traiter et comprendre
une ou plusieurs images prises par un système d’acquisition (caméras, etc.). Le suivi d’objets est l’un des
sujets de recherche les plus importants et les plus difficiles en vision par ordinateur et a été appliqué avec
succès dans un large éventail d’applications réelles, comme la vidéosurveillance et la robotique. Le suivi
d’objet est un domaine de recherche dont les premiers travaux remontent à la fin des années 80 et dont les
grands progrès ont été réalisés ces dernières années. De nos jours, le suivi d’objets dans une séquence
vidéo est classé parmi les sujets de recherche les plus actifs. Le but central du suivi est d’estimer au fil du
temps la localisation de l’objet cible dans chacune des images d’une séquence vidéo.

Le suivi d’objets reste une tâche complexe et difficile en raison de nombreux défis liés aux limitations des
capteurs de vision (faible cadence d’image, basse résolution, faible dynamique par pixel, distorsions des
couleurs, bruit, etc), aux objets (objets non rigides, nombre d’objets variant au fil de temps, occultations
entre objets, petites tailles d’objets, etc), aux exigences des scénarios applicatifs (fonctionnement en temps
réel, haute fiabilité du système, etc) et à l’environnement (variation d’éclairage, occultations causées par
l’environnement, etc). De plus, la prolifération de données vidéo et de nouveaux dispositifs d’acquisition
de données ont suscité un grand intérêt pour la construction d’algorithmes de suivi plus intelligents. De
nombreux algorithmes de suivi d’objet ont été proposés dans la littérature pour faire face à ces défis et pour
assurer une bonne qualité de suivi, certains utilisent des modèles générateurs tandis que d’autres utilisent
des modèles discriminants. Cependant, Il n’existe aucune méthode de suivi unique qui peut être appliquée
avec succès à tous les scénarios.

Les applications du monde réel démontrent l’importance de la détection et suivi d’objets en temps réel pour
les entreprises, les secteurs du divertissement, des transports, des soins de santé et dans la vie quotidienne.
parmis ces applications on a: Google Translate qui permet aux utilisateurs de pointer la caméra d’un
2 CHAPTER 1 — Introduction général

smartphone vers un panneau dans une autre langue et d’obtenir presque immédiatement une traduction du
panneau dans la langue de leur choix, on a aussi la conduite autonome qui permis aux voitures autonomes
de fonctionner sur les routes, Les véhicules s’appuient sur cette technologie pour savoir quand les piétons
traversent et quand d’autres voitures sont à proximité.

Ce PFE se présente sous forme de quatres chapitres :


• Premier chapitre :
Dans ce premier chapitre, nous commencerons par étudier les réseaux de neurone artificiels. Ainsi
que la méthode de descente de gradient. Et nous finirons avec la descente de gradient appliquée aux
réseaux neuronaux (rétro propagation).
• Deuxième chapitre :
Dans ce chapitre, nous discutons ce que signifie le deep Learning et c’est quoi leur intérêt. Et après
nous allons nous focaliser sur l’un des algorithmes les plus performants du Deep Learning, les re-
seaux de neuron convolutionnel ou CNN.
• Troisième chapitre
Ce chapitre présente les algorithmes basé sur cnn (rcnn, fast rcnn et faster rcnn) qui sont conçu pour
la detection des objets (location et classification des objets dans une image entré).
• Dernier chapitre :
dans ce chapitre, nous allons créer notre détecteur d’objets en utilisant faster RCNN, et on va le testé
avec des exemples d’images d’entrées.
Nous terminerons ce PFE par une conclusion générale et des perspectives.
C HAPITRE 2

R ESEAU DE NEURONES

Préambule
e cerveau humain est composé de plus de 80 milliards de neurones. Chaque neurone reçoit des signaux
L électriques d’autres neurones et réagit en envoyant un nouveau signal à ses neurones voisins. Dans ce
premier chapitre, nous commencerons par étudier les réseaux de neurone artificiels et leur fonctionnement.
Ensuit en passe a la méthode de descente de gradient qui consiste à trouver le minimum d’une fonction de
plusieurs variables le plus rapidement possible. Et nous finirons avec la descente de gradient appliquée aux
réseaux neuronaux (rétro propagation).

2. 1 Introduction
Le système visuel humain est l’une des merveilles du monde. Considérez la séquence suivante de chiffres
manuscrits:

FIGURES 2.1 – chiffres manuscrits

La plupart des gens reconnaissent sans effort ces chiffres comme 504192, tout le travail que fait notre
cerveau pour reconnaître ces chiffres est fait inconsciemment, Et donc nous n’apprécions généralement pas
à quel point nos systèmes visuels résolvent ce problème de reconaisence de chiffres manuscrits.
La difficulté de la reconnaissance visuelle des formes devient évidente si vous essayez d’écrire un pro-
gramme pour reconnaître des chiffres comme ceux ci-dessus, Des intuitions simples sur la façon dont nous
reconnaissons les formes (un 9 a une boucle en haut et un trait vertical en bas à droite) s’avèrent pas si
4 CHAPTER 2 — Reseau de neurones

simples à exprimer de manière algorithmique.


Les réseaux de neurones abordent le problème d’une manière différente. L’idée est de prendre un grand
nombre de chiffres manuscrits, connus sous le nom d’exemples d’entrainment, puis de développer un sys-
tème qui peut apprendre par ces exemples de d’entrainment;En d’autres termes, le réseau de neurones utilise
ces exemples pour déduire automatiquement des règles de reconnaissance des chiffres manuscrits.

FIGURES 2.2 – exemples d’entrainement

cette idée peuvent être appliquées à d’autres problèmes de classification (classifier les emails spams,
classer les images d’animaux...). pour l’instant, nous pouvons considérer un réseau neuronal comme une
fonction qui prend des entrées et nous donne une sortie. dans ce chapitre, nous apprendrons comment un
réseau neuronal apprend à partir des exemples d’entrainment.

2. 2 Historique
• Neurone en biologie.Entre 1840 et 1900 on découvre que la cellule est l’élément fondamental du
vivant; par observation, Santiago Ramón y Cajal et d’autres mettent en évidence que les cellules
du système nerveux forment un réseau : les neurones. On sait maintenant que le cerveau humain
contient entre 80 et 100 milliards de neurones, mais nous avons aussi 500 millions de neurones
dans le ventre (soit autant que dans le cerveau d’un chien). Un neurone est composé d’un élément
central prolongé par un axone au bout duquel se trouvent les synapses. Les neurones sont organisés
en réseau, un neurone étant en moyenne relié à 10 000 autres neurones et transmet ainsi un signal
CHAPTER 2 — Reseau de neurones 5

électrique à tous ses neurones voisins.

• De la biologie vers l’informatique. À la fin des années 1940, Donald Hebb émet l’hypothèse que lors
de l’apprentissage certaines connexions synaptiques se renforcent et que ce renforcement persiste.
Un modèle mathématique est déduit par Frank Rosenblatt : le perceptron (1958). L’algorithme est
mis en œuvre dans une machine dédiée à la reconnaissance d’images. Le perceptron, qui correspond
à un réseau formé d’un seul neurone, montre très vite ses limites à la fois théoriques (puisqu’il ne
peut réaliser le «ou exclusif») et aussi en termes de résultats pratiques. Ces deux problèmes sont
résolus en considérant des réseaux à plusieurs couches, mais les calculs à mener sont trop longs à la
fois en raison de la puissance des ordinateurs de l’époque et des algorithmes utilisés.

• Rétropropagation. Un progrès important est fait grâce l’algorithme de rétropropagation (par Rumel-
hart, Hinton et Williams en 1986) qui permet un calcul efficace des poids des neurones. On conserve
encore aujourd’hui ce principe : des calculs essentiellement numériques, avec un minimum de
calculs symboliques au niveau de chaque neurone (afin de calculer la dérivée), le tout avec un
grand nombre d’itérations. Des améliorations se succèdent : pooling, dropout, calculs en parallèle,
meilleures descentes de gradient.

• Hiver. Cependant les attentes de l’intelligence artificielle (peut être le nom a-t-il été mal choisi?) sont
largement déçues car ses applications restent limitées. L’intérêt des scientifiques diminue drastique-
ment. De 1980 à 2000 on parle de l’hiver de l’intelligence artificielle.

• Deep learning. À partir des années 2000 et surtout après 2010 les réseaux de neurones font des
progrès fulgurants grâce à l’apprentissage profond. Yann Le Cun démontre l’efficacité des couches
de convolution pour la reconnaissance des chiffres. On réalise et entraîne alors des réseaux ayant
de plus en plus de couches grâce à des progrès matériels (par exemple le calcul sur les processeurs
graphiques GPU) mais surtout grâce aux couches de convolution qui extraient des caractéristiques
abstraites des images.

• Présent et avenir. Les réseaux de neurones s’appliquent à de nombreux domaines : la reconnaissance


d’images (par exemple la détection de cancer sur une radiographie), les transports (par exemple la
conduite autonome des voitures), les jeux (les ordinateurs battent les champions du monde d’échecs,
de go et des jeux vidéos les plus complexes), l’écriture (classement, résumé, traduction)... Il persiste
cependant une certaine méfiance vis à vis des décisions prises par une machine (sentence de justice,
diagnostic médical, publicité ciblée). Une meilleure compréhension du fonctionnement des réseaux
de neurones par tous est donc indispensable !
6 CHAPTER 2 — Reseau de neurones

2. 3 Perceptron

2. 3. 1 Perceptron lineaire
Le principe du perceptron linéaire est de prendre des valeurs en entrées, de faire un calcul simple et de
renvoyer une valeur en sortie. Les calculs dépendent de paramètres propres à chaque perceptron.

Le calcul effectué par un perceptron se décompose en deux phases : un calcul par une fonction linéaire
f, suivi d’une fonction d’activation φ.

Détaillons chaque phase.

• Partie linéaire. Le perceptron est d’abord muni de poids a1 ...an qui déterminent une fonction linéaire

f(x1 ,x2 ...xn )=a0 +a1 x1 +a2 x2 +...+an xn

• Fonction d’activation. La valeur renvoyée par la fonction linéaire f est ensuite composée par une
fonction d’activation φ.
• Sortie. La valeur de sortie est donc φ(a1 x1 + a2 x2 + ... +an xn ).
CHAPTER 2 — Reseau de neurones 7

Il existe plusieurs fonctions d’activation apportant chacune des comportements différents (marche de Hea-
viside, sigmoïde , tangente hyperbolique, ReLU , etc.).

FIGURES 2.3 – courbe du fonction de marche de Heaviside

Voici ce que fait un perceptron linéaire de poids a1 , . . ., an et de fonction d’activation la fonction marche
de Heaviside :

FIGURES 2.4 – perceptron linéaire avec fonction de marche de Heaviside

On peut donc définir ce qu’est un perceptron. Un perceptron linéaire à n variables et de fonction d’ac-
tivation la fonction marche de Heaviside est la donnée de n coefficients réels a1 , . . . , an auxquels est
associée la fonction F : Rn → R définie par F = H ◦ f , c’est-à-dire :

F (x1 , ..., xn ) = φ(a1 x1 + ... + an xn + a0 )

Nous représentons un perceptron par une forme plus condensée : sous la forme d’un neurone, avec des
poids sur les arêtes d’entrées. Nous précisons en indice la fonction d’activation utilisée φ. Si le contexte est
clair cette mention est omise.
8 CHAPTER 2 — Reseau de neurones

FIGURES 2.5 – représentation un perceptron

2. 3. 2 Biais Perceptron affine


Pour l’instant notre perceptron à deux entrées sépare le plan en deux parties selon une droite passant par
l’origine. Nous allons plus loin avec le perceptron affine .
On modifie la définition du perceptron, sans changer le nombre d’entrées, mais en ajoutant un poids supplé-
mentaire. Dans le cas de n entrées il y a donc n + 1 poids :

• les coefficients a1 , ... , an ∈ R,

• et le biais a0 ∈ R,

qui définissent la fonction affine :

f (x1 , . . . , xn ) = a1 x1 + ... + an xn + a0 .

Comme auparavant, ce calcul est suivi de la fonction d’activation.

FIGURES 2.6 – perceptron linéaire et biais avec fonction de marche de Heaviside

On représente le neurone avec une nouvelle arête, pondérée par le biais. L’arête est terminée par un rond
pour signifier que cela ne correspond pas à une entrée.
CHAPTER 2 — Reseau de neurones 9

FIGURES 2.7 – représentation un perceptron avec biais

Dans le cas de deux entrées, les poids sont trois réels a, b (les coefficients) et c (le biais).

FIGURES 2.8 – perceptron avec deux deux entrés

La fonction f : R2 → R est la fonction affine f (x, y) = ax + by + c. Si la fonction d’activation est la


fonction marche de Heaviside, alors le perceptron affine définit une fonction F : R2 → R par la formule :

(
F (x, y) = 1 si ax + by + c > 0
F (x, y) = 0 sinon.

Un perceptron affine à deux entrées sépare donc le plan en deux parties, la frontière étant la droite d’équation
ax + by + c = 0. D’un côté de cette droite la fonction F vaut 1, de l’autre elle vaut 0.
10 CHAPTER 2 — Reseau de neurones

2. 3. 3 Recapitulatif
• le perceptron linéaire ou neurone artificiel, a un biais qui vaut 0, à la différence du perceptron
affine pour lequel le biais est un réel quelconque.
• les poids (weights) ou paramètres sont les coefficients a1 , . . . , an auxquels s’ajoute le biais.
• Un perceptron est la donnée des poids et d’une fonction d’activation .
• Chaque perceptron définit une fonction F qui est la composée d’une fonction affine f et d’une fonction
d’activation φ ; la fonction d’activation la plus utilisée dans ce chapitre est la fonction marche de
Heaviside .
• on utilise un perceptron lors d’une évaluation : pour une entrée (input) (x1 , ... , xn )∈ Rn , on calcule
la sortie (output) F(x1 , .. ,xn ) ∈ Rn (qui vaut 0 ou 1 dans le cas de la fonction marche de Heaviside).

FIGURES 2.9 – un neuron

2. 4 Descente de gradient
La méthode de descente de gradient permet de trouver le minimum d’une fonction de plusieurs variables
le plus rapidement possible. L’idée est très simple, on sait que le vecteur opposé au gradient indique une
direction vers des plus petites valeurs de la fonction, il suffit donc de suivre d’un pas cette direction et de
recommencer.

2. 4. 1 Fonction associee a un reseau


Pour un réseau de neurones R ayant n entrées (x1 , . . . , xn ) et une seule sortie, nous associons une
fonction F : Rn 7→ R, (x1 , . . . , xn ) 7→ F (x1 , . . . , xn ). La situation est en fait plus compliquée. Jusqu’ici
les paramètres du réseau étaient donnés. À partir de maintenant les variables du problème ne seront plus les
entrées mais les poids du réseau. Notons a1 , . . . , am ces poids (l’ensemble des coefficients et des biais).
Si l’entrée est fixée et que les poids sont les variables du réseau alors on pourrait considérer que ce même
réseau R définit la fonction Fe : Rm 7→ R, (a1 , . . . , am ) 7→ F(a1 , . . . , am )
CHAPTER 2 — Reseau de neurones 11

FIGURES 2.10 – représentation primitif d’un reseau de neuron

Ce dont nous aurons besoin pour la suite et que nous allons calculer dans ce chapitre c’est le gradient de
∂ F̃
Fe par rapport aux poids (a1 , . . . , am ), autrement dit, il s’agit de calculer : ∂aj

Pour concilier les deux points de vue (entrées et poids), on dira qu’un réseau de neurones ayant des
entrées (x1 ,...,xn ) et des poids (a1 ,...,am ) définit la fonction :

F̂ : Rn × Rm 7→ R
(x1 , ..., xn ), (a1 , ..., am ) 7→ F̂ (x1 , ..., xn , a1 , ..., am )

2. 4. 2 Descente de gradient classique


Imaginez-vous perdu en montagne. votre but est de rejoindre le refuge qui se trouve au point le plus bas
de vallée:

FIGURES 2.11 – courbe d’une fonction de deux variables

• Ou est le minimum ?
12 CHAPTER 2 — Reseau de neurones

On nous donne une fonction f de deux variables (a, b) et nous cherchons un point (amin , bmin ) en lequel
f atteint un minimum. Voici la méthode expliquée par des dessins sur lesquels ont été tracées des lignes de
niveau.

FIGURES 2.12 – lignes de niveau d’un point de départ

FIGURES 2.13 – deuxième pas de gradient descent

FIGURES 2.14 – plusieur pas de gradient descent

Figure(a). Au départ nous n’avons aucune information globale sur f. La seule opération que l’on s’autorise
c’est calculer grad f(a,b) en certains points.
Figure(b). On choisit un point (a0 ,b0 ) au hasard. Si on note c0 = f(a0 ,b0 ) la valeur de f en ce point, on sait
que la ligne de niveau (f=c0 ) passe par (a0 ,b0 ).
CHAPTER 2 — Reseau de neurones 13

Figure(c). On calcule en ce point le gradient de f. On trace l’opposé du gradient: -gradf (a0 , b0 ). On sait
d’une part que la ligne de niveau est orthogonale à ce gradient et surtout que dans la direction de
-gradf (a0 , b0 ), les valeurs de f vont diminuer.

FIGURES 2.15 – direction de changement

On se dirige alors dans la direction opposée au gradient d’un facteur δ (par exemple δ = 0.1). On arrive à un
point noté (a1 ,b1 ). Par construction, si δ est assez petit, la valeur c1 =f(a1 ,b1 ) est plus petite que c0 .
Figure(d).On recommence depuis (a1 ,b1 ). On calcule l’opposé du gradient en (a1 ,b1 ), on se dirige dans
cette nouvelle direction pour obtenir un point (a2 ,b2 ) où c2 =f(a2 ,b2 ) < c1 .
Figure(e).On itère le processus pour obtenir une suite de points (ak ,bk ) pour lesquels f prend des valeurs de
plus en plus petites.
Figure(f). On choisit de s’arrêter (selon une condition préalablement établie) et on obtient une valeur
approchée (aN ,bN ) du point (amin ,bmin ) en lequel f atteint son minimum. Èvidemment avec la vision
globale de la fonction, on se dit qu’on aurait pu choisir un point de départ plus près et que certaines
directions choisies ne sont pas les meilleures. Mais souvenez-vous que l’algorithme est « aveugle », il ne
calcule pas les valeurs de f en les (ak ,bk ) et n’a pas connaissance du comportement de f au voisinage de ces
points.

• Remarque sur le choix du delta


Remarque 1
Le choix du paramètre δ est important. Reprenons la fonction f définie par f (x) = x2 + 1 et testons
différentes « mauvaises » valeurs du pas δ (avec toujours a0 = 2).

FIGURES 2.16 – meilleur choix de delta


14 CHAPTER 2 — Reseau de neurones

• Pour δ = 0.9, la suite (ak ) tend bien vers amin = 0. Les ordonnées sont bien décroissantes mais
comme δ est trop grand, la suite des points oscille de part et d’autre du minimum.
• Pour δ = 1.1, la suite (ak ) diverge. Les ordonnées augmentent, la suite des points oscille et s’échappe.
Cette valeur de δ ne donne pas de convergence vers un minimum.
• Pour δ = 0.05, la suite (ak ) tend bien vers amin mais, comme δ est trop petit, il faudrait beaucoup
d’itérations pour arriver à une approximation raisonnable.

Remarque 2
Le choix du point de départ est également important surtout lorsqu’il existe plusieurs minimums locaux.
Soit la fonction f définie par :

f (a) = a4 − 5a2 + a + 10

Cette fonction admet deux minimums locaux. La suite (ak ) de la descente de gradient converge vers l’un de
ces deux minimums selon le choix du point initial a0 (ici δ = 0.02).

FIGURES 2.17 – minimum global

2. 4. 3 Optimisation
Nous allons d’une part résoudre des problèmes d’optimisation : quelle droite approche au mieux un
nuage de points, et d’autre part étudier comment améliorer le choix du pas δ.

• Faire varier le pas


On se concentre d’abord sur le choix du pas δ (learning rate).
CHAPTER 2 — Reseau de neurones 15

Rappelons tout d’abord que lorsque l’on se rapproche d’un point minimum, le gradient tend vers 0. Le vec-
teur δgradf (Pk ) tend donc vers 0 á l’approche du minimum, même si δ reste constant.
Cependant, il faut choisir δ ni trop grand, ni trop petit : δ ne doit pas être trop grand car sinon les points Pk
vont osciller autour du minimum, mais si δ est trop petit alors les points Pk ne s’approcheront du minimum
qu’au bout d’un temps très long. Une solution est de faire varier δ. Pour les premières itérations, on choisit
un δk assez grand, puis de plus en plus petit au fil des itérations.
Terminons par rappeler que le bon choix d’un δ ou des δk n’a rien d’évident, il s’obtient soit par test á la
main, soit par des expérimentations automatiques, mais á chaque fois il doit être adapté á la situation.

• régression lineaire y = ax + b
On considère un ensemble de N points Ai = (xi , yi ), i = 1, ..., N . L’objectif est de trouver l’équation
y = ax + b de la droite qui approche au mieux tous ces points. Précisons ce que veut dire approcher au
mieux : il s’agit de minimiser la somme des carrés des distances verticales entre les points et la droite.

FIGURES 2.18 – régression lineaire

La formule qui donne l’erreur est :

Remarquons que l’on a toujours E(a, b) ≥ 0. Si par exemple tous les points sont alignés, alors on peut
trouver a et b tels que E(a, b) = 0. Quand ce n’est pas le cas, on cherche a et b qui rendent E(a, b) le plus
16 CHAPTER 2 — Reseau de neurones

petit possible. Il s’agit donc bien ici de minimiser une fonction de deux variables (les variables sont a et b).
Nous allons appliquer la méthode de la descente de gradient á la fonction E(a, b). Pour cela nous aurons
besoin de calculer son gradient :

• Regression lineaire et neurone


Quel est le lien entre la régression linéaire et un neurone ? En fait, le neurone suivant a pour fonction asso-
ciée F (x) = ax + b.

Reformulons le problème de la régression linéaire ainsi : soit des données (xi , yi ), i = 1, ..., N . Il s’agit
de trouver pour le type de neurone choisi les coefficients a et b, tels que la fonction F associée au neurone
réalise au mieux ces données, c’est-á-dire

F (xi ) ' yi .

Vocabulaire :
• Chaque xi est une entrée,
• yi est la sortie attendue pour l’entrée xi ,
• F (xi ) est la sortie produite,
• Ei = (yi − F (xi ))2 est l’erreur pour l’entrée xi ,
• L’erreur totale est

• Vu que F (x) = ax + b, on retrouve bien pour E la forme de la fonction présentée précédemment.


CHAPTER 2 — Reseau de neurones 17

2. 5 Rétropropagation

La rétropropagation , c’est la descente de gradient appliquée aux réseaux de neurones.


Voici un jeu de données : des ronds bleus et des carrés rouges. Nous souhaitons trouver un modèle simple
qui caractérise ces données.

FIGURES 2.19 – deux types de points dans l’espace

Plus exactement, nous souhaiterions pouvoir dire pour chaque point du plan s’il devrait être colorié en
rouge ou bien en bleu et ceci pour des points qui ne sont pas dans les données de départ. De plus, nous
voulons ne rien faire à la main, mais que la réponse soit calculée par la machine !

2. 5. 1 Objectif du réseau

• Soit R un réseau de neurones.Celui-ci est défini par son architecture (le nombre de couches, le nombre
de neurones par couche), les fonctions d’activation et l’ensemble P = (a1 , a2 ,...) des poids de tous
les neurones.

• Á ce réseau R on associe une fonction F : Rn → Rp oú n est la dimension des entrées (de la première
couche) et p le nombre de neurones de la couche de sortie. Pour nous en suppose qu’il n’y a qu’une
seule sortie, c’est-à-dire p = 1 et F : Rn → R
18 CHAPTER 2 — Reseau de neurones

FIGURES 2.20 – réseau de neuron

• On dispose de données (Xi , zi ) (pour i=1,...,N) oú (Xi ∈ Rn ) est une entrée (de la forme X =
(x1 , ..., xn )) et zi ∈ R est la sortie attendue pour cette entrée.

• Le but est de trouver les poids du réseau afin que la fonction F qui lui est associée vérifie :

F (Xi ) ' zi pour tout i = 1, ..., N

• Pour mesurer précisément la performance de l’approximation, on définit une fonction erreur :

Ei avec Ei = (F (Xi ) − zi )2 )
P
E = 1/N

2. 5. 2 Descente de gradient
• Pour trouver les poids P = (a1 , a2 , ...). qui définissent le meilleur réseau R (autrement dit la meilleure
fonction F ), il suffit de minimiser l’érreur E, vue comme une fonction des poids P = (a1 , a2 , ...).).
Pour cela on utilise la méthode de la descente de gradie

• On part de poids initiaux P0 = (a1 , a2 , ...) , par exemple choisis au hasard. On fixe un pas δ.

• On construit par itérations des poids Pk selon la formule de récurrence :

Pk+1 = Pk − δgradE(Pk ).

 chaque itération, l’erreur E(Pk ) diminue. On s’arrête au bout d’un nombre d’itérations fixé â
l’avance.
CHAPTER 2 — Reseau de neurones 19

P
• Pour calculer le gradient gradE = 1/N gradEi , i , il faut calculer chacun des grad Ei , c’est-â-dire
les dérivées partielles par rapport â chacun des poids aj selon la formule :

∂Ei
∂aj (Xi ) = 2 ∂F
∂aj (Xi )(F (Xi − zi ))
i

2. 5. 3 Prédiction
La conception d’un réseau de neurones est réalisée en modélisant au mieux les données injectées. Mais
l’objectif réel est de faire des prédictions pour de nouvelles valeurs, jamais rencontrées auparavant. La des-
cente de gradient produit un ensemble de poids P qui définit complètement notre réseau R. Nous obtenons
donc une fonction F : Rn → Rp , construite de sorte que F (Xi ) ' zi . Nous pouvons évaluer cette fonction
pour tout X ∈ Rn , même pour des X différents des Xi .
C HAPITRE 3

R ÉSEAU DE NEURONES CONVOLUTIF À


APPRENTISSAGE PROFOND

Préambule
ans ce chapitre, nous discutons ce que signifie le deep Learning et c’est quoi leur intérêt. Et après
D nous allons nous focaliser sur l’un des algorithmes les plus performants du Deep Learning, les
Convolutional Neural Network ou CNN: Réseaux de neurones convolutifs en français, ce sont des modèles
de programmation puissants permettant notamment la reconnaissance d’images en attribuant automatique-
ment à chaque image fournie en entrée, une étiquette correspondant à sa classe d’appartenance.

3. 1 Deep Learning
Le deep learning est une branche du machine learning. Contrairement aux algorithmes classiques du
machine learning dont la capacité d’apprentissage est limitée quelle que soit la quantité de données acquise,
les systèmes de deep learning peuvent améliorer leurs performances en accédant à davantage de données :
une machine plus expérimentée.

• Comment fonctionne le deep learning ?


Les réseaux de deep learning sont entraînés sur la base de structures complexes de données auxquelles ils
sont confrontés. Ils élaborent des modèles de calcul composés de plusieurs couches de traitement pour créer
plusieurs niveaux d’abstraction afin de représenter les données.
Par exemple, le modèle de deep learning connu sous le nom de réseau neuronal convolutif peut être entraîné
à l’aide d’un grand nombre (des millions) d’images, des images représentant des chats par exemple. Ce
type de réseau neuronal tire son apprentissage des pixels contenus dans les images reçues. Il peut classer
22 CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond

des groupes de pixels en fonction des caractéristiques du chat telles que les griffes, les oreilles, les yeux
indiquant la présence de l’animal dans l’image.
Le deep learning est très différent du machine learning classique. Dans cet exemple, un expert dans ce
domaine passerait un temps considérable à mettre au point un système de machine learning capable de dé-
tecter les caractéristiques représentatives du chat. Avec le deep learning, il suffit de fournir au système un
très grand nombre d’images de chats pour qu’il en retienne de façon autonome les caractéristiques.
Pour de nombreuses tâches, comme la vision informatique, la reconnaissance vocale, la traduction auto-
matique et la robotique, les performances des systèmes de deep learning dépassent largement celles des
systèmes de machine learning classiques. Sans compter que la création de systèmes de deep learning est
également relativement plus facile. Même si la reconnaissance des caractéristiques a lieu de façon auto-
nome, il faut toutefois activer des milliers d’hyperparamètres (ou boutons) pour qu’un modèle de deep
learning devienne efficace.

• Pourquoi le deep learning est-il important ?


Nous vivons dans une époque où les possibilités sont infinies et la technologie de deep learning peut nous ai-
der à réaliser de nouvelles avancées technologiques. Le deep learning a permis la découverte d’exoplanètes
et de nouveaux médicaments ainsi que la détection de maladies et de particules subatomiques. Il augmente
considérablement notre compréhension de la biologie, notamment de la génomique, de la protéomique, de
la métabolomique et de l’immunomique.
Nous faisons sans cesse face à de nouveaux défis. Le changement climatique menace la production alimen-
taire et pourrait un jour provoquer des guerres face à la pénurie des ressources. Ce défi sera d’autant plus
grand que la population mondiale ne cesse de croître et devrait atteindre 9 milliards en 2050. La portée
et l’ampleur de ces problèmes nécessitent un nouveau niveau d’intelligence rendu possible grâce au deep
learning.
l’association des caméras qui agissent comme un œil artificiel et des réseaux neuronaux qui peuvent traiter
des informations visuelles capturées par les yeux est une véritable révolution pour les applications d’IA
pilotées par la donnée. le deep learning et les réseaux neuronaux permettront d’améliorer les capacités des
robots. Ils seront de plus en plus à même de comprendre leur environnement, de prendre des décisions au-
tonomes, de collaborer avec nous et d’augmenter nos propres capacités.

• Domaines d’application du deep learning:


Le deep learning est déjà utilisé dans un certain nombre de secteurs et est appelé à investir de nombreux
aspects de notre vie quotidienne à l’avenir.
Et de ces secteurs, nous avons:
CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond 23

• Assistants vocaux Le fonctionnement de divers assistants vocaux existants, comme Siri, Alexa ou
celui de Google, repose sur le deep learning. Cela leur permet d’étoffer de manière autonome leur
vocabulaire et de renforcer leur compréhension du langage.
• Traductions: L’apprentissage profond est déjà à l’œuvre dans certains programmes de traduction au-
tomatique. Cette technologie permet en effet de reconnaître automatiquement, à partir de fichiers
d’image, la langue d’un texte, ce qui n’était pas possible avec les anciennes applications d’appren-
tissage automatique, qui utilisaient des données structurées.
• Rédaction de textes: Un ordinateur est capable d’utiliser le deep learning pour rédiger un texte qui
soit non seulement grammaticalement et orthographiquement correct, mais également fidèle au style
d’un auteur donné - à condition bien sûr de recevoir suffisamment de matériel pour procéder à son
apprentissage. Certains systèmes d’IA ont ainsi rédigé des articles pour Wikipédia et produit des
textes aux sonorités shakespeariennes grâce à l’apprentissage profond.
• Cybersécurité: Les systèmes d’IA s’appuyant sur le deep learning sont particulièrement adaptés à la
détection d’irrégularités dans les activités d’un système en raison de leur capacité de se former en
continu et de manière autonome. C’est une méthode désormais éprouvée pour repérer d’éventuelles
attaques de pirates informatiques. Avec les systèmes de vidéosurveillance, les sites particulièrement
vulnérables aux vols, comme les aéroports par exemple, peuvent renforcer leur sécurité grâce à
l’intervention d’un ordinateur capable de repérer des anomalies dans le fonctionnement normal du
site au quotidien.
• Médecine: Les IA à apprentissage profond ont la capacité de scanner les images avec beaucoup plus
de précision qu’un œil humain, même entraîné. Par exemple, en imagerie de tomodensitométrie ou
de radiographie, il est possible d’utiliser des systèmes intelligents pour détecter les maladies plus tôt
qu’avant, ce qui améliore les chances de guérison des patients.
• detection des objets:La détection d’objet est une technique de vision par ordinateur dans laquelle un
système logiciel peut détecter, localiser et tracer l’objet à partir d’une image ou d’une vidéo donnée.
L’attribut spécial de la détection d’objet est qu’il identifie la classe d’objet (personne, table, chaise,
etc.) et leurs coordonnées spécifiques à l’emplacement dans l’image donnée. L’emplacement est
indiqué en dessinant une boîte englobante autour de l’objet. La boîte englobante (bounding box) peut
ou non localiser avec précision la position de l’objet. La possibilité de localiser l’objet à l’intérieur
d’une image définit les performances de l’algorithme utilisé pour la détection.

3. 2 Réseau de neurones convolutif


Dans cette section, nous discuterons la méthode de détection la plus courante CNN. Convolution Neural
Network (CNN ou ConvNet) est l’une des structures réseau les plus représentatives de la technologie d’ap-
24 CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond

prentissage en profondeur, ont été introduits pour la première fois par Fukushima et a connu un grand succès
dans le domaine du traitement et de la reconnaissance d’images. CNN c’est un algorithme multicouche il
a trois principaux types de couches partagé en deux partie. La première partie de ces couches consiste à
extraire les caractéristiques des images et la deuxième partie de CNN est un réseau de neurones sa tâche est
la classification des fonctionnalités

FIGURES 3.1 – Architecture d’un réseau de neurone convolutif

3. 2. 1 Qu’est ce qu’un réseau de neurones convolutif ?


Quelle est d’abord 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 : Cependant, les
CNN sont spécialement conçus pour traiter des images en entrée . Leur architecture est alors plus spéci-
fique : 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 ex-
tracteur de features. Pour cela, il effectue du template matching 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.
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’ac-
CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond 25

tivation.
Comme pour les réseaux de neurones ordinaires, les paramètres des couches sont déterminés par rétropro-
pagation 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.

3. 2. 2 Les différentes 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 . Dans ce chapitre, je vais
vous expliquer le fonctionnement de ces différentes couches.

• La couche de convolution
La couche de convolution est la composante clé des réseaux de neurones convolutifs, et constitue toujours
au moins leur première couche.
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 retrou-
ver 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 res-
semble à la feature.
Alors dans un couches avec filtre convolutionnel : on réalise un produit entre un filtre (un tableau à deux
dimensions dont les poids seront ajustés lors de l’apprentissage) et l’input de la couche. Ce filtre est géné-
ralement de dimension 3 × 3 ou 5 × 5. La multiplication de ces couches au sein du réseau va permettre
d’extraire des features de plus en plus complexes qui permettront in fine de prédire une classe d’apparte-
nance pour l’item présent dans l’image. C’est pourquoi on parle d’apprentissage profond .
26 CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond

FIGURES 3.2 – Exemple de convolution

Comment choisir les features ?


les features sont 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.

• La couche de 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è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’infor-
mations. 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.
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.
Alors dans un ouches avec pooling : elles permettent un undersampling qui va compresser la dimension de
l’image et réduire le coût computationnel des couches suivantes. En général on utilise une fonction maxi-
CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond 27

mum ou moyenne.

FIGURES 3.3 – Fonctionnement du max-pooling

• La couche de correction ReLU


ReLU (Rectified Linear Units) désigne la fonction réelle non-linéaire définie par ReLU (x) = max(0, x).

FIGURES 3.4 – Fonction d’activation ReLu

La couche de correction ReLU remplace donc toutes les valeurs négatives reçues en entrées par des
zéros. Elle joue le rôle de fonction d’activation.

• La couche fully-connected
La couche fully-connected constitue toujours la dernière couche d’un réseau de neurones, convolutif ou non
- elle n’est donc pas caractéristique d’un CNN.
Ce type de couche reçoit un vecteur en entrée et produit un nouveau vecteur en sortie. Pour cela, elle ap-
plique 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
28 CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond

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" (respec-
tivement "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 impor-
tance : la couche leur accorde des poids qui dépendent de l’élément du tableau et de la classe.
Chaque valeur du tableau en entrée "vote" en faveur d’une classe. Les votes n’ont pas tous la même impor-
tance : 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.
Comment connait-on la valeur de ces poids ?
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 ef-
fet, 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.

3. 3 Apprentissage par transfert


L’entrainement d’un réseau de neurones convolutif implique une puissance de calcul souvent massive
pour fonctionner. Plus il y a de couches, plus le nombre de paramètres à optimiser est élevé. Néanmoins, une
solution existe pour améliorer cette phase et ainsi réduire le temps d’apprentissage. C’est là qu’intervient
l’apprentissage par transfert ou Transfer Learning [TS10] en anglais. Cette méthode permet de faire du deep
learning sans avoir besoins d’y passer un mois de calcul. Le principe est de transférer les connaissances
acquises par un réseau de neurones lors de la résolution d’un problème afin de traiter un problème similaire.
L’apprentissage par transfert permet également d’éviter le surapprentissage. Lorsqu’on a peu de données, il
est déconseillé d’entraîner le réseau de neurones en partant de zéro. Il existe un grand nombre d’approches
de Transfer Learning. Pour cela, on peut généralement exploiter un réseau de neurone pré-entrainé de dif-
férentes manières. Dans les sous paragraphe suivants, les manières d’exploiter un réseau pré-entrainé seront
abordées.
CHAPTER 3 — Réseau de neurones convolutif à apprentissage profond 29

• Fine tuning total


La dernière couche entièrement connectée du réseau pré-entrainé est remplacée par un classifieur adapté au
nouveau problème et initialisé de manière aléatoire. On entraine ensuite toutes les couches sur de nouvelles
images.
Le fine tuning total doit être utilisé avec une très grande collection de nouvelles images, sinon on risque
le surapprentissage. L’utilisation de cette méthode permet à l’apprentissage d’être plus rapide. En effet, les
paramètres utilisés étant ceux du réseau pré-entrainé et non aléatoirement choisi.

• Extraction des caractéristiques


Cette méthode consiste à utiliser les features apprises par le réseau pré-entrainé pour représenter les images
du nouveau problème. La dernière couche entièrement connectée est également retirée et tous les autres pa-
ramètres sont fixés. Ce réseau tronqué va ainsi calculer la représentation de chaque image en entrée à partir
des features déjà apprises lors du pré-entraînement. On entraîne alors un classifieur initialisé aléatoirement
sur ces représentations pour résoudre le nouveau problème.
L’utilisation de cette méthode est conseillée lorsque les nouvelles images sont peu nombreuses et similaires
aux images de pré-entraînement. Cela permettra d’éviter le surapprentissage et de plus, si les nouvelles
images ressemblent aux anciennes, la représentation par les même features sera possible.

• Fine tuning partiel


Le fine tuning partiel consiste à utiliser un mélange des deux méthodes précédemment évoquées. La dernière
couche entièrement connectée est encore retirée pour être remplacée par un classifieur initialisée aléatoire-
ment. On fixe certains paramètres de certaines couches du réseau pré-entraîné. L’entrainement se fait donc
sur le classifieur et les couches non fixées qui sont généralement les couches hautes du réseau.
L’utilisation de cette méthode se fait lorsque la nouvelle collection d’images est petite mais très différente
des images du pré-entraînement. Comme les couches basses sont simples et génériques, les fixer ne pose
donc pas de problème.
C HAPITRE 4

D ETECTION DES OBJETS BASÉE SUR LE


CNN: É TAT DE L’ ART

Préambule
e chapitre présente les algorithmes basé sur cnn (rcnn, fast rcnn et faster rcnn) qui sont conçu pour la
C detection des objets (location et classification des objets dans une image entré).

4. 1 Introduction
La détection des objets et leur localisation dans une image sont des éléments importants de la recherche
courante en vision ordinateur. Cette discipline cherche à détecter dans une image les différents objets, leur
classe ainsi que leur position dans l’image. Puisque les CNN sont les modéles largement utilisés pour ac-
complir les tâches de traitement d’image et de vision par ordinateur, nous avons quelques bons modéles
également pour les tâches de détection d’objets basées sur CNN. Dans le cas de la détection d’objets où
CNN est trés utile, nous avons trois modéles CNN régionaux que nous appelons R-CNN, Fast R-CNN et
Faster R-CNN. Dans ce chapitre, on va discuter de ces trois modéles avec ces caractéristiques de base.

4. 2 R-CNN

4. 2. 1 Les concepts importants de RCNN


• Région d’intérêt (RoI) : Une région d’intérêt, ou plus familièrement connue sous le nom de propo-
sition de région ou proposition de boîte de délimitation, est une région rectangulaire dans une image
d’entrée qui contient potentiellement un objet. Ces propositions peuvent être générées par certains
32 CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art

algorithmes externes tels que la recherche sélective (selective search). Une région d’intérêt est repré-
senté comme un vecteur 4×1 contenant son emplacement central, sa largeur et sa hauteur (x, y, w, h).
Chaque région d’intérêt dans une image est accompagnée d’un score d’objectivité ou de confiance
de la probabilité que la région contienne un objet.
• Intersection sur Union (IoU): c’est une fonction qui prend deux région en entrée et nous donne la
fraction de leur intersection sur leur union.

FIGURES 4.1 – formule pour calculer IOU

il est utilisé pour mesurer à quel point deux régions se chevauchent.


• recherche sélective (selective search): c’est un algorithme qui prend une image en entrèe et nous
donne un ensemble de Région d’intérêts (les RoI):
1. on initialise n règion avec la mèthode de Felzenszwalb et Huttenlocher.

FIGURES 4.2 – recherche sélective partie 1

2. Crèez la variable S qui contient la paire de voisinage règion ri et rj et leur combinaison de


Similitude de couleur, texture, taille et le Fill Similarity valeurs .

FIGURES 4.3 – recherche sélective partie 2

3. Après avoir calculè S pour toutes les règions par paires avec similaritè, maintenant on va fusion-
ner en fonction de la similaritè.
CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art 33

FIGURES 4.4 – recherche sélective partie 3

• Tout d’abord, trouvez la paire de ri et rj qui contient la valeur de similaritè maximale.

• Fusionnez ces règions ri et rj appelèes rt .

• Maintenant, supprimez toutes les paires qui s’apparient avec la règion ri ainsi qu’avec rj .

• basè sur la nouvelle règion qui a ètè fusionnèe, calculera à nouveau la combinaison de quatre
valeurs de similaritè.

• Stockez la nouvelle valeur de similaritè dans la variable S après avoir calculè la règion par
paires de voisinage de rt et stockez les ensembles de règions fusionnèes rt dans la nouvelle
variable R.

FIGURES 4.5 – Algorithme de recherche selective

• suppression non maximal algorithm : cet algorithme fait deux choses:

• supprimer tous les région avec un score faible (par exemple 0,5), depent de la model choisir.
34 CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art

• il sélectionne la région avec le score maximum, puis il calcule IoU avec tous les autres région
appartenant à la même classe. Les région ayant un score IoU supérieur à 70% sont supprimés.
En d’autres termes, les région qui ont un chevauchement très élevé sont supprimées. Ensuite, la
région suivante avec le score le plus élevé est choisie et ainsi de suite jusqu’à ce que toutes les
région qui se chevauchent sont supprimés pour cette classe.

FIGURES 4.6 – Fonctionnement de l’algorithme NMS

• Machine à vecteurs de support (SVM): Les SVMs sont une famille d’algorithmes d’apprentissage
automatique ont pour but de séparer les données en classes à l’aide d’une frontière aussi «simple»
que possible, de telle façon que la distance entre les différents groupes de données et la frontière qui
les sépare soit maximale. Cette distance est aussi appelée «marge» et les SVMs sont ainsi qualifiés
de «séparateurs à vaste marge», les «vecteurs de support» étant les données les plus proches de la
frontière.

FIGURES 4.7 – Support Vector Machine

Dans cet espace à deux dimensions, la «frontière» est la droite noire, les «vecteurs de support» sont
les points entourés (les plus proche de la frontière) et la «marge» est la distance entre la frontière et
les droites bleue et rouge.
CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art 35

4. 2. 2 RCNN Comment ça marche ?

La détection d’objet nécessite la connaissance de la classe d’objet ainsi que l’emplacement et la taille du
cadre de sélection. La méthode classique utilise une fenêtre coulissante pour chercher dans chaque portion
de l’image. Toutefois, différents objets, voire un même type d’objet, peuvent avoir différentes tailles et for-
mat d’image, cela dépend de la distance qui le sépare de la camera. Le nombre d’emplacement à considérer
devient alors trop nombreux pour être classifié par un CNN.
Afin de contourner ce problème, R-CNN [CLTX16] propose la recherche sélective ou selective search en
anglais pour extraire seulement 2000 régions. La recherche sélective utilise des indices locaux tels que la
texture, la couleur, la taille de la région, la compatibilité des formes pour faire de la segmentation non basé
sur des objets. On obtient ainsi de nombreuses petites zones segmentées. Ensuite, on ajoute les cadres de
détection correspondants aux parties segmentées à la liste des propositions de région. Les régions voisines
sont regroupées en considérant le degré de similarité, afin de former des zones segmentées plus grandes.
Ainsi, environ 2000 propositions de région sont générées.
La classification par un CNN est ensuite effectuée pour chaque cadre de sélection, les propositions de ré-
gion sont alors tronquées et redimensionnées. Les 2000 propositions de région sont transformées en carrés
de taille fixe pour être ensuite introduites dans un CNN dont la sortie est un vecteur de caractéristiques de
4096 dimensions. Le CNN agit comme un extracteur de caractéristiques (features). Ces caractéristiques sont
introduites dans un SVM formé pour chaque classe afin de classifier la présence d’un objet. L’ensemble des
propositions de région classées est réduit à l’aide d’une suppression non maximale ou Non Maximum Sup-
pression (NMS). NMS trie les détections en fonction du score de confiance des objets, prend la détection de
score le plus élevé et supprime celles qui ont un Intersection Over Union ou IOU inférieur à un seuil.
En plus de prédire la présence d’un objet, l’algorithme prédit également quatre valeurs qui sont des valeurs
de décalage pour augmenter la précision du cadre de sélection. En effet, l’algorithme aurait pu prédire la
présence d’une personne, alors que le visage de cette personne est réduit de moitié. Dans ces cas, les valeurs
de décalages aident à ajuster le cadre de sélection de la proposition de région.

FIGURES 4.8 – L’algorithme de R-CNN


36 CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art

Le R-CNN n’est pas parfait et présente encore quelques défauts : l’entrainement du réseau prend beau-
coup de temps (il faut classifier 2000 propositions de région), l’implémentation pour une application en
temps réels n’est pas possible (47s pour chaque image test), l’algorithme de recherche sélective est un algo-
rithme fixe (génération de mauvaise propositions de région candidates).

4. 2. 3 Exemple de motivation de la detection à l’aide de R-CNN

Supposer que nous voulions exécuter une détection d’objet R-CNN sur l’image suivante:

La première étape du processus consiste à extraire des propositions de régions de l’image a l’aide de
selective searesh.
R-CNN extrait presque 2000 propositions de régions par image, qui se présenteraient comme suit :

R-CNN exécute chaque proposition via un réseau neuronal convolutif de grande capacité pour extraire
une représentation de caractéristiques apprises, qui contient idéalement des informations significatives sur
les objets de l’image.
Par exemple, l’algorithme prendrait une proposition telle que la suivante :
CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art 37

Cette proposition serait propagée vers l’avant via un réseau neuronal convolutif pour générer un vecteur
de caractéristiques de 4096 dimensions :

Ensuite, ce vecteur de caractéristiques est exécuté à travers une collection de machines à vecteurs de
support linéaires (SVM en abrégé), où chaque SVM est conçu pour classer une seule classe d’objets. Autre-
ment dit, il y a un SVM formé pour détecter les personne , un autre pour les car, etc.
Chaque SVM génère un score pour la classe donnée, indiquant la probabilité que la proposition de région
contienne cette classe.
Cette étape du processus se présente comme suit :
38 CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art

R-CNN étiquettera ensuite la proposition de région avec la classe correspondant au SVM le mieux noté,
dans ce cas chien .
la boîte englobante de la proposition est affinée à l’aide d’un algorithme qui s’appelle régresseur Bounding
box regressor .Cela pourrait ajuster la région de la manière suivante :

Une fois le processus terminé, l’objet détecté pour la région pourrait ressembler à ceci :
CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art 39

4. 3 Fast R-CNN
Fast-R-CNN [Gir15] est le premier successeur de R-CNN, conservant la plupart des notions fondamen-
tales de R-CNN et introduisant peu de raffinements. Dans Fast R-CNN, le CNN principal avec plusieurs
couches convolutives est appliqué à l’image pour la détection des caractéristiques avant de proposer des ré-
gions. Cela signifie qu’il ne nécessite pas plusieurs CNN sur plusieurs régions qui se chevauchent. Le SVM
est également remplacé par une couche Softmax, étendant ainsi le réseau neuronal pour les prédictions au
lieu de créer un nouveau modèle. Un autre raffinement a été la couche de mise en commun des régions
d’intérêt (RoI).

FIGURES 4.9 – Algorithme de Fast R-CNN

Le Fast R-CNN rapide est presque 10 fois plus efficace et précis que le R-CNN en termes de calcul,
car les propositions de région sont générées à partir de la carte des caractéristiques (Feature map) au lieu
de l’image d’origine. Cependant, les propositions de région étaient toujours détectées avec la méthode de
recherche sélective lente.

4. 4 Faster R-CNN
le rcnn n’est pas assez rapide pour être utilisé comme système en temps réel car il faut presque (47
secondes) pour générer une sortie sur une image d’entrée.Le goulot d’étranglement de l’architecture est un
algorithme de recherche sélective. Par conséquent, K He et al. a proposé une nouvelle architecture appelée
40 CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art

Faster R-CNN [RHGS15]. Il n’utilise pas de recherche sélective au lieu de cela, ils proposent un autre
algorithme de génération de proposition de région appelé Region Proposal Network.

FIGURES 4.10 – Algorithme de Faster R-CNN

L’architecture R-CNN plus rapide contient 2 réseaux:


1. Réseau de proposition de région (RPN)
2. Réseau de détection d’objets
Ce réseau de proposition de région prend en entrée la carte d’entités de convolution qui est générée par
la couche de base et génère les ancres générées par la convolution de fenêtre glissante appliquée sur la
carte d’entités en entrée. Pour chaque fenêtre glissante, le réseau génère le nombre maximum de k- boîtes
d’ancrage. Par défaut, la valeur de k = 9, 3 échelles et 3 proportions pour chacun des glissements différents
position dans l’image. Ces propositions de région sont ensuite passées dans une couche intermédiaire de 3*3
convolution et 1 padding,La sortie générée à partir de cette couche est transmise à deux couches de convolu-
tion 1*1 , la couche de classification et la couche de régression. la couche de régression a 4*N(W*H*(4*k))
paramètres de sortie (indiquant les coordonnées des boîtes englobantes) et la couche de classification a
2*N(W*H*(2*k)) paramètres de sortie ( dénotant la probabilité d’objet ou non d’objet ).
CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art 41

• Anchor
Faster RCNN [RHGS15] introduit l’idée d’anchors, afin de gérer les variations de format d’image et d’échelle
des objets. Un anchors est une boite, dans la configuration d’origine, Faster R-CNN [RHGS15] utilise neuf
anchors pour chaque emplacement.

FIGURES 4.11 – Exemple d’Anchor

cette figure montre neuf anchors dans la position (320,320) sur une image de taille (600,800). Les trois
couleurs représentent trois différentes tailles : 128×128 ,256×256 ,512×512 . Chaque couleur ont des rap-
ports hauteur/largeur de : 1:1, 1:2, 2:1.

• Région Proposal Network


Le RPN doit donc vérifier quelles emplacements contiennent un objet, il prend en entrée la carte de carac-
téristique et donne en sortie les emplacements du cadre de sélection et le score de confiance des objets pour
chaque emplacement. Dans un RPN, une fenêtre glissante est utilisée pour chaque emplacement situé sur la
carte de caractéristique et pour chacun de ces emplacements les 9 anchors vus précédemment sont utilisés
pour générer des propositions de régions.Une couche de classification génère 2k scores, qu’il y ait un objet
ou non et une couche de régression produit 4k pour les coordonnées, k ici représente le nombre de boîtes.
Pour une carte de caractéristique, de taille W × H , le nombre total de anchors est de W × H × k. Les
régions pouvant se chevaucher fortement, afin de réduire les redondances, la suppression non maximale est
utilisée sur des propositions de régions en fonction de leurs scores de classification, le seuil de IOU est fixé
à 0,7.
42 CHAPTER 4 — Detection des objets basée sur le CNN: État de l’art

4. 5 Conclusion
Les méthodes de détection d’objet utilisant les CNN [Fuk19] sont aujourd’hui très populaires. Ces tech-
niques se démarquent par l’extraction et la hiérarchisation automatiques des features. Ils sont également les
plus performants. Les CNN [Fuk19] sont composés de plusieurs couches qui peuvent être disposées de fa-
çons différentes afin de former différentes architectures. Cependant, concevoir un CNN [Fuk19] en partant
de zéro n’est pas envisageable pour tout un chacun car cela nécessite une puissance de calcul phénoménale.
Il faut alors se tourner vers une autre alternative qui est l’apprentissage par transfert. L’apprentissage par
transfert permet de modifier des modèles pré-entrainés comme celles de détection d’objet, pour la détection
de nouveaux objets. Le chapitre suivant sera consacré à la conception d’une application basée sur l’utilisa-
tion du transfert de connaissance sur un modèle de détection d’objet utilisant le Faster-RCNN [RHGS15].
Le chapitre suivant sera consacré à la realisation d’une application basée sur faster-RCNN [RHGS15].
C HAPITRE 5

D ÉTECTION ET SUIVI D ’ OBJETS EN TEMPS


RÉEL BASÉE SUR FASTER R-CNN:
C ONCEPTION ET I MPLEMENTATION

Préambule
ans ce chapitre, nous verrons comment appliquer la détection d’objets à l’aide de Deep Learning. Plus
D précisément, nous allons utiliser l’algorithme faster rcnn pour construire notre détecteur d’objets.
A la fin, nous examinerons les résultats de l’application du détecteur faster rcnn à des exemples d’images
d’entrées.

5. 1 Conception
Avant d’entrer dans l’implémentation, on va tout d’abord détailler la méthode Faster R-CNN qui fait
généralement référence à un pipeline de détection qui utilise le RPN comme algorithme de proposition de
région et Fast R-CNN comme ( Detection Network ). Puis on va expliquer la méthode de travail pour ce
mémoire.

5. 1. 1 Architecture RPN
C’est un petit réseau de neurones glissant sur la dernière carte de caractéristiques des couches de convo-
lution et prédire s’il y a un objet ou non et également prédire la boîte englobante de ces objets.

• Le réseau de proposition de région (RPN) commence par l’introduction de l’image d’entrée dans le
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
44 Implementation

CNN. L’image d’entrée est d’abord redimensionnée de telle sorte que son côté le plus court soit de
200 pixels et le côté le plus long ne dépasse pas 1000 pixels.
• Les fonctionnalités de sortie du backbone (indiquées par H x L) sont généralement beaucoup plus
petites que l’image d’entrée en fonction de pas (stride) du backbone.
• Pour chaque point de la carte des caractéristiques en sortie, le réseau doit apprendre si un objet est
présent dans l’image d’entrée à son emplacement correspondant et estimer sa taille, cela se fait en
plaçant un ensemble d ’ancres sur l’image d’entrée pour chaque emplacement sur la carte des ca-
ractéristiques ( Feature map ) de sortie du backbone. Ces ancres indiquent des objets possibles de
différentes tailles et proportions à cet emplacement. La figure ci-dessous montre 9 ancres possibles
dans 3 rapports d’aspect différents et 3 tailles différentes placées sur l’image d’entrée pour un point
A sur la carte des caractéristiques en sortie. Les ancres utilisées ont 3 échelles de zone de boîte 1282 ,
2562 , 5122 et 3 rapports d’aspect de 1: 1, 1: 2 et 2: 1.

FIGURES 5.1 – Les ancres possibles dans la carte des caractéristiques.

• Au fur et à mesure que le réseau se déplace à travers chaque pixel de la carte des entités (Feature
map) en sortie, il doit vérifier si ces k ancres correspondantes couvrant l’image d’entrée contiennent
réellement des objets, et affiner les coordonnées de ces ancres pour donner des cadres de délimitation
en tant que (Object proposals) ou régions d’intérêt.
• Tout d’abord, une convolution 3 x 3 avec 512 unités est appliquée à la carte des caractéristiques de
backbone, comme le montre la figure 1, pour donner une carte des caractéristiques de 512-d pour
chaque emplacement. Ceci est suivi de deux couches frères: une couche de convolution 1 x 1 avec
18 unités pour la classification des objets et une convolution 1 x 1 avec 36 unités pour la régression
de la boîte englobante (bounding-box).
• Les 18 unités de la branche de classification donnent une sortie de taille (H, W, 18). Cette sortie
est utilisée pour donner des probabilités de savoir si chaque point de la carte des caractéristiques
(Feature map) de backbone (taille: H x L) contient un objet dans les 9 ancres à ce point.
• Les 36 unités de la branche de régression donnent une sortie de taille (H, W, 36). Cette sortie est
utilisée pour donner les 4 coefficients de régression de chacun des 9 ancres pour chaque point de
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
Implementation 45

la carte des caractéristiques de backbone (taille: H x L). Ces coefficients de régression sont utilisés
pour améliorer les coordonnées des ancres qui contiennent des objets.

5. 1. 2 La méthode Faster R-CNN

Après la conception de RPN on peut dire que l’architecture Faster R-CNN se compose du RPN comme
algorithme de proposition de région et du Fast R-CNN comme réseau de détection. Voici les gros points
pour cette méthode :

• L’image d’entrée est d’abord passée à travers le backbone pour obtenir la carte des entités (taille
des entités: 60, 40, 512). Outre l’efficacité du temps de test, une autre raison clé d’utiliser un RPN
comme générateur de proposition est logique: les avantages du partage de poids entre le backbone
RPN et le backbone du détecteur Fast R-CNN.

• Ensuite, les propositions de boîte englobante du RPN sont utilisées pour regrouper les entités à partir
de backbone de la carte des caractéristiques. Ceci est fait par la couche de regroupement ROI. La
couche de mise en commun du retour fonctionne essentiellement en : a) prenant la région correspon-
dant à une proposition à partir de backbone de la carte des caractéristiques; b) diviser cette région en
un nombre fixe de sous-fenêtres; c) Effectuer un pooling maximal sur ces sous-fenêtres pour donner
une sortie de taille fixe.

• La sortie de la couche de regroupement ROI a une taille de (N, 7, 7, 512) où N est le nombre de
propositions de l’algorithme de proposition de région. Après les avoir passés à travers deux couches
entièrement connectées, les entités sont introduites dans les branches jumelles de classification et de
régression.

• Notez que ces branches de classification et de détection sont différentes de celles du RPN. Ici, la
couche de classification a des unités C pour chacune des classes de la tâche de détection (y com-
pris une classe d’arrière-plan fourre-tout). Les caractéristiques sont passées à travers une couche
SOFTMAX pour obtenir les scores de classification - la probabilité qu’une proposition appartienne
à chaque classe. Les coefficients de la couche de régression sont utilisés pour améliorer les boîtes
englobantes prédites. Ici, le régresseur est indépendant de la taille (contrairement au RPN) mais est
spécifique à chaque classe. Autrement dit, toutes les classes ont des régresseurs individuels avec 4
paramètres correspondant chacun à des unités de sortie C * 4 dans la couche de régression.
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
46 Implementation

FIGURES 5.2 – Pipeline du Faster R-CNN

5. 2 Environnement software
• Python
Python est un langage de script de haut niveau, structuré en open source, la première version publique de ce
langage a été publiée en 1991.La dernière version de Python est la version 3.10.5 qui a été introduit le 6 juin
2022. La version 2 de Python est désormais obsolète et cessera d’être maintenue après le 1er janvier 2020.
Python est le langage de programmation le plus utilisé dans le domaine du Machine Learning, du Big Data
et de la Data Science.
Ce langage de programmation présente des nombreuses caractéristiques intéressantes tel que:

• Il est multiplateforme (portable). C’est-à-dire qu’il fonctionne sur de nombreux systèmes d’exploita-
tion : Windows, Mac OS X, Linux, Android, iOS, depuis les miniordinateurs Raspberry Pi jusqu’aux
supercalculateurs.

• Il est gratuit. Vous pouvez l’installer sur autant d’ordinateurs que vous voulez (même sur votre télé-
phone !).

• C’est un langage de haut niveau. Il demande relativement peu de connaissance sur le fonctionnement
d’un ordinateur pour être utilisé.

• C’est un langage interprété. Un script Python n’a pas besoin d’être compilé pour être exécuté, contrai-
rement à des langages comme le C ou le C++. Il convient bien à des scripts d’une dizaine de lignes
qu’à des projets complexes de plusieurs dizaines de milliers de lignes. Il est relativement simple à
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
Implementation 47

prendre en main.
• Toutes ces caractéristiques font que Python est désormais enseigné dans de nombreuses formations,
depuis l’enseignement secondaire jusqu’à l’enseignement supérieur.

FIGURES 5.3 – logo du python

• Google Colab
Google Colab ou aussi appelé Colaboratory est un service dans le cloud, proposé par Google gratuitement. Il
est basé sur l’environnement Jupyter Notebook et est destiné à la formation et à la recherche en apprentissage
automatique. Cette plateforme permet de former des modèles de machine learning directement dans le cloud
. Il n’est pas nécessaire de l’installer sur l’ordinateur, les ressources informatiques peuvent donc être utilisées
pour d’autres tâches. Google Colab présente des nombreuses caractéristiques intéressantes tel que:
• nous n’avons pas besoin de configuration supplémentaire.
• il est possible d’utiliser les bibliothèques Python pour développer, analyser ou visualiser nos projets.
• nous avons un accès gratuit à la puissante Google hardware(GPU).

FIGURES 5.4 – logo du colab

• Bibliothèque OpenCV
OpenCV (Open Source Computer Vision) est une bibliothèque libre de vision par ordinateur. Cette biblio-
thèque est écrite en C et C++ et peut être utilisée sous Linux, Windows et Mac OS X. Des interfaces ont été
développées pour Python, Ruby, Matlab et autre langage. Open CV est orienté vers des applications en temps
réel. Un des buts d’OpenCV est d’aider les gens à construire rapidement des applications sophistiquées de
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
48 Implementation

vision à l’aide d’infrastructure simple de vision par ordinateur. La bibliothèque d’OpenCV contient plus de
500 fonctions . Et plus de 2500 algorithmes optimisés, qui ont une excellente précision en termes de perfor-
mances et de vitesse dans la vision par ordinateur et d’apprentissage automatique classiques et de pointe.
Ces algorithmes peuvent être utilisés pour détecter et reconnaître des visages, identifier des objets, classer
des actions humaines dans des vidéos, suivre les mouvements de caméra, suivre des objets en mouvement,
extraire des modèles 3D d’objets, La bibliothèque est largement constituée de sociétés professionnelles, de
groupes de recherche et d’autres groupes. De nombreuses entreprises bien établies telles que Google, Yahoo,
Microsoft, Intel, IBM, Sony, Honda et Toyota qui emploient la bibliothèque.

FIGURES 5.5 – logo du openCV

• Tensorflow
Il s’agit d’une plate-forme open source end-to-end fournissant des bibliothèques, des outils et des ressources
flexibles qui aident les développeurs à créer et déployer facilement des applications d’apprentissage auto-
matique .

FIGURES 5.6 – logo du tensorflow

• Numpy
NumPy est une extension du langage de programmation Python, destinée à manipuler des matrices ou ta-
bleaux multidimensionnels ainsi que des fonctions mathématiques opérant sur ces tableaux. Plus précisé-
ment, cette bibliothèque logicielle libre et open source fournit de multiples fonctions permettant notamment
de créer directement un tableau depuis un fichier ou au contraire de sauvegarder un tableau dans un fichier,
et manipuler des vecteurs, matrices et polynômes. On peut aussi l’intégrer avec le code C / C ++ et Fortran.
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
Implementation 49

FIGURES 5.7 – logo du numpy

• Matplotlib
Il s’agit d’une bibliothèque de traçage Python capable de générer des graphiques, des histogrammes, des
graphiques à barres, des nuages de points, des cartes thermiques, etc.

• Pandas
Il s’agit d’une bibliothèque open source pour Python fournissant des outils d’analyse de données faciles à
utiliser.

• Dataset COCO:
Base de données de reconnaissance d’objets libre utilisée pour entraîner des programmes d’apprentissage
automatique. Cette base de données comprend des centaines de milliers d’images avec 80 objets déjà éti-
quetés pour l’apprentissage.

5. 3 Développement de l’application de detection d’objet


• Collecter les données
Cette étape est vraiment cruciale pour le projet, la qualité et la quantité de données collectées détermineront
directement combien l’application sera efficace ou non.
Idéalement chaque classe d’objet nécessite plus d’une centaine d’images.
Pour récupérer un échantillon d’images depuis le projet Open Image.
Trois fichiers doivent être téléchargés (class-descriptions-boxable.csv , train-annotations-bbox.csv, train-
images-boxable.csv).

• Créer les fichier d’annotation


Nous avons téléchargé des images, il est maintenant le temps pour créer des fichiers d’annotation, un pour
les trains et un pour les tests. Les fichiers d’annotation nous renseignent sur l’emplacement des objets dans
les images. Ces fichiers affichent le nom de fichier, la boîte englobante et le nom de classe pour chaque
fichier et objet. Une image peut contenir plusieurs objets.
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
50 Implementation

• Modèle de classification VGG16


VGG16 est un algorithme de détection et de classification d’objets capable de classer 1 000 images de 1
000 catégories différentes avec une précision de 92,7%. C’est l’un des algorithmes populaires pour la clas-
sification d’images. L’entrée du réseau est une image de dimensions (224, 224, 3) . Les deux premières
couches ont 64 canaux de taille de filtre 3 * 3 et le même rembourrage. Ensuite, après une couche de pool
max de foulée (2, 2) , deux couches qui ont des couches de convolution de 256 tailles de filtre et de taille
de filtre (3, 3) . Ceci suivi d’une couche de mise en commun maximale de foulée (2, 2) qui est la même que
la couche précédente. Ensuite, il y a 2 couches de convolution de taille de filtre (3, 3) et 256 filtres. Après
cela, il y a 2 ensembles de 3 couches de convolution et une couche de pool maximale. Chacun a 512filtres
de taille (3, 3) avec le même remplissage. Cette image est ensuite transmiseà l’empilement de deux couches
de convolution. Dans ces couches de convolution et de pooling max.

FIGURES 5.8 – Architecture VGG16

Après la pile de couches de convolution et de pooling max, nous avons obtenu une carte de caracté-
ristiques (7, 7, 512) . Nous aplatissons cette sortie pour en faire un vecteur de caractéristiques (1, 25088)
Après cela, il y a 3 couches entièrement connectées, la première couche prend l’entrée du dernier vecteur
de caractéristiques et sort un vecteur (1, 4096) , la deuxième couche produit également un vecteur de taille
(1, 4096) mais la troisième couche produit 1000 canaux pour 1000classes de défi ILSVRC, voici le courbe
de précision de vgg16:
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
Implementation 51

FIGURES 5.9 – Courbe de précision de vgg16

5. 4 Résultats expérimentaux
Nous avons appliqué notre code sur des différents exemples pour détecter les objets possibles. voici
notre résultat:

FIGURES 5.10 – Resultat de detection 1


CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
52 Implementation

FIGURES 5.11 – Resultat de detection 2

FIGURES 5.12 – Resultat de detection 3

Les résultats obtenus sont encourageant avec une perte minimal de certaines objets en raison de leur
similitude avec d’autres objets ou bien notre model n’est pas entérinée sur l’objet perdu.

• Test 1 :On observe une détection acceptable avec une perte de détection de quelques objets .

• Test 2 :On constate un échec dans la détection d’objet, au lieu de détecté seulement sculpture il a
détecté sculpture et persone au meme temp.
CHAPTER 5 — Détection et suivi d’objets en temps réel basée sur Faster R-CNN: Conception et
Implementation 53

• Test 3 : On observe une détection parfaite.

5. 5 Conclusion
Nous avons présenté dans ce chapitre l’implémentation de l’approche de détection des objets basée
Faster R-CNN . L’approche proposée pour cette détection utilise une architecture particulière de réseau de
neurones convolutionnels qui s’appel VGG16.
C HAPITRE 6

C ONCLUSION GÉNÉRALE

Au cours des dernières années, principalement en raison des progrès de l’apprentissage en profondeur,
la qualité de la description d’images et de la détection d’objets a progressé à un rythme spectaculaire. La
plupart de ces progrès sont le résultat d’un matériel plus puissant, des dataset (BDD) plus volumineux et de
modèles plus grands et une conséquence de nouvelles idées, d’algorithmes et d’architectures réseau amélio-
rées. < Grâce aux Deep Learning, l’avenir de l’intelligence artificielle est prometteur >.

Bien que, le Deep Learning (DL) ait fait progresser le monde plus rapidement que jamais, il reste encore
du chemin à parcourir. Nous sommes encore loin de comprendre pleinement comment fonctionne l’ap-
prentissage profond, comment nous pouvons rendre les machines plus intelligentes, plus proches ou plus
intelligentes que les humains, ou apprendre exactement comme les humains. Le DL a résolu de nombreux
problèmes tout en prenant les technologies dans une autre dimension. Cependant, l’humanité doit faire face
à de nombreux problèmes difficiles. Nous espérons que le deep learning et l’IA seront beaucoup plus consa-
crés à l’amélioration de l’humanité, à la réalisation des recherches scientifiques les plus dures, et enfin , pour
rendre le monde meilleur pour chaque être humain.

La détection d’objets est l’épine dorsale de nombreuses applications pratiques de la vision par ordina-
teur. Mais reste qu’on a des nombreux défis dans l’affichage des variables actuelles et toutes les difficultés
auxquelles la cible est exposée. Bien que, les capacités des activités réalisées dans le domaine de la détection
d’objets soient nombreuses, aucun moyen ne peut être considéré comme 100% fiable, mais sans ambages et
selon la mesure, de nouveaux travaux tentent d’améliorer les scores pour obtenir de meilleurs résultats.

Après avoir achevé notre conception nous avons donné les outils nécessaires pour la réalisation de notre
travail. Ensuite, nous avons présenté l’essentiel de notre implémentation et application en donnant quelques
captures d’écran qui expliquent le déroulement et le fonctionnement de notre travail. Ainsi que, les résultats
56 CHAPTER 6 — BIBLIOGRAPHIE

obtenus par la méthode FasterRcnn de détection d’objet. Enfin, avant de passer aux perspectives, ce travail
nous a permis d’appliquer nos connaissances sur les réseaux de neurones et d’acquérir de nouvelles connais-
sances dans ce domaine, et le temps que nous avons passé à lire les articles a été une bonne initiation à la
recherche.

Comme perspectives de futures recherches, nous souhaitons pour les prochains projets de fin d’étude,
à:

• Élargir notre travail de détection d’objet mais selon différentes méthodes.


• Utilisez d’autres modèles comme VGG19 ou ReseNet à la place de VGG16 et effectuez une compa-
raison.
• méliorer l’architecture Faster R-CNN de manière à ce qu’elle puisse détecter plus rapidement.
• Essayer de travailler sur un environnement matériel plus puissant.
• Il est aussi intéressant de faire une étude comparative entre les différentes méthodes de détection des
objets en temps réel pour voir leur performance dans le domaine de la vision par ordinateur.(YOLO,
FasterRcnn, SSD)
Bibliographie

[CLTX16] Chenyi Chen, Ming-Yu Liu, Oncel Tuzel, and Jianxiong Xiao. R-cnn for small object detection.
In Asian conference on computer vision, pages 214–230. Springer, 2016. 35
[Fuk19] Kunihiko Fukushima. Recent advances in the deep cnn neocognitron. Nonlinear Theory and Its
Applications, IEICE, 10(4):304–321, 2019. 42
[Gir15] Ross Girshick. Fast r-cnn. In Proceedings of the IEEE international conference on computer
vision, pages 1440–1448, 2015. 39
[RHGS15] Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun. Faster r-cnn: Towards real-time object
detection with region proposal networks. Advances in neural information processing systems,
28, 2015. 40, 41, 42
[TS10] Lisa Torrey and Jude Shavlik. Transfer learning. In Handbook of research on machine learning
applications and trends: algorithms, methods, and techniques, pages 242–264. IGI global, 2010.
28

Vous aimerez peut-être aussi