Académique Documents
Professionnel Documents
Culture Documents
Rapport
Rapport
Rapport
1
REMERCIEMENT
Ce rapport est le résultat d'un effort constant. Cet effort n'aurait pu aboutir sans la
contribution de M. Dahan Yassine. Ainsi se présente l'occasion de le remercier.
Nous ne pouvons passer sous silence les efforts fournis par Notre Professeur au sein
de UniversiaPolis Laayoune pour ses contribution, de ses encadrement et de ses
précieuses informations et conseils.
2
DEDICACE
Remerciement..............................................................................................................2
Dédicace........................................................................................................................3
Sommaire......................................................................................................................4
Introduction..................................................................................................................7
1. Introduction....................................................................................................18
3. Conclusion.......................................................................................................28
1. Introduction...................................................................................................30
4
INTRODUCTION :
Ce rapport présente le travail que j’ai effectué à savoir l’étude d’une description
globale du site et le développement d’une application de détection des objets à 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.
5
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.
6
Liste des figures
Figure 2 : Système de détection des objets.................................................................10
7
PARTIE 1 : LE PRINCIPE DE LA RECONNAISSANCE
DES OBJETS :
Introduction.
8
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.
9
Figure 2 : 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
10
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.
11
Détecteurs de points d’intérêts :
12
4 - Description des primitives :
13
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
14
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
sontpas 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
15
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.
16
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 motsdense, 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.
17
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.
18
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.
19
PARTIE 2 : CONCEPTION DE SYSTEME DE DETECTION
DE FUMEE :
Introduction.
20
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
21
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).
22
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 :
3. Environnement logiciel :
23
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 :
24
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 :
25
R-C NN, 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.
26
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.
27
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.
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)
28
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.
29
Figure 9 : 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.
30
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.
31
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
32
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
33
Figure 10 : 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:
34
Cela crée un fichier frozen_inference_graph.pb dans le dossier \ object_detection \
inference_graph.
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).
35
Conclusion :
36
37