Détection et classification d`argile et de calcaire par la méthode

Transcription

Détection et classification d`argile et de calcaire par la méthode
1
Détection et classification d’argile et de calcaire
par la méthode Machines à Vecteurs Supports
(SVM)
Adrien Cocozza et Matthieu Jottrand
Faculté Polytechnique de Mons, 5ème Electricité, Certificat Applicatifs Multimédia
Résumé— Cet article présente les différents résultats obtenus
pour la détection et la classification d’argile et de calcaire lors du
processus de fabrication de la chaux, et ce suivant la méthode
SVM. Outre une brève description de cette méthode, vous
trouverez les différentes toolbox Matlab utilisées ainsi que les
différentes images que nous avons pu classifier.
Mots clefs—SVM, noyaux, vecteur support, optimisation.
I. INTRODUCTION
L’étude de ce projet intervient dans le cadre du processus de
fabrication de la chaux. Comme on le sait, la chaux est
produite à partir de pierres de calcaire. Or, il se fait que la
capture de pierres sur le terrain amène d’autres pierres dans le
processus de fabrication de la chaux, comme de l’argile par
exemple. Le but de ce projet est donc de pouvoir détecter sur
un tapis roulant les pierres d’argile ou composées d’argile afin
de pouvoir les extraire de la chaîne de fabrication de la chaux.
Pour ce faire, nous avons une caméra positionnée au-dessus
du tapis roulant qui nous permet d’analyser les différentes
images. Une fois l’image traitée et si des pierres composées
d’argile sont détectées, un autre système automatisé viendra
alors éliminer celles-ci mais nous ne nous intéresserons ici
qu’à la détection à partir de l’image et non pas à l’extraction
d’argile.
II. GENERALITES
SUR
LES
MACHINES
A
VECTEURS
SUPPORTS
Cette méthode n’est en réalité qu’un algorithme
d’apprentissage et de classification tel qu’on peut le retrouver
dans les problèmes à réseaux de neurones. Il s’agit d’un
problème d’optimisation pour séparer au mieux un domaine
en deux ou plusieurs classes. Ce domaine peut être
quelconque, en voici quelques exemples :
- classification d’emails ou de pages web
- classification pour un diagnostic médical
- reconnaissance de formes, de visages, …
- …
Le problème consiste à transformer l’espace dans lequel on
travaille en un autre espace dit de grandes dimensions et à
l’intérieur duquel nous établirons une séparation en différentes
classes. Le passage d’un espace à l’autre s’effectue suivant
quelques transformations mathématiques utilisant des
fonctions non linéaires, encore appelées noyaux (ou fonction
kernel), que nous ne développerons pas ici.
L’algorithme que nous utiliserons pour détecter
éventuellement la présence d’argile, sera basé sur la méthode
des machines à vecteurs supports (ou SVM, de l'anglais
Support Vectors Machine). Quelques mots seront donnés par
la suite pour introduire cette méthode. Le logiciel que nous
utiliserons pour le traitement de l’image est Matlab.
Le développement de ce projet se fera en trois étapes :
- tout d’abord nous expliquerons brièvement la
méthode utilisée, à savoir la méthode SVM ;
- ensuite nous vous présenterons les différentes
fonctions des toolbox Matlab que nous avons
utilisées ;
- enfin nous passerons à une analyse critique et
comparative de tous les résultats obtenus.
A partir d’un ensemble d’éléments, comment classifier ceux-ci
en différentes classes ?
Ce principe d’optimisation consiste alors à trouver la frontière
de décision idéale qui sépare au mieux les deux (ou plus, mais
généralement on utilise cette méthode pour deux classes)
régions représentatives de nos différents éléments. Il faut donc
2
essayer de minimiser les distances entre les points les plus
proches de la droite (ou plan) de séparation, encore appelés
vecteurs supports, et cette même droite (ou plan) de
séparation.
Reprenons l’exemple du diagnostic médical pour mieux cerner
le problème : en fonction de l’état et des symptômes du
patient, on peut le classer dans le groupe malade ou en bonne
santé.
Dans le cas qui nous occupe ici, c’est-à-dire la détection de
pierres d’argile, il faut trouver un seuil de décision tel que
lorsqu’une image est analysée par cette méthode, on puisse
distinguer clairement le calcaire d’une part et l’argile d’autre
part.
Bien sûr, il se cache derrière cette méthode SVM, tout un
développement mathématique d’optimisation que nous
n’expliquerons pas dans le cadre de ce projet mais qu’il faut
tout de même comprendre si l’on veut utiliser cette méthode.
Vous pourrez consulter quelques documents, dont les
références vous sont données en bibliographie, si vous devez
utiliser cette méthode par la suite ou si le développement
mathématique vous intéresse.
En résumé, cette méthode comporte deux phases :
1.
2.
une première phase d’apprentissage dans laquelle on
entraîne le modèle sur des séquences d’entrées afin
d’établir les différentes classes.
une seconde phase de classification qui sépare les
différents éléments amenés à l’entrée en les
différentes
classes
pré-établies
durant
l’apprentissage.
3.
PRÉSENTATION DES TOOLBOX
Nous avons testé plusieurs
gratuitement sur internet.
toolbox
téléchargeables
La première, Support Vector Machine Toolbox Version 2.0
(août 1998) de Steve Gunn du groupe « Image, Speech and
Intelligent Systems » de l’université de Southampton semble
assez difficile à la prise en main. En effet, nous n’avons pas
réussi à l’utiliser.
La deuxième que nous avons testé est la toolbox Support
Vector Machine toolbox Version 2.51 (janvier 2002) de Anton
Schwaighofer (Institute for Theoretical Computer Science de
Graz en Autriche) est plus facile de prise en main.
Nous avons également testé une troisième toolbox Support
Vector Machines (SVMs) Toolbox version 3.00 de l’université
d’état de l’Ohio. Celle-ci donne également de bons résultats et
est également simple utiliser. Elle comprend certaines
fonctions dont le code n’est malheureusement pas accessible
mais qui sont toutefois utilisables.
A. Démarche commune aux toolbox
Le principe consiste à préparer les images à classifier, en
réduisant leur taille par exemple, afin d’éviter une durée de
calculs trop importante.
A partir d’une des images ou d’un mélange des différentes
images que nous avons à notre disposition, on met au point un
ensemble d’entraînement. La commande [r g b ]= bmpread
(‘Image.bmp’) permet de disposer l’image sous forme d’une
matrice à trois dimensions. La troisième dimension
représentant en fait les trois couleurs r, g et b. Si l’image est
composée de LxC pixels, la matrice représentant cette image a
donc la taille LxCx3.
Nous disposons d’une fonction permettant déjà de classifier
les images, le but de ce projet étant d’essayer une autre
méthode de classification, à savoir les machines à vecteurs
supports. Nous utiliserons cette fonction existante, appelée
fonction test, pour élaborer une base de données durant
l’entraînement qui nous permettra de classifier les images par
la suite. Cette fonction nous permet donc d’éviter de faire une
classification manuelle pour l’ensemble de test. En effet la
classification par machine à vecteurs supports nécessite un
entraînement sur base d’un ensemble image – image
classifiée, que nous appellerons ensemble d'entraînement.
L’image classifiée calculée par la fonction test est représentée
par une matrice LxC. Cette fonction attribue la valeur 1 à
l’argile et 0 à tout le reste. Les machines à vecteurs supports
travaillent sur une classification {1,-1}, nous avons donc
remplacé tous les 0 par des -1 après application de la fonction
« test ».
Nous avons également utilisé la fonction « haarsub » afin de
réduire la taille des matrices. L’entraînement étant
particulièrement long, nous avons choisi de ne pas appliquer
l’entraînement et la classification sur les images entières mais
sur des images réduites d’un facteur 4 (les opérations étant
particulièrement longues si on travaille sur les images non
réduites).
La démarche effectuée jusqu’à présent est valable quelle que
soit la toolbox qu’on utilise. Nous allons maintenant détailler
l’utilisation des deux toolbox que nous avons testées.
B. Vector Machine toolbox Version 2.51 (Anton
Schwaighofer)
Cette toolbox demande pour l’entraînement que l’image X
soit sous la forme N lignes (avec N= LxC) et 3 colonnes
(r,g,b). L’image Y sera un vecteur de longueur N puisqu’il
faut qu’à chaque pixel ou triplet rgb soit associé un 1 ou un -1.
Une fois la fonction « test » effectuée, on fournit à la fonction
3
« svm » le nombre d’entrées (ici 3 puisque on a une matrice de
N lignes, 3 colonnes), la fonction de kernel utilisée (linear,
rbf, poly, …), des paramètres sur cette fonction de kernel et un
coefficient c qui représente la limite supérieure pour les
coefficients de Lagrange lors de l’entraînement. La fonction
« svm » retourne une structure (NET) dans laquelle sont
enregistré différents paramètres pour l’entraînement. Ensuite,
on fournit cette structure et l’ensemble d’entraînement à la
fonction « svmtrain » qui complète la structure NET. La
machine est alors entraînée.
La classification est relativement simple. Il faut dans un
premier temps lire l’image à classifier (bmpread), réduire sa
taille et la mettre sous forme Nx3. Ensuite on fournit cette
image avec la structure NET (machine entraînée) à la fonction
« svmfwd » qui va effectuer la classification. Elle associe à
tout triplet rgb de l’image à classifier un 1 ou un -1. Pour
l’affichage de l’image classifiée, bien entendu remettre
l’image classifiée sous forme LxC. Le code est fournit en
annexe et les résultats sont présentés dans le chapitre suivant.
car nous n’avons pas exclusivement de l’argile pur ou du
calcaire pur). Cette classification progressive est fournie par la
fonction SVMclass qui retourne un vecteur « decisionvalue ».
4.
PRESENTATION DES RESULTATS
a) La fonction “test”
En espérant obtenir une meilleure classification, nous avons
fabriqué à partir des différentes images que nous avons à notre
disposition une image « composite » constituée de plusieurs
segments issus chacun d’une des images. Si on applique la
fonction « test » à cette image, on obtient les résultats suivant
(la réduction de taille est effectuée dans la fonction) :
C. Support Vector Machines (SMSs) Toolbox version 3.00
(université d’état de l’Ohio)
Cette toolbox a été écrite par Junshui Ma, Yi Zhao et Stanley
Ahalt de l’université d’état d’Ohio. Tout comme l’autre, nous
appliquons la fonction « test » afin de disposer d’un ensemble
d’entraînement. Cette toolbox travaille sur des lignes plutôt
que sur des colonnes, l’ensemble d’entraînement doit donc
avoir des dimension du genre 3xN et 1xN au lieu de Nx3 et
Nx1. Tout comme pour l’utilisation de la première toolbox,
nous avons créé deux fonctions, une d’entraînement de la
machine et une de classification. La première, celle de
l’entraînement demande comme paramètres l’image sur
laquelle on veut effecteur l’entraînement, la fonction de kernel
et différents paramètres. Le premier de ces paramètres (p1) est
le coût d’une violation de contrainte. La signification des
autres paramètres dépend de la fonction de kernel utilisée. Par
exemple si la fonction est un polynôme les paramètres p2, p3
et p4 sont ceux intervenant dans l’expression de ce polynôme :
( p3.x + p 4) p 2 . La fonction entraînement effectue la fonction
« test » pour fabriquer l’ensemble d’entraînement et entraîne
ensuite la machine. « Entraînement » fournit en sortie un
ensemble de paramètres de la machine entraînée. Pour cela, la
fonction utilise « mexSVMtrain », dont le code n’est pas
accessible mais que nous pouvons cependant utiliser.
Dans la fonction « classification », les paramètres sont le nom
de l’image à classifier ainsi que les résultats de la fonction
entraînement (les paramètres de la machine entraînée). La
classification
est
effectuée
par
« SVMClass ».
« Classification » donne en sortie l’image classifiée ainsi que
sa forme vecteur.
Nous avons également tracé un graphique 3 dimensions, grâce
à la fonction « mesh », représentant les niveaux pour l’image
classifiée, on peut demander la classification tout ou rien ou
une classification progressive par niveau. (Utile dans notre cas
Figure 1 Image composite originale
Figure 2 Image composite classifiée
C’est à partir d’un entraînement sur cette image composite que
nous avons utilisé les différentes toolbox Matlab pour
classifier l’argile et le calcaire sur nos images.
b) Exploitation des résultats
Nous allons à présent vous présenter les résultats obtenus à
partir des deux toolbox, celle d’Anton Schwaighofer (Graz),
que l’on nommera toolbox 1 dans la suite, et celle de
l’université de l’Ohio, que l’on nommera toolbox 2, pour un
entraînement effectué sur l’image « composite ».
La présentation de nos résultats se fera de la manière suivante.
Pour trois noyaux différents, à savoir un noyau linéaire, un
noyau polynomial et un noyau rbf (radial base function), nous
vous présenterons des triplets d’images correspondants
4
respectivement à l’image réelle, l’image classifiée avec la
toolbox d’Anton Schwaighofer (toolbox 1) et l’image
classifiée avec la toolbox de l’université de l’Ohio (toolbox 2).
Nous pourrons ainsi voir s’il existe une différence de qualité
selon le noyau que l'on utilise et tester les différentes
possibilités des toolbox. Vous pourrez consulter ci-après la
classification des images « calcaire » et « pierre_brute ». Les
autres résultats des tests que nous avons effectués se trouvent
en annexe, ainsi que les scripts Matlab que nous avons
élaborés.
Etablissons la même classification mais cette fois pour l’image
« calcaire » :
Remarque : Deux types de résultats sont représentables avec la
deuxième toolbox : la représentation tout ou rien (noir et
blanc) ou la représentation par niveaux de gris de la valeur de
décision. On préfèrera cette deuxième représentation car elle
permet d’obtenir une meilleure précision et une meilleure
qualité d’analyse sur des niveaux d’argile faibles (ceux-ci
apparaîtront en gris clair au lieu de blanc comme avec la
représentation tout ou rien). Nous ne présentons donc que ces
valeurs de décision en ce qui concerne la deuxième toolbox.
Noyau linéaire :
Figure 4 Image « calcaire » classifiée
a) image “calcaire” originale
b) image classifiée avec la toolbox 1
c) image classifiée avec la toolbox 2
Nous allons à présent jouer sur le noyau en choisissant un
autre type et voir quelle contribution cette modification peut
apporter.
Noyau polynomial de degré 5 :
Figure 3 Image « pierre_brute » classifiée
a) image “pierre_brute” originale
b) image classifiée avec la toolbox 1
c) image classifiée avec la toolbox 2
5
Figure 6 Image « calcaire » classifiée
a) image “calcaire” originale
b) image classifiée avec la toolbox 1
c) image classifiée avec la toolbox 2
Figure 5 Image « pierre_brute » classifiée
a) image “pierre_brute” originale
b) image classifiée avec la toolbox 1
c) image classifiée avec la toolbox 2
Etablissons la même classification mais cette fois pour l’image
« calcaire » :
En comparant surtout les images classifiées de la deuxième
toolbox, on peut se rendre compte de légères modifications
dues à une précision moindre. En ce qui concerne la première
toolbox, à moins d’analyser les moindres détails, on ne voit
pas de grandes différences à première vue.
Analysons enfin l’effet d’un autre noyau pour l’entraînement
de notre machine à vecteurs supports, le noyau rbf de rayon 1.
Noyau rbf de rayon 1 :
6
Figure 8 Image « calcaire » classifiée
a) image “calcaire” originale
b) image classifiée avec la toolbox 1
c) image classifiée avec la toolbox 2
Figure 7 Image « pierre_brute » classifiée
a) image “pierre_brute” originale
b) image classifiée avec la toolbox 1
c) image classifiée avec la toolbox 2
Etablissons la même classification mais cette fois pour l’image
« calcaire » :
Nous pouvons remarquer que les résultats sont relativement
semblables quelque soit le noyau utilisé. Nous avons
également fait varier les paramètres des différents noyaux et
des différentes toolbox, par exemple le degré du noyau
polynomial, le rayon du noyau rbf, … mais les résultats
obtenus avec ces modifications n’apportent pas d’images
sensiblement différentes. Si on observe attentivement les
images surtout celles issues de la deuxième toolbox, on
remarque des petites détections
qui apparaissent dans
certaines images et pas dans d’autres. On peut donc en
conclure que la deuxième est plus performante pour de
simples détails. Cela peut paraître logique quand on sait,
comme nous l’avons dit plus haut, que la deuxième toolbox
permet de travailler en plusieurs niveaux de gris contrairement
à la première qui travaille en tout ou rien (noir et blanc). Le
moindre degré d’argile, aussi infime soit-il, apparaît alors en
un certain ton de gris. Cependant, dans notre cas, ces
détections n’apportent sans doute pas d’informations
supplémentaires utiles car il s’agit de toute petite partie
d’argile, voire même sur certaines images de reflets d’autres
pierres sur le tapis.
Maintenant que l’on a pu classifier l’argile et le calcaire sur
les différentes images précédentes, intéressons-nous à la
fonction d’optimisation et de décision utilisé dans l’algorithme
SVM. Pour cela, nous avons représenté ci-après un graphe en
3D illustrant les décisions prises avec la toolbox 2 pour
l’image « pierre_brute ». Il vous sera présenté les deux
fonctions d’optimisation : soit une fonction avec différents
niveaux de décision, soit une fonction tout ou rien.
Remarque : la fonction est représentée en couleur pour mieux
cerner les différents niveaux et donc les différentes décisions
prises durant l’optimisation mais il s’agit en réalité de nuances
de gris dans le premier cas et de noir et blanc dans le second
cas.
7
En regardant cette fonction par le dessus, on retrouve alors
l’image classifiée telle que vous avons pu la trouver ci-avant.
De nouveau, en regardant cette fonction par le dessus, on
retrouve bien l’image classifiée vue précédemment.
Jettons un œil à présent sur la fonction tout ou rien :
On aperçoit ici un peu mieux le pourquoi des différences sur
les images classifiées issues des deux toolbox où la première
ne travaille qu’en tout ou rien et donc où certains détails ou
certaines nuances font défauts, et la deuxième qui permet de
travailler avec soit la fonction tout ou rien, soit la fonction à
différents niveaux.
Remarque : la première toolbox permet peut-être elle aussi de
travailler avec une fonction à différents niveaux de gris mais
avec les éléments que nous possédions, nous n’y sommes pas
parvenus. Peut-être que cette fonction n’est tout simplement
pas disponible avec cette toolbox gratuite ou bien que nous
n’y avons pas accès.
8
5.
CONCLUSION
Les possibilités de traitement et de classification avec cette
méthode sont très nombreuses, comme vous avez déjà pu le
constater en parcourant ce rapport. Nos résultats ont montré
que le choix du noyau rbf fournissait de meilleurs résultats
quelque soit l’image ou les paramètres utilisés.
Pour vous illustrer un peu plus la méthode SVM, vous pouvez
consulter en annexes les résultats d’autres essais que nous
avons effectués, soit en changeant différents paramètres des
toolbox, soit en traitant une autre image. Nous avons placé
exclusivement les photos car vous pourrez comparer et juger
par vous-mêmes de la qualité et de la différence des noyaux
utilisés (ou paramètres). Normalement les deux toolbox
doivent effectuer la même classification si les noyaux et autres
paramètres sont identiques puisqu’elles implémentent toutes
les deux la même méthode. On soulignera quand même un
gros avantage de la deuxième toolbox : le temps de calcul est
sensiblement plus court. Il n’y a pas vraiment de
commentaires supplémentaires à apporter concernant ces
photos, chacun émettra un avis critique différent.
Bref, nous pouvons conclure que cette méthode est très bien
appropriée pour la détection et la classification d’éléments, et
d’autant plus performante lorsque les paramètres de
l’algorithme sont bien réglés en fonction du résultat que l’on
veut obtenir.
6.
BIBLIOGRAPHIE
•
http://www.kernel-machines.org/ on trouve sur ce site
toute sorte d’information au sujet des machines à vecteurs
supports et des liens vers des pages web ou l’on peut
télécharger gratuitement différentes toolbox.
•
Antje Schafföner et Frieder Lucklum, «Support Vector
Machines».
http://iesk.et.uni-magdeburg.de/ko/summerschool/svm.pdf
•
Olivier Bousquet, « Introduction au Support Vector
Machines (SVM) », Centre de mathématiques appliquées,
Ecole polytechnique de Palaiseau, 2001.
http://www.math.u-psud.fr/~blanchard/gtsvm/index.html
•
Première toolbox (Steve Gunn)
http://www.isis.ecs.soton.ac.uk/resources/svminfo/
•
Deuxième toolbox (Anton Schwaighofer)
http://www.igi.tugraz.at/aschwaig/software.html
•
Troisième toolbox (université d’Ohio)
http://www.ece.osu.edu/~maj/osu_svm/
•
B. Gosselin et J. Trécat, « Détection d’argile et de pierre
calcaire », Etude de faisabilité, Faculté Polytechnique de
Mons.
•
« RN-SVM, applications en reconnaissance de formes »,
Faculté Polytechnique de Mons.