Vous êtes sur la page 1sur 52

Université Abdelmalek Essaâdi

Faculté des sciences et techniques -Alhoceima

Mémoire de fin d’études

Présenté par :

abdellah elzaar

Pour l’obtention du diplôme de Master :

Systèmes embarqués et robotique

Reconnaissance d’objets
Application : Œil intelligent

Préparé sous la direction de : Mr. EL ALLATI Abderrahim

Soutenu le :

jury :
Président !!!!
Rapporteur !!!!
Rapporteur !!!!
Examinateur !!!!
Remerciements

Tout d’abord, je tiens à exprimer profondément et sincèrement mes remercie-


ments et mes reconnaissances à mon encadrant Mr. EL ALLATI Abderrahim, pour
son soutien, ses conseils et son partage d’expertise, et avant tout d’avoir proposé
ce sujet passionnant.

Je souhaite également remercier M.AKCHIOUI Nabil et M.BENAYA Nabil pour


leur aide et leurs encouragements.

Je remercie vivement les membres du jury, M.EL ABOUTI Ossama, M.EL HAD-
DADI Anass, M.TOUKMATI Ahmed et M.TADMOURI Abdelhamid d’avoir ac-
cèptés d’évaluer mon travail.

Enfin, Je remercie mes parents pour leur soutien, leur générosité et leurs encou-
ragements continu tout au long de mes années d’études et à travers le processus
de ce travail. Cet accomplissement n’aurait pas été possible sans eux. Je vous
remercie.

I
Résumé

Ce mémoire présente les travaux réalisés dans le cadre de projet de fin d’études
au sein de la Faculté des Sciences et Techniques Al Hoceima. C’est un travail
de recherche sous thème "la reconnaissance d’objets". Son but est d’étudier et de
mettre en œuvre les techniques et les algorithmes utilisés dans le processus de
reconnaissance d’objets.

L’objectif de mon travail est de réaliser une application "œil intelligent" qui sera
capable de détecter et d’identifier les objets d’un environnement. Les images pro-
viennent d’une caméra embarquée ce qui permet d’effectuer un traitement en ligne
des images, le système va donc fonctionner en temps réel.

Ce qui passe derrière cette application est purement mathématique et informa-


tique. Tout d’abord, un descripteur d’images est employé pour coder et extraire les
caractéristiques des images issus de la caméra, ensuite le classifieur fait appelle à
une base références pour classifier les nouvelles exemples et les affecter aux classes
des objets. Ce dernier est déjà entrainé à un nombre déterminé d’objets à l’aide
des algorithmes d’apprentissages.

Mots-clés : Reconnaissance d’objets, apprentissage, classifieurs, descripteurs


d’images, base de référence.

II
Abstract

This research presents the work done as part of my final work study. it’s a
research work under the theme "Objects recognition". His goal to study the tech-
niques and algorithms used in the recognition process and put them implemented
or as independed work. The goal of my work is to realize and make an application
"Intelligente eye" that will be able to detect and identify the objects of an envi-
ronment.

The images come from an embedded camera which allows to carry out an on-
line treatement of images. The system will there for function in real time. What is
happening behind this application is purely mathemaical and for computer reas-
sons.

Firstly an images descriptor used for code and extract features of the images
from the caméra. Secondly, the classifier makes call to a base references to classify
new examples and assign them to objects classes. The classifier is already trained
to a certain number of objects using the learning algorithms.

Key-words : object recognition, learning, classifiers, image descriptors, base


references.

III
Table des matières

Remerciements I

Résumé II

Abstract III

Introduction générale 1

1 Codage des images 6


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Ondelettes de Haar . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Expression de l’ondelette de Haar . . . . . . . . . . . . . . . 7
1.3 Histogrammes de gradients orientés . . . . . . . . . . . . . . . . . . 8
1.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Expression des HOG . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Les motifs binaires locaux (Local Binary Patterns) . . . . . . . . . . 10
1.4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.2 Principe LPB . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Codage des contours de Freeman . . . . . . . . . . . . . . . . . . . 12
1.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.2 Principe de codage de freeman . . . . . . . . . . . . . . . . . 12
1.6 Analyse en composantes principales . . . . . . . . . . . . . . . . . . 13
1.6.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6.2 Principe de l’analyse en composantes principales . . . . . . . 14
1.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Apprentissage et classification 18
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Les différentes types d’apprentissages . . . . . . . . . . . . . . . . . 18

IV
2.3 Apprentissage supervisé . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.1 Base d’apprentissage . . . . . . . . . . . . . . . . . . . . . . 20
2.3.2 Classifieur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Méthodes de classifications . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 Méthodes discriminatives . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.1 K-plus proches voisins . . . . . . . . . . . . . . . . . . . . . 22
2.5.2 K-moyennes . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5.3 Arbre de décision . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5.4 Réseaux de neurones . . . . . . . . . . . . . . . . . . . . . . 26
2.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3 Application Oeil intelligent 32


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2 Raspberry Pi et le langage python . . . . . . . . . . . . . . . . . . . 32
3.2.1 Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.2 Le langage Python . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Mask région-réseau neuronal convolutionnel "R-CNN" . . . . . . . . 36
3.5 Mise en œuvre et détection d’objets en ligne . . . . . . . . . . . . . 38
3.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Conclusion et perspectives 41

V
Table des figures

1 Intelligence Artificielle : Robot Sophia . . . . . . . . . . . . . . . . 2


2 Tesla autopilot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Codage des images . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Reconnaissance de formes et apprentissage . . . . . . . . . . . . . . 4
5 Le système complet . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1 L’ondelette de Haar . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Exemples d’ondelettes de Haar . . . . . . . . . . . . . . . . . . . . . 8
1.3 Calcul du gradient et son orientation . . . . . . . . . . . . . . . . . 9
1.4 Exemple d’un histogramme de gradients correspond à l’image 2.3 . 10
1.5 LPB Pour les voisin de 8 pixels . . . . . . . . . . . . . . . . . . . . 11
1.6 Exemples de descripteurs LBP étendus . . . . . . . . . . . . . . . . 11
1.7 Directions de la chaine du code Freeman . . . . . . . . . . . . . . . 13
1.8 Exemple de codage de Freeman d’une image . . . . . . . . . . . . . 13
1.9 Elongation maximale . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.10 Eigen visages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1 Exemple simple de classification non-supervisé par un algorithme
des K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Réseau neuronal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Exemple de classification par algorithme K-plus proches voisins . . 23
2.4 Classification avec l’algorithme K-moyennes . . . . . . . . . . . . . 24
2.5 Exemple d’arbre de décision . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Neurone artificiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7 Réseaux de neurones à deux couches . . . . . . . . . . . . . . . . . 27
2.8 Echantillon aléatoire de chiffres manuscrits MNIST . . . . . . . . . 28
2.9 Réseau de neurone pour MNIST . . . . . . . . . . . . . . . . . . . . 29
2.10 Visualisation de la multiplication des pondérations en pixels . . . . 29
3.1 Raspberry Pi4 et le Raspbian . . . . . . . . . . . . . . . . . . . . . 33
3.2 Python logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

VI
3.3 OpenCV logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4 Image RGB vers image niveau de gris utilisant OpenCv . . . . . . . 35
3.5 Détection d’objets dans une image avec R-CNN . . . . . . . . . . . 36
3.6 Extraction et classification avec l’algorithme Mask R-CNN . . . . . 36
3.7 Organigramme de détection . . . . . . . . . . . . . . . . . . . . . . 39
3.8 Reconnaissance d’objets . . . . . . . . . . . . . . . . . . . . . . . . 39

VII
Introduction générale

les systèmes de vision (caméras, capteurs...) sont devenus de plus en plus intelli-
gents, ils sont maintenant désormais essentiels dans notre vie quotidienne vu pour
ses applications. Les caméras se sont installées partout et utilisées dans plusieurs
domaines telles que la détection d’obstacles, reconnaissance des piétons, contrôle
de montage etc. La vision de l’être humain est idéale et très capable pour inter-
préter en haute qualité une scène complexe et non structurée. Par contre, la vision
intelligente par ordinateur excelle dans la mesure quantitative d’une scène struc-
turée, en raison de sa vitesse, sa précision et répétabilité. La vision par ordinateur
ne cherche pas à comprendre ou à reproduire la vision humaine, mais à construire
un modèle algorithmique qui, vu de l’extérieur, possède des propriétés semblables.
Mes études de recherche se déroulent dans ce sens complexe mais simulant. Il s’agit
de mettre au point un système de vision capable d’explorer et d’identifier les ob-
jets d’un environnement. Au plus, ce système peut réagir aux différentes situations
à partir d’images provenant d’une simple caméra. Le problème est d’autant plus
difficile que le système de vision est embarqué et en déplacement en milieu urbain.
En effet, l’environnement visuel est complexe et contient de nombreux éléments à
multiples variations. Le processus de la vision doit être en temps réel, pour éviter
une éventuelle collision ou retard en réponse.

Reconnaissance de formes

La reconnaissance de formes (ou parfois reconnaissance de motifs) est un en-


semble de techniques et méthodes visant à identifier des motifs informatiques à
partir de données brutes afin de prendre une décision dépendant de la catégorie
attribuée à ce motif.

Confusion intelligence artificielle et reconnaissances de formes

Il y a une confusion entre la vision artificielle et la reconnaissance de formes.


En effet la reconnaissance de formes n’est pas un sous domaine de la vision arti-

1
ficielle et ne se limite pas à la reconnaissance d’images. La vision artificielle est
une spécialité qui utilise des techniques de traitement du signal et de l’images,
des techniques de reconnaissance de formes, des techniques d’optiques etc. Par
exemple, en reconnaissance de la parole, on utilise aussi le traitement de signal et
la reconnaissance de formes sans pour autant que ce soit relié à la vision artificielle.

Intelligence artificielle

Le terme intelligence artificielle (IA) désigne toutes les techniques et méthodes


mises en œuvre pour réaliser des systèmes et des machines de capacités proches
de celles de l’être humain. Aujourd’hui on trouve des robots qui possèdent des
capacités très semblables à celles de l’être humain grâce à l’IA (voir figure 1). Mais
ces systèmes développés ne sont pas capables que d’imiter certaines capacités de
l’homme ou bien de l’animale.

Figure 1 – Intelligence Artificielle : Robot Sophia

Projets révolutionnaires d’intelligence artificielle

Dans ces dix dernières années, les industries adoptent l’intelligence artificielle
et l’apprentissage automatique à grand échelle. Les entreprises de la technologie
moderne qui travaille sur des projets de l’intelligence artificielle vont faire l’ave-
nir de beaucoup de domaines tel que la santé, l’éducation, la sécurité etc. Nous
ne somme pas encore au stade où tout est automatisé et exécuté sur la machine,
mais nous somme dans le chemin. Ces technologies sont présentées dans notre en-
vironnement et fonctionnent silencieusement en arrière plan, et bientôt elles vont
modifier la manière dont nous réalisons les choses. Parmi les projets révolution-
naires qui ont transformé le monde au cours de la dernière décennie on cite à titre
d’exemple le Google Cerveau «Google brain en anglais», ce projet a commencé en

2
2011 comme une collaboration de recherche à temps partielle entre Jeffery Dean,
Greg Corrado chercheurs chez google et Andrew nG. Google brain [1] est un pro-
jet de recherche conduit par l’équipe de recherche sur l’apprentissage approfondi
«Deep learning» et l’intelligence artificielle. La technologie de ce projet est utili-
sée dans le système de reconnaissance vocale sur Android, la recherche de photos
de Google+, et les recommandations vidéo de youtube. L’un des produit les plus
récent de Google brain est «Smart reply» un outil de messagerie rapide intégré à
Gmail qui aide à automatiser les réponses courantes. Un autre grand projet qui
utilise les techniques de l’intelligence artificielle est celui des véhicules autonomes.
Ces derniers navigueront sur nos routes avant que nous le sachions. Toutes les
entreprises d’aujourd’hui, de Google aux constructeurs automobiles comme Ford
et GM, travaillent sur la technologie d’auto-conduite [2]. Mais "Tesla" reste l’un
des leader de marché de la conduite-autonome, en effet grâce à son projet "Auto-
pilot". Elon Musk [3] a discuté la publicité de ce système en 2013 et promis que
les véhicules autonomes (figure 2) seront prêtes vers la fin de 2019. Chaque jour,

Figure 2 – Tesla autopilot

les véhicules Tesla et le système Autopilot d’intelligence artificielle grandissent de


manière plus intelligente, grâce à une vaste quantité de données sur les utilisateurs
et des mises à jour en direct.

Codage des images

La première phase dans le processus de la reconnaissance est la phase de co-


dage. Elle intervient généralement après un pré-traitement de l’image qui consiste
à améliorer la qualité de l’image en atténuant les bruits et les défauts de capteur.
Aussi, l’opération de codage ou la description de l’image consiste à passer d’un
espace de mesure vers un espace de représentation (figure 3). Cette étape primor-
diale est détaillée en chapitre 2, pour extraire les zones d’intérêts contenus dans
l’image.

3
Dans la littérature, on trouve deux types de codages : global et structurel,
— on code toute la forme sans en extraire d’élément spécifiques : codage global.
— on extrait des éléments spécifiques de la forme et leur relation : codage struc-
turel.

Figure 3 – Codage des images

Reconnaissance de formes et apprentissage automatique

On peut bien dire que la deuxième grande phase de la reconnaissance de formes


est la phase de la classification et l’apprentissage automatique (figure 4). Cette
dernière regroupe plusieurs disciplines (statistiques, probabilités, optimisation, vi-
sion artificielle...), c’est aussi une autre branche de l’intelligence artificielle qui fait
couramment référence à la reconnaissance de formes. Cet axe de recherche consiste
à programmer des algorithmes permettant d’apprendre automatiquement à partir
des données et d’expériences passées.

Figure 4 – Reconnaissance de formes et apprentissage

4
Le système de reconnaissance : Œil intelligent

l’objectif majeur de ce projet est de développer des algorithmes capables de


détecter [4], de reconnaitre et de suivre en temps réel les objets évoluant dans
l’environnement. Le système va interpréter une scène à partir d’une camera et de
différentes capteurs. Dans ces dernières années les améliorations ont permis d’aug-
menter de façon très remarquable les performances de calcules des ordinateurs et
l’efficacité des algorithmes. Les applications de reconnaissance ont pu alors être
envisagées en temps réel et des études ont abondé en ce sens. La Figure 5 montre
le processus complet de la reconnaissance de formes.

Figure 5 – Le système complet

Plan du mémoire

Le plan de ce mémoire suit le processus suivant :


— Dans le chapitre qui vient, nous introduisant les différentes types des codages
des images envisagés pour répondre au problématique.
— Dans le chapitre 3, Nous détaillerons la phase de classification et apprentis-
sage, les classifieurs et méthodes de classification discriminatives.
— Le chapitre 4, décrit la vision par ordinateur, l’application "Oeil intelligent"
et la bibliothèque OpenCv avec Python et le Rspberry Pi.
— Enfin le chapitre 5, clôture ce mémoire par une conclusion générale et les
perspectives visés pour améliorer ce projet.

5
Chapitre 1

Codage des images

1.1 Introduction

L’opération du codage des images consiste à passer d’un espace de mesure vers
un espace de représentation. Coder une image consiste à extraire son vecteur de
caractéristiques. Il existe deux types de codages : le codage globale et le codage
structurel. le premier code toute la forme sans en extraire des éléments spéci-
fiques et la forme peut être représentée par un vecteur de paramètres, le second
extrait des éléments spécifiques de la forme et leurs relation. Dans ce chapitre
nous détaillerons deux méthodes de codage des régions (Ondelettes de Haar et
Motifs binaires Locaux) et deux méthodes de codages de contours (Histogramme
des gradients orientés et le codage de Freeman).

1.2 Ondelettes de Haar


1.2.1 Définition

L’analyse par ondelettes a été introduite dans les années 1960 [5] pour étudier
des signaux. Cette analyse est appliquée pour la première fois dans le domaine de
la géographie et plus exactement l’analyse des données sismologiques. La représen-
tation des ondelettes de Haar donne simultanément des informations temporelles
et fréquentielles [6], pour faciliter et identifier des caractéristiques physique de la
source du signal. D’abord, elle est utilisée en traitement de signal, leur champs
d’application s’est étendu a bien d’autres domaines, notamment au traitement
d’images. Aujourd’hui elles sont un descripteur largement répandu en reconnais-
sance de formes [7].

6
1.2.2 Expression de l’ondelette de Haar

Une ondelette est une fonction de carré sommable sur l’espace euclidien Rn (n ∈
N∗ ), le plus souvent oscillante et de moyenne nulle. De façon générale, les ondelettes
sont regroupées en familles, comprenant une ondelette initiale ψ appelée "ondelette
mère" et de l’ensemble de ses images obtenues par transformations affines dans Rn .
La formulation générale est donnée par :
1 t−τ
ψs,τ (t) = √ ψ( ), (1.1)
s s
avec t la variable à étudier, ψs,τ (t) l’ondelette de dilatation s et de translation τ
dérivant de l’ondelette mère ψ.

Figure 1.1 – L’ondelette de Haar

L’ondelette de Haar est définie par :


1

1, si 0 6 t < ;



2



1

ψ(t) =  −1, si 6 t < 1 ; (1.2)
2




0, sinon.

Papageorgiou et al. [8] ont adapté cette ondelette afin de l’utiliser en tant que
descripteur d’images pour la reconnaissance d’objets. L’objectif est d’encoder les
différentes zones de changements d’intensité dans une image, prenons l’exemple
de visage (voir figure 1.2a). Il apparait que les zones de changement d’intensité, ce
sont les yeux, le nez et la bouche. Les ondelettes de Haar s’adaptent en position,
en taille et en orientation après la capture des caractéristiques de l’image. La
figure 1.2b nous rapproche des différentes orientations usuellement exploitées en
reconnaissance d’objets. l’ondelette de Haar 1D précédente Eq. (1.2) est utilisée en
2D, en prenant le produit tensoriel de cette dernière par la fonction de changement

7
d’échelle Eq.(1.3) ou le produit tensoriel de deux ondelettes 1D. La "fonction de
changement d’échelle" est définie comme suit :

 1, si 0 6 t < 1 ;
φ(t) =  (1.3)
0, sinon.
Les différentes expressions de ces fonctions sont :
— l’ondelette de Haar verticale est donnée par : ψ(x, y) = ψ(x) φ(y)
N

— l’horizontale par : ψ(x, y) = φ(x) ψ(y)2


N

— la diagonale par le produit : ψ(x, y) = ψ(x) ψ(y).


N

Ces différentes positions de l’ondelette sont représentées dans la figure 1.2b. Soit
p(x, y) l’intensité d’un pixel d’une image aux coordonnées (x, y). Schématique-
ment, une ondelette de Haar est ainsi calculée :





1, si p(x, y) ∈ Z1 ;
X
h= a ∗ p(x, y) avec a =  −1, si p(x, y) ∈ Z2 ; (1.4)
0, sinon.


Corrigé
admin, 14/06/2021, 12:38:55

(a) Exemple de descrip-


tion d’un visage avec des
ondelettes de Haar (b) Positions d’ondelettes de Haar

Figure 1.2 – Exemples d’ondelettes de Haar

1.3 Histogrammes de gradients orientés


1.3.1 Définition

Les descripteurs d’image Histogrammes de gradients orientés HOG sont intro-


duites par les deux scientistes Dalal et Triggs [9] dans la conférence "Computer
vision and pattern recognition" Juin 2005. C’est une méthode basée sur le contour,
c-à-d que le principe des HOG consiste à calculer le gradient sur tout point de

8
l’image. D’une façon plus générique, le gradient permet de calculer les variations
d’une fonction par rapport aux variation de ses différentes paramètres. Donc il dé-
crit les objets dans une image en distribuant l’intensité des pixels dans différentes
directions. Un gradient 1D Horizontal ou vertical est tout simplement un calcul
de la dérivée partielle de la fonction image I(x, y) (voir Figure 1.3b).

admin
Corrigé
admin, 14/06/2021, 12:38:41

(b) Orientation du gra-


(a) Image initiale dient

Figure 1.3 – Calcul du gradient et son orientation

Les HOG permettent de calculer les occurrences des orientations du gradient.


Cette méthode présente quelques avantages clés par rapport aux autres méthodes.
Le descripteur HOG maintient l’invariance aux transformations géométriques et
photométriques.

1.3.2 Expression des HOG

Pour calculer le descripteur HOG, plusieurs étapes sont nécessaires :


— première étape : calcul du gradient, il s’agit de calculer le gradient pour tous
les points de l’image, c-à-d on calcule les gradients horizontaux et verticaux
appliqués sur l’image telles que :
Mx = [−1, 0, 1] (1.5)
My = [−1, 0, 1]T (1.6)
Les deux masques Mx et My nous donnent la composante horizontale du
gradient notée Gx et la composante verticale Gy pour chaque point de l’image.
— deuxième étape : après le calcul des gradients qu’est effectué pour tous les

9
points de l’image, il faut calculer l’orientation qui est définie par l’ongle θ :

Gy
θ = arctan(
). (1.7)
Gx
— troisième étape : construction de l’histogramme d’orientation pour différentes
zones de l’image en comptabilisant les occurrences du gradient dans une barre
correspondante à un intervalle d’orientation déterminé. Un exemple est mon-
tré sur la Figure 1.4.

Figure 1.4 – Exemple d’un histogramme de gradients correspond à l’image 2.3

Dans ces dernières années, et avec l’avancement de la vision par ordinateur,


plusieurs versions des HOG ont été mise en œuvre. Il apparait difficile de choisir
qu’elle est la plus adaptée à un genre spécifique d’applications. Il est donc néces-
saire de passer par la phase de test pour régler un ensemble de paramètres (type
de traitement et de masque et forme de l’histogramme). Malgré cet inconvénient,
ce descripteur est devenu très populaire et utilisable en reconnaissance d’objets et
il fournit des bons résultats.

1.4 Les motifs binaires locaux (Local Binary Patterns)


1.4.1 Définition

L’un des défis majeurs que les scientistes visent à atteindre est d’augmenter les
performances des algorithmes misent en place dans les processus de description et
codage des images. Une des difficultés de ces processus est de réaliser les actions
adéquates dans un délai imparti avec des bons résultats. C’est dans ce sens que les
descripteurs binaires peuvent être utiles vu leurs faible cout de calcul ainsi leurs
rapidité.

10
1.4.2 Principe LPB

La méthode des motifs binaires locaux est introduite en 1996 par Ojala et al. [10]
afin d’obtenir un descripteur complètement invariant à l’éclairage en introduisant
le principe de codage par relation d’ordre. Ce descripteur consiste à comparer le
niveau de gris d’un point avec ses voisins, voir Figure 1.5.

Figure 1.5 – LPB Pour les voisin de 8 pixels

Pour calculer les motifs binaires locaux (LBP), chaque comparaison renvoie un
nombre binaire. Ce mot binaire obtenu avec les 8 voisins est codé en décimal.
Le descripteur LBP avec 3*3 voisins ne peut pas capturer les caractéristiques de
grands dimensions. Pour cela, le descripteur LBP a été développé pour utiliser les
voisins de différentes dimensions. Les voisins sont définis comme un ensemble de
points représentés sous forme d’un cercle centré par le pixel à étiqueter. Les voisins
sont caractérisés par le nombre de points et par le rayon du cercle de ses derniers.
La figure 1.6 montre quelques exemples du descripteur LPB pour un nombre de
voisins étendus. La notation (P, R) indique un voisinage de points P sur un cercle
de rayon R.

Figure 1.6 – Exemples de descripteurs LBP étendus

Considérant un pixel à (xc , yc ) le LBP résultant peut être exprimé sous forme
décimale suivante :
−1
PX
LBPP,R (xc , yc ) = s(ip − ic )2p (1.8)
P =0

11
Où ic et ip sont respectivement des valeurs de niveau de gris du pixel central et P
les pixels environnants sur le cercle des voisins avec un rayon R. La fonction s(x)
est définie par : 
 1, si x ≥ 0 ;
s(x) =  (1.9)
0, si x < 0.
Le descripteur motifs binaires locaux (LBP) est un descripteur qui code effica-
cement les structures locales des images. Ces dernières années, il a suscité d’un
grand intérêt dans les domaines de vision et de traitement d’images. Le LBP a
montré son efficacité dans plusieurs applications. Citons à titre d’exemple dans la
reconnaissance et l’analyse des expressions faciales.

1.5 Codage des contours de Freeman


1.5.1 Introduction

Un être humain peut différencier entre différents objets en observant leurs


formes, leurs couleurs, leurs textures et leurs traits. Pour transmettre et appliquer
cette intelligence sur un système, nous avons besoin d’implémenter des techniques
comme la détection des contours pour aider le système à reconnaitre les formes de
l’objet. Le terme contour peut être défini comme une limite de l’objet dans une
image. La détection des limites et de contour joue un rôle très important dans
les domaines de traitement d’image et de la vision par ordinateur. Le codage des
contours de Freeman a été proposé en 1961 par Freeman [11].

1.5.2 Principe de codage de freeman

Le codage de Freeman est utilisé pour représenter un contour par une séquence
connectée de segments de lignes droites de longueur et de direction spécifiées.
En générale, cette représentation est basée sur la connectivité 4 ou 8 des segments
(voir Figure 1.7). La direction de chaque segment est codée à l’aide d’un schéma de
numérotation. Le code de chaîne Freeman dépend d’une direction et d’un point de
départ. Le code de chaîne suit le contour dans le sens anti-horaire et garde la trace
des directions en allons d’un pixel à l’autre. La Figure 1.7a montre 4-connectivités.
La Figure 1.7b montre 8-connectivités du code de chaîne Freeman.

12
(a) 4 connectivités (b) 8 connectivités

Figure 1.7 – Directions de la chaine du code Freeman

Le principe de codage des contours de Freeman consiste à coder avec un nombre


limité de bits la direction d’un élément de contour défini dans une image discrète.
Après, on obtient une chaine de codes à partir d’un pixel initial.

Supposons que P est un pixel noir actuel qui a 8 voisins possibles. Selon les huit
directions, nous allons obtenir un numéro de 8 codes en se déplaçant dans chemin
du contour. Ce code décrit l’objet dans l’image voir (Figure 1.8). En utilisant le
codage de Freeman à partir de le point S, et en se déplaçant dans le sens inverse des
aiguilles de la montre, on obtient la chaine de code suivant : ’5555011077033334’.

Figure 1.8 – Exemple de codage de Freeman d’une image

1.6 Analyse en composantes principales


1.6.1 Définition

Un bon codage des images est très important pour le bon fonctionnement du pro-
cessus de traitement d’images est de reconnaissance d’objets. En effet, plus le co-
dage est de faible dimension plus les temps de calcules serons faibles. Au contraire,
augmenter la dimension peut détériorer et diminuer l’efficacité des algorithmes de

13
classification et les résultats de reconnaissance. Donc il faux réduire la dimension
de vecteur de caractéristiques de n à d dimensions avec d << n. L’analyse en com-
posantes principales (ACP ou PCA en anglais : principal component analysis), ou
selon le domaine d’application de la transformation de Karhunen–Loève, est une
méthode de la famille de l’analyse des données et plus généralement de la statis-
tique multivariée. Elle consiste à transformer des variables liées entre elles (dites
« corrélées » en statistique) en nouvelles variables décorrélées les unes des autres.
Ces nouvelles variables sont nommées « composantes principales », ou axes prin-
cipaux. Elle permet de réduire le nombre de variables et de rendre l’information
moins redondante.

1.6.2 Principe de l’analyse en composantes principales

Le but de L’ACP [12] est de changer le système d’axe de façon à ce que le maxi-
mum d’informations soit contenu sur les premiers axes. Prenons à titre d’exemple
des données de deux dimensions (x1 , x2 ) dans le repère (i1 , i2 ), l’ACP va donner
un nouveau repère (u1 , u2 ) tel que le maximum d’informations soit porté par u1 .
Ce dernier u1 correspond à l’élongation maximale du nuage de points (Figure 1.9).
Les nouvelles coordonnées des points seront (y1 , y2 ) et la réduction de dimension
consistera à ne garder que y1 .

Figure 1.9 – Elongation maximale

Chaque point Xi s’exprime dans le repère initial par :


Xi = xi1 i1 + xi2 i2 + ... + xin in . (1.10)

14
Sa présentation sous forme vectorielle est donnée par :
 
x i1
Xi =  ...  .
 
(1.11)
xin
L’objectif est de rechercher dans un premier temps l’axe u1 telle que la projection
des données sur cet axe maximise la variance des données.

La projection des données sur l’axe u1 donne la nouvelle coordonnée des points :
yi1 = XiT u1 et uT1 u1 = 1. (1.12)
La variance des données sur cet axe sera :
1 XN 1 XN 1 N
T
2
uT1 Xi XiT u1 ,
X
σ= yi1 = yi1 yi1 = (1.13)
N i=1 N i=1 N i=1
avec σ = uT1 Σu1 , où Σ est la matrice de covariance des données telle que
1 XN
Σ= Xi XiT . (1.14)
N i=1
Il s’agit d’un problème classique de maximisation sous contrainte que l’on résout
à partir du Lagrangien :
L = uT1 Σu1 − λ(uT1 u1 − 1). (1.15)
En annulant la dérivée de L par rapport à u1 , on obtient :
∂L
= 0 ⇒ Σu1 = λu1 , (1.16)
∂u1
Σ est la matrice de covariance. On reconnait bien ses valeurs propres et ses vecteurs
propres. Donc le second axe correspondra au second vecteur propre de la matrice.
Chaque donnée Xi peut s’exprimer dans la base des vecteurs propres :
Xi = yi1 u1 + yi2 u2 + ... + yin un , (1.17)
avec yi1 = XiT u1 (y1 scalaire). Xi sera représenté par le vecteur :
 
y
 i1 
Xi =  ...  . (1.18)
yin
La réduction de dimension consiste à ne garder que les premières composantes de
ce vecteur pour représenter Xi :
 
y i1
Xi =  ...  avec d << N.
 
(1.19)
yid

15
On calcule l’inertie portée par les d premiers axes par :
λ1 + λ2 + . . . + λd
hboxavec d < n (1.20)
λ1 + λ2 + λ3 + . . . + λn
Pour reconnaitre le nombre d’axes à conserver, il existe deux méthodes :
— avec un pourcentage d’inertie souhaité à priori.
— on divise l’inertie totale par la dimension initiale pour connaître l’inertie
moyenne par variable. On conserve tous les axes ayant une inertie supérieure
à cette moyenne.
On dispose par exemple d’une base de références de 270 visages. Chaque visage a
pour dimension 38x38=1444 pixels, ce qui fait n=1444. On range tous ces visages
dans une matrice de dimension 270x1444. Chaque visage est considéré comme un
exemple de dimension 1444. On prétraite les données puis on calcule la matrice de
covariance de cette grosse matrice. Elle est de dimension 1444x1444. On calcule
les valeurs propres et les vecteurs propres de cette matrice. Chaque vecteur propre
a pour dimension 1x1444. On peut remettre chacun d’eux sous la forme d’une
matrice de dimension 38*38. Les 5 premiers vecteurs propres (eigen image 1 ) :

Figure 1.10 – Eigen visages

Si on ne conserve que ces 5 dimensions, chaque visage Xj de la base s’exprime


comme une combinaison linéaire de ces 5 ’eigen-visages’.
Xi = yi1 u1 + yi2 u2 + yi3 u3 + yi4 u4 + yi5 u5 . (1.21)
Ainsi, tous les exemples ne seront plus représentés que par un vecteur de dimension
5. A partir de ce vecteur, on peut :
— reconstruire les visages, on aura alors fait de la compression.
— reconnaitre les visages.

1. Ensemble de vecteurs propres lorsqu’ils sont utilisés dans le problème de la vision par ordinateur de la reconnaissance des visages

16
1.7 Conclusion

Le codage est une tache qui est très importante dans la reconnaissance de formes
et d’objets. En effet plus le codage est de bonne qualité plus le processus l’aura
aussi. Il existe plusieurs types de codages selon le type d’applications. Dans le cadre
de reconnaissance, les descripteurs présentés précédemment (ondelettes de Haar
et histogrammes de gradients) sont certainement les plus utilisés car ils offrent
un bon compromis entre rapidité d’exécution et performances. Un bon descripteur
utilisé pour faire le codage doit apporter des réponses semblables entre objets intra-
classes et différentes inter-classes. Dans nos jours, des recherches sont entamées
pour utiliser de nouveaux descripteurs et améliorer les résultats de reconnaissance.
En ce qui concerne mon PFE. Plusieurs descripteurs sont mis en œuvre, mais les
ondelettes de Haar et histogrammes de gradients orientés sont plus adaptés et
significatifs de l’état de l’art actuel sur la reconnaissance d’objets.

17
Chapitre 2

Apprentissage et classification

2.1 Introduction

La classification consiste à associer une classe C ou une étiquette de classe à un


vecteur de caractéristiques. L’objectif est d’établir une relation entre ses vecteurs
et les étiquettes pendant une phase d’apprentissage. Cette étape nécessite un clas-
sifieur capable de bien généraliser et estimer l’appartenance d’un objet à une classe
bien déterminé. C’est-à-dire d’attribuer une étiquette adéquate à chaque nouvelle
exemple d’objet dont seul le vecteur de caractéristiques est connu. Ils existent plu-
sieurs méthodes de classification. Chacune répondant à des problématiques bien
spécifiques. Dans ce chapitre nous traitons les méthodes de classification par ap-
prentissage supervisé utilisés en reconnaissance d’objets.

2.2 Les différentes types d’apprentissages

L’apprentissage automatique est souvent divisé entre trois principaux types


d’apprentissage : l’apprentissage supervisé, l’apprentissage non supervisé et l’ap-
prentissage par renforcement [5]. Connaître les différences entre ces trois types
d’apprentissage est nécessaire pour bien comprendre la classification.
— L’apprentissage supervisé : l’apprentissage supervisé dans le contexte de
l’intelligence artificielle (IA) et l’apprentissage automatique, est un système
dans lequel les données d’entrée et de sortie désirée sont fournies. Les données
d’entrée et de sortie sont étiquetées pour la classification afin de fournir une
base d’apprentissage pour le futur traitement des données. Beaucoup d’algo-
rithmes d’apprentissage supervisé sont utilisés pour faire de la reconnaissance
d’objets : personnes, visages, caractères, etc. Citons à titre d’exemple : les ré-
seaux de neurones, arbres et forets de décisions, etc. Mais la méthode la plus
classique est certainement l’algorithme des «K-Plus Proches Voisins».

18
— L’apprentissage non-supervisé : l’apprentissage non supervisé consiste à
apprendre à un algorithme d’intelligence artificielle des informations qui ne
sont ni classées, ni étiquetées, et à permettre à cet algorithme de réagir à
ces informations sans supervision. C’est à l’algorithme donc de trouver des
dépendances, des structures entre les différents exemples. Le «clustering» ou
partitionnement de données, regroupe un ensemble de méthodes d’apprentis-
sage non-supervisé tel que les algorithmes K-means, le regroupement hiérar-
chique ou l’isodata. Les classes sont créées par l’algorithme qui regroupe dans
une même classe des objets ayant des caractéristiques communes entre elles et
différentes avec les objets n’appartenant pas aux mêmes classes. Prenons par
exemple l’algorithme K-means. L’algorithme est aléatoirement initialisé avec
un nombre précis des classes «clusters» pour lesquels un point moyen appelé
centroïde est calculé. A chaque itération, la distance entre chaque exemple
aux différents centroïdes est calculée. Chaque exemple est alors associé au
cluster dont la distance au centroïde est la plus proche. Puis les centroïdes
sont réévalués. L’algorithme se termine lorsqu’il n’y a plus aucun changement.
La figure 2.1 illustre un exemple de «clustering» avec l’algorithme K-means.

(a) Données de départ et initialisation


de 2 centroïdes (b) Résultat final.

Figure 2.1 – Exemple simple de classification non-supervisé par un algorithme des K-means

— L’apprentissage par renforcement : cet apprentissage consiste à dévelop-


per un système autonome qui, tout au long des séquences continus d’essais
et d’échecs, s’améliore en fonction de la combinaison des données étiquetées
et des interactions avec les données entrantes. C’est un processus adapta-
tif qui améliore la solution en fonction des réponses qu’il reçoit. Beaucoup
d’algorithmes réalisent l’apprentissage par renforcement. Mais l’algorithme
de «Q-learning » est la méthode la plus utilisée. Ce dernier consiste à pro-
duire une matrice Q, dont chaque élément Q(s,a) est une mesure de l’intérêt
d’effectuer l’action a lorsque le système se trouve dans l’état s. Les analyses
des résultats nous donne la convergence de l’algorithme vers des valeurs op-

19
timales de Q. Ces algorithmes par renforcement permettent d’effectuer des
taches plus complexes, comme le guidage et la commande des robots.

2.3 Apprentissage supervisé


2.3.1 Base d’apprentissage

La base d’apprentissage ou base de référence est un organe très important pour


réaliser un apprentissage. En effet, elle est utilisée pour entraîner une machine à
distinguer des objets appartenant à différentes classes. Dans le cas de classification
entre deux classes, il s’agit de séparer les exemples positifs (objets recherchés) et
les exemples négatifs (tout ce que n’est pas cet objet). La base d’apprentissage
contient des milliers d’exemples positifs et négatifs. Pour choisir la base d’appren-
tissage, il faut bien choisir les images en relation avec l’application souhaitée. Par
exemple si on veut détecter une personne dans un environnement, les exemples
positifs doivent également être sélectionnés dans le même contexte et les exemples
négatifs doivent représenter ce que le système est susceptible de trouver dans celui-
ci (arbres, vélo, véhicule...).

2.3.2 Classifieur

En apprentissage automatique, le terme classifieur «classifier» représente une


famille d’algorithmes dont le rôle est de classer dans des groupes (des classes) les
échantillons qui ont des propriétés similaires, mesurées sur des observations. Le
rôle d’un classifieur est de déterminer les caractéristiques communes aux exemples
d’une même classe afin de pouvoir ultérieurement reconnaître à quelle classe ap-
partient un nouvel exemple inconnu. Le nombre de caractéristiques représentant
un objet est aussi un point important pour assurer un apprentissage valide. En
effet, une mal description de l’objet augmente le risque d’avoir une mauvaise clas-
sification. D’une autre coté, un classifieur peut avoir des difficultés à gérer un trop
grand nombre d’informations. Ce phénomène s’appelle le surapprentissage «over-
fitting». Ce cas survient lorsque le classifieur a trop appris les particularités de
chacun des exemples fournis en exemple, le classifieur risque donc de perdre sa
capacité de généralisation. Parmis les méthodes existantes, citons les réseaux de
neurones qui sont inspiré du fonctionnement des neurones biologiques, voir Figure
2.2. Le champ des réseaux neuronaux va démarrer par la présentation en 1943
par W. MCCulloch et W. Pitts [13] du neurone formel qui est une abstraction du
neurone physiologique. Mais le premier qui a poser la loi de fonctionnement pour
l’apprentissage est W. James en 1890.

20
Figure 2.2 – Réseau neuronal

2.4 Méthodes de classifications

Dans la littérature, il existe deux grandes familles des méthodes de classifica-


tion : méthodes génératives et méthodes discriminatives.
— Méthodes génératives consistent à déterminer les densités de probabilités
conditionnelles p(x|Ck ) et les densités de probabilités à priori p(Ck ) pour
chaque classe individuellement, puis l’utilisation du théorème de Bayes par :
p(x|Ck )p(Ck )
p(Ck |x) = , (2.1)
p(x)
où le dénominateur est un terme de normalisation :
X
p(x) = p(x|Ck )p(Ck ). (2.2)
k

Connaissant p(Ck |x), il est facile de trouver la classe de x. Cette approche est
dite générative car, connaissant p(x|Ck ), il est facile de générer des données
dans l’espace des paramètres. Mais trouver p(x|Ck ) pour chaque classe est
très couteux en temps de calcul, surtout quand x est de grande dimension.
Un autre inconvénient de cette approche c’est qu’elle nécessite une grande
base de données, surtout quand x est de grande dimension. Des exemples
d’algorithmes utilisant les méthodes génératives sont par exemple la modéli-
sation gaussienne, classification naïve bayésienne etc. Cette dernière implique
une distribution de probabilité conditionnelle de type binomiale.

21
— Méthodes discriminatives consistent à déterminer directement p(Ck |x) et dé-
cider de la classe. Cette méthode cherche d’abord à maximiser la qualité de la
classification sur un jeu de test. Dans un second temps, une fonction de coût
va réaliser l’adaptation du modèle de classification final (en minimisant les
erreurs). Les approches utilisant les méthodes discriminatives présentent un
grand avantage c’est que la détermination de p(Ck |x) est beaucoup plus ra-
pide car la dimension de Ck est bien souvent beaucoup plus faible que celle de
x. Quelques exemples d’entrainement de classifieurs par méthodes discrimi-
nantes sont : K plus proches voisins, arbres de décision, réseaux de neurones
etc. On considère généralement que les modèles entrainés par les méthodes
discriminatives sont plus précis que celles de type génératives entrainés avec
des probabilités conditionnelles (classifieur bayesiens naïfs ou linéaires). Les
classifieurs génératifs sont plus adaptés pour les processus de classification
avec nombreuses données manquantes (par exemple la classification de texte
avec peu de données d’apprentissage).

2.5 Méthodes discriminatives


2.5.1 K-plus proches voisins

K-plus proches voisins ou «k-nearest neighbors» est un algorithme de classifica-


tion largement utilisé en raison de sa simplicité, de sa facilité d’implémentation et
de son efficacité. Il est l’un des principaux algorithmes d’exploration de données
«data mining» qui est souvent utilisé dans l’estimation statistique et la reconnais-
sance des formes depuis 1970. Le principe des KPPV est simple. On a une base de
référence dont on dispose d’un ensemble de vecteurs de caractéristiques Xi et leur
classe Ci , l’objectif est de trouver la classe du nouveau vecteur X. Premièrement
on calcule la distance entre X et tous les exemples de la base de référence, ensuite
on détermine les K vecteurs les plus proches, et enfin en affecte à X la classe de
vecteur le plus proche. Par exemple avec une distance euclidienne, le nouvel objet
appartiendra à la classe dont il est le plus proche. Cette technique donne d’assez
bons résultats dans des cas simples et est facile à mettre en œuvre, mais le temps
de calcul de la prédiction est assez long car il nécessite un calcul de distance à
tous les éléments de la base d’apprentissage. La figure montre un exemple simple
d’une classification avec l’algorithme KPPV. Le nouvel exemple est associé à la
classe B car la majorité de ses plus proches voisins appartiennent à la classe B.

22
Figure 2.3 – Exemple de classification par algorithme K-plus proches voisins

Si on parle des KPPV [14] on parle automatiquement du dilemme biais/variance.


Ce dilemme réside dans le nombre des voisins K. En effet si on a le nombre K faible,
on aura une bonne résolution des frontières entre classe, mais le classifieur sera
très sensible au bruit sur les échantillons de la base de référence. Au contraire si
on a le nombre des K voisins est très grand, on aura une mauvaise résolution des
frontières entre classe «Lissage des frontieres». Mais le classifieur sera Peu sensible
au bruit sur les échantillons de la base de référence. Pour accélérer la classification
par les KPPV ils existent deux solutions :
— La réduction de la dimension de chaque exemple en utilisant l’ACP
— La réduction de taille de la base de référence, par la représentation de chaque
classe par sa moyenne.

2.5.2 K-moyennes

Lorsqu’on dispose d’un espace de donnés de <D et nous utilisons la distance


euclidienne [15], on peut représenter chaque classe par le point dans l’espace de
donnés qui est la moyenne des données qui lui sont attribués. Étant donné que
chaque classe est représentée par une moyenne, cette approche est appelée K-
moyennes en anglais K-Means. Ce dernier est l’un des algorithmes d’apprentissage
automatique les plus populaires, en raison de sa simplicité et de son interpréta-
bilité. c’est une méthode non supervisée, itérative qui travaille indépendamment
sur chaque classe. Pour calculer les K-moyennes, on initialise aléatoirement les
prototypes P1 ...Pk , ensuite on affecte chaque exemple x au prototype Pi le plus
proche, après on calcule les nouveaux prototypes : "moyennes des exemples de leur
groupe", on réinitialise encore si pas d’idempotence. K-moyennes est un algorithme
itératif qui fait des boucles jusqu’à ce qu’il converge vers un solution optimale).

23
Les figures (2.4a et 2.4b) montrent un autre exemple de classification en utilisant
l’algorithme K-moyennes avec des données générées aléatoirement. la figure 2.4
montre les données de départ générées aléatoirement, et la figure 2.1b montre les
données classifiées.

(a) Données initiales générées aléatoirement

(b) Données finales classifiées

Figure 2.4 – Classification avec l’algorithme K-moyennes

2.5.3 Arbre de décision

Arbre de décision est une méthode de classification discriminative. On l’utilise


notamment en fouille de données et en apprentissage automatique. Les premiers
algorithmes de classification par arbres de décision sont anciens. Les deux travaux
les plus marquants sont la création de CART 1 , par Breiman en 1984 et la création
de C4.5 par Quinlan en 1993. L’arbre de décision est un classifieur représenté sous
forme d’arbre, tel que les noeuds de l’arbre testent les attributs, et les branches
représentent la valeur possible de l’attribut testé et les feuilles spécifient les caté-
gories(deux ou plus). Étant donnés n attributs A1 ...An , l’espace de description X
est le produit cartésien des domaines Xi de chaque attribut Ai .
n
Y
X= Xi où Xi = Dom(Ai ). (2.3)
i=1

1. «Classification And Regression Trees», s’attelle à construire un arbre de décision en classifiant un ensemble d’enregistrements

24
Les attributs peuvent être :
— binaires,
— n-aires,
— réels.

La figure 2.5 montre un exemple d’arbre de décision. Dans lequel on traite


une situation en début d’un match de football, qui est décrite par deux attributs
binaires : Match à domicile et Mauvaises conditions climatiques. L’attribut classe
prend deux valeurs : gagné et perdu.

Figure 2.5 – Exemple d’arbre de décision

Un arbre de décision [16] est un arbre au sens informatique du terme. Ce dernier


est composé de nœuds et d’arcs. Les nœuds représentent les classes individus de
plus en plus fines depuis la racine, et les arcs représentent les prédicats de partition-
nement de la classe source. Les nœuds sont repérés par des positions ∈ (1, ...p)∗ ,
où p est est l’arité maximale des nœuds. Les nœuds de décision sont étiquetés par
un test appliqué à chaque description d’individu. Chaque test examine la valeur
d’un unique attribut. Les principaux algorithmes d’apprentissage par arbres de
décision sont CART (Breiman) et C4.5 (Quinlan). La première étape du proces-
sus consiste à construire un petit arbre consistant avec la plupart des données.
l’idée est de diviser récursivement et le plus efficacement possible les exemples de
l’ensemble d’apprentissage par des tests définis à l’aide des attributs jusqu’à ce
que l’on obtienne des sous-ensembles d’exemples ne contenant (presque) que des
exemples appartenant à une même classe. Cette méthode est l’une des méthodes
de construction Top-Down. 2

2. Méthode construisant l’arbre de la racine vers les feuilles, gloutonnes et récursives.

25
Dans les méthodes de construction des arbres on trouve toujours les 3 opérateurs
suivants :
— premièrement on décide si un nœud est terminal, c’est-à-dire si il doit être
étiqueté comme une feuille ou porter un test.
— ensuite, si un nœud n’est pas terminal, il faut sélectionner un test à lui asso-
cier.
— finalement si un nœud est terminal, on lui affecte une classe.
On peut définir l’algorithme général comme suit :
1 entrée : échantillon S ;
2 début;
3 Initialiser l’arbre courant à l’arbre vide ; la racine est le nœud courant ;
4 répéter;
5 Décider si le nœud courant est terminal;
6 Si le nœud est terminal alors ;
7 Lui affecter une classe;
8 sinon ;
9 Sélectionner un test et créer autant de nouveaux nœuds fils
10 qu’il y a de réponses possibles au test;
11 FinSi;
12 Passer au nœud suivant non exploré s’il en existe;
13 Jusqu’à obtenir un arbre de décision;
14 fin ;
Algorithme 1 : Algorithme d’arbre de décision

Les arbres de décision presentes plusieurs avantages tel que ces derniers sont des
classifieurs interprétables 3 , contrairement aux perceptrons où KNN par exemple.
En plus ils fonctionnent facilement sur les données qualitatives et tant que le
nombre de caractéristiques n’est pas trop grand. d’autre part les arbres de décision
sont lents et instables pendant l’apprentissage.

2.5.4 Réseaux de neurones

Un réseau de neurones [17] est un système d’apprentissage automatique dont


la conception est inspirée du fonctionnement des neurones biologiques. Appelé
aussi réseau de neurones artificiels qui, via un algorithme permet à un ordinateur
d’apprendre et de classifier. Le neurone biologique a été modélisée en neurone
formel par les deux scientistes W. McCulloch et W. Pitts en 1943, et ils sont
utilisé jusqu’à aujourd’hui dans divers domaines tels que la robotique, statistique et
reconnaissance de formes. Le principe d’apprentissage avec les réseaux de neurones
consiste à fournir un très grand nombre d’exemples au réseau suffisamment pour
qu’il puisse de lui même apprendre à s’adapter à un autre problème.

3. Facile à comprendre et analyser

26
Citons par exemple la reconnaissance des chiffres manuscrit, il faut donner au
réseau des milliers d’images de différents chiffres, pour qu’il arrive à identifier
quelles sont les paramètres commun entre toutes ces images. Au début le réseau
n’arrive pas à identifier un chiffre précis. Mais il s’améliorera avec le temps au
fur et à mesure des exemples. Le neurone reçoit les entrées X1 , ..., Xn , et il est
caractérisé par un potentiel d’activation P défini comme la somme pondérée des
entrées.
P = b + w1 x1 + w2 x2 + ... + wn xn avec y = θ(p). (2.4)
Les poids sont les coefficients synaptiques wi et la sortie y est calculée en passons
à travers une fonction d’activation θ.

Figure 2.6 – Neurone artificiel

Pour déterminer et modéliser un réseau de neurone [18], il faut trouver les


coefficients synaptiques wi . On parle d’une phase d’apprentissage, quand les ca-
ractéristiques du réseau sont modifiées et recalculées jusqu’à le fonctionnement
souhaité soit obtenu. D’une manière plus claire, si on dispose d’une base d’ap-
prentissage avec différents exemples représentatifs connus, l’objectif est d’évaluer
wi en minimisant l’erreur entre sortie souhaitée et sortie obtenue sur cette base
d’apprentissage. Un réseau de neurone est composé d’une série de couches de
neurones, de tel sorte que tous les neurones de chaque couche se connectent aux
neurones de la couche suivante voir figure 2.7 .

Figure 2.7 – Réseaux de neurones à deux couches

27
Si on veut déterminer le nombre des couches dans un réseau de neurones on ne
compte que les couches avec des connexions entrantes et on élimine la première
couche d’entrée. Donc le réseau de neurone illustré dans la figure ci-dessus, est un
réseau à deux couches dont 1 est cachée, il contient 3 neurones d’entrée, 2 neurones
dans sa couche cachée «Hidden» et un neurone de sortie. Le calcul et le processus
d’apprentissage commence avec la couche d’entrée, en passant par la couche cachée
qui à son tour passe ses valeurs de sortie à la couche finale. Les couches cachées sont
très utiles, en effet si on aura pas de couches cachées, on aura pas une dépendance
entre les entrées et la sortie, ce qui va perturber le processus d’apprentissage. La
classification de plusieurs classes par réseaux de neurones consiste à affecter chaque
classe à chaque neurone de sortie. Nous effectuons une passe avant vers le neurone
de sortie et notre prédiction est la classe correspondant au neurone qui a reçu la
valeur la plus élevée. Pennons maintenant un exemple de classification en utilisant
les réseaux de neurones dont la tache et de reconnaitre les chiffres manuscrit. Nous
allons utiliser la base de données MNIST 4 , qui contient 60000 images de chiffres
manuscrit de 28*28 pixels [19].

Figure 2.8 – Echantillon aléatoire de chiffres manuscrits MNIST

La configuration du réseau pour qu’il arrive à classifier les images MNIST [20]
consiste à avoir les valeurs de niveau de gris 5 des pixels comme première couche
d’entrée, et avoir dix classes en sortie. Chacune correspond à un chiffre de 0 à 9.

4. Mixed National Institute of Standards and Technology, est une base de données de chiffres écrits à la main. C’est un jeu de données
très utilisé en apprentissage automatique.
5. Chaque pixel a une valeur de luminosité comprise entre 0 (noir) et 255 (blanc), s’appelle niveau de gris

28
Les images de la base de données MNIST sont toutes de dimension 28*28, donc
de 784 pixels que nous pouvons les présenter comme le montre la figure ci-dessous.

Figure 2.9 – Réseau de neurone pour MNIST

Après que le réseau de neurone à été formé, nous pouvons prédire le chiffre
associé aux exemples inconnus en passant par le même réseau et en observant les
valeurs de sortie. Le chiffre prédit est celui dont le neurone de sortie à la valeur
la plus élevée à la fin. Concentrons-nous uniquement sur les connexions branchées
sur le premier neurone de sortie, que nous allons étiqueter, et l’étiquette de chacun
des neurones d’entrée et de leurs poids correspondants comme il est indiqué dans
la figure ci-dessous :

Figure 2.10 – Visualisation de la multiplication des pondérations en pixels

L’opération d’apprentissage et classification des chiffres est purement mathéma-


tique, les informations donnés à l’entrée vont donc se propager à travers les couches
cachées à l’aide des poids, finalement pour envoyer les résultats aux couches de
sortie. Le degré d’activation ai de chacun des neurones de sortie correspond au
pourcentage de chance que notre image correspond à tel chiffre d’après notre ré-
seau.

29
L’apprentissage alors consiste à chercher les valeurs des poids 6 qui donnent les
meilleurs résultats après que notre réseau a trompé d’apprendre au début. L’ob-
jectif donc est de comparer le résultat que le réseau nous a donné avec celui que
nous attendait de lui. Et là on parle d’une valeur qui s’appelle le cout. plus le cout
est élevé plus notre réseau est éloigné du résultat, et grâce à cet indice on sera
capable de savoir les poids qui ont une relation avec l’erreur. Donc le but est de
corriger ses poids afin de diminuer le cout et se rapprocher de la bonne réponse.
Le réseau va répéter ce processus des milliers des fois avec un très grand nombre
d’images, enfin le réseau arrivera à établir sa propre représentation, et sera ensuite
capable de différencier entre les chiffres avec une grande precision. Et la on peut
parler du loi de Hebb ou théorie de Hebb, établie par Donald Hebb en 1949. On
dispose d’une base d’apprentissage composée de : vecteur e associé aux entrées
(e1 ...en ) et c la sortie correspondante souhaitée. Donc l’algorithme d’apprentissage
de Hebb est comme le suivant :

1 λ est une constante positive;


2 Initialiser aléatoirement les coefficients wi ;
3 Répéter : ;
4 Prendre un exemple(e, c) dans s;
5 Calculer la sortie o du réseau pour l’entrée e ;
6 Si c 6= e;
7 Modification des poids wij : ;
8 wij = wij + λ ∗ (ai ∗ aj );
9 Fin Pour;
10 Fin Si;
11 Fin Répéter;
Algorithme 2 : Algorithme d’apprentissage de Hebb

Après l’obtention de notre vecteur d’entrée, on applique directement l’apprentis-


sage de nos données en utilisant l’algorithme d’apprentissage de Hebb [21] jusqu’à
on aura le fonctionnement souhaité.
Les réseaux de neurones sont très performant dans la classification et l’analyse
des données, ils ont aussi une capacité à prédire et à traiter des problèmes non
structurés. Mais cet outil ne fournit pas des explications concernant leurs résul-
tats ce qui limite l’analyse des phénomènes. Un autre point faible des réseaux de
neurones c’est que cette boite noir n’a pas encore une architecture optimale.

6. Les poids correspondent aux coefficients synaptiques wi

30
2.6 Conclusion

La qualité de la base de données joue un rôle très important dans l’efficacité du


processus de reconnaissance. En effet dans la phase d’apprentissage et classifica-
tion on confronte plusieurs problèmes relatives à la base de données, des fois on
trouve des données qui ont aucune cohérence entre eux ou bien elles ne recouvrent
pas l’ensemble des configurations sujet au mal-fonctionnement des algorithmes de
classification. les classifieurs qui utilisent les méthodes discriminatives tel que les
réseaux de neurones, sont plus utilisées dans la reconnaissance de formes et d’ob-
jets vue leurs précision par rapport aux méthodes génératives. Les performances
d’un classifieur sont évaluées à l’aide d’une matrice de confusion. Cette dernière va
déterminer les pourcentages des formes bien classées, mal classées et non classées.

31
Chapitre 3

Application Oeil intelligent

3.1 Introduction

En tant que discipline scientifique, la vision par ordinateur «en anglais Com-
puter vision»[22] est inspirée de la théorie d’information et de la technologie pour
construire des systèmes artificiels. Ce type de traitement nécessite généralement
des données d’entrée fournies par un système de vision par ordinateur, agissant
comme un capteur de vision et fournissant des informations de haut niveau. Le
but de la vision par ordinateur est de calculer et d’analyser les propriétés et les
caractéristiques du monde 3D à partir des images numériques. Ce dernier chapitre
est consacré à l’application œil intelligent qui permettra d’identifier les objets d’un
environnement, Le programme de reconnaissance sera codé en Python. Il utilisera
les bibliothèques OpenCV et Numpy pour pouvoir capturer et traiter les images à
l’aide de la webcam d’un ordinateur ou une caméra de Raspberry pi 1 . Son objectif
sera d’identifier les objets à l’aide d’une base de données déjà entrainé de nombreux
éléments d’un environnement. Ici , OpenCV [23] utilise les Mobilenet SSD basés
sur un modèle de réseaux de neurones artificiels développé par Google. Ce modèle
est conçu particulièrement pour les systèmes embarquées et il est performant sur
ces derniers.

3.2 Raspberry Pi et le langage python


3.2.1 Raspberry Pi

Le raspberry Pi [24] est un nano-ordinateur sous forme d’une carte à processeur


ARM. Cette carte électronique qui a été conçu par les professeurs de département
informatique de l’université de Cambridge est destinée à encourager l’apprentissage
de la programmation informatique. La fondation raspberry Pi depuis sa création
1. Le Raspberry Pi est un nano-ordinateur monocarte à processeur ARM conçu pour l’apprentissage de la programmation

32
en 2009 jusqu’à aujourd’hui, ne cesse pas de développer et améliorer les perfor-
mances des nano-ordinateurs. La conception du Raspberry Pi était en 2006, les
premiers prototypes de cette carte sont développés sur des microcontrôleurs "At-
mel ATmega 644". il existe plusieurs modèles dans la Raspberry Pi, ils ce diffèrent
selon la technologie utilisée, la vitesse du microprocesseur, le nombre des ports et
des entrées/sorties.
Le dernier projet de la fondation raspberry qui a été annoncé en "juin 2019" est
la carte "Raspberry Pi4" [25] (figure 3.1b) le plus petit ordinateur du monde. Cet
ordinateur possède les derniers caractéristiques tel que l’USB 3.0, alimentation
USB type C et le bluetooth version 5.0. "Raspberry Pi4" possède 4Go de mémoire
vive et un système d’exploitation Raspbian.

(a) Raspberry Pi4 (b) Le système Rspbian

Figure 3.1 – Raspberry Pi4 et le Raspbian

Comme tout système informatique, le nano-ordinateur Raspberry Pi nécessite un


système d’exploitation pour fonctionner. Ils existent plusieurs systèmes d’exploita-
tions, mais le choix de ce dernier dépend des gouts et des préférences de l’utilisateur
ainsi le modèle de la carte. Parmi les systèmes d’exploitation que le Raspberry Pi
supporte on trouve : Fedora, Kali Linux 2.0.1, Puppy Alpha 4, Raspbian (figure
3.1b) etc. Ce dernier est une distribution basé sur Debian 2 . C’est le système le
plus simple et le plus adapté pour utiliser le Raspberry Pi.

3.2.2 Le langage Python

Python est un langage de programmation de haut niveau à usage général lar-


gement utilisé. Il a été initialement conçu par Guido van Rossum [26] en 1991 et
développé par "Python Software Foundation". Il a été principalement développé
pour mettre l’accent sur la lisibilité du code, et sa syntaxe permet aux program-
meurs d’exprimer des concepts dans moins de lignes de code. Python est un langage
de programmation qui permet de travailler rapidement et d’intégrer les systèmes
2. Debian est une organisation communautaire et démocratique, dont le but est le développement de systèmes d’exploitation basés
exclusivement sur des logiciels libres.

33
plus efficacement. Ce langage informatique est compatible avec beaucoup de bi-
bliothèques scientifiques et surtout dans le traitement d’images et vidéos. C’est
un choix attrayant pour le développement algorithmique et l’analyse de données.
Pourtant, en tant que langage polyvalent, Python (figure 3.2) est de plus en plus
utilisé non seulement dans les milieux universitaires, mais aussi dans l’industrie.

Figure 3.2 – Python logo

Python est un langage interprété, multi-paradigme 3 et multiplateformes. Il fa-


vorise la programmation impérative structurée, fonctionnelle et orientée objet. Ce
dernier est conçu pour être lisible car il possède moins de constructions syntaxiques
que de nombreux langages structurés tels que C, Perl, ou Pascal. Parmi les biblio-
thèques de traitement d’images utilisées en Python on trouve : matplotlib, numpy,
PIL, OpenCV etc. OpenCV est une bibliothèque Python de traitement d’image
et la vision par ordinateur, Qu’on va détailler dans la section suivante.

3.3 OpenCV

OpenCV (Open Source Computer Vision Library) est une bibliothèque de vi-
sion par ordinateur et d’apprentissage automatique qui est open source. Cette
bibliothèque a été construite pour fournir une infrastructure commune pour les
applications de vision par ordinateur et résoudre les problèmes de cette dernière.
OpenCV a été initialement développé en 1999 par Intel, aprés il a été soutenu par
Willow Garage 4 . Il prend en charge plusieurs langages de programmation tels que
C++, Python, Java, etc. OpenCV (figure 3.3) est Prise en charge par plusieurs
plates-formes dont Windows, Linux et MacOS. Les recherches sont entamés pour
développer et améliorer les fonctionnalités de cette bibliothèque vue son impor-
tance et son utilisation dans le traitement des images et vidéos.

3. Un paradigme de programmation est une façon d’approcher la programmation informatique et de traiter les solutions aux problèmes
et leur formulation dans un langage de programmation approprié
4. Willow Garage est un laboratoire de recherche en robotique créé fin 2006 qui conçoit des robots et développe des logiciels pour la
robotique

34
Figure 3.3 – OpenCV logo

OpenCV est une bibliothèque proposant un ensemble de plus de 2500 algo-


rithmes [27] de vision par ordinateur. Initialement écrite en langage C il y a 10
ans par des chercheurs de la société Intel, OpenCV est aujourd’hui développée,
maintenue, documentée et utilisée par une communauté de plus de 40 000 membres
actifs. C’est la bibliothèque de référence pour la vision par ordinateur, aussi bien
dans le monde de la recherche que celui de l’industrie. Un simple exemple d’utili-
sation de la bibliothèque OpenCV est celui illustré dans la figure 3.4. Cet exemple
consiste à transformer une image couleur RGB (Red,Green,Blue) en une image en
niveau de gris 5 .

admin
a
Approuvé d

admin m

admin
admin, 14/06/2021, 12:37:58

admin
Corrigé

admin admin
i

admin
ad
Approuvé n
admin, 14/06/2021, 12:38:16
ad14/06/2021, 12:38:05
admin
mi

admin
admin
admin,

admin
admin
nmi Corrigé

admin
n
Corrigé admin, 14/06/2021, 12:38:22
admin, 14/06/2021, 12:38:11

(a) Image RGB (b) Image en niveau de gris

Figure 3.4 – Image RGB vers image niveau de gris utilisant OpenCv

Un autre exemple d’utilisation de la bibliothèque OpenCV est montré dans la


figure 3.5. cet exemple qui est basé sur les réseaux de neurones vise à identifier
les objets contenus dans une image en utilisant Mask R-CNN "Mask région-réseau
neuronal convolutionnel" (Mask Region-Cconvolutional neural network en anglais)
.

5. Un niveau de gris est une variation du gris du blanc au noir "de 0 jusqu’à 255"

35
3.4 Mask région-réseau neuronal convolutionnel "R-CNN"

l’algorithme Mask R-CNN "Region convolutional neural network" a été introduit


par He et al. dans leur article de 2017 [28], il est basé sur R-CNN. Ce dernier suit
un processus en quatre étapes :
— étape 1 : Mise en place d’une image sur le réseau.
— étape 2 : Extraction des propositions de région (c.-à-d. Les régions d’une
image contenant potentiellement des objets)
— étape 3 : Apprentissage et entrainement du réseaux
— étape 4 : Classification des propositions

ad
a ad
a
mi mi
n n

(a) L’image originale (b) Détection d’objet 1

admin
ad
ad
admin
ad
mi mi
mi
n n
n

(c) Détection d’objet 2 (d) Détection d’objet 3

Figure 3.5 – Détection d’objets dans une image avec R-CNN

Dans la figure(3.5a) on trouve l’image originale, après l’application de l’algo-


rithme "Mask R-CNN" on observe la détection des objets contenu dans l’image.
cette opération viens après l’extraction des caractéristiques en utilisant la mé-
thode de codage par régions. Notre système prend l’image d’entrée, extrait les
caractéristiques à l’aide du réseau neuronal convolutionnel (CNN), puis classifie
chaque région spécifique à une classe déterminé. la figure 3.6 montre le precessus
de detection en utilisant le Mask R-CNN [29].

Figure 3.6 – Extraction et classification avec l’algorithme Mask R-CNN

36
Les CNN ont été largement utilisés dans les années 1990 mais ils sont tombé de
la mode avec la montée des machines à vecteurs de support SVM (Support Vector
Machines en anglais [30]. En 2012, Krizhevsky et al.[31] ont ravivé l’intérêt pour
les CNN, ces deux scientistes ont montré que les CNN sont précis dans la clas-
sification d’images. leurs succès résulte des modifications qu’ils ont effectué pour
corriger les non-linéarités et la régularisation de ses derniers.

La raison pour laquelle cette méthode fonctionne est due aux caractéristiques
discriminantes robustes apprises par CNN. Ces derniers désignent une sous-catégorie
de réseaux de neurones, ils présentent donc toutes les caractéristiques des réseaux
de neurones listées dans le chapitre précédant. Cependant, les CNN sont spécia-
lement conçus pour traiter des images en entrée [32]. Ils sont composés de deux
blocs principaux :
— Le premier bloc fonctionne comme un extracteur de caractéristiques (fea-
tures). La première couche filtre l’image avec plusieurs noyaux de convolu-
tion et renvoie la structure des caractéristiques, qui sont ensuite normalisés
par une fonction d’activation. Cette opération se répète jusqu’à les derniers
caractéristiques de l’image. ils sont concaténées dans un vecteur qui définit
la sortie du premier bloc et l’entrée du second.
— Le second bloc se retrouve en fait à la fin de tous les réseaux de neurones uti-
lisés pour la classification. Les valeurs du vecteur en entrée sont transformées
pour renvoyer un nouveau vecteur en sortie à l’aide des fonctions d’activa-
tion. le nombre d’éléments de ce vecteur correspondent au nombre des classes.

L’exemple étudié dans cette section (voir figure3.5) consiste à détecter les ob-
jets dans l’image ou bien dans une vidéo en utilisant les techniques de codage des
régions. C’est une opération hors-ligne qui utilise les deux fichier "frozen inference
graph.pb" et "mask rcnn inception v2 coco 2018 01 28.pbtxt" qui sont compatibles
avec python. Ces deux modèles sont déjà entrainés à plusieurs classes d’objets
d’environnement. Dans la section suivante nous allons mettre en œuvre une ap-
plication qui est en ligne et qui exécute le processus de reconnaissance en direct.
L’application ce réfère à un fichier déjà entrainé à plusieurs classes d’objets, pour
prédire l’appartenance d’un nouvel exemple issu d’une caméra embarquée.

37
3.5 Mise en œuvre et détection d’objets en ligne

Avec OpenCV il est facile de détecter est reconnaitre les objets grâce au Modèle
MobilnetSSD de google. Ce fichier est déjà entrainé à reconnaitre les objets d’un
environnement.
En se référant à une vidéo en direct issu d’une caméra embarquée, le modèle basé
sur les réseaux de neurone artificielles examine chaque objet [33] dans l’image est
le classifie par exemple personne ou non personne. Le classifieur utilise les deux
fichiers pour reconnaitre les objets :
— Le fichier entrainé aux 21 objets : MobileNetSSD.caffemodel.
— Le fichier de configuration : MobileNetSSD.prototxt.
Ces deux fichiers sont nécessaires pour la reconnaissance et l’identification des
objets dans une image. En effet le premier contient les objets des classes : Per-
sonne, chat, voiture... entrainé avec des milliers d’images pour chaque classe, et le
deuxième contient les éléments de configuration du modèle. On peut coder l’appli-
cation œil intelligent avec différentes langages de programmation (C++, java...)
mais le plus souvent utilisé est le langage Python car il contient la plupart des bi-
bliothèques de l’intelligence artificielle et la vision par ordinateur, un autre raison
d’utiliser Python c’est que ce dernier est simple au niveau de la syntaxe et facile
à interpréter. Avant de commencer, il faut installer tout d’abord les bibliothèques
nécessaires avec le package «pip». Ce dernier permet de télécharger et d’installer
rapidement et en quelques lignes de commande indiquées comme suit :
— sudo python3 get-pip.py

Après l’installation du package «pip», on peut facilement installer les biblio-


thèques requises pour OpenCV et la caméra du raspberry pi.
— sudo pip install opencv-contrib-python
— sudo pip install "picamera[array]"
— sudo pip install imutils
— sudo pip install pyautogui

La mise en œuvre du système de reconnaissance en ligne peut se traduire sous


forme d’organigramme suivant :

38
Figure 3.7 – Organigramme de détection

Le programme Python initialise la liste d’objets entrainés par MobileNetSSD


[34] et créé un contour de détection avec une couleur attribuée au hasard pour
chaque classe. le pourcentage affiché sur la frame de l’image correspond au degré
de prédiction de l’objet comme il est indiquée dans la figure ci-dessous :

(a) Chargement du modèle et démarrage du caméra

Approuvé Corrigé
admin, 14/06/2021, 12:37:46
admin, 14/06/2021, 12:37:10
Approuvé
admin, 14/06/2021, 12:37:21 admin, 14/06/2021, 12:37:34

Approuvé
admin, 14/06/2021, 12:37:28
(c) Détection d’un personne
(b) Détection d’un personne et d’une bouteille

Figure 3.8 – Reconnaissance d’objets

39
3.6 Conclusion

Pour un processus de détection d’objets rapide et efficace, il faut utiliser un


matériel qui possède des caractéristiques nécessaires pour le bien fonctionnement
des algorithmes de reconnaissance. Pour aller plus loin dans cette l’application, il
faut juste entrainer un groupe d’images d’un sujet particulier pour effectuer une
fonction précise. On peut utiliser l’application œil intelligent dans divers domaines
tel que : L’industrie ,la vidéo-surveillance, la reconnaissance des piétons, etc.

40
Conclusion et perspectives

L’objectif de ce mémoire était d’étudier le processus complet de reconnaissance


de formes et la mise en œuvre de l’application œil intelligent. la première partie de
ce rapport a été consacré pour parler des différentes descripteurs d’images. Nous
avons implémenté les descripteurs classiquement utilisés dans ce domaine : Les
ondelettes de haar et les histogrammes de gradients orientés. Cette étude nous a
amené à trouver que le codage d’images est l’un des phases les plus important dans
le processus de la reconnaissance. En effet plus le codage est de bonne qualité plus
on gagne dans l’efficacité et la rapidité des algorithmes de reconnaissance d’objets,
et grâce à L’ACP on peut réduire la dimension du codage. La deuxième grande
tache qui vient est celle de la classification, là encore nous avons mis en œuvre
les méthodes les plus populaires tel que les k-plus proches voisins, les k-moyennes
et les réseaux de neurones. Ses derniers semblaient les plus adaptées à notre si-
tuation vu leur capacité à prédire et à traiter les problèmes non-structurés. Ce
projet nous a permis de découvrir plus profondément le domaine de la vision par
ordinateur qui est un domaine très passionnant, le langage python et les biblio-
thèques de l’intelligence artificielle. Il nous a fallu tester de plus des algorithmes
de classification les plus rapide pour assurer un peu de rapidité dans le processus
de reconnaissance. Si nous avions plus de temps, nous aurions aimé développer un
peu plus le coté matériel et interface de l’application œil intelligent ainsi l’adap-
ter à reconnaitre plus d’objets dans l’environnement. Si d’autres projets se font
sur ce thème, il serait sans doute intéressant de les améliorer et ajouter d’autres
fonctionnalités.

41
Bibliographie

[1] NATHAN SYKES. 10 revolutionary artificial intelligence projects, SEP-


TEMBER 2018. blog.kolabtree.com/10-revolutionary-artificial-intelligence-
projects/.
[2] Elon Musk. Tesla autopilot project. www.tesla.com/autopilot ?redirect=no.
[3] Tesla autopilot project.
[4] Dilpreet Kaur and Yadwinder Kaur. Various image segmentation techniques :
a review. International Journal of Computer Science and Mobile Computing,
3(5) :809–814, 2014.
[5] Laetitia Leyrit. Reconnaissance d’objets en vision artificielle : application à
la reconnaissance de piétons. PhD thesis, Université Blaise Pascal-Clermont-
Ferrand II, 2010.
[6] Frédéric Truchetet. Ondelettes pour le signal numérique. Hermes, 1998.
[7] Piotr Porwik and Agnieszka Lisowska. The haar-wavelet transform in digital
image processing : its status and achievements. Machine graphics and vision,
13(1/2) :79–98, 2004.
[8] CJ Bellman and MR Shortis. A machine learning approach to building re-
cognition in aerial photographs. INTERNATIONAL ARCHIVES OF PHO-
TOGRAMMETRY REMOTE SENSING AND SPATIAL INFORMATION
SCIENCES, 34(3/A) :50–54, 2002.
[9] Navneet Dalal and Bill Triggs. Histograms of oriented gradients for human
detection. In international Conference on computer vision & Pattern Recog-
nition (CVPR’05), volume 1, pages 886–893. IEEE Computer Society, 2005.
[10] Di Huang, Caifeng Shan, Mohsen Ardabilian, Yunhong Wang, and Liming
Chen. Local binary patterns and its application to facial image analysis :
a survey. IEEE Transactions on Systems, Man, and Cybernetics, Part C
(Applications and Reviews), 41(6) :765–781, 2011.
[11] Samit Kumar Pradhan, Sujoy Sarker, and Suresh Kumar Das. A character
recognition approach using freeman chain code and approximate string mat-
ching. International Journal of Computer Applications, 84(11), 2013.

42
[12] Christopher M Bishop. Pattern recognition and machine learning. springer,
2006.
[13] Tara H Abraham. (physio) logical circuits : The intellectual origins of the
mcculloch–pitts neural networks. Journal of the History of the Behavioral
Sciences, 38(1) :3–25, 2002.
[14] Padraig Cunningham and Sarah Jane Delany. k-nearest neighbour classifiers.
Multiple Classifier Systems, 34(8) :1–17, 2007.
[15] OJ Oyelade, OO Oladipupo, and IC Obagbuwa. Application of k means
clustering algorithm for prediction of students academic performance. arXiv
preprint arXiv :1002.2425, 2010.
[16] Bhumika Gupta, Aditya Rawat, Akshay Jain, Arpit Arora, and Naresh Dhami.
Analysis of various decision tree algorithms for classification in data mining.
Int J Comput Appl, 8 :15–9, 2017.
[17] David Kriesel. A brief introduction on neural networks. 2007.
[18] Michael A Nielsen. Neural networks and deep learning, volume 25. Determi-
nation press San Francisco, CA, USA :, 2015.
[19] Les réseaux de neurones, novembre 2018. ml4a.github.io.
[20] Gregory Cohen, Saeed Afshar, Jonathan Tapson, and André van Schaik.
Emnist : an extension of mnist to handwritten letters. arXiv preprint
arXiv :1702.05373, 2017.
[21] Gérald PETITJEAN. Introduction aux réseaux de neurones. gerald. petit-
jean@ eurodecision. com, 2007.
[22] Heikki Mannila and Pekka Orponen. Algorithms and Applications. Springer,
2010.
[23] Alexander Mordvintsev and K Abid Rahman. Opencv-python tutorials docu-
mentation release 1. Retrieved May, 2 :2018, 2017.
[24] Raspberry pi, july 2019. fr.wikipedia.org.
[25] Fabrice Auclert. Le raspberry pi4,le plus petit ordinateur du monde, june
2019.
[26] Python language introduction. www.geeksforgeeks.org.
[27] Opencv. www.ai.univ-paris8.fr.
[28] Kaiming He, Georgia Gkioxari, Piotr Dollár, and Ross Girshick. Mask r-cnn.
In Proceedings of the IEEE international conference on computer vision, pages
2961–2969, 2017.

43
[29] Ross Girshick, Jeff Donahue, Trevor Darrell, and Jitendra Malik. Rich feature
hierarchies for accurate object detection and semantic segmentation. In Pro-
ceedings of the IEEE conference on computer vision and pattern recognition,
pages 580–587, 2014.
[30] Johan AK Suykens and Joos Vandewalle. Least squares support vector ma-
chine classifiers. Neural processing letters, 9(3) :293–300, 1999.
[31] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton. Imagenet classifica-
tion with deep convolutional neural networks. In Advances in neural infor-
mation processing systems, pages 1097–1105, 2012.
[32] Kimmia Nadjahi Pascal Monasse. réseau de neurones convolutif, May 2019.
www.openclassrooms.com.
[33] Shervin Emami and Valentin Petrut Suciu. Facial recognition using opencv.
Journal of Mobile, Embedded and Distributed Systems, 4(1) :38–43, 2012.
[34] Stéphane KUENTZ. système de reconnaissance d’objets avec raspberry pi,
novembre 2018. www.framboise314.fr.

44

Vous aimerez peut-être aussi