Vous êtes sur la page 1sur 61

Université Hassan II

Ecole Supérieure de Technologie Casablanca

Filière : Génie Informatique

Rapport de Stage

Société : GLOBAL VISION.

Elaboré par : Amine TAYANI – Oualid BOUGZIME.

Encadrant : Mr. Idriss Lalaoui.

Période : De 15/04/2019 à 31/05/2019.

1
AUTEURS :

Bougzime Oualid

29, Rue Irfane Quartier Essalam, 46020, Safi


06-58-68-87-95
Oualidbac1999@gmail.com

Tayani Amine

07, Rue Chajarat Eddor Quartier Najah El Amir, 46020, Safi


06-84-36-31-93
amine.tayanipro@gmail.com

Élèves en 2ème année DUT Département Génie Informatique à l’Ecole Supérieure de


Technologie Casablanca.

TYPE DE RAPPORT :
Stage de fin d’étude d’un mois et demi.
Du 15 Avril au 31 Mai 2019.

COMMENDITAIRE :
GLOBAL VISION.
Parrain de stage : Mr. Idriss Lalaoui.

2
REMERCIEMENT

Ce rapport est le résultat d'un effort constant. Cet effort n'aurait pu aboutir sans la
contribution de nombre de personnes. Ainsi se présente l'occasion de les remercier.

Nous tenons à présenter nos vifs remerciements et nos profondes gratitudes à la


Direction de la société GLOBAL VISION, de nous avoir accueillie dans son
organisme. En tout particulièrement nous remercions notre parrain de stage Mr.
IDRISS LALAOUI qui nous a prêté main forte afin d’accomplir notre deuxième stage
dans les bonnes conditions.

Nous ne pouvons passer sous silence les efforts fournis par tout individu travaillant au
sein de la société pour leur contribution durant la période de notre stage, de leur
encadrement et de leurs précieuses informations et conseils.

Nous tenons aussi à remercier tous ceux qui ont participé de près ou de loin au bon
déroulement de notre stage.

En outre, nous remercions l’Ecole Supérieure de Technologie, direction et


professeurs, de l’effort précieux qu’ils fournissent afin de nous offrir une formation
complète et bonne.

3
DEDICACE

A NOS professeurs et corps administratif ESTC,


A notre famille,
En témoignant une affection et un sacrifice que vous
avez déployés, à notre égard, notre
Amour ne saurait être exprime par des dédicaces.
Que Dieu seul, puissant, vous accorde santé,
bonheur, prospérité et longue vie.

4
SOMMAIRE

Auteurs..………………………………………………………....................…………2

Dédicace………………………………………………………………….....................3

Remerciement………………………………………………………….......................4

Sommaire…………………………………………………………...….......................5

Introduction ………………………………………………….....................................7

Liste des figures …………..………...……………….………………………..............9

Liste des tableaux…...……………………………………….........…………............11

PARTIE 1 : PRESENTATION DE LA SOCIETE GLOBAL VISION..................11

1. Présentation de la société …………………....................................................12

2. GLOBAL VISION en bref ………………….....……….................................12

3. Logiciels utilisés par la société..…....................………………………..…….12

PARTIE 2 : LE PRINCIPE DE LA RECONNAISSANCE DES OBJETS…........17

1. Introduction ………….......................................................................…….…18

2. Etapes de catégorisation ou classification d’images………….......……..…18

3. Conclusion ……….………………. ……....…..………........................…..…28

PARTIE 3 : CONCEPTION DE SYSTEME DE DETECTION DE FUMEE...…29

1. Introduction …………… ..………………………………...............……....30

2. Spécification des besoins …….……...............................................…….….30

5
3. Le langage UML …………………………...…………………………...….31

PARTIE 4 : REALISATION DE SYSTEME DE DETECTION DE FUMEE…..37

1. Introduction …………… ..………………………………...............……....38

2. Spécification des besoins …….……...............................................…….….38

3. Choix technologiques …….……..............................................…….……...38

4. Environnement logiciel …….……..............................................…….……42

5. Modèle de détection utilisé ….........................................................…….….44

6. Les étapes de réalisation de notre système de détection de fumée….…….50

Références bibliographiques...............................................................................59

Conclusion…………………………………………………..….................................60

6
INTRODUCTION :

Élèves en deuxième année DUT Génie informatique, un stage de fin d’étude est une
étape primordiale pour accomplir une formation qui répond aux besoins du marché
d'emploi.

Ce stage de fin d’étude, d’une durée de d’un mois et demi a pour but de découvrir de
manière plus concrète le monde du travail, de contacter en proximité les techniciens
pendant leurs tâches journalières et de connaître les sections de base et les fonctions
essentielles du service informatique au sein d’une société et parachève l'enseignement
théorique et pratique reçu au cours de notre formation.

Ce rapport présente le travail que nous avons effectué lors dans notre stage au sein de
la société GLOBAL VISION qui s’est déroulé du 15 avril au 31 mai 2019 à savoir
l’étude d’une description globale du site et le développement d’une application de
détection de fumée à partir d’une séquence vidéo ou une image.

Comme il est connu les ordinateurs effectuent à longueur de journée des tâches
répétitives. Ils aident ainsi l’homme à manipuler d’énormes quantités de données,
souvent même plus rapidement et plus précisément que lui.

Malgré cela, la capacité des ordinateurs demeure limitée lorsqu’il s’agit d’extraire
automatiquement des informations d’images ou de vidéos, qui représentent pourtant
des volumes de données extrêmement importants. Le traitement automatisé de ces
données ouvrirait la voie à beaucoup d’opportunités.

7
La discipline qui vise à automatiser la compréhension des images, la vision par
ordinateur, est une branche de l’intelligence artificielle dont l’objectif est précisément
de permettre à une machine de comprendre de ce qu’elle «voit» lorsqu’on la connecte
à une ou plusieurs caméras. Nos travaux se situent au cœur de cette discipline.

Dans ce vaste domaine qu’est la vision par ordinateur, nous nous intéressons ici à la
sous-discipline qu’est la reconnaissance d’objets, et plus particulièrement à la
localisation de la fumée dans une image ou à partir d’une séquence vidéo. Ce type de
technique combine des approches de traitement d’images et d’apprentissage
automatique dans le but de mener à bien cette tâche de reconnaissance de fumée.

Cette recherche vise à mettre au point un système automatisé de détection de fumée


moins intrusif, plus économique et plus efficace.

Après certaines recherches préliminaires et grâce à des informations collectées nous


avons élaboré notre vision de l’application, son architecture, ainsi que les outils et les
technologies utiles. Dans ce contexte, le travail réalisé sur trois chapitres principaux
dont on parle : dans le premier nous présentons d’une façon globale l’entreprise, dans
le deuxième décrit la conception de notre application et en fin nous allons présenter
notre environnement de développement permettant de réaliser notre application.

8
Liste des figures

Figure 1 : Société Global vision..................................................................................11

Figure 2 : Système de détection des objets…………………………......................................17

Figure 3 : Exemples des formes de l’objet au sein du catégorie ≪avion≫…………19

Figure 4 : Architecture d’un système de reconnaissance d’objets…………………......….19

Figure 5 : Les étapes pour construire la représentation de sac-de mots visuels……..29

Figure 6 : Exemple de détection de fumée………………………..………..........…..…..…......25

Figure 7 : Les diagrammes UML………...………………………………………...........…..…......32

Figure 8 : Diagramme de cas d’utilisation de notre applications.............…………...33

Figure 9 : Diagramme de séquence de notre application..................................……..34

Figure 10 : Diagramme de classe de notre application………………………....…………36

Figure 11 : Capture d’écran pour le résultat d’une détection de fumée en utilisant


notre application……………………………………………………………….......................................37

Figure 12 : modèle de détection R-CNN…………………………………………………………........45

Figure 13 : modèle de détection fast R-CNN………………………………………....…..…......46

Figure 14 : fonctionnement du modèle de détection R-CNN.………………....…..…......48

Figure 15 : La classififcation du modèle de détection R-CNN……….……....…..…......49

Figure 16 : La structure du dossier object_detection………………………………..51

Figure 17 : Le résultat de l’invite de commande après le lancement de training........57

9
Liste des tableaux

Table 1: moyen des points d’intérêts extraits pour la base de VOC 2007……...…......49

Table 2 : Famille des détecteurs de points d’intérêts………………………………………..51

Table 3 : Taxonomie proposée par Mikolajczyk pour catégoriser les différents


descripteurs locaux proposés…………………………………………………………57

10
PARTIE 1 : PRESENTATION GENERALE DE LIEU DE
STAGE :

Figure 1 : Société Global vision.

Dans cette partie :

 Présentation de la société Global Vision.

 GLOBAL VISION en bref.

 Logiciels utilisés par la société.

11
1. Présentation de la société :

GLOBAL VISION est une entreprise conçu pour bâtir un système de surveillance
utilisé par les caméras et la gestion des accès et la sûreté répondant parfaitement aux
besoins du client.

2. GLOBAL VISION en bref :

Nom du dirigeant M. Driss Alaoui

Forme juridique S.a.r.l.

Capital 500 000 Dhs

Année de creation 2012

Type d'établissement Siège

Adresse 95, rue Amr Ibnou El Ass , Roches noires


CASABLANCA

Chiffre d'affaire inférieur à 1,000,000 Dh

3. Logiciels utilisés par la société:

3.1. DIRICKX :

DIRICKX propose une large gamme de produits et services destinés à la délimitation,


la fermeture, le contrôle et la gestion des accès et la sûreté: barreaudages, clôtures en
panneaux et en rouleaux, occultation et brise-vue, portails coulissants, pivotants et
automatiques, barrières et tourniquets.

12
3.1.1. Clôtures panneaux rigides :

Les grillages rigides en panneaux DIRICKX sont des concepts panneaux + poteaux
avec fils horizontaux et verticaux soudés alliant simplicité de pose, design et esthétisme,
largeur de gamme, solidité et résistance et qualité de finition

3.1.2. Barreaudages :

Découvrez une gamme complète de barreaudages pour valoriser, sécuriser ou protèger


tous les sites, des collectifs d'habitation aux sites les plus sensibles.

3.1.3. Portails :

Pour compléter votre clôture nous vous proposons une gamme de portails qui s'intégrera
de façon harmonieuse à votre environnement.

13
3.2. Milestone :

Milestone est une plate-forme qui permet de créer un système de surveillance sur une
base solide.

La plate-forme ouverte de Milestone permet d'adopter une approche à la pointe du


secteur pour bâtir son système de surveillance. Ce dernier utilise des caméras provenant
de divers fabricants pour créer un système répondant parfaitement aux besoins du client.

3.3. SouthWest Microwave :

3.3.1. SYSTÈMES DE DÉTECTION SUR CLÔTURE :

Des capteurs intelligents révolutionnaires montés sur clôture maximisent la


probabilité de détection et préviennent les fausses alarmes.

Technologies utilisées :

• INTREPID™ MicroPoint™ II :

Technologie de détection de découpe/escalade avec lo- calisation de


tentatives d’intrusion avec une précision de 3 m, une haute résistance
aux fausses alarmes, le zonage contrôlé par logiciel et une capacité de
calibra- tion brevetée pour une sensibilité de détection uniforme.
Protocole de communications à architecture ouverte qui peut être mis en
réseau avec d’autres technologies INTREPID™ Série II.
• INTREPID™ MicroNet™ II :

Une solution de détection robuste pour les établissements de détention


aux USA. Localisation du point d’évasion avec une précision de 3 m,
capacités de calibration brevetées pour une sensibilité de détection
uniforme, zonage contrôlé par logiciel, et hardware robuste pour maxi-
miser sa résistance aux intrusions. Protocole de communications à

14
architecture ouverte qui peut être mis en réseau avec d’autres
technologies INTREPID™ Série II.

• INTREPID™ UniZone™ :

La technologie de détection sur clôture MicroPoint™ éprouvée,


redimensionnée pour protéger les plus petits sites à infrastructure critique. Ce
capteur autonome per- formant vous offre une facilité d’installation et de mise
en œuvre inégalée, ce qui permet aux installateurs de créer une solution de
protection de périmètre sur me- sure, selon les exigences de l’utilisateur
individuel en seulement quelques minutes.

3.3.2. SYSTÈMES DE DÉTECTION PAR CÂBLE ENTERRÉ :

Capteurs intelligents assurant un suivi volumétrique du terrain, ce qui permet


de localiser les tentatives d’intrusion avec une précision de 3 m pour des
applications où la protection invisible est essentielle.

Ce système utilise :

• INTREPID™ MicroTrack™ II :

Technologie de détection par câble enterré avec localisation de tentatives


d’intrusion précise, une haute résistance aux fausses alarmes, le zonage
contrôlé par logiciel et une sensibilité de détection uniforme.

Protocole de communications à architecture ouverte qui peut être mis en


réseau avec d’autres technologies INTREPID™ Série II.

3.3.3. CAPTEURS DE DÉTECTION HYPERFRÉQUENCE :

Barrières et émetteurs-récepteurs hyperfréquences à courte ou à longue portée


pour la détection d’intrus dans les aires extérieures, aux portails et aux entrées,
ainsi que sur les murs et les toitures.

15
Ce système utilise :

• Model 316-33457 Stop Bar Control Sensor :

BARRIÈRE HYPERFRÉQUENCE NUMÉRIQUE Fonctionne dans la


bande K. Portée de 244 m. Communications à architecture ouverte pour
faciliter la mise en réseau avec d’autres technologies INTREPID™
Série II.

• INTREPID™ MicroWave 330 Digital Microwave Link :

BARRIÈRE HYPERFRÉQUENCE NUMÉRIQUE Fonctionne dans la


bande K. Portée de 457 m. Traitement des signaux numériques intégré
pour une meilleure détection et une résistance aux fausses alarmes.

• INTREPID Model 316-POE Digital Microwave Link :

BARRIÈRE HYPERFRÉQUENCE NUMÉRIQUE (CE) Fonctionne


dans la bande K. Portée de 122 m. Traitement des signaux numériques
intégré pour une meilleure détection et une résistance aux fausses
alarmes.

3.4. AEOS :

AEOS est conçu pour la gestion et le contrôle d'accès, AEOS est conçu pour s'adapter
aux besoins en constante évolution. C’est le fondement ultime de toute application de
contrôle d’accès physique.

16
PARTIE 2 : LE PRINCIPE DE LA RECONNAISSANCE DES
OBJETS :

Figure 2 : Système de détection des objets.

Dans cette partie :

 Introduction.

 Etapes de catégorisation ou classification d’images.

17
1. Introduction :

La reconnaissance d’objets est l’un des challenges les plus difficiles dans le domaine
de la vision par ordinateur. Cependant, elle est considérée comme une étape primordiale
dans de nombreuses applications : médicales, industrielles, multimédia …

Par conséquent, ce domaine est depuis longtemps un objet d’intérêt pour la


communauté scientifique. Différents objectifs et méthodes ont été proposés, depuis plus
de 50 ans. En général, on peut les catégoriser en trois taches en fonction de leur objectif :

 La catégorisation ou classification d’images qui consiste à donner un label a une


image en fonction de la présence ou non d’un objet appartenant à une catégorie
donnée.
 La détection d’objets qui désigne la tâche de localisation des objets d’une catégorie
donnée.
 La segmentation de classes d’objets qui consiste à déterminer quels sont les pixels
de l’image qui appartiennent à un objet d’une des classes d’intérêt.

A vrai dire, ces trois tâches sont étroitement liées. Toutes les trois suivent un paradigme
assez ancien proposé par David Marr. Ce paradigme suggère une analyse uniquement
ascendante, centrée sur les données. De ce fait, les mêmes outils peuvent être mis en
œuvre pour les résoudre. Ce paradigme constitue le cœur de la plupart des méthodes de
reconnaissance d’objets et surtout des systèmes de catégorisation d’images. L’objectif
de ces systèmes est de prédire la nature de l’objet dans une image au sein d’une liste
exhaustive de possibilités.

2. Etapes de catégorisation ou classification d’images :

Dans ce rapport, nous allons nous concentrer sur la tache de ≪catégorisation


d’images≫ puisqu’elle peut être considérée comme une généralisation des autres tâches
citées ci-dessus. La classification d’images selon la catégorie d’objet reste un vrai
challenge, étant donné que l’apparence des objets au sein d’une catégorie

18
Figure 3 : Exemples des formes de l’objet au sein du catégorie ≪avion≫.

Varie grandement, suite aux modifications de position, orientation et échelle, aux


modifications d’illumination, occultations et aux grandes variabilités de formes au sein
de cette classe (cf. figure 1). Ces grandes variations intra-classes rendent difficile voire
impossible l’utilisation de méthodes globales ou l’image tout entière est représentée par
une signature même si elles forment les premières approches initialement utilisées …

Figure 4 : Architecture simple d’un système de reconnaissance d’objets.

Pour ces raisons, les méthodes ont eu recours à des approches plus locales. Le schéma
classique est représenté dans la figure 2. Dans ces approches, l’image est considérée
comme une collection de régions d’intérêts, généralement de taille faible par rapport à
la taille de l’image. Ces régions sont détectées dans l’étape ≪Extraction des
primitives≫, et ensuite transformées en vecteurs représentant les caractéristiques de
l’image, comme par exemple des contours et/ou orientations (Description des

19
primitives). A partir de ces vecteurs, chaque image est représentée par un histogramme
(Représentation d’images) servant comme base pour catégoriser l’image selon l’objet
qu’elle contient (Classification). Ces approches seront abordées en détail dans la suite
de ce chapitre. Nous allons présenter les principales étapes et outils nécessaires pour
développer un système de reconnaissance d’objets ainsi que les différentes
améliorations qui ont été proposées jusqu’à présent pour traiter les différentes
limitations citées ci-dessus.

Extraction des primitives visuelles :

La première étape (cf. figure 3) d’un système de reconnaissance d’objets consiste


généralement à extraire les régions les plus pertinentes d’une image. En général, on
peut catégoriser les différentes méthodes proposées en se basant sur deux concepts :

 Le premier concept considère l’image entière. L’approche la plus utilisée dans


ce cadre est l’extraction dense. La sélection dense des régions locales consiste
à traiter tous les pixels dans l’image. Cette approche a l’avantage d’être la plus
informative que les autres méthodes de l’état de l’art, cependant, elle nécessite
des ressources en temps et en mémoire très importantes : la plupart du temps
de calcul étant passée à traiter les régions peu informatives (voir tableau 1).
 Le second concept : la détection des régions d’intérêts. Ce dernier consiste

À extraire les régions considérées comme les plus pertinentes pour la


reconnaissance de l’image (voir tableau 1). L’approche la plus utilisée dans ce cas
est le détecteur de points d’intérêts. Dans la section suivante, nous allons aborder
les différentes méthodes proposées pour la détection des points d’intérêts durant
ces dernières années.

20
Table 1 : Moyen des points d’intérêts extraits pour la base de VOC 2007.

Détecteurs de points d’intérêts :

La plupart des algorithmes de reconnaissance d’objets se basent sur les détecteurs de


points d’intérêts pour sélectionner les régions d’intérêts dans laquelle on peut prédire
l’existence d’un objet. Ces détecteurs présentent l’avantage d’être robustes et invariants
aux modifications d’échelles, de translation, de rotation et même dans une certaine
mesure aux déformations affines. Selon Tuytelaars, on peut les catégoriser selon leurs
critères de sélection des régions locales en quatre familles (cf. Tableau 2).

Table 2 : Famille des détecteurs de points d’intérêts.

21
4 - Description des primitives :

En général, on peut poser le problème de reconnaissance comme une classification des


représentations d’images calculées en se basant sur l’ensemble des descripteurs déjà
extraits. Cette simple définition est capable d’expliquer la multitude des approches qui
se différencient par le choix des descripteurs qui représentent l’objet, le type et la
complexité du modèle, les méthodes utilisées pour l’apprentissage de chaque classe
d’objets. Dans cette section, nous allons aborder les travaux concernant la construction
des descripteurs locaux et les défis auxquels les chercheurs font face. En général, on
peut définir un descripteur par un ensemble de nombres scalaires générés pour décrire
un objet. En d’autres termes, il s’agit ici de construire une signature représentant le
contenu d’une région de l’image. Pratiquement, tous les systèmes de reconnaissance
d’objet s’appuient sur des descripteurs pour décrire les régions d’intérêt. En effet, le
choix de caractéristiques est délicat et dépend de plusieurs facteurs comme la classe de
l’objet considéré, les caractéristiques du capteur, le contexte et la tâche à accomplir. Ce
choix se base souvent sur un compromis entre la précision et la généralité des
caractéristiques. Dans le domaine de la reconnaissance d’objets, on cherche une
méthode de caractérisation qui extrait les descripteurs locaux les plus efficaces pour
une reconnaissance générique.

Selon Mikolajcyk et Schmid, on peut distinguer quatre grandes familles de descripteurs


locaux (cf. Tableau 3) : bases sur les distributions, bases sur la texture, différentiels,
autres.

22
Table 3 : Taxonomie proposée par Mikolajczyk pour catégoriser les différents
descripteurs locaux proposés.

5 - Représentation d’images :

Dans cette section, nous allons aborder les différentes étapes nécessaires pour
construire une représentation d’images à partir de descripteurs générés par une des
méthodes évoquées dans la section précédente. Cette représentation sera la base des
méthodes de classification afin de catégoriser les images selon l’objet qu’elle contient,
et construire un modèle dans lequel on peut l’utiliser pour déterminer la nature d’un

23
objet dans une image quelconque. On peut distinguer trois types de représentation
d’images : compacte globale, statistique, systématique.

Représentation compacte par un histogramme global :

Dans cette catégorie, l’image est représentée par un seul vecteur global. Les méthodes
dans cette famille ont été parmi les premières propositions pour représenter une image.
Une des méthodes les plus utilisées dans cette catégorie est l’≪histogramme global≫.
Cette méthode consiste à calculer une signature de l’image dans sa globalité, à l’aide
de différents descripteurs globaux, ex : les histogrammes de couleurs utilisés par
Niblack, ou les histogrammes de textures proposées par Schiele. Ces histogrammes sont
très simples, et ils sont robustes à certaines variations comme l’illumination et le
contraste. Cependant, pour les autres transformations d’images comme les
changements de point de vue et d’échelle, ces méthodes nécessitent une quantité
gigantesque d’images d’apprentissage pour qu’ils soient invariants. En outre, ils ne sont
pas du tout invariants aux occultations et à la présence de fonds encombres. Pour ces
raisons, la plupart des méthodes de reconnaissance d’objets ont utilisé d’autres
approches pour représenter les images, en particulier, des approches locales. Dans la
suite, nous allons aborder les différentes propositions de représentation locale d’images.

Représentation statistique :

L’image est représentée dans cette catégorie par un histogramme de valeurs


statistiques calculées à partir des descripteurs locaux extraits de l’image. Dans la suite,
nous abordons la méthode de représentation la plus populaire dans le domaine de la
reconnaissance d’objets.

Sac de mots visuels :

Cette approche proposée par Sivic est une des plus utilisées par les systèmes de
reconnaissance d’objets. Elle consiste à décrire une image en se basant sur des valeurs
quantifiées et à la classifier en utilisant une méthode de classification comme SVM.
Elle était inspirée d’une méthode d’indexation de documents textuels utilisant les

24
vecteurs de fréquence des mots. Comme la figure 5 le montre, le sac-des-mots visuels
peut être divisé en deux modules :

 Construction du vocabulaire visuel : ils sont définis à partir des descripteurs


locaux d’images. Pour cela, les descripteurs sont extraits d’une base
d’images et sont ensuite clustérises par une des méthodes de classification
non supervisée comme les k-moyennes, ou le GMM. Les centres de clusters
représentent le vocabulaire visuel.
 Construction des histogrammes ou codage : après avoir transformé les
descripteurs en une représentation locale compacte, creuse ou
statistiquement

Figure 5 : Les étapes pour construire la représentation de sac-de mots visuels.

Indépendante. Les histogrammes ou les codes ne sont que des vecteurs binaires (VQ)
ou continu (sparse coding), obtenu par une quantification des descripteurs d’images
dans un dictionnaire.

Représentation systématique par Grille dense :

Une autre approche de représentation d’image est la représentation dense. Cette


représentation repose sur l’extraction de toutes les caractéristiques de l’image en

25
divisant cette dernière en de petites régions uniformément espacées, appelées ≪blocs≫.
L’ensemble de ces blocs forme ce qu’on appelle la grille dense. L’idée de cette
approche est de représenter l’image entière de sorte qu’il n’y ait pas de perte au niveau
de l’information. Cette représentation a été proposée pour traiter les limitations des
précédentes représentations qui consiste à sélectionner les informations à représenter,
ce qui peut générer de grandes pertes d’informations, ou/et extraire des informations
peu pertinentes ou aberrantes. De ce fait, récemment, plusieurs chercheurs ont
commencé à utiliser cette approche dans leurs systèmes de reconnaissance d’objets :
Dalal a proposé d’extraire des caractéristiques denses de l’image en se basant sur la
grille dense et en les transformant en un vecteur de grande dimensionnalité, utilisé
ensuite par des méthodes de classification discriminatives, ex : SVM. Jurie a proposé
une nouvelle méthode de classification non supervisée pour construire un sac-des mots
dense, plus informatif et plus saillant. Cette dernière méthode a montré de meilleurs
résultats par rapport aux approches sparse de sac-des mots.

6. Classification :

Après avoir calculé une ≪bonne≫ représentation des images, la présence ou non
d’objets dans les images test est prédite en utilisant une des méthodes de classification
supervisée. Ces méthodes cherchent, en utilisant un ensemble de données
d’apprentissage, à estimer les paramètres optimaux d’une fonction de décision. Cette
fonction sera utilisée pour classifier les images selon leur label. Deux approches ont été
proposées pour calculer cette fonction : générative et discriminative.

26
6.1 - Approche générative : Le classifieur de Bayes :

Les méthodes dans cette approche cherchent à construire un modèle pour chaque
classe, ainsi la catégorisation d’un objet dans une image est estimée d’après sa
ressemblance au modèle. En d’autres mots, les modelés génératifs modélisent
directement les données. Elles permettent une vraie modélisation de chaque classe
et le modèle obtenu peut être appris indépendamment.

6.2 - Approche discriminative SVM :

Les méthodes dans cette approche visent à apprendre directement une fonction de
décision qui sépare deux classes. En d’autres mots, ces méthodes modélisent
directement la distribution de probabilité du label y sachant l’observation x.

Dans les chapitres suivants nous allons s’intéresser plus particulièrement au sujet
de notre application qui est autour de la localisation de la fumée dans une image
ou à partir d’une séquence vidéo.

27
3. Conclusion

Dans ce chapitre, nous avons évoqué les différentes étapes nécessaires pour construire
un système de reconnaissance d’objets classique. Nous avons présenté les différents
travaux proposes pour détecter les points d’intérêts la première étape d’un système de
reconnaissance d’objets, dans la section 2. Nous avons pu conclure qu’il n’y a pas
jusqu’à présent un type de détecteur des points d’intérêts universel. L’utilisation d’un
détecteur de points d’intérêts dépend de l’objectif du système proposé et de la structure
des objets à détecter. Récemment, plusieurs travaux proposés dans le domaine de la
reconnaissance d’objets se basent sur les grilles denses pour extraire les informations
des images vu que la grille dense ne dépend pas de la structure géométrique de l’objet.
Mais, comme mentionne dans l’introduction, celles-ci nécessitent des calculs très
importants ainsi qu’une large allocation de mémoire, puisqu’elle considère l’image
toute entière. Enfin, comme Frintrop, nous pensons que le système d’attention visuelle
peut être un premier pas pour résoudre le challenge de la détection des points d’intérêts
stables et robustes aux différentes variations que l’image peut subir.

Par ailleurs, nous avons présenté les différentes techniques proposées pour calculer la
deuxième étape du système de reconnaissance d’objets : la description des primitives
dans la section 3. Dans ce cadre, nous avons abordé leurs points faibles et forts afin
d’aider au choix des descripteurs adéquats. Nous pouvons déduire de notre comparaison,
qu’il n’y a pas jusqu’à présent un descripteur universel pour décrire tout type d’objets
ou toutes les caractéristiques de l’image. Le choix du descripteur dépend en général des
objectifs des systèmes de reconnaissance.

28
PARTIE 3 : CONCEPTION DE SYSTEME DE DETECTION
DE FUMEE :

Figure 6 : Exemple de détection de fumée.

Dans cette partie :

 Introduction.

 Spécification des besoins.

 Le langage UML.

29
1. Introduction :

La phase de conception est la première étape dans la réalisation d'un projet, elle doit
d'écrire de manière non ambiguë le fonctionnement futur du système, afin d'en faciliter
la réalisation. Pour cela, différentes méthodes existent permettant de formaliser les
étapes préliminaires du développement.

Dans ce chapitre, nous présentons les objectifs de notre application, ce qui nous amène
à identifier les possibilités du système et les besoins des utilisateurs que nous essayons
de projeter dans des diagrammes de cas d'utilisations globaux et détaillés.

2. Spécification des besoins :

L'application envisagée doit satisfaire les besoins fonctionnels qui seront exécutés par
le système et les besoins non fonctionnels qui perfectionnent la qualité logicielle du
système.

2-1- Les besoins fonctionnels :

Les besoins fonctionnels ou besoins métiers représentent les actions que le système
doit exécuter, il ne devient opérationnel que s'il les satisfait. Cette application doit
couvrir principalement les besoins fonctionnels suivants :

- Détection de l’emplacement de la fumée.

- Afficher le pourcentage de précision s’il s’agit de la fumée.

- Stocker les données dans un espace de stockage.

2.2 Les besoins non fonctionnels :

Ce sont des exigences qui ne concernent pas spécifiquement le comportement du


système mais plutôt identifient des contraintes internes et externes du système. Les
principaux besoins non fonctionnels de notre application se résument comme suit :

- Pour tester notre détecteur d'objet, déplacez une image de l'objet ou des objets
dans le dossier \ object_detection et modifiez la variable IMAGE_NAME dans

30
Object_detection_image.py pour qu'elle corresponde au nom de fichier de
l'image. Vous pouvez également utiliser une vidéo des objets (en utilisant
Object_detection_video.py) ou simplement brancher une webcam USB et la
pointer sur les objets (en utilisant Object_detection_webcam.py).

- Si tout fonctionne correctement, le détecteur d'objet s'initialisera pendant


environ 10 secondes, puis affichera une fenêtre montrant l’emplacement de la
fumée détecté dans l'image!

3. Le langage UML :

UML (Unified Modeling Language), se définit comme un langage de modélisation


graphique et textuel destiné à comprendre et à définir des besoins, spécifier et
documenter des systèmes, esquisser des architectures logicielles, concevoir des
solutions et communiquer des points de vue. UML modélise l'ensemble des données et
des traitements en élaborant des différents diagrammes.

En clair, il ne faut pas designer UML en tant que méthode (Il y manque la démarche)
mais plutôt comme une boite d'outils qui sert à améliorer les méthodes de travail.

3-1 L'intérêt d'UML :

UML est un langage semi-formel et normalisé :

- Gain de précision.

- Gagne de stabilité.

- Encourage l'utilisation d'outils.

UML est un support de communication performant :

- Il cadre l'analyse

- Il facilite la compréhension de représentations abstraites complexes.

- Son caractère polyvalent et sa souplesse en font un langage universel.

31
3.2. Définition d'un modèle :

Un modèle est une vue subjective mais pertinente de la réalité. Un modèle définit une
frontière entre la réalité et la perspective de l'observateur. Ce n'est pas "la réalité", mais
une vue très subjective de la réalité. Bien qu'un modèle ne représente pas une réalité
absolue, un modèle reflète des aspects importants de la réalité, il en donne donc une
vue juste et pertinente.

3.3 Les différents types diagrammes d'UML :

Figure 7 : Les diagrammes UML.

3-4 Les Diagrammes des cas d'utilisation :

Le diagramme de cas d'utilisation représente la structure des grandes fonctionnalités


nécessaires aux utilisateurs du système. C'est le premier diagramme du modèle UML,
celui où s'assure la relation entre l'utilisateur et les objets que le système met en œuvre.

Trois relations entre cas d’utilisation sont possibles : les relations « include », « extend
» et la relation de communication entre acteur et cas d’utilisation.

32
- Une relation « include » est utilisée pour indiquer que le cas d’utilisation source
(départ de la flèche) contient toujours le cas d’utilisation inclus.

- Une relation « extend » est utilisée pour indiquer que le cas d’utilisation source
(à l’origine de la flèche) est nécessaire dans certaines situations.

- Une relation entre un acteur et un cas d’utilisation suppose une interface de


communication et d’échange d’informations entre l’acteur et le système.

Figure 8 : Diagramme de cas d’utilisation de notre application.

3-5 Diagrammes de séquence :

Un diagramme de séquences est un diagramme d'interaction qui expose en détail la


façon dont les opérations sont effectuées : quels messages sont envoyés et quand ils le
sont.

Les diagrammes de séquences sont organisés en fonction du temps qui s'écoule au fur
et à mesure que nous parcourons la page.

33
Les objets impliqués dans l'opération sont répertoriés de gauche à droite en fonction du
moment où ils prennent part dans la séquence.

Le diagramme de séquence de la figure présente les interactions entre les différents


éléments du système. On distingue cinq entités (logiques ou physiques) :

- sq : entité qui contient la séquence vidéo à traiter par le système.

- U_Loc : entité qui localise la fumée.

- U_Mesure : entité qui mesure le pourcentage de précision.

- U_Stock : entité qui stocke les données.

- IHM : entité qui présente l’Interface Homme Machine.

Figure 9 : Diagramme de séquence de notre application.

34
3-6 Diagramme de classe :

Le diagramme de classes est considéré comme le plus important de la modélisation


orientée objet, il est le seul obligatoire lors d'une telle modélisation. Il montre la
structure interne. Il permet de fournir une représentation abstraite des objets du système
qui vont interagir pour réaliser les cas d'utilisation. Il est important de noter qu'un même
objet peut très bien intervenir dans la réalisation de plusieurs cas d'utilisation. Les cas
d'utilisation ne réalisent donc pas une partition des classes du diagramme de classes.
Un diagramme de classes n'est donc pas adapté (sauf cas particulier) pour détailler,
décomposer, ou illustrer la réalisation d'un cas d'utilisation particulier.

Il s'agit d'une vue statique, car on ne tient pas compte du facteur temporel dans le
comportement du système. Le diagramme de classes modélise les concepts du domaine
d'application ainsi que les concepts internes créés de toutes pièces dans le cadre de
l'implémentation d'une application. Chaque langage de Programmation orienté objet
donne un moyen spécifique d'implémenter le paradigme objet (pointeurs ou pas,
héritage multiple ou pas, etc.), mais le diagramme de classes permet de modéliser les
classes du système et leurs relations indépendamment d'un langage de programmation
particulier.

Les principaux éléments de cette vue statique sont les classes et leurs relations :
association, généralisation et plusieurs types de dépendances, telles que la réalisation
et l'utilisation.

35
Figure 10 : Diagramme de classe de notre application.

36
PARTIE 4 : REALISATION DE SYSTEME DE DETECTION
DE FUMEE :

Figure 11 : Capture d’écran pour le résultat d’une détection de fumée en utilisant


notre application.

Dans cette partie :

 Introduction.

 Environnement matériel.

 Choix technologiques.

 Environnement logiciel.

 Modèle de détection utilisé.

 Les étapes de réalisation de notre application de détection

de fumée.

37
1. Introduction :

A ce stade du processus, les cas d'utilisation sont terminés. Le problème a été analysé
en profondeur ; nous avons défini une conception mieux appropriée aux besoins de
l'application.

Ce chapitre est consacré à la réalisation et la mise en œuvre de notre application de


détection de fumée, nous allons présenter l’environnement matériel adopté, ainsi que le
langage de programmation Python et les différents librairies utilisées.

2. Environnement matériel :

Le développement de l’environnement matériel est caractérisé par :

• Système d’exploitation : Windows 10.


• GPU Nvidia GTX 1080

3. Choix technologiques :

3.1- Système d'exploitation :

Windows 10 est un système d'exploitation de la famille Windows NT développé


par la société américaine Microsoft. Officiellement présenté le 30 septembre 2014,
il est disponible publiquement depuis le 29 juillet 2015.

3.2- Langage de programmation :

Python :

Python est un langage de programmation structuré et orienté objet. Il est doté d'un
typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-
miettes et d'un système de gestion d'exceptions. Il est conçu pour optimiser la
productivité des programmeurs en offrant des outils de haut niveau et une syntaxe
simple à utiliser.

38
Librairies utilisées :

Pour réalisé notre application, nous avons utilisé les bibliothèques ci-après :

Tensorflow :

TensorFlow est une bibliothèque open source pour l'informatique numérique


rapide.

Il a été créé et est maintenu par Google et publié sous la licence open source
Apache 2.0. L'API est nominalement pour le langage de programmation
Python, bien qu'il existe un accès à l'API C ++ sous-jacente.

Contrairement à d'autres bibliothèques numériques destinées à être utilisées


dans le Deep Learning, telles que Theano, TensorFlow a été conçu pour être
utilisé à la fois en recherche et développement et dans les systèmes de
production, notamment RankBrain dans la recherche Google et le projet
amusant DeepDream .

Il peut fonctionner sur des systèmes à processeur unique, des GPU ainsi que
sur des appareils mobiles et des systèmes distribués à grande échelle de
centaines de machines.

Pillow :

Pillow est une bibliothèque de traitement d’image, qui est un fork et successeur
du projet PIL (Python Imaging Library). Elle est conçue de manière à offrir un
accès rapide aux données contenues dans une image, et offre un support pour
différents formats de fichiers tels que PPM, PNG, JPEG, GIF, TIFF et BMP.

Pillow dispose de capacités de traitement d’images relativement puissantes, et


a pour but d’offrir une solide base à toute application générale de traitement
d’images.

39
LXML :

lxml est une bibliothèque Python qui permet de manipuler facilement les
fichiers XML et HTML et peut également être utilisée pour le nettoyage Web.
Il existe de nombreux analyseurs XML standard, mais pour obtenir de
meilleurs résultats, les développeurs préfèrent parfois écrire leurs propres
analyseurs XML et HTML. C'est à ce moment que la bibliothèque lxml entre
en jeu. Les principaux avantages de cette bibliothèque sont sa simplicité
d'utilisation, son extrême rapidité lors de l'analyse de documents volumineux,
son excellente documentation et sa facilité de conversion des données en types
de données Python, ce qui simplifie la manipulation des fichiers.

Cython :

Cython est un compilateur statique optimiseur pour le langage de


programmation Python et le langage de programmation Cython étendu (basé
sur Pyrex ). Cela rend l'écriture d'extensions C pour Python aussi simple que
Python lui-même.

Cython vous donne la puissance combinée de Python et C pour vous laisser :

- Ecrire du code Python qui appelle en arrière à partir de et vers le code C


ou C ++ en natif à tout moment.

- Ajustez facilement le code Python lisible en performances en C brut en


ajoutant des déclarations de type statique, également dans la syntaxe
Python.

- Utilisez le débogage combiné au niveau du code source pour rechercher


des bogues dans vos codes Python, Cython et C.

- Interagissez efficacement avec de grands ensembles de données, par


exemple en utilisant des tableaux NumPy multidimensionnels.

40
- Construisez rapidement vos applications au sein du vaste écosystème
CPython, mature et largement utilisé.

- Intégration native avec le code et les données existants provenant de


bibliothèques et d'applications héritées, de bas niveau ou hautes
performances.

Jupyter :

Jupyter est une application web utilisée pour programmer dans plus de
40 langages de programmation, dont: Python, Julia, Ruby, R, ou encore Scala.
Il est une évolution du projet IPython. Il permet de réaliser des calepins ou
notebooks, c'est-à-dire des programmes contenant à la fois du texte en
markdown et du code en Julia, Python, R... Ces notebooks sont utilisés en
science des données pour explorer et analyser des données.

Matplotlib :

Matplotlib est une bibliothèque Python capable de produire des graphes de


qualité. Matplotlib peut être utilisé dans des scripts Python, le shell Python et
IPython, le notebook Jupyter, des serveurs d’application web et dans quatre
outils d’interface graphique.

Matplotlib essai de rendre les tâches simples “simples” et de rendre possible


les choses compliqués. Vous pouvez générer des graphes, histogrames, des
spectres de puissance (lié à la transformée de Fourier), des graphiques à bares,
des graphiques d’erreur, des nuages de dispersion, etc… en quelques lignes de
code.

Pour des graphiques simples, le module matplotlib.pyplot fournit une interface


comme MATLAB spécialement adaptée avec IPython.

41
PANDAS :

Est une bibliothèque écrite pour le langage de programmation Python


permettant la manipulation et l'analyse des données. Elle propose en particulier
des structures de données et des opérations de manipulation de tableaux
numériques et de séries temporelles.

Les principales structures de données sont les séries (pour stocker des données
selon une dimension - grandeur en fonction d'un index), les DataFrames (pour
stocker des données selon 2 dimensions - lignes et colonnes), les Panels (pour
représenter des données selon 3 dimensions), les Panels4D ou les DataFrames
avec des index hiérarchiques aussi nommés MultiIndex (pour représenter des
données selon plus de 3 dimensions - hypercube)

OPENCV :

Est une bibliothèque graphique libre, initialement développée par Intel,


spécialisée dans le traitement d'images en temps réel. La bibliothèque contient
plus de 2500 algorithmes optimisés, qui incluent un ensemble complet
d'algorithmes classiques et de pointe en matière de vision par ordinateur et
d'apprentissage automatique. Ces algorithmes peuvent être utilisés pour
détecter et reconnaître des visages, identifier des objets, classer les actions
humaines dans des vidéos, suivre les mouvements d’une caméra et suivre des
objets en mouvement.

4. Environnement logiciel :

CUDA Tool Kit :

NVIDIA® CUDA® Toolkit fournit un environnement de développement pour la


création d’applications hautes performances avec accélération de GPU. Avec
CUDA Toolkit, vous pouvez développer, optimiser et déployer vos applications

42
sur des systèmes intégrés, des stations de travail de bureau, des centres de données
d'entreprise, des plates-formes basées sur le cloud et des supercalculateurs HPC
accélérés par GPU. Le kit d'outils comprend des bibliothèques accélérées par GPU,
des outils de débogage et d'optimisation, un compilateur C / C ++ et une
bibliothèque d'exécution pour déployer votre application.

Les bibliothèques CUDA accélérées par GPU permettent une accélération


immédiate dans de nombreux domaines tels que l'algèbre linéaire, le traitement
d'images et de vidéos, l'apprentissage en profondeur et l'analyse de graphes. Pour
développer des algorithmes personnalisés, vous pouvez utiliser les intégrations
disponibles avec les langages et packages numériques couramment utilisés, ainsi
que les API de développement publiées. Vos applications CUDA peuvent être
déployées sur toutes les familles de GPU NVIDIA disponibles sur site et sur les
instances de GPU dans le cloud. En utilisant des fonctionnalités intégrées pour la
répartition des calculs entre plusieurs configurations de GPU, les scientifiques et
les chercheurs peuvent développer des applications évolutives, allant de stations de
travail à GPU uniques à des installations en nuage avec des milliers de GPU.

CUDNN 6.0 :

La bibliothèque de réseaux de neurones profonds NVIDIA CUDA® (cuDNN) est


une bibliothèque de primitives accélérées par GPU pour les réseaux de neurones
profonds. cuDNN fournit des implémentations hautement optimisées pour les
routines standard telles que les couches de convolution en amont et en aval, de
regroupement, de normalisation et d'activation.

Les chercheurs en apprentissage approfondi et les développeurs d'infrastructure du


monde entier font confiance à cuDNN pour une accélération des GPU hautes
performances. Cela leur permet de se concentrer sur la formation des réseaux de
neurones et le développement d'applications logicielles plutôt que de consacrer du

43
temps à l'optimisation des performances des GPU de bas niveau. cuDNN accélère
les frameworks d’apprentissage en profondeur largement utilisés, tels que Caffe ,
Caffe2 , Chainer , Keras , MATLAB , MxNet , TensorFlow et PyTorch.

GPU Driver :

Le pilote (en anglais, driver) de la carte graphique, c'est avant tout un logiciel qui
s'intercale entre le système d'exploitation et le matériel. On peut le comparer à un
interprète traduisant automatiquement le langage de Windows dans celui de la carte
d'affichage.

LabelImg :

LabelImg est un excellent outil pour étiqueter des images. LabelImg enregistre un
fichier .xml contenant les données d'étiquette pour chaque image. Ces fichiers .xml
seront utilisés pour générer des TFRecords, qui sont l’une des entrées du formateur
TensorFlow.

5. Modèle de détection utilisé :

Faster R-CNN est maintenant un modèle canonique pour la détection d'objet basée sur
l'apprentissage en profondeur. Cela a inspiré de nombreux modèles de détection et de
segmentation qui ont suivi, y compris les deux autres que nous allons examiner
aujourd'hui. Malheureusement, nous ne pouvons vraiment pas commencer à comprendre
Faster R-CNN sans comprendre ses propres prédécesseurs, R-CNN et Fast R-CNN,
alors plongeons-nous rapidement dans son ascendance.

R-CNN :

R-CNN est le grand-père de Faster R-CNN. En d'autres termes, R-CNN


a vraiment lancé les choses.

44
R-CNN, ou RÉGION à base de Convolutional NEural Network, consistait en 3 étapes:

1. Numérisez l'image d'entrée pour les objets possibles à l'aide d'un algorithme
appelé Recherche sélective, générant ~ 2000 propositions de région.

2. Exécuter un réseau neuronal convolutionnel ( CNN ) au-dessus de chacune de


ces propositions de région

3. Prenez la sortie de chaque CNN et introduisez-la dans a) un SVM pour classifier


la région et b) un régresseur linéaire pour resserrer le cadre de sélection de l'objet,
si un tel objet existe.

Ces 3 étapes sont illustrées dans l'image ci-dessous:

Figure 12 : Modèle de détection R-CNN.

En d’autres termes, nous proposons d’abord des régions, puis extrayons des entités, puis
nous les classons en fonction de leurs caractéristiques. Pour l’essentiel, nous avons
transformé la détection d’objet en problème de classification d’image. R-CNN était très
intuitif, mais très lent.

45
R-CNN rapide

Le descendant immédiat de R-CNN était Fast-R-CNN. Fast R-CNN ressemblait à


l'original à bien des égards, mais sa vitesse de détection était améliorée grâce à deux
augmentations principales:

1. Effectuer l'extraction de caractéristiques sur l'image avant de proposer des


régions, n'exécutant ainsi qu'un seul CNN sur toute l'image au lieu de 2 000 CNN
sur 2 000 régions qui se chevauchent

2. Remplacement du SVM par une couche softmax, étendant ainsi le réseau de


neurones pour les prédictions au lieu de créer un nouveau modèle

Le nouveau modèle ressemblait à ceci :

Figure 13 : Modèle de détection fast R-CNN.

Comme nous pouvons le voir sur l'image, nous générons maintenant des propositions de
région basées sur la dernière carte de caractéristiques du réseau, et non à partir de l'image
d'origine elle-même. En conséquence, nous pouvons former un seul CNN pour
l’ensemble de l’image.

46
En outre, au lieu de former de nombreux SVM différents à la classification de chaque
classe d'objets, il existe un seul calque softmax qui génère directement les probabilités
de la classe. Maintenant, nous n’avons plus qu’un réseau de neurones à former, par
opposition à un réseau de neurones et de nombreux SVM.

Fast R-CNN a eu de bien meilleurs résultats en termes de rapidité. Il ne restait plus qu'un
seul gros goulot d'étranglement: l'algorithme de recherche sélective permettant de
générer des propositions de région.

Faster R-CNN :

À ce stade, nous revenons à notre objectif initial: Faster R-CNN. L’intérêt principal de
Faster R-CNN était de remplacer l’algorithme de recherche sélective lente par un réseau
neuronal rapide. Plus précisément, il a introduit le réseau de proposition de
région (RPN).

Voici comment le RPN a fonctionné:

 Sur la dernière couche d'un CNN initial, une fenêtre glissante 3x3 se déplace sur
la carte des fonctionnalités et la mappe vers une dimension inférieure (par
exemple, 256-d)

 Pour chaque emplacement de fenêtre coulissante, il génère plusieursrégions


possibles en fonction de k boîtes d'ancrage à rapport fixe (boîtes englobantes
par défaut).

 Chaque proposition de région comprend a) un score d'objectivité pour cette


région et b) 4 coordonnées représentant le cadre de sélection de la région.

En d’autres termes, nous examinons chaque emplacement de notre dernière carte de


caractéristiques et considérons k cases différentes centrées autour de celle-ci: une grande

47
case, une large case, une grande case, etc. Pour chacune de ces cases, nous indiquons si
nous pensons ou non: il contient un objet et quelles sont les coordonnées pour cette
boîte. Voici à quoi ressemble une fenêtre glissante:

Figure 14 : fonctionnement du modèle de détection R-CNN.

Les 2 k scores représentent la probabilité softmax de chacune des k boîtes englobantes


se trouvant sur un «objet». Notez que bien que l'ANP produise les coordonnées de la
boîte englobante, il n'essaie pas de classer les objets potentiels: son seul travail est
toujours de proposer des régions d'objet. Si une case d'ancrage a un score d'objectivité
supérieur à un certain seuil, ses coordonnées sont transmises en tant que proposition de
région.

Une fois que nous avons nos propositions de région, nous les alimentons directement
dans ce qui est essentiellement un Fast R-CNN. Nous ajoutons une couche de
regroupement, certaines couches entièrement connectées, et enfin une couche de
classification Softmax et un régresseur de zone de délimitation. Dans un sens, Faster R-
CNN = RPN + Fast R-CNN.

48
Figure 15 : La classififcation du modèle de détection R-CNN.

Au total, le Faster R-CNN a atteint des vitesses bien meilleures et une précision de
pointe. Il convient de noter que, bien que les futurs modèles aient beaucoup contribué à
augmenter les vitesses de détection, peu de modèles ont réussi à surpasser Faster R-CNN
de manière significative. En d'autres termes, Faster R-CNN n'est peut-être pas la
méthode la plus simple ou la plus rapide pour la détection d'objet, mais reste l'une des
plus performantes. Exemple: Faster R-CNN avec Inception ResNet de Tensorflow est
leur modèle le plus lent mais le plus précis .

En fin de compte, Faster R-CNN peut sembler compliqué, mais sa conception de base
est identique à celle du R-CNN d'origine: supposez des régions d'objet, puis les
classent. C’est maintenant le pipeline prédominant pour de nombreux modèles de
détection d’objets, y compris le prochain.

49
6. Les étapes de réalisation de notre application de détection de fumée :

1. Installation de TensorFlow-GPU.

2. Configuration de la structure du répertoire de détection d'objet et de l'environnement


virtuel Anaconda :

L'API de détection de fumée TensorFlow nécessite plusieurs packages Python


supplémentaires, des ajouts spécifiques aux variables PATH et PYTHONPATH, ainsi
que quelques commandes de configuration supplémentaires pour que tout soit configuré
pour exécuter ou former un modèle de détection de fumée.

Cette étape passe en revue la configuration complète requise. C'est assez méticuleux
car une configuration incorrecte peut provoquer des erreurs fastidieuses.

2a. Télécharger le référentiel d'API de détection d'objet TensorFlow à partir de


GitHub :

Nous avons créé un dossier directement dans C: et nommez-le «tensorflow1». Ce


répertoire de travail contiendra l’ensemble de la structure de détection d’objets
TensorFlow, ainsi que nos images d’entraînement, nos données d’entraînement, notre
modèle formé, les fichiers de configuration et tout le reste nécessaire au modèle de
détection de fumée.

Nous avons téléchargé le référentiel de détection d'objet TensorFlow complet situé à


l' adresse https://github.com/tensorflow/models. Ensuite, nous avons extrayé le
dossier «models-master» directement dans le répertoire C:\tensorflow1 que nous
venons de créer. Puis, renommer le dossier «models-master» en «models».

2b. Télécharger le modèle Faster-RCNN-Inception-V2-COCO à partir du modèle


zoo de TensorFlow.

2c. Téléchargez le référentiel de notre application à partir de GitHub :

Nous avons téléchargé le référentiel complet situé dans le lien :

50
https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-
Train-Multiple-Objects-Windows-10 et extrayer tout le contenu directement dans le
répertoire C:\tensorflow1\models \research\object_detection.

À ce stade, voici à quoi devrait ressembler notre dossier \object_detection :

Figure 16 : La structure du dossier object_detection.

Ce dossier contient les images, les données d'annotation, les fichiers .csv et les
enregistrements TFR nécessaires à la formation d'un détecteur de fumée.

Après, nous avons supprimé les fichiers suivants :

• Tous les fichiers de \object_detection\images\train et \object_detection\


images\test
• Les fichiers «test_labels.csv» et «train_labels.csv» dans \object_detection\

51
images
• Tous les fichiers de object_detection\training
• Tous les fichiers de object_detection\inference_graph

2d. Configurer le nouvel environnement virtuel Anaconda :

Ensuite, nous avons travaillé sur la configuration d’un environnement virtuel dans
Anaconda pour tensorflow-gpu. Dans le menu Démarrer de Windows, nous avons
ouvert l'utilitaire Anaconda Prompt.

Dans le terminal de commande qui apparaît, on a créé un nouvel environnement virtuel


appelé «tensorflow1» en exécutant la commande suivante:

C:\> conda create -n tensorflow1 pip python=3.6

Activer ensuite l'environnement en émettant:


C:\> activate tensorflow1

Installer tensorflow-gpu dans cet environnement en émettant:


(tensorflow1) C:\> pip install --ignore-installed --upgrade tensorflow-gpu

Installer les autres packages nécessaires en lançant les commandes suivantes:


(tensorflow1) C:\> conda install -c anaconda protobuf
(tensorflow1) C:\> pip install pillow
(tensorflow1) C:\> pip install lxml
(tensorflow1) C:\> pip install Cython
(tensorflow1) C:\> pip install jupyter
(tensorflow1) C:\> pip install matplotlib
(tensorflow1) C:\> pip install pandas
(tensorflow1) C:\> pip install opencv-python

52
2e. Configurer la variable d'environnement PYTHONPATH :

Nous avons créé une variable PYTHONPATH pointant vers les répertoires \ models, \
models \ research et \ models \ research \ slim. On a fait cela en lançant les commandes
suivantes :

Set PYTHONPATH=C:\tensorflow1\models;C:\tensorflow1\models\research;C:\tensorflow1\models\research\slim

2f. Compiler Protobufs et lancer setup.py :

Ensuite, nous avons compilé les fichiers Protobuf, utilisés par TensorFlow pour
configurer les paramètres de modèle et de Training. Malheureusement, la commande
de compilation de protocoles abrégée publiée sur la page d'installation de l'API de
détection d'objets de TensorFlow ne fonctionne pas sous Windows. Tous les
fichiers .proto du répertoire \ object_detection \ protos doivent être appelés
individuellement par la commande.

Dans l'invite de commande Anaconda, nous avons remplacé les répertoires par le
répertoire \ models \ research, copier et coller la commande suivante dans la ligne de
commande, puis appuyer sur Entrée:

protoc --python_out=. .\object_detection\protos\*.proto

Cela crée un fichier name_pb2.py à partir de chaque fichier name.proto du dossier \


object_detection \ protos.

Enfin, nous avons exécuté les commandes suivantes à partir du répertoire C: \


tensorflow1 \ models \ research:

(tensorflow1) C:\tensorflow1\models\research> python setup.py build


(tensorflow1) C:\tensorflow1\models\research> python setup.py install

53
3. Rassembler et étiqueter des images :

Maintenant que l'API de détection d'objets TensorFlow est entièrement configurée et


prête à fonctionner, nous devons fournir les images qu'elle utilisera pour former notre
détecteur de fumée.

3a. Rassembler des photos :

TensorFlow a besoin de centaines d'images de la fumée pour former un bon classifieur


de détection. Pour former un classificateur robuste, les images d'apprentissage doivent
comporter des objets aléatoires dans l'image ainsi que l’objet souhaité (fumée), ainsi
que divers arrière-plans et conditions d'éclairage. Il doit y avoir des images où la fumée
est partiellement masquée.

3b. étiqueter la fumée :

Avec toutes les images rassemblées, il est temps d'étiqueter la fumée dans chaque image.
LabelImg est un excellent outil pour étiqueter des images.

LabelImg enregistre un fichier .xml contenant les données d'étiquette pour chaque
image. Ces fichiers .xml seront utilisés pour générer des TFRecords, qui sont l’une des
entrées du formateur TensorFlow. Une fois que nous avons étiqueté et enregistré chaque
image, il y aura un fichier .xml pour chaque image dans les répertoires \test et \train.

4. Générer des données d'entraînement :

Avec les images étiquetées, il est temps de générer les TFRecords qui servent de
données d'entrée au modèle de formation TensorFlow. Ce référentiel utilise les
scripts xml_to_csv.py et generate_tfrecord.py du jeu de données du détecteur de
raton laveur de Dat Tran , avec quelques légères modifications pour fonctionner
avec notre structure de répertoires.

54
Premièrement, les données image .xml seront utilisées pour créer des fichiers .csv
contenant toutes les données du train et des images d’essai. A partir du dossier \
object_detection, nous avons lancé la commande suivante dans l'invite de commande
Anaconda:

(tensorflow1)C:\tensorflow1\models\research\object_detection>python xml_to_csv.py

Cela crée un fichier train_labels.csv et test_labels.csv dans le dossier \ object_detection


\ images.

Ensuite, nous avons ouvrert le fichier generate_tfrecord.py dans un éditeur de


texte. Remplacer la mappe d'étiquettes à partir de la ligne 31 par notre propre mappe
d'étiquettes, où un numéro d'identification est attribué à chaque objet. Cette même
affectation de numéro sera utilisée lors de la configuration du fichier labelmap.pbtxt à
l'étape 5b.

Dans notre application, nous avons remplacé le code suivant dans generate_tfrecord.py:

def class_text_to_int(row_label):
if row_label == 'ace':
return 1
elif row_label == two:
return 2
else:
return None
Avec ça:
def class_text_to_int(row_label):
if row_label == 'smoke':
return 1
Générer ensuite les fichiers TFRecord en exécutant ces commandes à partir du dossier
\ object_detection:

pythongenerate_tfrecord.py--csv_input=images\train_labels.csv--
image_dir=images\train --output_path=train.record

55
pythongenerate_tfrecord.py--csv_input=images\test_labels.csv--
image_dir=images\test --output_path=test.record

Celles-ci génèrent un fichier train.record et un fichier test.record dans \


object_detection. Celles-ci seront utilisées pour former le nouveau classifieur de
détection d'objets.

5. Créer une mappe d'étiquettes et configurer model de training :

La dernière chose à faire avant le training consiste à créer une mappe d'étiquettes et à
modifier le fichier de configuration de model.

Enfin, le pipeline de training de détection de fumée doit être configuré. Il définit quel
modèle et quels paramètres seront utilisés pour le training. C'est la dernière étape avant
de lancer le training.

6. training :

Depuis le répertoire \ object_detection, nous avons lancé la commande suivante pour


commencer le Training :

Pythontrain.py--logtostderr--train_dir=training/--
pipeline_config_path=training/faster_rcnn_inception_v2_pets.config

TensorFlow initialisera la formation. L'initialisation peut prendre jusqu'à 30 secondes


avant le début du Training. Lorsque le training commence, cela ressemblera à ceci:

56
Figure 17 : Le résultat de l’invite de commande après le lancement de training.

Chaque étape du Training rapporte la perte. Il commencera haut et diminuera au fur et


à mesure que la formation avance. Pour notre entraînement sur le modèle Faster-
RCNN-Inception-V2, il a commencé aux environs de 3,0 et est rapidement passé sous
la barre des 0,8.

7. Exportation du graphe d'inférence :

Maintenant que le Training est terminé, la dernière étape consiste à générer le graphe
d'inférence gelé (fichier .pb). A partir du dossier \ object_detection, nous avons lancé
la commande suivante, où "XXXX" dans "model.ckpt-XXXX" doit être remplacé par
le fichier .ckpt portant le numéro le plus élevé dans le dossier de formation:

python export_inference_graph.py --input_type image_tensor --pipeline_config_path


training/faster_rcnn_inception_v2_pets.config--trained_checkpoint_prefix
training/model.ckpt-XXXX --output_directory inference_graph

57
Cela crée un fichier frozen_inference_graph.pb dans le dossier \ object_detection \
inference_graph.

8. Utilisation de notre détecteur de fumée :

Nous avons modifié la variable NUM_CLASSES dans le script afin qu'elle corresponde
au nombre de classes que nous souhaitons détecter. (Pour notre détecteur de fumée, la
variable NUM_CLASSES = 1.).

Pour tester notre détecteur de fumée, on a déplacé une image de fumée dans le dossier
object_detection et nous avons modifié la variable IMAGE_NAME dans
Object_detection_image.py pour qu'elle corresponde au nom de fichier de
l'image. Nous pouvons également utiliser une vidéo contenant de la fumée (en utilisant
Object_detection_video.py) ou simplement brancher une webcam USB (en utilisant
Object_detection_webcam.py).

58
Références bibliographiques

 Wikipédia
 https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-
Tutorial-Train-Multiple-Objects-Windows-10#4-generate-training-data
 https://github.com/tensorflow/models
 https://www.youtube.com/watch?v=Rgpfk6eYxJA

59
Conclusion :

Le Stage qu’on a effectué au sein de la société GLOBAL VISION, d’une durée d’un
mois et demi, était une expérience fructueuse. Au cours de cette période, on a pu
acquérir tant d’informations qui représentent des plus non négligeables pour nos
connaissances et une motivation supplémentaire pour notre poursuite d’étude dans
notre spécialité, de s'affronter aux vraies difficultés de travail mais avant tout de
s’intégrer dans des groupes de personnes et de travailler en collaboration avec eux et
aussi de se familiariser avec cet environnement.

Nous pouvons ajouter aussi que ce stage nous a permis le réel contact avec la vie
professionnelle et nous a facilité les tâches suivantes :

- L’adaptation à la vie active de la direction ;

- La participation aux différentes activités ;

- Le développement de nos connaissances professionnelles.

La société GLOBAL VISION était un bon choix pour renfler l’importance et la valeur
de nos acquis professionnels. En effet cette expérience nous a permis de voir et
d’assister chaque jour le succès quotidien de cet organisme dirigé et mené par une
grande équipe.

De notre côté, on a apporté à l'entreprise une vision jeune et dynamique et une


application de détection de fumée.

Malgré le bon déroulement du stage nous avons rencontré quelques problèmes en ce


qui concerne :

- Le manque de connaissances à propos de l’intelligence artificielle et le language de


programmation utilisé vue que nous n’avons reçu aucun cours à propos de ces derniers
au sein de notre école.

- Le manque de temps pour améliorer nos connaissances à propos du sujet.

- Le manque d’information à propos du sujet.

- Le manque d’information à propos de l’entreprise vue qu’elle est nouvellement créé.

60
Mais ça ne reflète pas sur la qualité du stage qu’on a passé.

Nous avons été par conséquent satisfaits de notre stage au sein de la société et nous
espérons y avoir laissé une bonne impression de notre passage auprès des responsables
qui nous ont encadrés tout au long de notre stage.

61

Vous aimerez peut-être aussi