Rapport
Rapport
Rapport
Présenté par :
abdellah elzaar
Reconnaissance d’objets
Application : Œil intelligent
Soutenu le :
jury :
Président !!!!
Rapporteur !!!!
Rapporteur !!!!
Examinateur !!!!
Remerciements
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.
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.
III
Table des matières
Remerciements I
Résumé II
Abstract III
Introduction générale 1
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
Conclusion et perspectives 41
V
Table des figures
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
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
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,
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.
4
Le système de reconnaissance : Œil intelligent
Plan du mémoire
5
Chapitre 1
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).
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 ψ.
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
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
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
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.
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.
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.
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.
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
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’.
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.
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 .
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 ) :
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
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.
Figure 2.1 – Exemple simple de classification non-supervisé par un algorithme des K-means
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.2 Classifieur
20
Figure 2.2 – Réseau neuronal
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).
22
Figure 2.3 – Exemple de classification par algorithme K-plus proches voisins
2.5.2 K-moyennes
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.
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.
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.
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 θ.
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].
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.
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 :
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 :
30
2.6 Conclusion
31
Chapitre 3
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.
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.
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.
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
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
Figure 3.4 – Image RGB vers image niveau de gris utilisant OpenCv
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"
ad
a ad
a
mi mi
n n
admin
ad
ad
admin
ad
mi mi
mi
n n
n
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
38
Figure 3.7 – Organigramme de détection
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
39
3.6 Conclusion
40
Conclusion et perspectives
41
Bibliographie
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