Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Rapport de Stage
1
AUTEURS :
Bougzime Oualid
Tayani Amine
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 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.
3
DEDICACE
4
SOMMAIRE
Auteurs..………………………………………………………....................…………2
Dédicace………………………………………………………………….....................3
Remerciement………………………………………………………….......................4
Sommaire…………………………………………………………...….......................5
Introduction ………………………………………………….....................................7
1. Introduction ………….......................................................................…….…18
5
3. Le langage UML …………………………...…………………………...….31
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.
8
Liste des figures
9
Liste des tableaux
Table 1: moyen des points d’intérêts extraits pour la base de VOC 2007……...…......49
10
PARTIE 1 : PRESENTATION GENERALE DE LIEU DE
STAGE :
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.
3.1. DIRICKX :
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 :
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.
Technologies utilisées :
• INTREPID™ MicroPoint™ II :
14
architecture ouverte qui peut être mis en réseau avec d’autres
technologies INTREPID™ Série II.
• INTREPID™ UniZone™ :
Ce système utilise :
• INTREPID™ MicroTrack™ II :
15
Ce système utilise :
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 :
Introduction.
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 …
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.
18
Figure 3 : Exemples des formes de l’objet au sein du catégorie ≪avion≫.
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.
20
Table 1 : Moyen des points d’intérêts extraits pour la base de VOC 2007.
21
4 - Description des primitives :
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.
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 :
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 :
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.
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.
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 :
Introduction.
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.
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.
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 :
- 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).
3. Le langage UML :
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.
- Gain de précision.
- Gagne de stabilité.
- Il cadre l'analyse
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.
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.
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.
34
3-6 Diagramme de classe :
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 :
Introduction.
Environnement matériel.
Choix technologiques.
Environnement logiciel.
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.
2. Environnement matériel :
3. Choix technologiques :
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 :
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.
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.
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 :
40
- Construisez rapidement vos applications au sein du vaste écosystème
CPython, mature et largement utilisé.
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 :
41
PANDAS :
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 :
4. Environnement logiciel :
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.
CUDNN 6.0 :
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.
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 :
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.
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
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).
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)
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:
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.
Cette étape passe en revue la configuration complète requise. C'est assez méticuleux
car une configuration incorrecte peut provoquer des erreurs fastidieuses.
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 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.
51
images
• Tous les fichiers de object_detection\training
• Tous les fichiers de object_detection\inference_graph
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.
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
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:
53
3. Rassembler et étiqueter des images :
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.
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
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
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 :
Pythontrain.py--logtostderr--train_dir=training/--
pipeline_config_path=training/faster_rcnn_inception_v2_pets.config
56
Figure 17 : Le résultat de l’invite de commande après le lancement de training.
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:
57
Cela crée un fichier frozen_inference_graph.pb dans le dossier \ object_detection \
inference_graph.
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 :
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.
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