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.