0% ont trouvé ce document utile (0 vote)
143 vues78 pages

Application Deep Learning pour Signalisation

Ce mémoire présente la réalisation d'une application détectrice de panneaux de signalisation utilisant le deep learning, dans le cadre d'un projet de licence en télécommunication à l'Université d'Antananarivo. Il aborde l'état de l'art sur l'intelligence artificielle, la détection d'objets dans les images, ainsi que les outils de programmation nécessaires à la conception de l'application. L'objectif est de proposer une solution innovante pour améliorer la sécurité routière à Madagascar.

Transféré par

Naoui Ikram
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
143 vues78 pages

Application Deep Learning pour Signalisation

Ce mémoire présente la réalisation d'une application détectrice de panneaux de signalisation utilisant le deep learning, dans le cadre d'un projet de licence en télécommunication à l'Université d'Antananarivo. Il aborde l'état de l'art sur l'intelligence artificielle, la détection d'objets dans les images, ainsi que les outils de programmation nécessaires à la conception de l'application. L'objectif est de proposer une solution innovante pour améliorer la sécurité routière à Madagascar.

Transféré par

Naoui Ikram
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

N° d’ordre : 18 / RC / TCO L3 Année Universitaire : 2022 / 2023

UNIVERSITE D’ANTANANARIVO
----------------------
ECOLE SUPERIEURE POLYTECHNIQUE
-----------------------
MENTION TELECOMMUNICATION

MEMOIRE
en vue de l’obtention du
DIPLOME de Licence
Domaine : Sciences de l’Ingénieur
Mention : Télécommunication
Parcours : Radiocommunication (RC)

Par : MANAMPISOAMAHARAVO Ny Riambatosoa

REALISATION D’UNE APPLICATION


DETECTRICE DE PANNEAUX DE
SIGNALISATION EN UTILISANT LE DEEP
LEARNING

Soutenu le jeudi 05 Octobre 2023 devant la Commission d’Examen composée de :

Président :

M. ANDRIAMIASY Zidora

Examinateur :

M. RATSIMBAZAFY Tsiory Harifidy

Directeur de mémoire :

M. RAJAONARISON Tianandrasana Roméo


REMERCIEMENTS

Avant toute chose, je rends grâce à Dieu qui m’a donné la force, courage et surtout la santé
afin de bien mener à la réalisation de ce projet.

Je remercie Monsieur RAVELOMANANA Mamy Raoul, Professeur Titulaire, Président de


l’Université d’Antananarivo de m’avoir permis d’intégrer l’Université d’Antananarivo.

Je remercie également Monsieur RAKOTOSAONINA Rijalalaina, Professeur, Responsable


du domaine Science de l’Ingénieur de l’Ecole Supérieure Polytechnique d’Antananarivo, qui
m’a permis d’étudier dans son établissement et de présenter ce mémoire.

Je tiens à exprimer mes sincères reconnaissances à Monsieur RAJAONARISON


Tianandrasana Roméo, Maître de conférences-HDR, Responsable de la Mention
Télécommunication, qui m’a non seulement permis de présenter ce mémoire, mais aussi, m’a
donné de nombreux conseils et instructions tout au long de la préparation du projet.

Mes remerciements vont également à Monsieur ANDRIAMIASY Zidora, Maître de


Conférences, Enseignant chercheur, qui m’a fait l’honneur de présider le jury de ce mémoire.

Je tiens à remercier le membre du Jury, à savoir Monsieur RATSIMBAZAFY Tsiory


Harifidy, Docteur en télécommunication, qui a eu l’amabilité d’examiner ce mémoire.

Mes vifs remerciements à tous les enseignants et les personnels administratifs de l’ESPA.

J’exprime toute ma reconnaissance envers ma famille, mes amis et tous ceux qui ont contribué
à l’accomplissement de ce travail.

i
TABLE DES MATIERES

REMERCIEMENTS ................................................................................................................. i

NOTATIONS ............................................................................................................................ v

INTRODUCTION GENERALE ............................................................................................ 1

CHAPITRE 1 ETAT DE L’ART SUR L’INTELLIGENCE ARTIFICIELLE ................. 2

1.1 Introduction .................................................................................................................... 2

1.2 Historique ........................................................................................................................ 2

1.3 Définitions........................................................................................................................ 3

1.3.1 Etymologiquement .................................................................................................... 3

1.3.2 Selon des chercheurs................................................................................................. 3

1.3.3 Autres définitions ...................................................................................................... 4

1.4 Machine learning ............................................................................................................ 4

1.4.1 Types d’apprentissage ............................................................................................... 4

1.4.2 Architecture du machine learning ........................................................................... 6

1.4.3 Principaux problèmes résolus par l’apprentissage automatique ............................ 8

1.5 Deep learning .................................................................................................................. 9

1.5.1 Les neurones ........................................................................................................... 10

1.5.2 Apprentissage dans le réseau de neurones ............................................................. 15

1.5.3 Architecture du deep learning ................................................................................ 16

1.5.4 Application du deep learning .................................................................................. 17

1.6 Importance de l’intelligence artificielle ...................................................................... 17

1.7 Conclusion ..................................................................................................................... 18

CHAPITRE 2 DETECTION D’OBJET DANS UNE IMAGE .......................................... 19

2.1 Introduction .................................................................................................................. 19

2.2 Notion sur les images .................................................................................................... 19

2.2.1 Définition ................................................................................................................. 19

ii
2.2.2 Caractéristiques ....................................................................................................... 20

2.2.3 Types d’images ........................................................................................................ 23

2.2.4 Format d’une image................................................................................................ 25

2.2.5 Vidéo ........................................................................................................................ 25

2.3 Vision par ordinateur ................................................................................................... 25

2.3.1 Définition ................................................................................................................. 25

2.3.2 Etapes de la vision par ordinateur .......................................................................... 26

2.4 Notion sur les objets ..................................................................................................... 28

2.5 Détection d’objets ......................................................................................................... 28

2.5.1 Définition de la détection d’objet............................................................................ 28

2.5.2 Différence entre détection d’objet et reconnaissance d’image .............................. 28

2.6 Détection d’objet et IA ................................................................................................. 29

2.6.1 Approches traditionnelles de détection d’objet ...................................................... 29

2.6.2 Détection d’objet et le deep learning ...................................................................... 30

2.7 Conclusion ..................................................................................................................... 31

CHAPITRE 3 OUTILS DE PROGRAMMATION POUR LA CONCEPTION DE


L’APPLICATION .................................................................................................................. 32

3.1 Introduction .................................................................................................................. 32

3.2 Programmation sous Android ..................................................................................... 32

3.2.1 Le système d’exploitation Android ......................................................................... 32

3.2.2 L’IDE Android Studio ............................................................................................ 37

3.2.3 Le langage Java ...................................................................................................... 38

3.3 Google Tensorflow ........................................................................................................ 39

3.3.1 Définition ................................................................................................................. 39

3.3.2 Caractéristiques ....................................................................................................... 40

3.3.3 Le langage Python .................................................................................................. 41

iii
3.3.4 Jupyter notebook ..................................................................................................... 42

3.3.5 Tensorflow object detection .................................................................................... 43

3.4 Conclusion ..................................................................................................................... 45

CHAPITRE 4 CONCEPTION DE L’APPLICATION SIGNA-CAM.............................. 46

4.1 Introduction .................................................................................................................. 46

4.2 Fonctionnement de l’application ................................................................................. 46

4.3 Environnement matériel .............................................................................................. 46

4.3.1 Ordinateur ............................................................................................................... 46

4.3.2 Téléphone ................................................................................................................ 46

4.3.3 Maquette de panneaux de signalisation ................................................................. 47

4.4 Environnement logiciel................................................................................................. 48

4.4.1 Autres dépendances................................................................................................. 49

4.5 Etapes ............................................................................................................................. 50

4.5.1 Conception de l’application .................................................................................... 50

4.5.2 Conception du modèle ............................................................................................. 51

4.5.3 Implémentation du modèle dans l’application mobile........................................... 58

4.6 Conclusion ..................................................................................................................... 58

CONLUSION GENERALE .................................................................................................. 59

ANNEXES ............................................................................................................................... 60

BIBLIOGRAPHIE ................................................................................................................. 66

RENSEIGNEMENTS ............................................................................................................ 68

iv
NOTATIONS

1. Minuscule latine

𝑤𝑖 Poids synaptiques

X Variable

𝑥𝑛 Entrées pour un neurone biologique

Y Variable

𝑦𝑚 Sorties pour un neurone biologique

Z Variable

𝑧𝑖 Entrées pour la fonction softmax

2. Majuscule latine

A Nombre de ligne d’une matrice

A(X) Zone d’une image

B Nombre de colonne d’une matrice

C Contraste

D Taille d’une image

K Nombres d’entrées de la fonction softmax

L(X) Degré de luminosité

M Niveau de gris

N Nombre de pixel

X Variable

v
Y Variable

3. Minuscule grecque

𝞼 Fonction softmax

4. Abréviations

ADB Android Debug Bridge

API Application Programming Interface

BDD Base De Données

CCD Charged Coupled Device

CMOS Complementary Metal Oxide Semiconductor

CSV Comma-separeted Values

CNN Convolutional Neural Network

GPT Generative Pre-Trained Transformer

GPU Graphical Processing Units

IA Intelligence artificielle

IBM International Business Machines

IDE Integrated Development Environment

JDK Java Development Kit

JPG Joint PhotographicExperts Group

JVM Java Virtual Machine

OpenCV Open Source Computer Vision

OS Operating System

vi
PNG Portable Network Graphic

Pixel Picture elements

RCNN Region-basedCNN

RNN Recurrent Neural Network

RPN Region Proposal Network

SDK Software Development Kit

SIFT Scale-Invariant Feature Transform

SSD Single Shot Multibox Detector

SURF Speed-Up Robust Features

SVM Support Vector Machine

TFOD Tensorflow Object Detection

YOLO You Only Look Once

XML eXtensible Markup Language

vii
INTRODUCTION GENERALE

Depuis déjà longtemps et surtout à Madagascar, le transport routier revêt une grande
importance : il joue un rôle essentiel dans la connectivité nationale en permettant de relier
différentes régions et dans la distribution des marchandises. Les routes sont actuellement le
principal moyen pour accéder aux services de santé et d’éducation. De plus, ce secteur crée
des emplois que ce soit direct ou indirect dans le pays et favorise l’épanouissement des autres
secteurs d’activités comme le tourisme. Malgré l’importance du transport routier, de
nombreux problèmes sont souvent rencontrés dans ce domaine. L’accident est un des
principaux défis et de plus en plus fréquent. Les idées proposées pour solutionner à ce
problème se concentrent souvent sur le renouvèlement et l’amélioration des infrastructures
routiers alors que d’autres projets sont envisageable vu l’innovation technologique de nos
jours.

Ainsi, nous avons décidé de proposer dans cet œuvre un projet applicable dans le domaine du
transport routier. Il s’agit d’un système qui a pour but de détecter et d’identifier les panneaux
de signalisation que l’on trouve dans la plupart des routes d’où le titre : « REALISATION
D’UNE APPLICATION DETECTRICE DE PANNEAUX DE SIGNALISATION EN
UTILISANT LE DEEP LEARNING ». L’élaboration de cette application nécessite plusieurs
notions comme le traitement d’image, la vision par ordinateur et le plus important :
l’intelligence artificielle.

Pour en savoir plus, nous allons suivre le plan suivant : tout d’abord, nous allons voir l’état de
l’art sur l’intelligence artificielle ; ensuite, il y aura une explication de la détection d’image en
utilisant l’IA ; après, des connaissances de base sur les outils de programmations seront
introduites pour nous conduire enfin à la conception de l’application détectrice de panneaux
de signalisation.

1
CHAPITRE 1
ETAT DE L’ART SUR L’INTELLIGENCE ARTIFICIELLE

1.1 Introduction

« Je propose que l’on considère la question, ’Une machine peut-elle pensée ?’ » disait Le
professeur Alan Turing en 1950. Cette question du célèbre chercheur Alan Turing a soulevé
un certain nombre d’hypothèse faisant référence à un nouveau concept qui est l’Intelligence
artificielle ou IA. Actuellement, l’IA se présente comme un moyen pour faciliter diverses
tâches des êtres humains. Comme dans la réalisation, nous allons implémenter un mécanisme
d’intelligence artificielle, il est important d’avoir des notions sur cette dernière et sur ses
domaines d’application.

1.2 Historique

L’histoire de l’Intelligence Artificielle remonte à l’époque d’Alan Turing, un mathématicien


britannique qui a joué un rôle clé dans le décryptage des codes nazis pendant la Seconde
Guerre mondiale. L’année 1950, ce chercheur a publié un article intitulé "Computing
Machinery and Intelligence" dans lequel il a proposé le fameux test de Turing, un critère pour
déterminer si une machine peut ou non penser comme un être humain. Le test de Turing
consiste à poser des questions à une machine et à évaluer si les réponses sont suffisamment
intelligentes pour tromper un humain, en pensant qu'il parle à un autre humain. Un test que les
GPT passeraient facilement aujourd’hui.

En 1956, une conférence a été organisé par un groupe de chercheurs en informatiques


comprenant John McCarthy, Marvin Minsky, Nathaniel Rochester et Claude Shannon pour
discuter de l’IA. Cette conférence s’est déroulée à Dartmouth College et est considérée
comme le point de départ officiel de l'IA en tant que domaine de recherche distinct.

Pendant l’année 1950 et 1960, les chercheurs en IA ont réussi à développer des programmes
informatiques capables de résoudre des problèmes simples tels que la résolution de problèmes
mathématiques, la reconnaissance de caractères et l’aide à la prise de décision.

L’Intelligence Artificielle a connu un progrès relativement lent dans les années 1970 et 1980
dû à des complexités des tâches à accomplir et à des difficultés à obtenir des ordinateurs
suffisamment puissants pour gérer de grands ensembles de données. Cependant, cette période
a vu l'émergence de nouvelles approches pour résoudre les problèmes d'IA, notamment
l'apprentissage automatique, la recherche en logique et les systèmes experts.

2
Dans les années 1990, l'IA a connu un renouveau grâce à la montée en puissance des
ordinateurs et à l'essor d'Internet. Cette période a vu la naissance de nouveaux domaines de
recherche, tels que l'apprentissage profond et les réseaux neuronaux.

Au tournant du millénaire, l'IA a connu un autre "hiver" avec un manque de financement et de


progrès, mais avec l'avènement d'Internet et des ordinateurs plus puissants, la recherche en IA
a rebondi. [1] [2]

Depuis lors, l’Intelligence artificielle a connu une croissance exponentielle et continue de


s’évoluer en ce jour.

1.3 Définitions

Il existe de nombreuses définitions attribuées à l’Intelligence Artificielle en fonction du


domaine d’application, des chercheurs et des études faites sur ce concept.

1.3.1 Etymologiquement

L’intelligence est la capacité d’un être à comprendre, apprendre, raisonner, résoudre des
problèmes et s’adapter à de nouvelles situations. Il existe une multitude d’intelligence si on se
réfère à la théorie d’intelligences multiple proposé par le professeur Howard Gardner.

« Artificielle » dans l’intelligence artificielle veut dire « conçu par et créé pour les humains ».
[3]

L’intelligence artificielle est donc une discipline scientifique qui étudie et développe des
théories, des techniques et des systèmes d’application utilisés pour simuler l’intelligence
humaine.

1.3.2 Selon des chercheurs

- L’intelligence artificielle est définie par Marvin Minsky, qui fut un pionnier de l’IA,
comme : « la construction de programmes informatiques qui s'adonnent à des tâches
qui sont pour l'instant, accomplies de façon plus satisfaisante par des êtres humains car
elles demandent des processus mentaux de haut niveau tels que : l'apprentissage
perceptuel, l'organisation de la mémoire et le raisonnement critique ». [1]
- Selon John McCarthy, le scientifique qui a inventé le terme « intelligence artificielle »
en 1956, l’IA est « la science et l’ingénierie de la création de machines intelligentes,
en particulier des programmes informatiques intelligents ».

3
1.3.3 Autres définitions

L'intelligence artificielle (IA) se définit par un domaine de l'informatique qui se concentre sur
la création de systèmes informatiques capables d'exécuter des tâches qui nécessitent
normalement l'intelligence humaine. L'objectif de l'IA est de développer des machines
capables de penser, d'apprendre, de raisonner, de reconnaître des motifs, de comprendre le
langage naturel, de percevoir l'environnement, de résoudre des problèmes complexes et
d'interagir avec les humains de manière naturelle.

Une autre définition très simple de l’intelligence artificielle est que c’est l’effort visant à
automatiser les tâches intellectuelles normalement effectuées par les humains. [4]

1.4 Machine learning

Le machine learning ou apprentissage automatique se réfère à la capacité des machines à


apprendre, simuler ou mettre en œuvre le comportement humain afin d’acquérir de nouvelles
connaissances et de mettre à jours en permanence les structures de connaissances existantes
afin d’améliorer la performance. [3]

Plus précisément, le machine learning est un des domaines de recherche principal de l’IA qui
permet aux ordinateurs d’apprendre à partir des données et d’améliorer leurs performances au
fil du temps sans être explicitement programmés.

1.4.1 Types d’apprentissage

Les types d’apprentissage peuvent être classifiés en quatre parties : [3][5]

1.4.1.1 Apprentissage supervisé

L’apprentissage supervisé se concentre sur la conception d’un modèle reliant des données
d’apprentissage à un ensemble de valeurs de sortie. Cela veut dire qu’on fournit à l’algorithme
d’apprentissage des données comportant des solutions désirées, qui sont les étiquettes.

Pour ce faire, le modèle fait correspondre toutes les entrées aux sorties et effectue une
évaluation simple sur les sorties dans le but de classifier les données inconnues.

Soit D un ensemble de données, décrit par un ensemble de caractéristiques X, un algorithme


d’apprentissage supervisé va trouver une fonction de mapping entre les variables prédictives
en entrée X et la variable à prédire Y. La fonction de mapping décrivant la relation entre X et
Y s’appelle un modèle de prédiction. Les caractéristiques X peuvent être des valeurs
numériques, alphanumériques ou des images.

4
Prenons l’exemple d’un modèle qui prédit les jours appropriés pour faire des exercices. Cette
prédiction se fait à partir des variables ou attributs appelés « caractéristiques d’une
observation » ou « features » en anglais. Dans le cas présent, les caractéristiques peuvent être
le temps, la température ou encore la vitesse du vent. Chaque état de ces caractéristiques
correspond à une étiquette disant si on doit faire des exercices ou pas. (Régression)

Un autre exemple d’utilisation de l’apprentissage est le filtre anti-spam. Cet apprentissage


s’effectue à l’aide de plusieurs exemples d’emails étiquetés en spam ou normal. Grâce à ces
données étiquetées, le filtre doit être en mesure d’accomplir la classification de nouveaux
mails. (Classification)

1.4.1.2 Apprentissage non-supervisé

Ce type d’apprentissage conçoit un modèle basé sur des données d’entrées non-étiquetées. Le
système est donc autodidacte puisqu’il doit trouver tout seul les points communs entre les
données d’apprentissage.

En effet, les algorithmes d’apprentissage non supervisé modélisent des échantillons très
similaires, calculent la similarité entre les échantillons nouveaux et existants pour pouvoir
prédire et classifier les échantillons nouveaux en fonction de leur similarité.

Ce type d’apprentissage peut réellement s’appliquer dans de nombreuses domaines même si à


première vue, on pourrait penser qu’il a peu d’importance. On utilise ce type d’apprentissage
dans divers domaines et surtout dans la vraie vie. Comme par exemple, les sites comme
Amazon, Netflix ou Youtube utilise cet algorithme afin de suggérer aux utilisateurs des
produits, des films ou encore des chaînes similaires aux autres déjà suivis.

1.4.1.3 Apprentissage semi-supervisé

Si dans l’apprentissage supervisé on utilise des données étiquetées et dans l’apprentissage


non-supervisé des données non étiquetées, dans le système d’apprentissage semi-supervisé on
associe les deux types d’apprentissage précédents tout en réduisant le nombre de données à
étiqueter. Une étude a démontré que l’utilisation de ces deux types de données permet
d'améliorer significativement la qualité de l'apprentissage.

Le service d’hébergement d’image : Google Photos illustre l’utilisation d’un apprentissage


semi-supervisé. Après avoir téléchargé des photos de famille sur ce service, le système arrive
à reconnaitre qu’une personne A apparaît sur telle ou telle photos et qu’une personne B sur
telle autre. Cela est dû à la partie non supervisée de l’algorithme. Une étiquette par personne

5
suffit pour que le système soit capable d’identifier les personnes qui figurent sur chaque
photo.

1.4.1.4 Apprentissage par renforcement

L’apprentissage par renforcement diffère totalement des types d’apprentissages qu’on a vus
précédemment car au lieu d’utiliser des données, on fait appel à des expériences. Le modèle
apprenne donc un comportement à partir de l’environnement dans le but de maximiser la
valeur de la fonction de signal de récompense ou bien renforcement.

Dans ce type d’apprentissage, l’environnement fournit des signaux de renforcement scalaires


pour évaluer ses actions. Le modèle apprend donc à partir de l’environnement et ajuste ces
actions en fonction d’un système de récompenses. Pour maximiser cette fonction,
l’apprentissage utilise une série d’actions. Que ce soit des comportements positifs ou négatifs,
les deux peuvent aider les modèles d’apprentissage par renforcement.

Actuellement, plusieurs systèmes utilisent ce type d’apprentissage à l’instar des voitures


autonomes. Le modèle dans ces véhicules apprend en interagissant continuellement avec leur
environnement comme les feux de circulation, les panneaux de signalisation, …

1.4.2 Architecture du machine learning

1.4.2.1 Les trois éléments clés du machine lerning [4] [6]

Pour pouvoir concevoir un système basé sur l’apprentissage automatique, trois éléments sont
nécessaires voire primordiaux : les points d’entrées, l’exemple des résultats prévus à la sortie
et une façon de mesurer l’efficacité de l’algorithme.

- Points de données à l’entrée : Ce sont les données à traiter et à tester dans le modèle.
Par exemple, si la tâche consiste à identifier des images, les données d’entrée peuvent
être des images.
- Exemples de résultats prévus à la sortie : Ce sont les solutions ou bien réponses
attendues générées par le modèle. Dans le cas d’un modèle qui traite et identifie les
images, ces exemples de résultats peuvent être les classes des images ou bien le nom
des images.
- Une façon de mesurer l’efficacité de l’algorithme : Elle s’agit d’un moyen pour
déterminer la différence entre la sortie actuelle de l’algorithme et sa sortie attendue.
Ceci est nécessaire afin d’ajuster le fonctionnement de l’algorithme du modèle : cette
étape d’ajustement est appelée « apprentissage ».

6
1.4.2.2 L’algorithme du machine learning

Un algorithme se définit par la description d’une suite d’étapes permettant d’obtenir un


résultat à partir d’éléments fournis en entrée. L’apprentissage automatique possède son propre
algorithme qui se diffère totalement de la programmation classique paradigme de
l’intelligence artificielle symbolique.

Dans la programmation classique, les humains doivent saisir des règles et des données à
traitées selon ces règles et en sortent des réponses tandis qu’avec l’apprentissage automatique,
les humains n’ont qu’à saisir les données avec les réponses attendues de ces données pour que
le programme puisse générer les règles. En plus, ces règles peuvent être réutilisées avec de
nouvelles données pour produire des réponses originales. Cette grande différence est illustrée
par les deux figures ci-dessous.

Figure 1.01 : Figure 1.01 : Algorithme traditionnel


Dans ce figure 1.01, les règles sont composées par plusieurs types de code et des conditions.
Si une des conditions est satisfaite, il y a exécution du code 1 et dans le cas contraire, ce sera
le code 2 qui sera exécuté. Et à la fin du programme, un résultat bien précis sera obtenu.

7
Figure 1.01 : Figure 1.02 : Algorithme du Machine Learning

1.4.3 Principaux problèmes résolus par l’apprentissage automatique

L’apprentissage automatique est une des approches révolutionnaires depuis l’année 1990, elle
a permis de résoudre de nombreux problème jusqu’à ce jour. Voici quelques tâches
principales résolues par ce concept :

1.4.3.1 Classification

La classification est une technique d’apprentissage automatique qui consiste à concevoir un


modèle attribuant une étiquette de classe à une entrée donnée. Le modèle de classification doit
donc classer les échantillons d’un ensemble de données dans une catégorie donnée. [3][7]

Les algorithmes de classification sont utilisés lorsque la variable à prédire est discrète. Ces
variables d’entrées peuvent être des valeurs réelles ou discrètes. Il est courant que les modèles
de classification prédisent des valeurs continues comme les probabilités d’appartenance à
chaque classe de sortie. Une probabilité prédite peut être convertie en une valeur de classe en
sélectionnant l'étiquette de la classe qui présente la probabilité la plus élevée.

La détection de spam, la détection d’émotion ou encore la détection de fraude utilisent


l’algorithme de classification. [5]

8
1.4.3.2 Régression

Quand le modèle de Machine Learning doit prédire une valeur continue ou bien une variable
dépendante basée sur un ou plusieurs caractéristiques d’entrées, on fait appel à l’algorithme
de régression.

Les algorithmes de régression sont utilisés pour modéliser la relation entre les entrées et la
sortie et faire des prédictions basées sur cette relation. En général, le but de la régression est
de créer un modèle capable de prédire avec précision la sortie en fonction des caractéristiques
d’entrée et de bien comprendre la relation sous-jacente entre les caractéristiques d’entrée et la
sortie. [7]

La technique de régression s’applique dans divers domaines comme la prédiction des prix de
voiture, prédiction de température ou encore les épargnes.

1.4.3.3 Clustering

Le clustering se base sur la similarité des données d’entrées. Il utilise un algorithme qui a pour
but de diviser des données ou des points de données en « cluster » de telle sorte que les
données possédant des points communs se regroupent entre elles.

C’est une méthode d’apprentissage non supervisé qui constitue une technique courante
d’analyse de données statistiques utilisée dans de nombreux domaines.

1.5 Deep learning

Le deep learning ou apprentissage profonde est une branche de l’apprentissage automatique


issu des recherches sur les réseaux neuronaux artificiels.

C’est une nouvelle approche d’apprentissage favorisée par les critères suivants :

- Les GPU (Graphical Processing Units) capables de plus de mille milliards


d’opérations par seconde à moindre couts.
- Diminution de taux d’erreur : des expériences menées simultanément à Microsoft,
Google et IBM (International Business Machines), ont montré que les réseaux
profonds pouvaient diminuer de moitié les taux d’erreur des systèmes de
reconnaissance vocale.
- Record en reconnaissance d’image : Des réseaux convolutifs ont battu plusieurs
records en reconnaissance d’image dont un durant la compétition de reconnaissance
d’objets “ImageNet”.

9
Le terme « deep » dans le deep lerning n’est pas une référence à une quelconque forme de
compréhension plus profonde obtenue par l’approche ; il représente plutôt cette idée de
couches successives de représentations. Le nombre de couches d’un modèle de données
s’appelle la profondeur du modèle et plus de modèle est profond, plus il est précis.

L’apprentissage de ces représentations en couches se fait (presque toujours) à partir des


modèles appelés réseaux de neurones et il est important d’avoir quelques notions sur ces
derniers.

1.5.1 Les neurones

1.5.1.1 Neurone biologique

Depuis déjà longtemps, les humains ont compris que leur capacité de réfléchir vient du
cerveau, un organe fascinant composé d’environ 100 milliards de cellules nerveuses : les
neurones. Ces neurones constituent un réseau câblé très précis et sont constitués de trois
parties : le corps cellulaire, les dendrites et l’axone.

Le corps cellulaire est le centre de contrôle du neurone, son rôle est d’effectuer la somme des
informations qui lui parviennent. Il traite ensuite les informations et renvoie le résultat sous
forme de signaux électrique, du corps cellulaire à l’entrée des autres neurones au travers de
son axone. L’axone sert donc de moyen de transport pour les signaux émis par le neurone.
Quant aux dendrites, ils sont les récepteurs principaux des neurones, par lesquelles transite
l’information venue de l’extérieur vers le corps cellulaire. On remarque que le lien physique
entre deux neurones se fait grâce aux synapses.

Figure 1.02 : Figure 1.03 : Neurone biologique

10
𝑥𝑛 : entrées

𝑦𝑚 : sorties

1.5.1.2 Neurone formel

Le neurone formel ou neurone artificiel ou encore perceptron se réfère à la modélisation


mathématique qui reprend les principes du fonctionnement du neurone biologique, en
particulier la sommation des entrées. Sachant qu'au niveau biologique, les synapses n'ont pas
toutes la même « valeur » (les connexions entre les neurones étant plus ou moins fortes), les
auteurs du neurone formel ont créé un algorithme qui pondère la somme de ses entrées par des
poids synaptiques (coefficients de pondération). De plus, les 1 et les -1 en entrée sont là pour
figurer une synapse excitatrice ou inhibitrice. [8]

Le perceptron fut inventé par Frank Rosenblatt au laboratoire aéronautique de Coenell. Ce


scientifique proposa la « règle d’apprentissage du Perceptron » en se basant sur les premiers
concepts de neurones artificiels.

𝑊1
𝐸1

Σ Sortie

𝐸𝑛

𝑊𝑛

Seuil

Figure 1.03 : Figure 1.04 : Neurone formel

Figure 1.04 : Σ : Fonction d’agrégation


Figure 1.05 : : Fonction d’activation

11
𝐸𝑖 : Entrées

𝑊𝑖 : Poids synaptiques

a. Poids synaptiques

Ce sont des coefficients de pondération accordés à chacune des entrées permettant de faire
une modification importante de certaines valeurs par rapport aux autres entrées.
L’apprentissage consiste alors à trouver leurs valeurs optimales afin d’obtenir la sortie voulue.

b. Fonction d’agrégation

Elle s’agit d’une fonction qui permet de calculer une unique valeur à partir des entrées et des
poids correspondants. Il en existe plusieurs types mais les plus utilisées sont les suivantes :

- La somme pondérée

Elle consiste à calculer la somme de toutes les entrées. Le calcul de distance toutes les entrées
multipliées par leur poids c’est-à-dire :

∑ 𝐸𝑖 ∗ 𝑊𝑖
(1.01)
𝑖=1

𝐸𝑖 : Entrées

𝑊𝑖 : Poids synaptiques

- Calcul de distance

Le calcul des distances consiste plutôt à comparer les entrées aux poids (qui sont les entrées
attendues par le neurone), et calculer la distance entre les deux. Dans ce cas la distance est
donnée par :

∑(𝐸𝑖 − 𝑊𝑖 )2
(1.02)
𝑖=1

𝐸𝑖 : Entrées

𝑊𝑖 : Poids synaptiques

12
c. Seuil

Le seuil ou bien le biais est une valeur qui sert à indiquer quand le neurone doit agir.

d. Fonction d’activation

C’est une fonction qui a pour rôle d’associer à chaque valeur agrégée une valeur de sortie
dépendant du seuil, ce qui veut dire qu’après avoir obtenu la valeur donnée par la fonction
d’agrégation, le neurone compare cette dernière avec le seuil et décide de la sortie en utilisant
cette fonction. [9]

Il y a plusieurs types de fonction d’activation mais les plus utilisées sont : la fonction de
Heaviside, la fonction sigmoïde et la fonction softmax.

- La fonction Heaviside

Elle s’agit d’une fonction permettant d’obtenir des sorties binaires : 1 sil la valeur agrégée
calculée est plus importante que le seuil, 0 dans le cas contraire.

0 𝑠𝑖 𝑥 < 0 (1.03)
𝐻(𝑥) = {
1 𝑠𝑖 𝑥 ≥ 1

Son avantage est qu’elle peut résoudre des problèmes de classification en indiquant qu’un
objet appartient ou non à une classe donnée. Toutefois, la fonction Heaviside n’arrive pas à
indiquer à quel point une valeur est forte.

- La fonction sigmoïde

Cette fonction est une des fonctions d’activations réputées et est définie par la relation
mathématique :

1 (1.04)
𝑓(𝑥) =
1 + 𝑒 −𝑥

La fonction sigmoïde est une fonction dérivable ce qui lui permet de résoudre le problème de
la fonction Heaviside puisque cette dérivabilité permet de savoir vers quelle direction aller pour
améliorer les résultats.

13
- La fonction softmax

Cette fonction se concentre surtout sur le domaine de la classification multi-classe. Pour ce


faire, elle prend en entrée un vecteur 𝑧 = (𝑧1 ⋯ , 𝑧𝑘 ) de K nombres et renvoie un vecteur 𝞼(z)
de K nombres réels strictement positifs de somme 1 en sortie.

La relation mathématique définissant cette fonction est la suivante :

𝑒 𝑧𝑗 (1.05)
𝜎(𝑧)𝑗 =
∑𝐾
𝑘=1 𝑒
𝑧𝑘

K : nombre d’entrées

Le perceptron fonctionne comme suit : les entrées et les poids génère une valeur grâce à la
fonction d’agrégation ou fonction de combinaison. Si cette valeur dépasse le seuil indiqué, un
signal est produit et dans le cas contraire, aucun résultat n’est émis.

1.5.1.3 Réseau de neurone

Un réseau de neurone se définit par un ensemble de perceptrons interconnectés. Il est


constitué de multiples neurones artificiels. [10]

Dans ce réseau, les neurones sont liés entre eux par des liens de connexions par lesquels
circulent les informations sur les données d’entrées.

Un réseau de neurone comprend ; une couche d’entrée, une couche de sortie et différentes
couches cachées. Les données sont transmises d’une couche à une autre, C’est-à-dire que les
résultats de calculs sont transmis d’un neurone à l’autre, et chacune des couches conserve un
état interne appelé signal d’activation.

14
Couche d’entrée Couche de sortie

Couches cachées

Figure 1.06 : Figure 1.05 : Les couches d’un réseau de neurone


1.5.2 Apprentissage dans le réseau de neurones

Le but d’un réseau de neurone est de trouver les valeurs idéales et appropriées pour chacun de
ses paramètres. Initialement, les poids du réseau se voient attribuer des valeurs aléatoires.
Ensuite on effectue la normalisation des données pour faciliter leur manipulation. Après, on
procède à la permutation des données d’entrainement et chaque couche traitera les données en
fonction des poids affectés. Puis on obtient une prédiction qui peut être très différente de la
sortie souhaitée. Le rôle de la fonction de coût ou bien fonction de perte est de calculer
l’erreur de prédiction du réseau par rapport à la réponse correcte. L’optimiseur peut
maintenant utiliser cette erreur comme signal de rétroaction pour ajuster un peu la valeur des
paramètres, dans une direction qui réduira la perte pour l’exemple actuel

L’apprentissage d’un réseau de neurone se fait en plusieurs étapes illustrées par la figure
suivante :

15
Entrées x

Couche
Poids (transformation de données)

Poids Couche
(transformation de données)

Mise à jour des poids


Prédiction Sorties souhaitées y
Optimiseur y

Fonction de coût

Erreur

Figure 1.07 : Figure 1.06 : Apprentissage d’un réseau de neurone

1.5.3 Architecture du deep learning

1.5.3.1 Réseaux de neurone récurrents (RNN)

Les réseaux de neurone récurrents ont été créés dans les années 1980. Ils sont utilisés pour
traiter des séquences de données car ils possèdent des connexions récurrentes qui leur
permettent de conserver des informations sur les états précédents. Cela veut dire qu’il existe
non seulement des liens d'une couche vers les suivantes, mais aussi vers les couches
précédentes. Une autre façon de penser les RNN est qu’ils ont une « mémoire » qui capture
l’information sur ce qui a été calculé jusqu’ici.

Théoriquement, les RNN peuvent utiliser des informations dans des séquences arbitrairement
longues, mais dans la pratique, on les limite à regarder seulement quelques étapes en arrière.

1.5.3.2 Réseaux de neurone convolutif (CNN)

Les réseaux de neurone convolutifs désignés par l’acronyme CNN, de l’anglais Convolutional
Neural Network, sont des réseaux particulièrement adaptés à la vision par ordinateur, car ils

16
utilisent des opérations de convolution pour extraire des caractéristiques des images. Les
premières versions ont été développées par Yann LeCun aux Bell Laboratories vers 1989.

Les centaines de couches présentes dans un réseau CNN effectuent des opérations qui
modifient les données dans l’objectif d’apprendre les caractéristiques spécifiques à ces
données. [5]

1.5.4 Application du deep learning

Beaucoup d’applications et plateformes implémentent le mécanisme de deep lerning


actuellement. Les géants du Net comme Amazon, Facebook ne cesse d’investir dans ce
domaine afin de tirer profit de l’apprentissage profond.

Voici quelques-unes des nombreuses applications du deep learning :

- Vision par ordinateur : reconnaissance d’image, segmentation sémantique, détection


d’objet, …
- Traitement du langage naturel : traduction automatique, chatbots et assistants virtuels,
analyse de sentiment, …
- Recommandations personnalisées : filtre collaboratif, système de recommandation de
contenu, …

1.6 Importance de l’intelligence artificielle

De nos jours, l’intelligence artificielle est versatile c’est-à-dire qu’il s’applique dans divers
secteurs. Le figure 1.07 ne montre qu’une partie du domaine d’application de l’intelligence
artificielle actuellement puisqu’aujourd’hui, ce concept fait partie de la vie de tous les jours et
de l’industrie. L’IA a le potentiel de transformer de nombreux aspects dans la vie humaine,
elle permet l’automatisation de diverses tâches et une prise de décision rapide et améliorée.
Ce domaine solutionne de nombreux problèmes complexes dans plusieurs domaines comme
dans la santé, la sécurité et contribue surtout à résoudre des problèmes dans l’échelle
mondiale. [3]

17
Contenu d’article Circuit intégré

Détection d’objet Apprentissage


automatique

Conduite autonome Vision par


ordinateur

Traduction automatique TALN


Sous-domaines
populaires de
Imagerie médicale l’IA Mégadonnées

Système expert
Service client
intelligent
Technologies de
Système de BDD
recommandation

Figure 1.08 : Figure 1.07 : Domaine d’application de l’IA

1.7 Conclusion

Ce chapitre nous a éclairé sur l’intelligence artificielle, un domaine révolutionnaire qui


englobe l’apprentissage automatique. Nous avons pu conclure que les différents types
d’apprentissage dans le Machine learning diffèrent totalement du concept de la
programmation classique et la plupart d’entre eux sont utilisé dans l’apprentissage profonde.
De plus, l’évolution des architectures basé sur le mécanisme des réseaux de neurone rend le
deep learning plus puissant de nos jours et agrandit le domaine d’application de l’intelligence
artificielle.

18
CHAPITRE 2
DETECTION D’OBJET DANS UNE IMAGE

2.1 Introduction

La détection d’objet est une discipline inclue dans le concept de la vision par ordinateur. Elle
peut être appliquée dans de nombreux domaines que ce soit dans la vie quotidienne ou dans
les industries et entreprises. L’implémentation du mécanisme de la détection d’objet nécessite
beaucoup de notions sur les images, sur les étapes de détection à suivre et dans ce chapitre,
noua allons en aborder certaines d’entre elles. Tout d’abord, nous allons parler des images,
ensuite nous allons expliquer les étapes de la vision par ordinateur et à la fin, l’influence de
l’intelligence artificielle sur le concept de la détection d’objet.

2.2 Notion sur les images

2.2.1 Définition

2.2.1.1 Image

Une image est une représentation d’une personne, d’un objet par la peinture, la sculpture, le
dessin, la photographie, le film, etc. [11]

Elle peut être décrite sous la forme d’une fonction I(x,y) de brillance analogique continue,
définie dans un domaine borné, tel que x et y sont les coordonnées spatiales d’un point de
l’image et I est une fonction d’intensité lumineuse et de couleur.

Image

y
Figure 1.09 : Figure 2.01 : Image analogique
(x,y) : coordonnées spatiales d’un point de l’image

Sous cet aspect, l’image est inexploitable par la machine, ce qui nécessite sa numérisation.

19
2.2.1.2 Image numérique

L’image numérique, désignée aussi par le terme scène, est très différents des images obtenues
à l’aide d’un appareil photo classique, ou dessinées sur du papier.

C’est une image dont la surface est divisée en éléments de tailles fixes appelés cellules ou
pixels. Chacun de ces éléments possède comme caractéristique un niveau de gris.

Pour obtenir une image numérique, on applique à l’image analogique l’opération


« numérisation ».

Une image numérique est représentée par une matrice bidimensionnelle de valeurs
numériques 𝑓(𝑥, 𝑦) où x et y sont les coordonnées cartésiennes d’un point de l’image et
𝑓(𝑥, 𝑦) définit le niveau de gris en un point. [11]

Figure 1.10 : Figure 2.02 : Image numérique


(𝑥, 𝑦) : coordonnées cartésiennes de l’image

2.2.2 Caractéristiques

2.2.2.1 Pixel

Le mot « pixel » provient de la contraction de l’expression anglaise « picture elements » qui


se traduit par éléments d’image.

Le pixel est le plus petit élément que peuvent manipuler les matériels et logiciels d’affichage
ligne ou d’impression. Il peut recevoir une structure et une quantification. [11]

Pour les images 3D, le pixel est appelé « voxel », et représente un volume élémentaire.

2.2.2.2 Dimension

C’est la taille de l’image, ou encore le nombre total de pixels dans l’image.

20
La dimension se présente sous forme de matrice dont les éléments sont des valeurs
numériques représentatives des intensités lumineuses (pixels). Donc la dimension D d’une
image est le nombre de ligne A multiplié par le nombre de colonne B de cette matrice.

𝐷 =𝐴∗𝐵 (2.01)

2.2.2.3 Résolution

C’est la clarté ou la finesse de détails atteinte par un moniteur ou une imprimante dans la
production d’images. Sur les moniteurs d’ordinateurs, la résolution est exprimée en nombre
de pixels par unité de mesure (pouce ou centimètre). On utilise aussi le mot résolution pour
désigner le nombre total de pixels affichables horizontalement ou verticalement sur un
moniteur ; plus grand est ce nombre, meilleure est la résolution.

2.2.2.4 Bruit

Un bruit (ou parasite) dans une image est considéré comme un phénomène de brusque
variation de l’intensité d’un pixel par rapport à ses voisins, il provient de l’éclairage des
dispositifs optiques et électroniques du capteur.

2.2.2.5 Histogramme

L’histogramme des niveaux de gris ou des couleurs d’une image est une fonction qui donne la
fréquence d’apparition de chaque niveau de gris (couleur) dans l’image. Pour diminuer
l’erreur de quantification, pour comparer deux images obtenues sous des éclairages différents,
ou encore pour mesurer certaines propriétés sur une image, on modifie souvent l’histogramme
correspondant.

Il permet de donner un grand nombre d’information sur la distribution des niveaux de gris
(couleur) et de voir entre quelles bornes est repartie la majorité des niveaux de gris (couleur)
dans les cas d’une image trop claire ou d’une image trop foncée.

Il peut être utilisé pour améliorer la qualité d’une image (Rehaussement d’image) en
introduisant quelques modifications, pour pouvoir extraire les informations utiles de celle-ci.

21
Voici quelques exemples d’histogramme :

Figure 1.11 : Figure 2.03 : Quelques exemples d’histogramme


N : nombre de pixel

M : le niveau de gris

D’après les histogrammes de la figure 1.3, on peut déjà soutirer les informations suivantes :

- L’image possédant l’histogramme b est une image trop sombre car la majeure partie
de pixel se trouve dans les bas niveaux de gris.
- L’image possédant l’histogramme h est une image trop claire car la majeure partie de
pixel se trouve dans les hauts niveaux de gris.
- L’image possédant l’histogramme m est une image floue qui manque de contraste car
la majeure partie de pixel se trouve dans les moyens niveaux de gris.
- L’image possédant l’histogramme e est une image qui manque de nuance
intermédiaire car la majeure partie de pixel se trouve dans les niveaux de gris
extrêmes.

2.2.2.6 Contours et textures

Les contours représentent la frontière entre les objets de l’image, ou la limite entre deux
pixels dont les niveaux de gris représentent une différence significative. Les textures décrivent
22
la structure de ceux-ci. L’extraction de contour consiste à identifier dans l’image les points
qui séparent deux textures différentes.

2.2.2.7 Luminance

La luminance décrit le degré de luminosité des points de l’image. [12]

Le mot luminance est substitué au mot brillance, qui correspond à l’éclat d’un objet et une
bonne luminance se caractérise par :

- Des images lumineuses


- L’absence de parasites

2.2.2.8 Transparence

Elle s’agit d’une caractéristique qui définit le niveau d’opacité des éléments de l’image et il
est possible de voir à travers l’image des éléments graphiques situés derrière celle-ci.

2.2.2.9 Contraste

Le contraste est l’opposition marquée entre deux régions d’une image, plus précisément entre
les régions sombres et les régions claires de cette image. Il est défini en fonction des
luminances de deux zones d’images. [11]

Soient L(1) et L(2) les degrés de luminosité respectivement de deux zones voisines A(1) et
A(2) d’une image, le contraste C est défini par le rapport :

𝐿1 − 𝐿2 (2.02)
𝐶=
𝐿1 + 𝐿2

2.2.3 Types d’images

2.2.3.1 Image binaire

Une image binaire est une matrice rectangulaire dont les éléments valent 0 ou 1. Lorsque l'on
visualise une telle image, les zéros sont représentés par des noirs et les unes par des blancs.

2.2.3.2 Image à niveau de gris

Le niveau de gris est la valeur de l’intensité lumineuse en un point. La couleur du pixel peut
prendre des valeurs allant du noir au blanc en passant par un nombre fini de niveaux
intermédiaires.

23
Pour représenter les images à niveaux de gris, on attribue à chaque pixel de l’image une
valeur correspondant à la quantité de lumière renvoyée. Cette valeur peut être comprise entre
0 et 255. Chaque pixel n’est donc plus représenté par un bit, mais par un octet. Pour cela, il
faut que le matériel utilisé pour afficher l’image soit capable de produire les différents
niveaux de gris correspondant.

Le nombre de niveaux de gris dépend du nombre de bits utilisés pour décrire la " couleur " de
chaque pixel de l’image. Plus ce nombre est important, plus les niveaux possibles sont
nombreux.

2.2.3.3 Images couleurs

La plus fréquente représentation d’image utilisée par les applications multimédias est l’image
couleur. Pour ce faire, chaque pixel possède une couleur décrite par la quantité de rouge (R),
vert (G) et bleu (B).

Chacune de ces trois composantes est codée sur l’intervalle [0, 255], ce qui donne 16 777 216
couleurs possibles. [12]

On distingue deux types de codage pour les images couleurs :

- Codage d’une image en couleurs 8 bits :

Pour ce type de codage, on attache une palette de 256 couleurs à l’images.

Ces 256 couleurs sont choisies parmi les 16 millions de couleurs de la palette RVB et pour
chaque image, le programme recherche les 256 couleurs les plus pertinentes.

Un avantage de ce type de codage est que l’image occupe 3 fois moins de place qu’avec un
codage 24 bits. Toutefois, on constate que l’image est moins nuancée.

- Codage d’une image en couleurs 24 bits :

Le codage d’une image en couleurs 24 bits ou le codage Rouge, Vert, Bleu (RVB) est le plus
utilisé. Chaque couleur est codée sur 1 octet = 8 bits. Chaque pixel sur 3 octets c'est à dire 24
bits : le rouge de 0 à 255, le vert de 0 à 255, le Bleu de 0 à 255. On peut ainsi obtenir
256*256*256 = 16777216 couleurs.

Le principe de ce codage repose sur la synthèse additive des couleurs : on peut obtenir une
couleur quelconque par addition de ces 3 couleurs primaires en proportions convenables.

24
2.2.4 Format d’une image

Les images appartiennent à deux grandes familles : bitmap (image-bit) et vectorielle

2.2.4.1 Format vectoriel

Une image vectorielle est décrite à l’aide de courbes et d’équations mathématiques. C’est-à-
dire que les données sont représentées par des formes géométriques simples qui sont décrites
d'un point de vue mathématique.

Par exemple, le cercle est une image vectorielle.

2.2.4.2 Format matriciel

Une image matricielle est formée d'un tableau de points ou pixels. Plus la densité des points
est élevée, plus le nombre d'information est grand et plus la résolution de l'image est élevée.
Corrélativement la place occupée en mémoire et la durée de traitement seront d'autant plus
grandes.

Les images vues sur un écran de télévision ou une photographie sont des images matricielles.

On obtient également des images matricielles à l'aide d'un appareil photo numérique, d'une
caméra vidéo numérique ou d'un scanner

2.2.5 Vidéo

La vidéo est une succession d’images animées défilant à une certaine cadence afin de créer
une illusion de mouvement pour l’œil humain.

Elle peut être analogique (signal continu d’intensité de luminance) ou numérique (suite de
trames ou images).

2.3 Vision par ordinateur

2.3.1 Définition

La vision par ordinateur est une discipline informatique qui consiste à mettre en œuvre des
outils et techniques pour permettre à un ordinateur d’interpréter un élément visuel c’est-à-dire,
de créer des descriptions intelligentes et utiles de séquences et de scènes visuelles, ainsi que
des objets au moyen d'opérations menées sur des images ou des vidéos.

La détection d’objet fait partie des applications de la vision par ordinateur donc elle suit les
étapes de cette dernière.

25
2.3.2 Etapes de la vision par ordinateur

La figure suivante représente les étapes de la vision par ordinateur.

Acquisition Traitement Analyse Interprétation

Figure 1.12 : Figure 2.04 : Etapes de la vision par ordinateur


2.3.2.1 Acquisition

C’est une phase très importante dans le processus de la vision par ordinateur puisqu’elle
permet de simplifier les étapes de traitement et d’analyse.

L’étape d’acquisition nécessite plusieurs outils dont l’éclairage, les cartes d’acquisition (carte
ajoutée à un ordinateur pour la numérisation de sons et d'images en provenance de sources
externes), les caméras et les scanners.

- Principe

Tout d’abord, des sources lumineuses éclairent une scène composée d’objets, ensuite chaque
objet absorbe et renvoie cette énergie lumineuse, puis le capteur d’images effectue son rôle en
transformant l’énergie lumineuse renvoyée dans sa direction en un signal électrique. Cette
transformation est basée sur l’effet photoélectrique, il permet à un photon incident d’arracher
des électrons à des éléments sensibles ou photosites d'une matrice de petits capteurs
élémentaires.

- Capteurs

On distingue deux types de capteurs : les capteurs CCD et les capteurs CMOS. Les capteurs
CCD sont inventés dans en 1970 par Willard S. Boyle et George Smith. Le mécanisme de ces
capteurs est le suivant : les photons sont reçus sur l’électrode semi-transparente et sont
transformés en électron par effet photoélectrique. Les électrons sont ensuite collectés dans la
zone désertée. À la fin de l'exposition, grâce à un jeu de variation de potentiel cyclique
résultant d'une horloge externe, les charges sont transportées de photosite en photosite et
envoyées dans un registre de sortie. Finalement, les charges sont transformées en tension. Ce
signal sera, à l'extérieur du CCD, amplifié et numérisé. Le second type de capteur CMOS sont
apparus dans les années 80, il a le même principe de base que le capteur CCD à la seule
différence que pour un capteur CMOS ; à l'intérieur de chaque photosite, la charge générée est
directement convertie en tension utilisable.

26
2.3.2.2 Traitement

Cette phase est souvent appelée prétraitement. Elle regroupe l’ensemble des techniques
permettant d’améliorer l’image. Comme les parasites accompagnent la première phase, il est
important d’appliquer quelques traitements afin de les réduire.

Les techniques de prétraitement les plus courantes sont :

- La modification d’histogramme

On a vu précédemment que l’histogramme fait partie des caractéristiques d’une image, il


permet d’obtenir plusieurs informations sur l’image. La modification d’histogramme est donc
une méthode qui consiste à améliorer l’image en appliquant une transformation ponctuelle
d’intensité. Pour chaque pixel on associe une intensité par une transformation croissante telle
que les contrastes entre régions seront conservés. Ici une région représente un ensemble
connexe de pixels ayant le même niveau, délimité par un contour de pixels de niveaux
différents. Comme exemple de modification d’histogramme, on peut citer l’expansion de
dynamique et l’égalisation d’histogramme.[11]

- Le filtrage

L’objectif avoué du filtrage est d’éliminer les perturbations induites par les procédés
d’acquisitions d’image et aux problèmes de transmission ainsi de réduire les variations
d’intensité au sein de chaque région de l’image tout en respectant l’intégrité de la chaîne
originale comme les transitions entre les régions homogènes. Toutefois, les éléments
significatifs de l’image doivent être préservés au mieux. [11]

2.3.2.3 Analyse

L’objectif de cette phase est l’extraction d’information caractéristique contenue dans l’image.

Pour effectuer l’analyse, on fait appel à des techniques comme :

- La classification d’objet : une méthode qui consiste à catégoriser l’image entière dans
une classe
- La détection d’objet : une technique qui permet de localiser des instances dans une
image, en dessinant un rectangle autour de chacune d’elle ;
- La segmentation d’objet : elle constitue la base de la classification et la détection
d’objet.

27
2.3.2.4 Interprétation

La phase d’interprétation consiste à interpréter les informations et à décider des actions à


engager : la visualisation, le stockage et la transmission des images. L’image est alors décrite
de manière sémantique.

2.4 Notion sur les objets

Un objet désigne une entité définie dans un espace à trois dimensions, soit naturel, soit
fabriqué par l’homme (artefact), qui a une fonction précise, désignable par une étiquette
verbale.

Les objets appartiennent au monde physique et peuvent être détectés, commandés et


connectés. L'environnement qui nous entoure, les robots industriels, les biens ainsi que les
équipements électriques sont des exemples d'objets physiques.

2.5 Détection d’objets

2.5.1 Définition de la détection d’objet

La détection d'objets est une technique de vision par ordinateur qui permet d'identifier et de
localiser des objets dans des images ou des vidéos. Plus précisément, la détection d'objet
dessine des cadres de délimitation autour des objets détectés, ce qui nous permet de localiser
ces objets (ou de savoir comment ils se déplacent) dans une scène donnée.

2.5.2 Différence entre détection d’objet et reconnaissance d’image

La détection d’objet et la reconnaissance d’image sont deux concepts que l’on confonde
souvent, il est important donc de connaitre la différence entre ces deux principes avant de
savoir plus sur la détection d’objet.

La reconnaissance d’image vise à identifier ou à classifier l’ensemble de l’image en fonction


de son contenu global. Pour ce faire, on attribue des étiquettes aux images. Une application de
médias sociaux qui peut reconnaitre automatiquement le contenu des images téléchargées
implémente une reconnaissance d’image. Si un utilisateur télécharge une image sur la plage
aves un coucher de soleil, l’IA de reconnaissance pourrait identifier que l’image représente
vraiment une scène de plage au coucher du soleil. Cela nécessite une compréhension très large
du contenu de l’image.

La détection d’objet consiste à localiser et à identifier des objets spécifiques dans une image
ou une vidéo. Cela implique de détecter les positions et déplacements des objets en encadrant

28
chacun avec une boîte englobante (bounding box). Une application permettant d’identifier et
d’interpréter les feux tricolores se sert du concept de détection d’objets, l’intelligence
artificielle dans cette application se concentre sur les feux tricolores, leur formes et couleurs
sans nécessairement reconnaitre tout le reste de la scène.

Brièvement, la détection d’objet peut être considérée comme un sous-domaine de la


reconnaissance d’image qui mis l’accent sur la localisation et l’identification précises d’une
partie des objets d’une image tandis que la reconnaissance des objets vise à analyser plus
globalement l’image pour identifier son contenu dans son ensemble.

2.6 Détection d’objet et IA

Avant l’apparition et l’évolution du deep learning, la détection d’objets dépendait largement


de l’extraction manuel de caractéristiques. Nous allons voir dans ce paragraphe un bref aperçu
des méthodes traditionnelles de détection d’objet pour pouvoir passer ensuite dans la
description de la détection d’objet avec le deep learning.

2.6.1 Approches traditionnelles de détection d’objet

La méthode de Viola et Jones a été réalisée par les chercheurs Paul Viola et Michael Jones en
2001. [13]

Elle fait partie d’une grande découverte dans le domaine de la détection des objets dans une
image. Même si au tout début, elle est conçue pour la détection du visage, elle peut également
servir pour la détection d’autres objets.

Dans l’algorithme original, une fenêtre de détection de taille initiale 24px par 24px est utilisée
pour balayer l’image et déterminer si un visage y est présent. Une fois l’image parcourue
entièrement, la taille de la fenêtre est augmentée d’un facteur multiplicatif de 1,25 et le
balayage recommence, en décalant d’un pixel, jusqu’à ce que la fenêtre fasse la taille de
l’image. Ce décalage peut être changé afin d’accélérer le processus, mais un décalage d’un
pixel assure une précision maximale.

Apart la méthode de Viola et Jones, il y aussi d’autres méthodes comme le détecteur de coins,
la transformation de caractéristiques invariantes d’échelle (SIFT), les fonctionnalités robustes
accélérées (SURF) et beaucoup d’autres encore qui possèdent des fonctionnalités conçues à la
main utilisées dans la détection d’objets.

29
2.6.2 Détection d’objet et le deep learning

Avec le deep learning, des modèles pré-entraînés sont conçus afin de gérer la tâche de
détection d’objet. Ces derniers sont déjà entraînés avec des centaines de milliers de contenus
visuels pour optimiser automatiquement la précision de la détection par la suite.

Les premiers modèles de détection d’objets basés sur l’apprentissage profonde peuvent être
classés en deux :

2.6.2.1 Détecteurs d’objets à deux étages

Les détections d’objets à deux étages suivent les deux étapes suivantes : la première est la
proposition de régions et la seconde étape est la classification et affinement de la proposition.

La famille RCNN constitue depuis longtemps le modèle de détection d’objets de pointe.

- RCNN

Le réseau neuronal convolutif basé sur une région a été proposé par Ross Girshick et d’autres
auteurs. En 2014, il a été l’une des premières approches réussies d’apprentissage en
profondeur pour détecter des objets.

Le mode de fonctionnement du RCNN est le suivant : il génère un ensemble de propositions


de régions à l’aide d’un algorithme externe puis il y a application d’un réseau neuronal
convolutif à chaque proposition de région afin d’extraire des caractéristiques ; et enfin, il y a
classification de chaque proposition à l’aide d’une machine à vecteurs de support (SVM).

- Fast R-CNN

En 2015, le rapide- RCNN a été proposé par Ross Girshick pour pouvoir améliorer la vitesse
et la précision de la détection d’objet. Fast R-CNN fonctionne en utilisant un seul CNN
partagé pour extraire des fonctionnalités de l’image entière. Ensuite, il utilise les régions
d’intérêts ou en anglais « Region of Interest » pooling pour extraire des caractéristiques de
longueur fixe pour chaque proposition de région. Ces vecteurs de caractéristiques sont
introduits dans un ensemble de couches entièrement connectées qui effectue la classification
des objets et la régression du cadre de délimitation.

- Faster R-CNN

Une nouvelle approche a été avancé par Shaoqing Ren avec d’autres chercheurs en 2015 : le
Faster R-CNN, il représente une avancée majeure dans la détection d’objet avec le deep
learning.
30
Le réseau neuronal convolutif basé sur une région plus rapide fonctionne en utilisant tout
d’abord un réseau de proposition de région (RPN) pour générer des propositions de région
directement à partie des fonctionnalités du CNN. Le RPN partage des couches convolutives
avec le réseau de détection d’objets, ce qui lui permet d’être formé de bout en bout avec le
reste du réseau. Une autre particularité du Faster R-CNN est qu’il a introduit une nouvelle
fonction de perte permettant d’optimiser la classification des objets et la régression du cadre
de délimitation.

2.6.2.2 Détecteurs d’objets en un étage

Les méthodes de détection en un étage négligent totalement l’étape de proposition de région.


Les modèles visent donc à simplifier le pipeline de détection d’objets en prédisant les
étiquettes de classes d’objets et les coordonnées du cadre de délimitation en un seul passage.

Les modèles YOLO et SSD font partie de ces détecteurs d’objets en un étage.

- YOLO

Les modèles YOLO divisent une image en grille et prédit les cadres de délimitation et les
probabilités de classe pour chaque cellule de la grille. Le principe est d’examiner l’image
entière en une seule fois d’où son nom.

- SSD

SSD prédit plusieurs cadres de délimitation et scores de classe pour ces cadres en un seul
passage. Pour cela il utilise plusieurs cartes de caractéristiques de différentes couches du
réseau pour prédire les détections à différentes échelles.

2.7 Conclusion

Ce second chapitre nous a permis d’en savoir plus sur les images, sur la vision par ordinateur
et surtout sur la détection des objets. Les avancées sur l’intelligence artificielle, plus
précisément sur le deep learning ont permis au domaine de la détection de s’évoluer de plus
en plus. Il existe divers modèles de détection d’objets que ce soit à un étage ou à deux et ils ne
cessent de s’améliorer de jour en jour et on peut voir sa perspective surtout dans l’internet des
objets. (Voir annexe 1)

31
CHAPITRE 3
OUTILS DE PROGRAMMATION POUR LA CONCEPTION DE L’APPLICATION

3.1 Introduction

La conception d’une application requiert des connaissances sur plusieurs plateformes et


logiciels existants. Dans notre cas, nous avons besoin de quelques notions en langage de
programmation sous Android Studio et surtout quelques connaissances sur le Tensoflow
Object Detection L’Android studio permet de concevoir une application tandis que google
tensorflow se concentre surtout sur le concept de l’intelligence artificielle, machine learning et
deep learning.

3.2 Programmation sous Android

3.2.1 Le système d’exploitation Android

3.2.1.1 Définition et historique

Le système d’exploitation Android est actuellement l’OS le plus utilisé dans le monde faisant
tourner des smartphones, tablettes, montres connectées, télévisions interactives, et bien
d’autres. Lancé en 2003, il a été ensuite racheté par Google en 2005. [20]

3.2.1.2 Caractéristiques

a. Open source

Android est une plateforme open source, ce qui signifie que tout le monde peut apporter des
améliorations à ce système. Dans ce projet, on s’intéresse surtout à la conception
d’application pour ce système. Il existe plusieurs IDE (Environnement de développement
intégré) pour le développement Android et nous allons en savoir plus sur l’un d’eux qui est
l’Android Studio.

b. Version

Dû aux différentes mis à jour, il existe de nombreuses versions d’Android actuellement. La


plupart de ces différentes versions ont des noms de desserts depuis la sortie de la version 1.5
et suivent un ordre alphabétique. [21]

32
Figure 1.13 : Figure 3.01 : Liste des versions d’Android avec la date de première version stable
c. Architecture

L’architecture d’une application Android se compose des différentes parties suivantes :

- Un noyau linux : Android est basé sur un kernel linux. Cela permet aux applications
d’avoir un système de gestion de mémoire et de processus stable, performant, sécurisé
et surtout multitâches.
- Des bibliothèques : Ces bibliothèques fournissent les fonctionnalités de bas niveau
d’Android.
- Une machine virtuelle adaptée : Elle se compose de la machine virtuelle Dalvkit basée
sur une architecture de registre et des bibliothèques internes.
- Un framework applicatif : Le framework applicatif sert à fournir des API permettant la
création des applications riches en introduisant la notion de service.
- Des applications qui peuvent se trouver dans des appareils, dans les navigateurs web,

33
Figure 1.14 : Figure 3.02 : Architecture Android
d. Outil de développement

− SDK Android : Le SDK (Software Development Kit) Android est un ensemble d’outils
que met à disposition Google afin de nous permettre de développer (créer et maintenir)
des applications pour Android : API (interfaces de programmation), exemples de code,
documentation, émulateur.
− Le débogueur « ADB » : Le SDK Android contient un débogueur appelé « Android
debug bridge » ou aussi « ADB », qui permet de connecter un appareil Android virtuel ou
réel, dans le but de gérer le périphérique ou de déboguer votre application.
− IDE (Environnement de développement intégré) : Android Studio … [14]

3.2.1.3 Logiciel et application Android

a. Composants applicatifs

- Activité : il s’agit généralement du brique de base d’une application. Correspondant à


la partie présentation de l’application, elle est l’équivalent d’une fenêtre avec laquelle
les utilisateurs interagissent.
- Fournisseur de contenu : Comme Android encourage la mise à disposition de ses
propres données aux autres programmes, le fournisseur de contenu permet aux
applications de partager et d’accéder des données entre elles.

34
- Service : C’est un logiciel autonome prévu pour durer (contrairement aux activités,
fournisseurs de contenus, récepteur d’intentions) effectuant des tâches en arrière-plan
sans interaction directe avec les utilisateurs.
- Intention : C’est un message système qu’on peut qualifier d’événement permettant aux
composants de l’application de demander des actions d’autres composants comme
démarrer une activité ou lancer un service.
- Manifeste : C’est le point de départ de toute application Android puisqu’il permet de
déclarer ce que l’application contient (activités, services...). Il précise aussi comment
ces composants sont reliés à Android et les permissions de l’application (contrôle de la
webcam, accès aux réseaux, accès au service de localisation...)
- Gadget graphique : Widget est un terme résultant de la contraction des termes
windows et gadget et concrètement, c’est un composant d’interface graphique
- XML : C’est un langage de balisage extensible pour structurer des données.
- Positionnement XML : il permet de concevoir les interfaces plus simples qu’en
langage Java et permet concrètement d’instancier les widgets.
- Ressources : ces sont des fichiers tels que les images, les icônes, les chaînes de
caractères et les mises en pages qui sont séparés du code source et permettent une
personnalisation facile de l’interface utilisateur.
- Gradle Build System : il s’agit d’un outil de compilation et de gestion des
dépendances qui automatise la construction de l’application et la gestion de ses
bibliothèques. [13]

b. Cycle de vie d’une activité

Le cycle de vie d’une activité Android décrit les différentes étapes par lesquelles une activité
passe, de sa création à sa destruction. Les principales étapes sont les suivantes : [13][15]

- onCreate() :Méthode exécutée quand l’activité est créée et dans laquelle la vue XML
et des données sont initialisées.
- onStart() : Méthode appelée après onCreate() ou après onRestart() lorsque l’activité a
été arrêtée, mais est actuellement à nouveau affiché à l’utilisateur.
- onRestart() : Méthode appelée après onStop() lorsqu’on redémarre l’activité.
- onResume() : Méthode appelée après onRestoreInstanceState() , onRestart ou onPause
pur que l’activité commence à interagir avec l’utilisateur.
- onPause() : Méthode appelée lorsque l’activité passe en arrière-plan.

35
- onStop() : Méthode appelée pour que l’activité ne soit plus visible pour l’utilisateur.
- onDestroy() : Méthode appelée pour effectuer le nettoyage finale avant suppression
d’une activité.

Figure 1.15 : Figure 3.03 : Cycle de vie d’une activité


Chaque étape offre des points d’interaction où on peut exécuter du code spécifique pour gérer
le comportement de l’activité en réponse aux événements du système ou aux interactions de
l’utilisateurs.

36
3.2.2 L’IDE Android Studio

3.2.2.1 Installation

Pour utilise l’environnement de développement intégré Android Studio, il faut exécuter les
différentes étapes suivantes :

- Téléchargement du dernier JDK (Java Development Kit)


- Désinstallation des éventuelles versions antérieures du JDK
- Installation du nouveau JDK
- Téléchargement d’« ANDROID STUDIO ». Il contient l’environnement de
développement, le SDK (Software Development Kit) Android avec la dernière version
de la plateforme, ainsi qu’un émulateur.
- Lancement de l’exécutable pour démarrer l’installation et suivez le wizard.

Il existe de nombreuses versions d’Android Studio et la dernière version stable actuelle est
l’Android Studio Giraffe. Cela est dû au fait que les concepteurs veulent introduire de
nouvelles améliorations et d’autres nombreuses fonctionnalités à l’IDE.

3.2.2.2 Configuration

L’IDE Android Studio utilise de nombreux paquets que l’on doit tout d’abord installer et
mettre à jours.

Après lancement d’Android Studio, il faut vérifier la version du SDK installé, la version de
l’API (Application Programming Interface), la version de l’OS permettant de développer et
les éventuelles mises à jour.

3.2.2.3 Langage de programmation

Après avoir installé et configurer l’IDE Android studio, on peut accéder à la création de notre
projet, on remplit les informations concernant ce dernier y compris le choix de langage de
programmation.

Pour l’Android Studio, on peut choisir soit le langage Java soit le langage Kotlin.

3.2.2.4 L’interface

Pour pouvoir concevoir un logiciel ou application Android, le codage se fera sur une une
interface graphique comportant quatre (04) sections.

37
4

2
1

Figure 1.16 : Figure 3.04 : Interface d’Android Studio


(1) : Les fichiers du projet Android

(2) : Code de l’application

(3) : la prévisualisation de l’interface (non disponible que si l’on n’est pas à une ressource

XML, généralement layout)

(4) : La barre de menu d’Android studio (Lancement du projet, Debug …)

3.2.3 Le langage Java

3.2.3.1 Historique

Le langage Java a été mis au point par James Gosling chez Sun Microsystems au début des
années 1990 et signifie café en argot américain, dans le cadre d’un projet de développement
de logiciel pour des appareils électroniques de grande consommation : télévisions,
magnétoscopes, grille-pain …. Les objectifs de l’époque étaient la concision, la rapidité,
l’efficacité et la portabilité. Java est devenu ainsi un langage idéal pour la distribution
d’exécutables via le Web. [14]

3.2.3.2 Caractéristique

Java possède un certain nombre de caractéristiques qui ont largement contribué à son énorme
succès : [16]

38
a. Langage interprété et compilé

- Langage compilé

Un langage est dit compilé si avant d’être exécuté, un logiciel spécialisé se charge de
transformer le code du programme en langage machine. Et un programme écrit en java avec
une extension java est compilé par un compilateur appelé javac existant dans l’outil JDK, en
un bytecode d’extension class.

- Langage interprété

Le langage java peut aussi être un langage interprété, c’est-à-dire que les instructions
envoyées sont « transcrites » en langage machine au fur et à mesure de leur lecture. Dans ce
cas le bytecode peut être interprété (exécuter) sous n’importe quel système d’exploitation par
le JVM (Java Virtual Machine)

b. Langage simple

Le choix de ses auteurs a été d'abandonner des éléments mal compris ou mal exploités des
autres langages tels que la notion de pointeurs (pour éviter les incidents en manipulant
directement la mémoire), héritage multiple et la surcharge des opérateurs, ... [16]

c. Langage orienté objet

La programmation par objets consiste essentiellement à structurer les applications selon les
types de données. L’expérience montre que l’on obtient ainsi des logiciels fiables, évolutifs et
faciles à maintenir. [17]

Comme la plupart des langages récent, java est orienté objet. Chaque fichier source contient la
définition d'une ou plusieurs classes qui sont utilisées les unes avec les autres pour former une
application. Java n'est complètement objet par il définit des types primitifs (entier, caractère,
flottant, booléen, ...).

3.3 Google Tensorflow

3.3.1 Définition

TensorFlow est la bibliothèque de logiciels open source deuxième génération de Google pour
l'informatique numérique. Le cadre informatique de TensorFlow prend en charge divers
algorithmes d'apprentissage en profondeur et de multiples plateformes informatiques,
garantissant ainsi une grande stabilité du système. [3]

39
Sorti en 2017, Google Tensorflow est donc une bibliothèque d’apprentissage automatique
permettant de créer et d’entraîner des modèles, en particulier des réseaux de neurones
profonds, pour diverses tâches.

3.3.2 Caractéristiques

3.3.2.1 Evolutivité

L’évolutivité de Tensorflow réside sur le fait qu’il est capable de gérer des projets de petite à
grande échelle. Il peut s’adapter à différents volumes de données et traiter des tâches
complexes.

3.3.2.2 GPU (Graphics Processing Unit)

Le GPU est une unité de traitement conçue pour accélérer les calculs liés au graphisme, à la
vidéo et à d’autres tâches intensives en parallèle. TensorFlow peut l’utiliser afin d’augmenter
la vitesse de calcul. Les GPU sont optimisés pour effectuer de multiples opérations en
parallèle, ce qui les rend idéaux pour les tâches d'apprentissage automatique, y compris les
réseaux de neurones profonds, qui impliquent des calculs intensifs.

3.3.2.3 Puissance de calcul

TensorFlow offre une puissance de calcul élevée grâce à son optimisation pour l'exécution de
calculs sur des architectures distribuées et parallèles. Cela permet aux utilisateurs de traiter
rapidement des ensembles de données complexes et de former des modèles d'apprentissage
automatique sophistiqués.

3.3.2.4 Multilingue

Le bibliothèque Tensorflow prend en charge plusieurs langages de programmation, dont


Python, C++, Java et Go. Cela offre une multitude de choix aux développeurs.

3.3.2.5 Multi-plateforme

On dit que Tensorflow est multiplateforme car elle peut être utiliser sur différentes
plateformes matérielles et systèmes d’exploitation.

3.3.2.6 Distribué

L’apprentissage distribué est une approche de l’apprentissage automatique ou les tâches de


formation de modèles sont réparties sur plusieurs machines ou nœuds de calcul. Tensorflow

40
est distribué puisqu’il peut exécuter des calculs sur plusieurs machines en réseau, permettant
ainsi de gérer des tâches complexes et volumineuses plus efficacement.

3.3.3 Le langage Python

3.3.3.1 Historique

Python est un langage de programmation dont la première version est sortie en 1991. Créé par
Guido van Rossum, il a voyagé du Macintosh de son créateur, qui travaillait à cette époque au
Centrum voor Wiskunde en Informatica aux Pays-Bas, jusqu'à se voir associer une
organisation à but non lucratif particulièrement dévouée, la Python Software Foundation,
créée en 2001. Ce langage a été baptisé ainsi en hommage à la troupe de comiques les «
Monty Python ». [18]

3.3.3.2 Caractéristiques

a. Langage interprété

Python est un langage de programmation interprété, c'est-à-dire que les instructions que vous
lui envoyez sont « transcrites » en langage machine au fur et à mesure de leur lecture.

b. Langage portable

Un des avantages du langage interprété est sa portabilité puisque Python est censé fonctionner
aussi bien sous Windows que sous Linux ou Mac OS, et on ne devrait avoir à effectuer aucun
changement dans le code pour le passer d'un système à l'autre.

c. Langage simple

La syntaxe de Python est très simple et, combinée à des types de données évolués (listes,
dictionnaires...), conduit à des programmes à la fois très compacts et très lisibles. À
fonctionnalités égales, un programme Python (abondamment commenté et présenté selon les
canons standards) est souvent de 3 à 5 fois plus court qu’un programme C ou C++ (ou même
Java) équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus
court et une facilité de maintenance largement accrue.

41
3.3.4 Jupyter notebook

Les notebooks jupyter sont des cahiers électroniques qui peuvent rassembler du texte, des
images, des formules mathématiques, du code informatique exécutable. Ils sont manipulables
interactivement dans un navigateur web.

Au tout début, jupyter a été développé pour les langages de programmation Julia, Python et R
(d’où le nom jupyter) mais actuellement, les notebooks Jupyter supportent près de 40
langages différents.

3.3.4.1 Installation

Pour installer Jupyter notebook, il suffit d’installer le navigateur Anaconda qui est un
installateur gratuit.

Figure 1.17 : Figure 3.05 : Interface du navigateur Anaconda


Après l’installation d’Anaconda, il suffit de lancer jupyter notebook et de créer un nouveau
fichier.

3.3.4.2 Interface

La cellule est l’unité de base du jupyter notebook, c’est-à-dire que dedans on peut soit écrire
des codes ou utiliser le langage à balise Markdown.

42
Figure 1.18 : Figure 3.06 : Interface Jupyter notebook
3.3.5 Tensorflow object detection

3.3.5.1 Définition

Développé par Google, Tensorfow Objet Detection ou TFOD permet de créer, former et
déployer des modèles de détection d’objets en utilisant Tensorflow.

Il facilite la création de modèle capable d’identifier, de détecter et de localiser différents


objets dans des images ou vidéos. [19]

3.3.5.2 Etapes

a. Importation des dépendances

La détection des objets peut faire appel à de nombreuses dépendances à l’instar des
bibliothèques openCV, os, …

b. Préparation des images à entrainer en utilisant labelImg

Les images à entrainés doivent être étiquetés pour faciliter l’entrainement et le test durant la
détection de l’objet.

c. Téléchargement du modèle pré-entraîné

Il existe plusieurs familles de réseaux pré-entraînés dédiés à la détection d’objets parmi


lesquelles :

43
- SSD et YOLO : Une famille de modèles de détection d’objets qui appartient à la
famille de modèle de détection en une seule étage. Il est conçu pour détecter des objets
dans une image en une seule passe.
- R-CNN : Une famille de modèle de détection d’objets en deux étapes. L’évolution de
ces modèles a généré une nouvelle version évoluée de ce dernier qui se nomme Fast
R-CNN.

d. L’arborescence de travail pour les projets de détection d’image

La structuration des dossiers et fichiers dans la manipulation de tensorflow est très important
puisqu’on en utilise plusieurs.

A chaque projet correspond à un répertoire <project>

- Dans le dossier <project> / images coontient pour chaque projet :


o Les dossiers test et train contiennent chacun :
✓ Les images PNG, JPG, … à analyser
✓ Les fichiers d’annotation XML créés avec le logiciel labelImg
o Les fichiers d’annotation CSV (contenu des fichiers XML convertis au format
CSV), qui seront à leur tour convertis au format tensorflow record.
- Dans le dossier <project> / training contient pour chaque projet :
o Un dossier <pre_trained_net> pour chaque réseau pré-entrainer utiliser (on
peut en utiliser plusieurs)
✓ Les fichiers des poids du réseau pré-entraîné téléchargés depuis Internet
✓ Les fichiers des nouveaux poids du réseau pré-entraîné réentraîné par
vos soins
o Les fichiers train.record et test.record : données labelisées d’entraînement et de
test au format tensorflow record
o Le fichier label_map.txt contient la liste des labels correspondants aux objets à
détecter.
- Le dossier pre-trained/ contient un sous-dossier pour chacun des réseaux pré-entraînés
utilisé qui stocke les différents fichiers nécessaires à leur utilisation.

e. Configuration de l’entraînement

Dans cette étape, on définit les hyperparamètres pour l’entraînement comme le taux
d’apprentissage, le nombre d’itération, la taille des lots, etc.

44
f. Entraînement du modèle

Cela consiste à exécuter l’entrainement en alimentant les images annotées dans le modèle et à
ajustez les poids su modèle afin qu’il apprenne à détecter les objets.

g. Inférence

Utilisation du modèle entraîné pour détecter des objets dans de nouvelles images en passant
les images à travers le réseau neuronal.

h. Post-traitement

On applique des techniques de post-traitement pour filtrer les détections, supprimer les
doublons et améliorer la précision.

i. Déploiement

Intégration du modèle entraîné dans une application, site web, logiciel ou autre système pour
la détection d’objet en temps réel.

3.4 Conclusion

Les plateformes Android studio et de Google Tensorflow sont des atouts pour les utilisateurs.
La conception d’application Android est devenue plus facile avec Android Studio et
l’implémentation des apprentissages automatique et approfondie est devenue plus rapide et
moins encombrante avec Google Tensorflow. Toutefois, la manipulation de ces outils
nécessite différentes connaissances surtout sur les langages de programmations, sur les
différentes mis à jour des outils utilisés dans les plateformes.

45
CHAPITRE 4
CONCEPTION DE L’APPLICATION SIGNA-CAM

4.1 Introduction

Actuellement, la détection des objets peut s’appliquer dans la vie de tous les jours. Pour notre
cas, l’étude se concentre sur le domaine du transport routier. L’objectif est de créer une
application mobile qui pourra détecter et identifier les panneaux de signalisation. Cette
application nommée « Signa-Cam » sera une aide pour les conducteurs d’automobile.

Vu que quelques notions sur l’intelligence artificielle, la détection d’objets et les outils
nécessaires pour la création d’une application ont été déjà introduites dans les chapitres
précédents, dans ce dernier chapitre, nous utiliserons ces connaissances afin de concevoir une
application dotée d’une aptitude et sera capable d’identifier de nombreux panneaux de
signalisation.

4.2 Fonctionnement de l’application

C’est une application qui utilise la caméra d’un téléphone mobile et quand un des panneaux
de signalisation se trouve dans son champ de vision, l’écran du téléphone affichera un
bounding box avec le pourcentage de sureté du modèle et le nom de la plaque correspondante.

4.3 Environnement matériel

4.3.1 Ordinateur

La conception de l’application mobile et le déploiement du modèle de détection d’objet ont


été effectués à partir d’un ordinateur portable HP possédant les caractéristiques suivantes :

Processeur : Intel® Celeron® N4000 CPU @ 1.10GHz (2CPUs), ~1.1GHz

RAM : 8,00 Go

Système d’exploitation: Windows 10

4.3.2 Téléphone

Pour faire des tests sur l’applications, l’utilisation d’un téléphone mobile ayant les
caractéristiques suivantes était nécessaire :

CPU :1.8GHz

RAM : 2.00 GB

Version d’Android : 11
46
4.3.3 Maquette de panneaux de signalisation

Une petite maquette de panneaux de signalisation faite à partir de cartons et de papier a été
conçu pour simuler le fonctionnement de l’application.

La figure 4.01 suivante montre quelques panneaux de signalisation conçus.

Figure 1.19 : Figure 4.01 : Les panneaux de signalisation

47
4.4 Environnement logiciel

Les logiciels et plateformes décrits dans le chapitre précédent sont les principaux outils
utilisés dans la conception de l’application.

Nous avons donc installé tout d’abord python 3.9 comme éditeur

Figure 1.20 : Figure 4.02 : logo de python


Puis on a procédé à l’installation du navigateur anaconda qui contient jupyter notebook.

Figure 1.21 : Figure 4.03 : logo du navigateur anaconda

Figure 1.22 : Figure 4.04 : logo de jupyter notebook

48
Et depuis jupyter notebook, nous avons installé la version recente de tensorflow.

Figure 1.23 : Figure 4.05 : logo de Tensorflow

Nous avons aussi téléchargé et installé la version la plus récente d’Android studio pour la
conception de l’application mobile.

Figure 1.24 : Figure 4.06 : logo d’Android Studio

4.4.1 Autres dépendances

Durant l’installation des outils, nous avons rencontré des messages expliquant qu’il y a des
dépendances à télécharger pour le bon fonctionnement des applications. La plupart d’entre
eux ont été installé bel et bien. Toutefois, certains outils comme le cuDNN et CUDA n’ont
pas été installé à cause de nos environnements matériels.

49
4.5 Etapes

4.5.1 Conception de l’application

Nous avons choisi comme logo de l’application la figure suivante :

Figure 1.02 : Figure 4.07 : Logo de l’application


:

Cette figure représente l’utilisation de la caméra avec les panneaux de signalisation.

Et les interfaces de l’application Signa-Cam sont conçu à partir d’Android studio et sont
représentées par les deux figures suivantes.

Figure 1.25 : Figure 4.08 : Page d’accueil de l’application


La première interface montre le logo et le nom de l’application Signa-Cam.

50
Figure 1.26 : Figure 4.09 : Interface principale de l’application
Sur la figure 4.03, le bouton « Detect » sert à lancer la caméra du téléphone afin de
commencer la détection.

4.5.2 Conception du modèle

Après l’installation et configuration de différents logiciels et outils, nous avons effectué un à


un les étapes suivantes pour pouvoir obtenir le modèle de détection d’objet :

4.5.2.1 Collecte de données

Le collecte de données est une phase très importante pour la détection d’objets parce qu’on
doit entrainer le modèle avec de nombreuses données d’entraînement et on doit aussi le tester
avec des données de test.

Pour ce faire, nous avons collecter 100 images par panneaux de signalisation dont 70%
d’entre elles sont des données d’entraînement et les restes sont destinées au test.

51
Figure 1.27 : Figure 4.10 : Quelques données collectées

4.5.2.2 Etiquetage de données

Dans le premier chapitre, la section sur le type d’apprentissage a mis l’accent sur l’importance
des étiquettes de données en intelligence artificielle et visiblement cette étape consiste à
étiqueter chacune des données collectées.

« LabelImg » était l’outil d’annotation d’image utilisé dans cette étape. Il est écrit en python
et utilise Qt pour son interface graphique. Les images étiquetées sont sauvegardées sous
format xml.

Figure 1.28 : Figure 4.11 : Etiquetage d’image

4.5.2.3 Création des chemins d’accès

L’importance d’une arborescence bien structurée a été bien insistés dans le troisième chapitre
expliquant google Tensorflow. Nous avons donc pris la peine de bien élaborer les chemins
d’accès pour ne pas se perdre pendant l’entrainement.
52
paths = {

'WORKSPACE_PATH': os.path.join('Tensorflow2', 'workspace'),

'SCRIPTS_PATH': os.path.join('Tensorflow2','scripts'),

'APIMODEL_PATH': os.path.join('Tensorflow2','models'),

'ANNOTATION_PATH': os.path.join('Tensorflow2', 'workspace','annotations'),

'IMAGE_PATH': os.path.join('Tensorflow2', 'workspace','images'),

'MODEL_PATH': os.path.join('Tensorflow2', 'workspace','models'),

'PRETRAINED_MODEL_PATH':os.path.join('Tensorflow2', 'workspace','pre-trained-
models'),

4.5.2.4 Création de la carte d’étiquette

L’entraînement d’un modèle sur tensorflow nécessite une carte d’étiquette dans le but de faire
correspondre chaque étiquette de données à une valeur entière. C’est un fichier d’extension
pbtxt utilisé non seulement dans le processus d’apprentissage mais surtout durant la détection
des images. La figure suivante montre un extrait du label Map utilisé.

item {
name:'Stop'
id:1
}
item {
name:'VirageDroite'
id:2
}

item {
name:'DoubleSens'
id:3
}

53
4.5.2.5 Téléchargement du modèle

Nous avons choisi le modèle ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8 comme


modèle pré entraîné. C’est un modèle qui a été entrainé sur le Microsoft Common Objects in
COntext Dataset ou MSCOCO dataset.

Le MSCOCO dataset contient 91 catégories d‟objets communs avec 82 d'entre eux ayant plus
de 5 000 instances étiquetées. Au total, le jeu de données contient 2500000 instances
étiquetées dans 328000 images. [5]

Le choix s’est porté sur le MobileNet puisqu’il promet une détection plus rapide et plus
simple. C’est un mécanisme qui naît de la combinaison de l’algorithme de classification
MobileNet et l’incroyable framework SSD.

4.5.2.6 Création du TF Record

Les fichiers TFRecord sont des formats de fichiers binaires spécifiques utilisés principalement
avec Tensorflow. Ils sont conçus pour stocker et échanger des données d’apprentissage
automatique de manière efficace.

Pour permettre un accès rapide et efficace aux données d’entraînement et pour faire un pré-
traitement et alimentation direct des données dans un modèle Tensorflow, l’utilisation des
fichiers TFRecord sont très important et idéale.

4.5.2.7 Configuration du modèle d’entraînement

L’utilisation d’un modèle pré-entraîné requiert la configuration de ce dernier en fonction du


nombre de classes à détecter et la modification de nombreux chemins concernant surtout les
données à entraîner.

model {
ssd {
num_classes: 90
image_resizer {
fixed_shape_resizer {
}
}

Si initialement, le nombre de classe dans le modèle


ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8 est 90, il est important de le modifier en 6
puisqu’il y a six types de panneaux de signalisation à détecter.

54
Il faut aussi modifier le variable « fine_tune_check » pour indiquer le chemin d’accès au
modèle.

fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"

Il est important aussi d’indiquer dans le modèle le chemin du label map et le chemin du
fichier train.record.

label_map_path: "PATH_TO_BE_CONFIGURED"

input_path: "PATH_TO_BE_CONFIGURED"

4.5.2.8 Entrainement du modèle

Puisque toutes les configurations sont déjà effectuées, nous puvons passer à l’entrainement du
modèle. Pour ce faire nous avons lancé le script suivant sut cmd.

python Tensorflow2\models\research\object_detection\model_main_tf2.py --
model_dir=Tensorflow2\workspace\models\my_ssd_mobnet --
pipeline_config_path=Tensorflow2\workspace\models\my_ssd_mobnet\pipeline.
config --num_train_steps=2000

4.5.2.9 Evaluation du modèle

Pour pouvoir évaluer le modèle, nous avons lancé sur l’invité de commande le script suivant.

python Tensorflow2\models\research\object_detection\model_main_tf2.py --
model_dir=Tensorflow2\workspace\models\my_ssd_mobnet --
pipeline_config_path=Tensorflow2\workspace\models\my_ssd_mobnet\pipeline.
config --checkpoint_dir=Tensorflow2\workspace\models\my_ssd_mobnet

Et on obtient l’information suivante

55
Figure 1.29 : Figure 4.12 : Evaluation de l’apprentissage sur cmd

Nous avons aussi utilisé Tensorboard pour évaluer les graphes et l’évaluation de
l’entraînement. Nous avons constaté qu’au début de l’entraînement, l’erreur est descendue de
0.7 à 0.2.

Figure 1.30 : Figure 4.13 : Evaluation sur tensorboard

56
Pour pouvoir diminuer les erreurs, nous avons opté sur le redimensionnement des images et
l’augmentation de données.

4.5.2.10 Lancement de la détection

Nous avons lancé le modèle avec des images existant dans le dossier test et ensuite nous
avons effectué des tests en temps réel avec la webcam et on a pu recueillir les images
suivantes.

Figure 1.31 : Figure 4.14 : Détection en temps réel en utilisant la webcam

57
4.5.3 Implémentation du modèle dans l’application mobile

Avant de penser à introduire un modèle d’intelligence artificielle dans une application, il faut
effectuer quelques opérations pour que le modèle soit compatible au nouvel environnement
qui l’attend.

Comme nous allons utiliser le modèle dans le logiciel Android, nous allons exporter les
fichiers d’entrainement en Tensorflow lite.

La combinaison du modèle entrainé et l’application conçu avec Android Studio donne


naissance à Signa-Cam, l’application capable de détecter des panneaux de signalisation.

Nous avons donc créé un dossier du nom « assets » et on a copié dedans le label map utilisé
durant l’entrainement avec le dossier d’extension .tflite.

4.6 Conclusion

La conception d’une application détectrice de panneaux de signalisation est un projet


nécessitant plusieurs notions en deep learning et en développent d’application. De
nombreuses dépendances sont donc à installer pour le bon fonctionnement de l’application et
surtout de l’entrainement. La combinaison des outils expliqués précédemment et la
dépendance installée put donc offrir un projet rentable qui pourrait avoir un impact sur la vie
de tous les jours. Notre étude ici vise à innover le mécanisme du transport routier par le
développement de l’application signa-cam.

58
CONLUSION GENERALE

Le taux d’accident d’automobile dans la plupart des pays en voie de développement et surtout
à Madagascar ne cesse d’augmenter et même si la solution la plus évidente que l’on trouve est
l’amélioration et rénovation des infrastructures routières, nous pouvons explorer d’autres
domaines pour non seulement réduire les problèmes rencontrés dans le transport routier mais
surtout optimiser et faciliter la vie des êtres humains en automatisant certaines tâches.
L’application de détection de panneaux de signalisation peut être utilisée pour aider les
conducteurs, pour les signaler des comportements adaptés au changement d’environnement
qui l’entoure et pour les prévenir des dangers. Toutefois la conception de « Signa-Cam »
requiert beaucoup de notions dans le domaine de l’IT y compris l’Intelligence Artificielle qui
est une technologie émergente qui ne fait qu’évoluer actuellement. Apart l’IA, la détection
d’objets qui est un sous domaine de la vision par ordinateur est aussi un des prérequis
nécessaires dans la conception de l’application Signa-Cam. Combinée au deep learning, la
puissance de la détection d’objet augmente et son domaine d’application s’élargisse. Ces
notions sont purement théoriques jusqu’à ce qu’on les applique dans des logiciels et des
plateformes sous forme de code et c’est la raison pour laquelle nous avons parlé de google
tensorflow et d’Android Studio dans la troisième partie. Ces applications font parties des plus
utilisées et se présentent comme un grand atout surtout pour les développeurs. Brièvement, la
conception de l’application détectrice de panneaux de signalisation est devenue un projet
faisable avec nombreuses compétences basées généralement sur l’intelligence artificielle, la
détection d’image et quelques outils de programmation. Toutefois, on peut constater que
l’application de signa can est réduit à un usage précis et que l’apprentissage supervisé
implémenté dans ce système n’est pas vraiment le type d’apprentissage en vogue et plus que
rentable de nos jours. Face à ce défi, nous avons déjà envisagé un projet permettant de
déployer l’application Signa-Cam : Est-il possible de connecter une application de détection
de panneaux de signalisation à des appareils électroniques pour permettre aux appareils
d’adopter des comportements rapidement sans l’aide des humains ? La perspective du projet
dans cet œuvre est de l’introduire dans le mécanisme de l’internet des objets pour que
l’application Signa-Cam lui-même soit capable de faire freiner automatiquement ou de
ralentir automatiquement les voitures si elle est combinée avec d’autres composants.

59
ANNEXES

ANNEXE 1
INTERNET DES OBJETS

A1.1 Historique de l’internet des objets

Les prémices de l’Internet des Objets remontent aux années 1980 et 1990, lorsque des
chercheurs ont commencé à explorer les possibilités de connecter des appareils et des capteurs
à des réseaux informatiques.

Une des premières applications connues de l’IoT est née à l’université de Cambridge en 1991
(Université Carnegie Mellon aux USA dans les annéées 1980) bien que le terme « Internet de
Objets » ait été introduit plus tard. Il s’agissait d’une caméra pointée sur une cafetière et
connectée au réseau local de l’université, chaque informaticien pouvait connaitre en temps
réel la disponibilité de café depuis son écran.

Dans les années 2000, le terme « Internet des Objets » a été popularisé par Kevin Ashton qui
est un chercheur au MIT (Massachusetts Institute of Technology) et aussi cofondateur du
Centre d’identification par radiofréquence (RFID) de l’Auto-ID Labs. Il a utilisé ce terme afin
de décrire la technologie de communication entre les objets physiques et les systèmes
informatiques. Les travaux et recherches de Kevin Ashton ont contribué à la reconnaissance
de l’importance de l’IdO et ont suscité un intérêt croissant dans le domaine.

Au cours des années suivantes, de nombreux entreprises et chercheurs ont effectué des
recherches visant à développer l’Internet des Objets. Plusieurs universités et des instituts de
recherche du monde entier ont mené des travaux de recherche novateurs dans ce domaine.

Actuellement, l’IdO continue de se développer et grâce aux diverses innovations


technologiques, il est devenu une réalité omniprésente qui s’applique dans de nombreux
secteurs tels que la santé, l’agriculture, l’industrie, la domotique, les transports et bien
d’autres. [22]

A1.2 Définition de l’internet des objets

L’internet des objets peut se définir par l’interconnexion des objets physiques par des réseaux
de communication. Dans ce réseau internet, les objets sont dotés d’une capacité de connexion,
d’acquisition, de transfert et de traitement de données venant de son environnement.

60
C’est un réseau des objets physiques qui embarque des technologies pour communiquer et
interagir avec l’environnement externe selon leurs états internes dans le but d’acheminer ces
informations vers les infrastructures existantes. [23]

A1.3 Principe de l’internet des objets

L’internet des objets vise à joindre le monde physique et le monde numérique comme illustre
la figure 1.1. On désignera par « monde numérique » tous les systèmes manipulant des
données numériques ainsi que les réseaux permettant l’échange des données et le « monde
physique » est l’ensemble de tous les systèmes vivants ou artificiels que nous côtoyons et qui
interagissent entre eux par divers effets physiques. Le concept de l’internet des objets se
réduit à briser la frontière entre ces deux mondes.

Figure 1.32 : Figure A1.01 : Concept fondamental de l’internet des objets


A.1.4 Dimension de l’internet des objets

L’Internet des Objets peut être considéré comme un monde dans le lequel les objets se
communiquent entre eux ou avec des appareils électroniques et des systèmes informatiques
afin de satisfaire les besoins humains et de faciliter leurs tâches. [22]

La figure 1.01 nous montre les trois dimensions de l’IdO : la communication peut se faire non
seulement en tout lieu et en tout moment mais aussi avec n’importe quel objet.

61
Figure 1.33 : Figure A1.2 : La nouvelle dimension de l’internet des objets

A1.5 Architecture

Même si l’architecture d’une solution IdO varie d’un système à un autre, l’architecture à trois
couches reste la plus élémentaire. Les trois couches sont : [22]

- La couche perception

On l’appelle aussi « couche des objets connectés ».

Elle comprend tous les appareils et objets comme les capteurs et actionneurs qui détectent et
recueillent des informations sur l’environnement.

- La couche réseau

Appelée aussi « couche d’agrégation ». Une fois que les données sont collectées, elles sont
transmises à des passerelles et des dispositifs d’agrégation et c’est la couche réseau qui est
responsable de la connexion et du transport des données issues des capteurs et actionneurs.

- La couche application

C’est dans cette couche que les données agrégées sont traitées, analysées et utilisées pour
permettre aux utilisateurs de prendre de meilleures décisions ou effectuer des actions.

Elle est chargée de fournir à l’utilisateur des services spécifiques et applications intelligentes.

62
A1.6 La détection d’objet et l’internet des objets

Dans le domaine de l’Internet des objets, le concept de détection d’objet peut être utilisé pour
améliorer la capacité de collecte de données et de prise de décision. Ce système fonctionne
comme suit : [24]

- Capteurs connectés :

On a vu précédemment qu’un système IoT utilise des capteurs comme objets. Pour détecter
les objets, on doit utiliser comme capteurs et cela peut être des caméras, des capteurs de
proximité, des capteurs de mouvement, des capteurs infra rouges, etc. Ces derniers peuvent
être intégrés dans des appareils mobiles, des véhicules, des drones ou d’autres dispositifs.

- Collecte de données

Les capteurs détectent les objets et collectent des données correspondantes telles que des
images, des distances, des niveaux de proximité, etc. Ces données peuvent être prétraitées
localement sur les appareils ou bien transmises à un serveur distant pour un traitement plus
avancé.

- Connectivité

Les données de détection d’objets peuvent être transmises à un serveur, plateformes à d’autres
systèmes par divers protocoles de connectivité comme le Wi-Fi, le Bluetooth, le réseau
cellulaire ou d’autres technologies de connectivité sans fil pour un traitement ultérieur.

- Analyse et prise de décision

Des analyses de données doivent être effectuées en temps réel ou postériori afin d’extraire des
informations utiles. Actuellement, des algorithmes d’analyse et l’intelligence artificielle sont
utilisés pour reconnaitre les objets, leur position, leur taille, leur mouvement, …

En fonction de ces informations, des décisions peuvent prises automatiquement ou présentées


aux utilisateurs pour les aider à décider efficacement.

- Interaction et rétroaction

Dans la plupart des cas, les système IoT interagissent avec d’autres dispositifs ou systèmes.
Prenons l’exemple des actionneurs qui agit directement au monde physique ou bien changer
son état en fonction des informations recueillies. Les utilisateurs peuvent également recevoir
des notifications ou des avertissements sur des plateformes pour leur mettre au courant.

63
ANNEXE2
EXTRAIT DU CODE DE L’ENTRAINEMENT

A2.1 Lancement de labelImg

LABELIMG_PATH = os.path.join('Tensorflow2', 'labelimg')


!cd {LABELIMG_PATH} && pyrcc5 -o libs/resources.py resources.qrc
!cd {LABELIMG_PATH} && python labelImg.py

A2.2 Redimensionnement de l’image

import PIL
def resize(input_path, folder):
output_path=f'C:/Users/USER/Tensorflow
detection/TFODCourse/Tensorflow2/workspace/images/output/{folder}'
os.makedirs(output_path, exist_ok = True)
dirs = os.listdir(input_path)
for item in dirs:
item_path = os.path.join(input_path, item)
if os.path.isfile(item_path):
im = Image.open(item_path)

outpath = os.path.join(output_path, item)


f, e = os.path.splitest(outpath)

imResize = im.resize((600,600), Image.LANCZOS)


imResize.save(f + '.jpg', 'JPEG', quality = 90)

64
A2.3 Lancement de la détection en temps réel

cap = cv2.VideoCapture(0)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

while cap.isOpened():
ret, frame = cap.read()
image_np = np.array(frame)
input_tensor = tf.convert_to_tensor(np.expand_dims(image_np, 0), dtype=tf.float32)
detections = detect_fn(input_tensor)
num_detections = int(detections.pop('num_detections'))
detections = {key: value[0, :num_detections].numpy()
for key, value in detections.items()}
detections['num_detections'] = num_detections
# detection_classes should be ints.
detections['detection_classes'] = detections['detection_classes'].astype(np.int64)
label_id_offset = 1
image_np_with_detections = image_np.copy()
viz_utils.visualize_boxes_and_labels_on_image_array(
image_np_with_detections,
detections['detection_boxes'],
detections['detection_classes']+label_id_offset,
detections['detection_scores'],
category_index,
use_normalized_coordinates=True,
max_boxes_to_draw=1,
min_score_thresh=.8,
agnostic_mode=False)
cv2.imshow('object detection', cv2.resize(image_np_with_detections, (300, 400)))
if cv2.waitKey(10) & 0xFF == ord('q'):
cap.release()
cv2.destroyAllWindows()
break

65
BIBLIOGRAPHIE

[1] A. Mercier, « L’information face à l’intelligence artificielle : promesses et dangers »,

05 février 2018.

[2] Dr Ali KAHLANE, « L’intelligence artificielle et ChatGPT», Avril 2023

[3] « Intelligent artificial course » , https://huawei-talent.com , 2022

[4] F. Chollet, « Deep Learning with Python », Manning, 2018

[5] I. Andriamiandrasoa , « Système de détection d’objets sur le deep learning

dans un magasin intelligent », M2 TCO, Ment. TCO ESPA, 2017-2018

[6] T. Miadamampionona, « Visualisation de la congestion et contrôle adaptif de feux de

circulation avec priorité aux véhicules d’urgence utilisant le deep learning et l’IOT »,

M2 TCO, Ment. TCO ESPA 2017-2018

[7] « Explication de la régression par rapport à la classification dans l’apprentissage

Automatique », https://geekflare.com/fr/regression-vs-classification/, 19 décembre

2022

[8] L. Personnaz, I. Rivals, « Réseaux de neurones formels pour la modélisation, la

commande, et la classification », CNRS, 2003

[9] V. Aurélien, « L’IA pour les développeurs », http://www.editions-eni.fr/ ,

[10] « Perceptron : qu’est-ce que c’est et à quoi ça sert ? », https://www.datascientest.com,

7 avril 2023

[11] M. A. Rakotomalala,, « Traitement Numérique des Images », Cours L3- TCO, Ment.

TCO. - E.S.P.A., A.U. : 2022-2023.

66
[12] Gaio, « Images », www.crdp.ac-grenoble.fr/image/general/general.htm. Janvier 2020.

[13] « Introduction to object detection », https://www.superannotate.com/blog/object-

detection-with-deep-learning, Septembre 2023

[14] L. J. E. Ramarosandratana, « Concéption d’une application de transmission de

données via Wi-Fi », L3 TCO AU 2019-2020

[15] « Apprenez Android », https://riptutorial.com/fr/home

[16] D. Jean Michel, « Développons en Java », 05 juillet 2003

[17] P. LE CERTEN, L. UNGARO « Programmation par objet en Java », mars 1999

[18] Gérard Swinnen « Apprendre à programmer avec Pyrhon3 »,

http://inforef.be/swi/python.htm

[19] « Détections d’objets avec tensorflow »,

https://learn.e.ros4.pro/fr/vision/object_detection_tf2/ » 31 janvier 2023

[20] Dima Rodriguez, « Tutoriel Android », Décembre 2015

[21] Gauthier Picard, « Programmation sous Android », 2012

[22] UIT-T, « Présentation générale de l’internet des objets », Recommandation Y2060,

2012

[23] « Les technologies émergentes », www.gartner.com, Septembre 2015

[24] Aboudi Nadjet, Mouni Zouleikha « Suivi d’objets à l’aide de l’algorithme de

recherche sur une grille hexagonale modifiée », Université Larbi Ben M’Hidi d’Oum

El Bouaghi, AU : 2021-2022

67
RENSEIGNEMENTS

Noms : MANAMPISOAMAHARAVO Ny Riambatosoa


Email : [email protected]
Adresse de l’auteur : Lot VT 85 Bis FKC Andohanimandroseza
Antananarivo 101 - Madagascar
Téléphone : +261334243605/ +261343460596
Titre :

REALISATION D’UNE APPLICATION


DETECTRICE DE PANNEAUX DE
SIGNALISATION EN UTILISANT LE DEEP
LEARNING

Nombre de pages : 63
Nombre de figures : 33
Directeur de mémoire : Nom et prénom : RAJAONARISON Tianandrasana Roméo
Adresse e-mail : [email protected]
Numéro de téléphone : +261346476110

68
RESUME

L’intelligence artificielle et vision par ordinateur sont tous les deux des domaines très vastes
et de plus en plus en évolution actuellement. La combinaison des deux disciplines peut
conduire à une invention puissante et rentable dans différents secteurs. Nous avons donc
conçu une application qui utilise à la fois : le deep learning qui est un concept englobé dans
l’IA et la détection d’objets qui est un élément composant de la vision par ordinateur. Il s’agit
d’une application qui sert à détecter et à identifier les différentes plaques de signalisation qui
se trouvent sur les routes terrestres. La conception de l’application s’est faite à partir de
plusieurs outils comme Android Studio, Anaconda, Tensorflow, Opencv et beaucoup d’autres.
En somme, la réalisation d’une application détectrice de panneaux de signalisation s’avère
être un projet qui pourra révolutionner la qualité du transport routier.

Mots clés : image, vision, Android, intelligence artificielle, Tensorflow, apprentissage

ABSTRACT

Artificial intelligence and computer vision are both very broad fields, and both are evolving
rapidly. Combining the two disciplines can lead to powerful and profitable inventions in
different sectors. We have therefore designed an application that uses both : the deep learning
which is concept embraced by AI, and object detection which is component of computer
vision. The application is used to detect and identify the various road signs on land routes.
The application was designed using tools such as Android studio, Anaconda, Tensorflow,
OpenCV and many others. All in all, the creation of a traffic sign detection application is
providing to be a project that could revolutionize the quality of road transport.

Keywords : image, vision, Android, artificial intelligence, Tensorflow, learning.

Vous aimerez peut-être aussi