Classification des images
Les motivations de la classification des images
La classification des images consiste à répartir systématiquement des images selon des classes établies au préalable, classer une image lui fait correspondre une classe, marquant ainsi sa parenté avec d’autres images. En général reconnaître une image est une taché aisée pour un humain au fil de son existence, il a acquis des connaissances qui lui permettent de s’adapter aux variations qui résultent de conditions différents d’acquisition.il lui est par exemple relativement simple de reconnaître un objet dans plusieurs orientations partiellement caché par un autre de près ou de loin et selon diverses illuminations.
Toutefois les progrès technologiques en terme d’acquisition d’images (microscopes, caméras, capteurs) et de stockage engendrent des bases de données riche en information et multiplient les domaines d’applications, il devient alors difficile pour l’humain d’analyser le nombre important d’images, le temps requis le caractère répétitif de la tâche et la concentration nécessaire sont problématiques. Toutefois celle-ci n’est pas forcément aisée pour un programme informatique pour lequel une image est un ensemble de valeur numérique L’objectif de la classification d’images est d’élaborer un système capable d’affecter une classe automatiquement à une image. Ainsi, ce système permet d’effectuer une tâche d’expertise qui peut s’avérer coûteuse à acquérir pour un être humain en raison notamment de contraintes physiques comme la concentration, la fatigue ou le temps nécessité par un volume important de données images. Les applications de la classification automatique d’images sont nombreuses et vont de l’analyse de documents à la médecine en passant par le domaine militaire. Ainsi on retrouve des applications dans le domaine médical comme la reconnaissance de cellules et de tumeurs, la reconnaissance d’écriture manuscrite pour les chèques les codes postaux.
Dans le domaine urbain comme la reconnaissance de panneaux de signalisation la reconnaissance de piétons la détection de véhicules la reconnaissance de bâtiments pour aider à la localisation. Dans le domaine de la biométrie comme la reconnaissance de visage, d’empreintes, d’iris. Le point commun à toutes ces applications est qu’elles nécessitent la mise en place d’une chaîne de traitement à partir des images disponibles composée de plusieurs étapes afin de fournir en sortie une décision. Chaque étape de la mise en place d’un tel système de classification nécessite la recherche de méthodes appropriées pour une performance globale optimale à savoir la phase d’extraction de caractéristiques et la phase d’apprentissage. Typiquement, nous disposons de données images desquelles il nous faut extraire des informations pertinentes traduites sous formes de vecteurs numériques. Cette phase d’extraction nous permet de travailler dans un espace numérique. Il s’agit ensuite d’élaborer dans la phase d’apprentissage, à partir de ces données initiales, une fonction de décision pour décider de l’appartenance d’une donnée nouvelle à l’une des classes en présence.
Classification des images et l’apprentissage machine
Les méthodes manuelles se sont avérées très difficiles à appliquer pour des tâches en apparence très simples comme la classification des images, la reconnaissance d’objets dans les images ou la reconnaissance vocale. Les données venant du monde réel les échantillons d’un son ou les pixels d’une image sont complexes, variables et entachées de bruit. Pour une machine, une image est un tableau de nombres indiquant la luminosité (ou la couleur) de chaque pixel, et un signal sonore une suite de nombres indiquant la pression de l’air à chaque instant. Comment une machine peut-elle transcrire la suite de nombres d’un signal sonore en série de mots tout en ignorant le bruit ambiant, l’accent du locuteur et les particularités de sa voix? Comment une machine peut-elle identifier un chien ou une chaise dans le tableau de nombres d’une image quand l’apparence d’un chien ou d’une chaise et des objets qui les entourent peut varier infiniment ? Il est virtuellement impossible d’écrire un programme qui fonctionnera de manière robuste dans toutes les situations. C’est là qu’intervient l’apprentissage machine (que l’on appelle aussi apprentissage automatique). C’est l’apprentissage qui anime les systèmes de toutes les grandes entreprises d’Internet. Elles l’utilisent depuis longtemps pour filtrer les contenus indésirables, ordonner des réponses à une recherche, faire des recommandations, ou sélectionner les informations intéressantes pour chaque utilisateur.
Un système entraînable peut être vu comme une boite noire avec une entrée, par exemple une image, un son, ou un texte, et une sortie qui peut représenter la catégorie de l’objet dans l’image, le mot prononcé, ou le sujet dont parle le texte. On parle alors de systèmes de classification ou de reconnaissance des formes. Dans sa forme la plus utilisée, l’apprentissage machine est supervisé: on montre en entrée de la machine une photo d’un objet, par exemple une voiture, et on lui donne la sortie désirée pour une voiture. Puis on lui montre la photo d’un chien avec la sortie désirée pour un chien. Après chaque exemple, la machine ajuste ses paramètres internes de manière à rapprocher sa sortie de la sortie désirée. Après avoir montré à la machine des milliers ou des millions d’exemples étiquetés avec leur catégorie, la machine devient capable de classifier correctement la plupart d’entre eux. Mais ce qui est plus intéressant, c’est qu’elle peut aussi classifier correctement des images de voiture ou de chien qu’elle n’a jamais vues durant la phase l’apprentissage.
C’est ce qu’on appelle la capacité de généralisation. Jusqu’à récemment, les systèmes de reconnaissance des images classiques étaient composés de deux blocs: un extracteur de caractéristiques (feature extractor en anglais), suivi d’un classifieur entraînable simple. L’extracteur de caractéristiques est programmé «à la main», et transforme le tableau de nombres représentant l’image en une série de nombres, un vecteur de caractéristiques, dont chacun indique la présence ou l’absence d’un motif simple dans l’image. Ce vecteur est envoyé au classifieur, dont un type commun est le classifieur linéaire. Ce dernier calcule une somme pondérée des caractéristiques: chaque nombre est multiplié par un poids (positif ou négatif) avant d’être sommé. Si la somme est supérieure à un seuil, la classe est reconnue. Les poids forment une sorte de «prototype» pour la classe à laquelle le vecteur de caractéristiques est comparé. Les poids sont différents pour les classifieurs de chaque catégorie, et ce sont eux qui sont modifiés lors de l’apprentissage. Les premières méthodes de classification linéaire entraînable datent de la fin des années cinquante et sont toujours largement utilisées aujourd’hui. Elles prennent les doux noms de perceptron ou régression logistique.
Classification des images et les réseaux de neurones
Le problème de l’approche classique de la reconnaissance des images est qu’un bon extracteur de caractéristiques est très difficile à construire, et qu’il doit être repensé pour chaque nouvelle application. C’est là qu’intervient l’apprentissage profond ou deep learning en anglais. C’est une classe de méthodes dont les principes sont connus depuis la fin des années 1980, mais dont l’utilisation ne s’est vraiment généralisée que depuis 2012, environ. L’idée est très simple: le système entraînable est constitué d’une série de modules, chacun représentant une étape de traitement. Chaque module est entraînable, comportant des paramètres ajustables similaires aux poids des classifieurs linéaires. Le système est entraîné de bout en bout: à chaque exemple, tous les paramètres de tous les modules sont ajustés de manière à rapprocher la sortie produite par le système de la sortie désirée. Le qualificatif profond vient de l’arrangement de ces modules en couches successives.
Pour pouvoir entraîner le système de cette manière, il faut savoir dans quelle direction et de combien ajuster chaque paramètre de chaque module. Pour cela il faut calculer un gradient, c’est-à-dire pour chaque paramètre ajustable, la quantité par laquelle l’erreur en sortie augmentera ou diminuera lorsqu’on modifiera le paramètre d’une quantité donnée. Le calcul de ce gradient se fait par la méthode de rétropropagation, pratiquée depuis le milieu des années 1980. Dans sa réalisation la plus commune, une architecture profonde peut être vue comme un réseau multicouche d’éléments simples, similaires aux classifieurs linéaires, interconnectés par des poids entraînables. C’est ce qu’on appelle un réseau neuronal multicouche. Pourquoi neuronal? Un modèle extrêmement simplifié des neurones du cerveau les voit comme calculant une somme pondérée et activant leur sortie lorsque celle-ci dépasse un seuil. L’apprentissage modifie les efficacités des synapses, les poids des connexions entre neurones.
Un réseau neuronal n’est pas un modèle précis des circuits du cerveau, mais est plutôt vu comme un modèle conceptuel ou fonctionnel. Le réseau neuronal est inspiré du cerveau un peu comme l’avion est inspiré de l’oiseau. Ce qui fait l’avantage des architectures profondes, c’est leur capacité d’apprendre à représenter le monde de manière hiérarchique. Comme toutes les couches sont entraînables, nul besoin de construire un extracteur de caractéristiques à la main. L’entraînement s’en chargera. De plus, les premières couches extrairont des caractéristiques simples (présence de contours) que les couches suivantes combineront pour former des concepts de plus en plus complexes et abstraits: assemblages de contours en motifs, de motifs en parties d’objets, de parties d’objets en objets, etc.
|
Table des matières
Liste des figures
Liste des tableaux
Introduction générale
Chapitre I : Classification des images
I.1 Introduction
I.2 Les motivations de la classification des images
I.3 Notions de bases
I.3.1 Définition d’une image
I.3.2 Les différents types du format d’image
I.3.3 Caractéristiques de l’image
I.3.3.1 Pixel
I.3.3.2 Dimension Résolution
I.3.3.3 Voisinage
I.3.3.4 Niveau de gris
I.3.3.5 Contraste
I.3.3.6 Luminance
I.3.3.7 Bruit
I.3.3.8 Contour
I.4 Méthodes de classification
I.4.1 Méthodes supervisées
I.4.2 Méthodes non supervisées
I.5 Indicateurs de performance en classification
I.5.1 Matrice de confusion
I.5.2 Courbe ROC
I.6 Classification des images et l’apprentissage machine
I.7 Classification des images et les réseaux de neurones
I.8 Conclusion
Chapitre II : Les réseaux de neurones convolutionnels
II.1 Introduction
II.2 Perceptron multicouches
II.2.1 Le modèle du perceptron
II.2.2 Le perceptron multicouche
II.3 Les différents types de réseaux de neurones
II.3.1 Adaline
II.3.2 Les réseaux de RBF
II.3.3 Réseaux de hopfield
II.3.4 Réseaux de kohonen
II.4 Deep learning
II.4.1 Quelques algorithmes de deep learning
II.5 Les réseaux de neurones Convolutifs
II.5.1 Architecture de réseaux de neurone convolutif (CONV)
II.5.1.1 Couche de convolution (CONV)
II.5.1.2 Couche de pooling (POOL)
II.5.1.3 Couche de correction (RELU)
II.5.1.4 Couche entièrement connectée (FC)
II.5.1.5 Couche de perte (LOSS)
II.6 Exemple de modèles de CNN
II.7 Choix des paramètres
II.7.1 Nombre de filtre
II.7.2 Forme du filtre
II.7.3 Forme du max pooling
II.8 Méthodes de régularisation
II.8.1 Empirique
II.8.1.1 Dropout
II.8.1.2 Dropconnect
II.8.1.3 Pooling stochastique
II.8.2 Explicite
II.8.2.1 Taille du réseau
II.8.2.2 Dégradation du poids
II.9 Conclusion
Chapitre III : Implémentation
III.1 Introduction
III.2 Logiciels et librairies utilisés dans l’implémentation
III.2.1 Tensorflow
III.2.2 Keras
III.2.3 Python
III.2.4 Scikit learn
III.2.5 Configuration utilisé dans l’implémentation
III.3 Les base d’images
III.4 Architecture de notre réseau
III.5 Résultats obtenus et discussions
III.6 Conclusion
Conclusion générale
Références bibliographiques
Télécharger le rapport complet
Good work