Reconnaissance de formes basée sur les réseaux de neurones. Application des réseaux de neurones à la reconnaissance d'images. Reconnaissance des panneaux de signalisation

1

Un réseau de neurones est un modèle mathématique et sa mise en œuvre sous la forme d'une implémentation logicielle ou matérielle-logicielle, qui est réalisée sur la base de la modélisation de l'activité des réseaux de neurones biologiques, qui sont des réseaux de neurones dans un organisme biologique. L'intérêt scientifique pour cette structure est né du fait que l'étude de son modèle permet d'obtenir des informations sur un certain système. Autrement dit, un tel modèle peut être mis en œuvre dans un certain nombre de branches de la science et de la technologie modernes. L'article aborde les questions liées à l'utilisation de réseaux de neurones pour créer des systèmes d'identification d'images largement utilisés dans les systèmes de sécurité. Les questions liées au thème de l'algorithme de reconnaissance d'image et à son application sont explorées en détail. Fournit brièvement des informations sur la méthodologie de formation des réseaux de neurones.

les réseaux de neurones

apprendre à l'aide de réseaux de neurones

reconnaissance d'images

paradigme de perception locale

systèmes de sécurité

1. Yann LeCun, J.S. Denker, S. Solla, RE (1997). Howard et L. D. Jackel : Optimal Brain Damage, dans Touretzky, David (Eds), Advances in Neural Information Processing Systems 2 (NIPS*89). – 2000. – 100 p.

2. Jigalov K.Yu. Méthodes de vectorisation photoréaliste des données de télémétrie laser en vue d'une utilisation ultérieure dans les SIG // Actualités des établissements d'enseignement supérieur. Géodésie et photographie aérienne. – 2007. – N° 6. – P. 285-287.

3. Ranzato Marc'Aurelio, Christopher Poultney, Sumit Chopra et Yann LeCun : Apprentissage efficace des représentations clairsemées avec un modèle basé sur l'énergie, dans J. Platt et al. (Eds), Avancées dans les systèmes de traitement de l'information neuronale (NIPS 2006). – 2010. – 400 p.

4. Jigalov K.Yu. Préparation d'équipements destinés à être utilisés dans les systèmes de contrôle automatisés pour la construction d'autoroutes // Sciences naturelles et techniques. – M., 2014. – N° 1 (69). – pages 285 à 287.

5. Y. LeCun et Y. Bengio : Réseaux convolutifs pour les images, la parole et les séries temporelles, dans Arbib, M. A. (Eds) // Le manuel de théorie du cerveau et des réseaux de neurones. – 2005. – 150 p.

6. Y. LeCun, L. Bottou, G. Orr et K. Muller : Efficient BackProp, dans Orr, G. et Muller K. (Eds) // Réseaux de neurones : astuces du métier. – 2008. – 200 p.

Aujourd’hui, les progrès technologiques et de recherche ouvrent de nouveaux horizons et progressent rapidement. L’un d’eux consiste à modéliser le monde naturel environnant à l’aide d’algorithmes mathématiques. Dans cet aspect, il existe des tâches triviales, par exemple la modélisation des oscillations de la mer, et des tâches extrêmement complexes, non triviales et à plusieurs composants, par exemple la modélisation du fonctionnement du cerveau humain. Au cours de l'étude de cette question, un concept distinct a été identifié : un réseau de neurones. Un réseau de neurones est un modèle mathématique et sa mise en œuvre sous la forme d'une implémentation logicielle ou matérielle-logicielle, qui est réalisée sur la base de la modélisation de l'activité des réseaux de neurones biologiques, qui sont des réseaux de neurones dans un organisme biologique. L'intérêt scientifique pour cette structure est né du fait que l'étude de son modèle permet d'obtenir des informations sur un certain système. Autrement dit, un tel modèle peut être mis en œuvre dans un certain nombre de branches de la science et de la technologie modernes.

Un bref historique du développement des réseaux de neurones

Il convient de noter qu'à l'origine le concept de « réseau de neurones » trouve son origine dans les travaux des mathématiciens, neurolinguistes et neuropsychologues américains W. McCulloch et W. Pitts (1943), où les auteurs l'ont mentionné pour la première fois, lui ont donné une définition et ont fait la première tenter de construire un réseau neuronal modèle. Déjà en 1949, D. Hebb proposait le premier algorithme d'apprentissage. Ensuite, il y a eu une série d’études dans le domaine de l’apprentissage neuronal, et les premiers prototypes fonctionnels sont apparus vers 1990-1991. le siècle dernier. Cependant, la puissance de calcul des équipements de l'époque n'était pas suffisante pour un fonctionnement suffisamment rapide des réseaux de neurones. En 2010, la puissance GPU des cartes vidéo avait considérablement augmenté et le concept de programmation directement sur les cartes vidéo est apparu, ce qui a considérablement (3 à 4 fois) augmenté les performances des ordinateurs. En 2012, les réseaux de neurones ont remporté pour la première fois le championnat ImageNet, ce qui a marqué leur développement rapide et l'émergence du terme Deep Learning.

Dans le monde moderne, les réseaux de neurones ont une portée colossale ; les scientifiques considèrent les recherches menées dans le domaine de l'étude des caractéristiques comportementales et des états des réseaux de neurones comme extrêmement prometteuses. La liste des domaines dans lesquels les réseaux de neurones ont été utilisés est énorme. Cela inclut la reconnaissance et la classification des formes, la prévision, la résolution de problèmes d'approximation et certains aspects de la compression des données, de l'analyse des données et, bien sûr, de l'application dans divers systèmes de sécurité.

L'étude des réseaux de neurones est aujourd'hui activement menée dans les communautés scientifiques de différents pays. Vu de cette manière, il est présenté comme un cas particulier d’un certain nombre de méthodes de reconnaissance de formes, d’analyse discriminante et de méthodes de clustering.

A noter également qu'au cours de l'année écoulée, les startups dans le domaine des systèmes de reconnaissance d'images ont reçu davantage de financements qu'au cours des 5 années précédentes, ce qui indique une demande assez forte pour ce type de développement sur le marché final.

Application des réseaux de neurones pour la reconnaissance d'images

Considérons les problèmes standards résolus par les réseaux de neurones en application aux images :

● identification des objets ;

● reconnaissance de parties d'objets (par exemple visages, mains, pieds, etc.) ;

● définition sémantique des limites des objets (permet de ne laisser que les limites des objets dans l'image) ;

● segmentation sémantique (permet de diviser une image en différents objets individuels) ;

● sélection de normales de surface (permet de convertir des images bidimensionnelles en images tridimensionnelles) ;

● mettre en évidence les objets d'attention (permet de déterminer à quoi une personne prêterait attention dans une image donnée).

Il convient de noter que le problème de la reconnaissance d'images est de nature brillante et que la résolution de ce problème est un processus complexe et extraordinaire. Lors de la reconnaissance, l'objet peut être un visage humain, un numéro manuscrit, ainsi que de nombreux autres objets caractérisés par un certain nombre de caractéristiques uniques, ce qui complique considérablement le processus d'identification.

Cette étude examinera un algorithme de création et d'entraînement d'un réseau neuronal pour reconnaître les caractères manuscrits. L'image sera lue comme l'une des entrées du réseau neuronal, et l'une des sorties sera utilisée pour afficher le résultat.

A ce stade, il faut s'attarder brièvement sur la classification des réseaux de neurones. Il en existe aujourd'hui trois types principaux :

● réseaux de neurones convolutifs (CNN) ;

● réseaux récurrents (deep learning) ;

● apprentissage par renforcement.

L'un des exemples les plus courants de construction d'un réseau de neurones est la topologie classique du réseau de neurones. Un tel réseau neuronal peut être représenté comme un graphe entièrement connecté ; sa caractéristique est la propagation directe des informations et la propagation inverse des signaux d'erreur. Cette technologie n'a pas de propriétés récursives. Un exemple de réseau neuronal avec une topologie classique peut être représenté sur la figure. 1.

Riz. 1. Réseau de neurones avec la topologie la plus simple

Riz. 2. Réseau neuronal avec 4 couches de neurones cachés

L’un des inconvénients manifestement importants de cette topologie de réseau est la redondance. En raison de la redondance lors de l'alimentation des données sous la forme, par exemple, d'une matrice bidimensionnelle, un vecteur unidimensionnel peut être obtenu en entrée. Ainsi, pour imager une lettre latine manuscrite, décrite à l'aide d'une matrice 34x34, 1156 entrées seront nécessaires. Cela suggère que la puissance de calcul consacrée à la mise en œuvre de la solution matérielle et logicielle de cet algorithme sera trop importante.

Le problème a été résolu par le scientifique américain Yann Le Cun, qui a analysé les travaux des lauréats du prix Nobel de médecine T. Wtesel et D. Hubel. Dans le cadre de l'étude qu'ils ont menée, le cortex visuel du cerveau du chat a été l'objet d'étude. L’analyse des résultats a montré que le cortex contient un certain nombre de cellules simples ainsi qu’un certain nombre de cellules complexes. Les cellules simples réagissaient à l'image de lignes droites reçues des récepteurs visuels, et les cellules complexes réagissaient au mouvement vers l'avant dans une direction. En conséquence, un principe de construction de réseaux de neurones a été développé, appelé convolutionnel. L'idée de ce principe était que pour mettre en œuvre le fonctionnement d'un réseau de neurones, une alternance de couches convolutives, qui sont généralement notées C - Layers, couches de sous-échantillonnage S - Layers et couches entièrement connectées F - Layers est utilisée à la sortie de le réseau neuronal.

La construction d'un tel réseau repose sur trois paradigmes : le paradigme de la perception locale, le paradigme des poids partagés et le paradigme du sous-échantillonnage.

L'essence du paradigme de perception locale est que chaque neurone d'entrée reçoit non pas la totalité de la matrice d'image, mais une partie de celle-ci. Les parties restantes sont transmises à d’autres neurones d’entrée. Dans ce cas, on peut observer le mécanisme de parallélisation ; en utilisant une méthode similaire, il est possible de sauvegarder la topologie de l'image de couche en couche, en la traitant de manière multidimensionnelle, c'est-à-dire qu'un certain nombre de réseaux de neurones peuvent être utilisés dans le traitement. processus.

Le paradigme des pondérations partagées dit qu’un petit ensemble de pondérations peut être utilisé pour de nombreuses connexions. Ces ensembles sont également appelés « noyaux ». Pour le résultat final du traitement d'image, on peut dire que les poids partagés ont un effet positif sur les propriétés du réseau neuronal, dont l'étude du comportement augmente la capacité à trouver des invariants dans les images et à filtrer les composantes du bruit sans les traiter.

Sur la base de ce qui précède, nous pouvons conclure que lors de l'application de la procédure de convolution d'image sur la base du noyau, une image de sortie apparaîtra, dont les éléments seront la principale caractéristique du degré de conformité au filtre, c'est-à-dire un une carte des caractéristiques sera générée. Cet algorithme est présenté sur la Fig. 3.

Riz. 3. Algorithme de génération d'une carte de fonctionnalités

Le paradigme du sous-échantillonnage est que l'image d'entrée est réduite en réduisant la dimension spatiale de son équivalent mathématique - une matrice à n dimensions. Le besoin de sous-échantillonnage s'exprime en invariance à l'échelle de l'image originale. Lors de l'application de la technique des couches alternées, il devient possible de générer de nouvelles cartes de caractéristiques à partir de celles existantes, c'est-à-dire que la mise en œuvre pratique de cette méthode est que la capacité de dégénérer une matrice multidimensionnelle en vecteur, puis en une quantité scalaire sera acquis.

Mise en œuvre de la formation sur les réseaux de neurones

Les réseaux existants sont répartis en 3 classes d'architectures d'un point de vue formation :

● apprendre avec un professeur (percepton) ;

● apprentissage non supervisé (réseaux de résonance adaptatifs) ;

● apprentissage mixte (réseaux de fonctions à base radiale).

L'un des critères les plus importants pour évaluer les performances d'un réseau de neurones dans le cas de la reconnaissance d'images est la qualité de la reconnaissance d'images. Il est à noter que pour quantifier la qualité de la reconnaissance d'images à l'aide du fonctionnement d'un réseau de neurones, l'algorithme d'erreur quadratique moyenne est le plus souvent utilisé :

(1)

Dans cette dépendance, Ep est la p-ème erreur de reconnaissance pour une paire de neurones,

Dp est le résultat de sortie attendu du réseau neuronal (généralement, le réseau doit s'efforcer d'obtenir une reconnaissance à 100 %, mais cela ne se produit pas encore dans la pratique), et la construction O(Ip,W)2 est le carré de la sortie du réseau, qui dépend de la p-ème entrée et des coefficients de poids définis W. Cette conception inclut à la fois les noyaux de convolution et les coefficients de poids de toutes les couches. Le calcul de l'erreur consiste à calculer la moyenne arithmétique de toutes les paires de neurones.

À la suite de l'analyse, un modèle a été dérivé selon lequel la valeur nominale du poids, lorsque la valeur d'erreur est minime, peut être calculée sur la base de la relation (2) :

(2)

De cette dépendance, nous pouvons dire que la tâche de calcul du poids optimal est la différence arithmétique de la dérivée de la fonction d'erreur du premier ordre par rapport au poids, divisée par la dérivée de la fonction d'erreur du second ordre.

Les dépendances données permettent de calculer trivialement l'erreur qui se situe dans la couche de sortie. Le calcul de l'erreur dans les couches cachées des neurones peut être mis en œuvre à l'aide de la méthode de rétropropagation. L'idée principale de la méthode est de propager des informations, sous forme de signalisation d'erreur, des neurones de sortie vers les neurones d'entrée, c'est-à-dire dans le sens opposé à la propagation des signaux à travers un réseau neuronal.

Il convient également de noter que le réseau est formé sur des bases de données d'images spécialement préparées, classées en un grand nombre de classes, et prend beaucoup de temps.
Aujourd'hui, la plus grande base de données est ImageNet (www.image_net.org). Il est librement accessible aux institutions académiques.

Conclusion

En conséquence de ce qui précède, il convient de noter que les réseaux neuronaux et les algorithmes mis en œuvre selon le principe de leur fonctionnement peuvent trouver leur application dans les systèmes de reconnaissance de cartes d'empreintes digitales pour les organes des affaires intérieures. Souvent, c'est le composant logiciel du complexe matériel et logiciel visant à reconnaître une image complexe aussi unique qu'un dessin, qui est une donnée d'identification, qui ne résout pas complètement les tâches qui lui sont assignées. Un programme mis en œuvre sur la base d'algorithmes basés sur un réseau de neurones sera bien plus efficace.

Pour résumer, nous pouvons résumer ce qui suit :

● les réseaux neuronaux peuvent trouver des applications dans la reconnaissance d'images et de textes ;

● cette théorie permet d'évoquer la création d'une nouvelle classe de modèles prometteuse, à savoir les modèles basés sur la modélisation intelligente ;

● les réseaux de neurones sont capables d'apprendre, ce qui indique la possibilité d'optimiser le processus de fonctionnement. Cette fonctionnalité est une option extrêmement importante pour la mise en œuvre pratique de l’algorithme ;

● L'évaluation d'un algorithme de reconnaissance de formes à l'aide d'une étude de réseau neuronal peut avoir une valeur quantitative ; il existe donc des mécanismes permettant d'ajuster les paramètres à la valeur requise en calculant les coefficients de pondération requis.

Aujourd'hui, la poursuite des recherches sur les réseaux de neurones semble être un domaine de recherche prometteur qui sera appliqué avec succès à encore plus de branches de la science et de la technologie, ainsi qu'à l'activité humaine. L'objectif principal du développement des systèmes de reconnaissance modernes se déplace désormais vers le domaine de la segmentation sémantique des images 3D en géodésie, en médecine, en prototypage et dans d'autres domaines de l'activité humaine - ce sont des algorithmes assez complexes et cela est dû à :

● manque de bases de données d'images de référence en nombre suffisant ;

● manque d'un nombre suffisant d'experts libres pour la formation initiale du système ;

● les images ne sont pas stockées en pixels, ce qui nécessite des ressources supplémentaires de la part de l'ordinateur et des développeurs.

Il convient également de noter qu'il existe aujourd'hui un grand nombre d'architectures standard pour la construction de réseaux de neurones, ce qui simplifie considérablement la tâche de construction d'un réseau de neurones à partir de zéro et la réduit à la sélection d'une structure de réseau adaptée à une tâche spécifique.

Actuellement, il existe un assez grand nombre d'entreprises innovantes sur le marché engagées dans la reconnaissance d'images utilisant les technologies de réseaux neuronaux pour la formation du système. Il est certain qu’ils ont atteint une précision de reconnaissance d’images d’environ 95 % en utilisant une base de données de 10 000 images. Cependant, toutes les réalisations concernent des images statiques ; avec la vidéo, tout est actuellement beaucoup plus compliqué.

Lien bibliographique

Markova S.V., Zhigalov K.Yu. APPLICATION D'UN RÉSEAU NEURONAL POUR CRÉER UN SYSTÈME DE RECONNAISSANCE D'IMAGES // Recherche fondamentale. – 2017. – N° 8-1. – P. 60-64 ;
URL : http://fundamental-research.ru/ru/article/view?id=41621 (date d'accès : 24.03.2020). Nous portons à votre connaissance les magazines édités par la maison d'édition "Académie des Sciences Naturelles"

Beaucoup de choses ont déjà été dites comme l'un des outils permettant de résoudre des problèmes difficiles à formaliser. Et ici, sur le hub, il a été montré comment utiliser ces réseaux pour la reconnaissance d'images, en relation avec la tâche de déchiffrage du captcha. Cependant, il existe plusieurs types de réseaux de neurones. Et un réseau neuronal classique entièrement connecté (FNN) est-il si efficace pour la tâche de reconnaissance (classification) d’images ?

1. Problème

Nous allons donc résoudre le problème de la reconnaissance d’images. Il peut s'agir de la reconnaissance de visages, d'objets, de symboles, etc. Je propose de commencer par considérer le problème de la reconnaissance des nombres manuscrits. Cette tâche est utile pour plusieurs raisons :

    Pour reconnaître un caractère manuscrit, il est assez difficile de créer un algorithme formalisé (et non intellectuel), et cela devient clair lorsque l'on regarde le même numéro écrit par différentes personnes.

    La tâche est tout à fait pertinente et concerne l'OCR (reconnaissance optique de caractères)

    Il existe une base de données distribuée gratuitement de symboles manuscrits, disponible pour téléchargement et expérimentation.

    Il existe de nombreux articles sur ce sujet et il est très simple et pratique de comparer différentes approches.

Il est proposé d'utiliser la base de données MNIST comme données d'entrée. Cette base de données contient 60 000 paires d'entraînement (image - étiquette) et 10 000 paires de tests (images sans étiquettes). Les images sont normalisées par taille et centrées. La taille de chaque chiffre ne dépasse pas 20x20, mais ils sont inscrits dans un carré mesurant 28x28. Un exemple des 12 premiers chiffres de l'ensemble de formation MNIST est présenté dans la figure :

Le problème se formule donc ainsi : créer et entraîner un réseau neuronal pour reconnaître les caractères manuscrits, en prenant leurs images en entrée et en activant l'une des 10 sorties. Par activation, nous entendons la valeur 1 en sortie. Les valeurs des sorties restantes devraient (idéalement) être égales à -1. J'expliquerai plus tard pourquoi une échelle n'est pas utilisée.

2. Réseaux de neurones « ordinaires ».

La plupart des gens comprennent les réseaux de neurones « conventionnels » ou « classiques » comme des réseaux de neurones à réaction entièrement connectés avec rétropropagation :

Comme son nom l'indique, dans un tel réseau, chaque neurone est connecté les uns aux autres, le signal va uniquement dans le sens de la couche d'entrée vers la couche de sortie, il n'y a pas de récursions. Nous appellerons un tel réseau en abrégé PNS.

Vous devez d’abord décider comment soumettre les données d’entrée. La solution alternative la plus simple et presque inexistante pour le PNS consiste à exprimer une matrice d'image bidimensionnelle sous forme de vecteur unidimensionnel. Ceux. pour une image d'un nombre manuscrit mesurant 28x28, nous aurons 784 entrées, ce qui n'est plus petit. Ce qui se passe ensuite est ce que de nombreux scientifiques conservateurs n’aiment pas chez les scientifiques des réseaux neuronaux et leurs méthodes : le choix de l’architecture. Mais cela ne leur plaît pas, car le choix de l’architecture relève du pur chamanisme. Il n'existe toujours pas de méthodes permettant de déterminer sans ambiguïté la structure et la composition d'un réseau neuronal sur la base de la description du problème. En défense, je dirai que pour des problèmes difficiles à formaliser, il est peu probable qu'une telle méthode soit un jour créée. En outre, il existe de nombreuses techniques différentes de réduction de réseau (par exemple OBD), ainsi que diverses heuristiques et règles empiriques. L’une de ces règles stipule que le nombre de neurones dans la couche cachée doit être au moins d’un ordre de grandeur supérieur au nombre d’entrées. Si l’on tient compte du fait que la transformation elle-même d’une image en un indicateur de classe est assez complexe et significativement non linéaire, une seule couche ne suffit pas. Sur la base de tout ce qui précède, nous estimons grossièrement que le nombre de neurones dans les couches cachées sera de l'ordre de 15000 (10 000 en 2ème couche et 5000 en troisième). De plus, pour une configuration à deux couches cachées, le nombre connexions personnalisables et apprenables il y aura 10 millions entre les entrées et la première couche cachée + 50 millions entre la première et la seconde + 50 mille entre la seconde et la sortie, si l'on suppose que nous avons 10 sorties, dont chacune représente un nombre de 0 à 9 . Total à peu près 60 000 000 de connexions. Ce n'est pas pour rien que j'ai mentionné qu'ils sont personnalisables - cela signifie que lors de la formation pour chacun d'eux, vous devrez calculer le gradient d'erreur.

Que pouvez-vous faire, la beauté de l'intelligence artificielle nécessite des sacrifices. Mais si l’on y réfléchit, il nous vient à l’esprit que lorsque l’on convertit une image en une chaîne linéaire d’octets, on perd irrémédiablement quelque chose. De plus, à chaque couche, cette perte ne fait qu’empirer. C'est vrai - nous perdons la topologie de l'image, c'est-à-dire la relation entre ses différentes parties. De plus, la tâche de reconnaissance implique la capacité du réseau neuronal à résister aux petits décalages, rotations et changements d'échelle de l'image, c'est-à-dire il doit extraire des données certains invariants qui ne dépendent pas de l'écriture manuscrite d'une personne particulière. Alors, à quoi devrait ressembler un réseau de neurones pour être à la fois peu complexe sur le plan informatique et, en même temps, plus invariant aux diverses distorsions d'image ?

3. Réseaux de neurones convolutifs

Une solution à ce problème a été trouvée par un scientifique américain d'origine française, Yann LeCun, inspiré par les travaux des lauréats du prix Nobel dans le domaine de la médecine Torsten Nils Wiesel et David H. Hubel. Ces scientifiques ont examiné le cortex visuel du cerveau du chat et ont découvert qu'il existe des cellules dites simples qui réagissent particulièrement fortement aux lignes droites sous différents angles et des cellules complexes qui réagissent aux lignes se déplaçant dans une direction. Yann LeCun a proposé l'utilisation de réseaux de neurones dits convolutifs.

6. Résultats

Le programme sur matlabcentral comprend un fichier d'un réseau neuronal déjà formé, ainsi qu'une interface graphique pour démontrer les résultats du travail. Voici des exemples de reconnaissance :



Le lien contient un tableau comparatif des méthodes de reconnaissance basées sur MNIST. La première place revient aux réseaux de neurones convolutifs avec un résultat d'erreurs de reconnaissance de 0,39 %. La plupart de ces images mal reconnues ne sont pas reconnues correctement par tout le monde. De plus, les travaux ont utilisé des distorsions élastiques des images d'entrée, ainsi qu'un entraînement préliminaire non supervisé. Mais ces méthodes seront abordées dans un autre article.

Liens.

  1. Yann LeCun, J. S. Denker, S. Solla, R. E. Howard et L. D. Jackel : Dommages cérébraux optimaux, dans Touretzky, David (Eds), Advances in Neural Information Processing Systems 2 (NIPS*89), Morgan Kaufman, Denver, CO, 1990
  2. Y. LeCun et Y. Bengio : Réseaux convolutifs pour les images, la parole et les séries temporelles, dans Arbib, M. A. (Eds), The Handbook of Brain Theory and Neural Networks, MIT Press, 1995
  3. Y. LeCun, L. Bottou, G. Orr et K. Muller : Efficient BackProp, dans Orr, G. et Muller K. (Eds), Neural Networks : Tricks of the trade, Springer, 1998
  4. Ranzato Marc" Aurelio, Christopher Poultney, Sumit Chopra et Yann LeCun : Apprentissage efficace des représentations clairsemées avec un modèle basé sur l'énergie, dans J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press , 2006

AlexNet est un réseau de neurones convolutifs qui a eu une grande influence sur le développement de l’apprentissage automatique, notamment sur les algorithmes de vision par ordinateur. Le réseau a remporté largement le concours de reconnaissance d'images ImageNet LSVRC-2012 en 2012 (avec un taux d'erreur de 15,3 % contre 26,2 % pour la deuxième place).

L'architecture d'AlexNet est similaire au réseau LeNet créé par Yann LeCum. Cependant, AlexNet dispose de plus de filtres par couche et de couches convolutives imbriquées. Le réseau comprend les convolutions, le pooling maximum, l'abandon, l'augmentation des données, les fonctions d'activation ReLU et la descente de gradient stochastique.

Fonctionnalités d'AlexNet

  1. En tant que fonction d'activation, Relu est utilisé à la place de l'arctangente pour ajouter de la non-linéarité au modèle. De ce fait, avec la même précision de la méthode, la vitesse devient 6 fois plus rapide.
  2. L'utilisation du dropout au lieu de la régularisation résout le problème du surapprentissage. Cependant, le temps de formation double avec un taux d'abandon de 0,5.
  3. Des associations superposées sont effectuées pour réduire la taille du réseau. De ce fait, les taux d'erreur des premier et cinquième niveaux sont réduits respectivement à 0,4 % et 0,3 %.

Ensemble de données ImageNet

ImageNet est une collection de 15 millions d'images étiquetées haute résolution divisées en 22 000 catégories. Les images sont collectées sur Internet et étiquetées manuellement à l'aide du crowdsourcing de Mechanical Turk d'Amazon. Depuis 2010, le défi annuel ImageNet de reconnaissance visuelle à grande échelle (ILSVRC) est organisé dans le cadre du Pascal Visual Object Challenge. Le défi utilise une partie de l'ensemble de données ImageNet avec 1 000 images dans chacune des 1 000 catégories. Cela donne un total de 1,2 million d'images pour la formation, 50 000 images pour les tests et 150 000 pour les tests. ImageNet se compose d'images avec différentes résolutions. Par conséquent, pour le concours, elles sont redimensionnées à une résolution fixe de 256 × 256. Si l'image était à l'origine rectangulaire, elle est alors recadrée en un carré au centre de l'image.

Architecture

Image 1

L'architecture du réseau est illustrée à la figure 1. AlexNet contient huit couches avec des coefficients de pondération. Les cinq premiers d’entre eux sont convolutifs et les trois autres sont entièrement connectés. La sortie passe par une fonction de perte softmax, qui produit une distribution de 1 000 étiquettes de classe. Le réseau maximise la régression logistique multilinéaire, ce qui équivaut à maximiser la moyenne sur tous les cas d'apprentissage du logarithme de la probabilité d'un étiquetage correct sur la distribution des attentes. Les noyaux des deuxième, quatrième et cinquième couches convolutives sont connectés uniquement aux cartes de noyau de la couche précédente qui se trouvent sur le même GPU. Les noyaux de la troisième couche convolutive sont connectés à toutes les cartes de noyau de la deuxième couche. Les neurones des couches entièrement connectées sont connectés à tous les neurones de la couche précédente.

Ainsi, AlexNet contient 5 couches convolutives et 3 couches entièrement connectées. Relu est appliqué après chaque couche convolutive et entièrement connectée. La suppression est appliquée avant les première et deuxième couches entièrement connectées. Le réseau contient 62,3 millions de paramètres et effectue 1,1 milliard de calculs en avant. Les couches convolutives, qui représentent 6 % de tous les paramètres, effectuent 95 % des calculs.

Éducation

AlexNet traverse 90 époques. La formation se déroule sur 6 jours simultanément sur deux GPU Nvidia Geforce GTX 580, raison pour laquelle le réseau est divisé en deux parties. La descente de gradient stochastique est utilisée avec un taux d'apprentissage de 0,01, une impulsion de 0,9 et une décroissance du poids de 0,0005. Le taux d’apprentissage est divisé par 10 après saturation de précision et diminue d’un facteur 3 lors de l’entraînement. Schéma de mise à jour du coefficient de pondération w a la forme :

je— numéro d'itération, v est la variable de quantité de mouvement, et épsilon— vitesse d'apprentissage. Pendant toute la phase de formation, le taux d'apprentissage a été choisi pour être égal pour toutes les couches et a été ajusté manuellement. L’heuristique suivante consistait à diviser le taux d’apprentissage par 10 lorsque le nombre d’erreurs de validation cessait de diminuer.

Exemples d'utilisation et de mise en œuvre

Les résultats montrent qu’un vaste réseau neuronal convolutif profond est capable d’obtenir des résultats record sur des ensembles de données très complexes en utilisant uniquement l’apprentissage supervisé. Un an après la publication d'AlexNet, tous les participants au concours ImageNet ont commencé à utiliser des réseaux de neurones convolutifs pour résoudre le problème de classification. AlexNet a été la première mise en œuvre de réseaux de neurones convolutifs et a marqué le début d'une nouvelle ère de recherche. Il est désormais devenu plus facile de mettre en œuvre AlexNet à l'aide de bibliothèques d'apprentissage profond : PyTorch, TensorFlow, Keras.

Résultat

Le réseau atteint les taux d'erreur de niveau un et cinq suivants : 37,5 % et 17,0 %, respectivement. Les meilleures performances obtenues lors du concours ILSVRC-2010 étaient de 47,1 % et 28,2 % en utilisant une approche qui fait la moyenne des prédictions de six modèles peu codés formés sur différents vecteurs de caractéristiques. Depuis, des résultats ont été obtenus : 45,7 % et 25,7 % grâce à une approche faisant la moyenne des prédictions de deux classificateurs entraînés sur les vecteurs de Fisher. Les résultats de l'ILSVRC-2010 sont présentés dans le tableau 1.


À gauche : huit images de test ILSVRC-2010 et cinq étiquettes que le modèle considère comme les plus probables. L'étiquette correcte est enregistrée sous chaque image et la probabilité est affichée avec une barre rouge si elle figure parmi les cinq premières. À droite : cinq images de test ILSVRC-2010 dans la première colonne. Les colonnes restantes montrent les six images d’entraînement.

Introduction

Le sujet de cette recherche est le développement d'un système de reconnaissance d'images basé sur des réseaux de neurones artificiels. La tâche de reconnaissance d'images est très importante, car la capacité de reconnaître automatiquement des images par un ordinateur ouvre de nombreuses nouvelles opportunités dans le développement de la science et de la technologie, telles que le développement de systèmes de recherche de visages et d'autres objets sur les photographies, le contrôle de la qualité des produits fabriqués sans intervention humaine, contrôle automatique du transport et bien d'autres.

Quant aux réseaux de neurones artificiels, ces dernières années, cette section de l'apprentissage automatique s'est de plus en plus développée en raison d'une augmentation significative de la puissance de calcul des ordinateurs existants et de l'utilisation généralisée de cartes graphiques pour l'informatique, ce qui permet de former des réseaux de neurones de grande envergure. une plus grande profondeur et une structure complexe qu'auparavant, qui, à leur tour, montrent des résultats nettement meilleurs par rapport à d'autres algorithmes pour de nombreuses tâches, en particulier la reconnaissance d'images. Cette direction de développement des réseaux de neurones s'appelle l'apprentissage profond et est actuellement l'une des plus réussies et qui se développe rapidement. Par exemple, selon les résultats du concours annuel de reconnaissance d'images ImageNet-2014, la grande majorité des algorithmes réussis utilisaient des réseaux convolutifs profonds.

Étant donné que le problème de la reconnaissance d'images est très vaste et nécessite dans la plupart des cas une approche distincte pour différents types d'images, il est presque impossible de considérer le problème de la reconnaissance d'images dans son ensemble dans le cadre d'une seule étude, il a donc été décidé de considérer , à titre d'exemple, séparément une sous-tâche de reconnaissance d'images telle que les panneaux de reconnaissance routière.

Ainsi, l’objectif principal de cette étude était de développer un système de reconnaissance d’images basé sur des réseaux de neurones artificiels pour les images de panneaux routiers. Pour atteindre cet objectif, les tâches suivantes ont été formulées :

Réaliser une revue analytique de la littérature sur le thème des réseaux de neurones artificiels et leur application aux problèmes de reconnaissance d'images

Développement d'un algorithme de reconnaissance de panneaux routiers à l'aide de réseaux de neurones artificiels

Développement d'un prototype de système de reconnaissance d'images basé sur l'algorithme développé. Le résultat de cette tâche devrait être un progiciel permettant à l'utilisateur de télécharger une image et d'obtenir une prédiction de la classe de cette image.

Réalisation d'études expérimentales. Il est nécessaire de mener des recherches et d'évaluer l'exactitude de l'algorithme résultant.

Au cours de l'étude, toutes les tâches assignées ont été accomplies. Les résultats spécifiques à chacun d’eux seront décrits dans la partie principale du travail.

1. Revue de la littérature

.1 Apprentissage automatique

Les réseaux de neurones, qui sont discutés en détail dans cet ouvrage, sont l'un des types d'algorithmes d'apprentissage automatique, ou apprentissage automatique. L'apprentissage automatique est l'un des sous-domaines de l'intelligence artificielle. La principale propriété des algorithmes d’apprentissage automatique est leur capacité à apprendre en travaillant. Par exemple, un algorithme pour construire un arbre de décision, sans aucune information préliminaire sur ce que sont les données et quels modèles y existent, mais seulement un certain ensemble d'objets d'entrée et les valeurs de certaines caractéristiques pour chacun d'eux, ainsi que avec une étiquette de classe, dans le processus de construction de l'arbre lui-même, il révèle des modèles cachés, c'est-à-dire qu'il apprend, et après l'entraînement, il est capable de prédire la classe pour de nouveaux objets qu'il n'a jamais vus auparavant.

Il existe deux principaux types d’apprentissage automatique : l’apprentissage supervisé et l’apprentissage non supervisé. L’apprentissage supervisé suppose que l’algorithme, en plus des données originales elles-mêmes, reçoive des informations supplémentaires à son sujet, qu’il pourra ensuite utiliser pour l’entraînement. Certains des problèmes les plus courants pour l’apprentissage supervisé comprennent les problèmes de classification et de régression. Par exemple, un problème de classification peut être formulé comme suit : étant donné un certain ensemble d'objets, dont chacun appartient à l'une parmi plusieurs classes, il est nécessaire de déterminer à laquelle de ces classes appartient un nouvel objet. La tâche de reconnaissance des panneaux routiers, qui a été envisagée dans ce travail, est un type typique de problème de classification : il existe plusieurs types de panneaux routiers - classes, et la tâche de l'algorithme est de « reconnaître » le panneau, c'est-à-dire de attribuez-le à l’une des classes existantes.

L’apprentissage non supervisé diffère de l’apprentissage supervisé dans la mesure où l’algorithme ne reçoit aucune information supplémentaire autre que l’ensemble de données d’origine lui-même. L’exemple le plus courant de problème d’apprentissage non supervisé est le problème de clustering. L'essence du problème de clustering est la suivante : l'entrée de l'algorithme est un certain nombre d'objets appartenant à différentes classes (mais quelle classe appartient à quel objet est inconnue, le nombre de classes lui-même peut également être inconnu), et le but L’un des principes de l’algorithme consiste à diviser cet ensemble d’objets en sous-ensembles d’objets « similaires », c’est-à-dire appartenant à la même classe.

Parmi tous les algorithmes de machine learning, on distingue plusieurs grandes familles. En ce qui concerne les problèmes de classification, les familles les plus populaires comprennent, par exemple :

· Classificateurs basés sur des règles - l'idée principale de ces classificateurs est de rechercher des règles pour attribuer des objets à une classe particulière sous la forme « SI - ALORS ». Pour trouver de telles règles, certaines mesures statistiques sont généralement utilisées, et la construction de règles basées sur un arbre de décision est également courante.

· Régression logistique - l'idée principale est de trouver un plan linéaire qui divise le plus précisément l'espace en deux demi-espaces afin que les objets de classes différentes appartiennent à des demi-espaces différents. Dans ce cas, l'équation du plan cible est recherchée sous la forme d'une combinaison linéaire de paramètres d'entrée. Pour entraîner un tel classificateur, par exemple, la méthode de descente de gradient peut être utilisée.

· Classificateur bayésien - comme son nom l'indique, le classificateur est basé sur le théorème de Bayes, qui s'écrit sous la forme

apprentissage automatique des réseaux neuronaux

L'idée du classificateur dans ce cas est de trouver la classe avec la probabilité a posteriori maximale, à condition que tous les paramètres aient les valeurs qu'ils ont pour l'instance à classer. En général, cette tâche nécessite une connaissance préalable d'un très grand nombre de probabilités conditionnelles et, par conséquent, d'une taille énorme de l'échantillon d'apprentissage et d'une grande complexité de calcul. Par conséquent, en pratique, un type de classificateur Bayesien appelé classificateur Naive Bayes est le plus approprié. souvent utilisé, dans lequel on suppose que tous les paramètres sont indépendants les uns des autres, par conséquent, la formule prend une forme beaucoup plus simple et pour l'utiliser, vous n'avez besoin de connaître qu'un petit nombre de probabilités conditionnelles.


Bien que cette hypothèse soit généralement loin de la réalité, un classificateur bayésien naïf produit souvent de bons résultats.

· Arbres de décision - sous une forme simplifiée, cet algorithme consiste à construire un arbre dans lequel chaque nœud correspond à un test effectué sur les paramètres de l'objet, et les feuilles sont les classes finales. Il existe de nombreux types d’arbres de décision et d’algorithmes pour leur construction. Par exemple, l’un des algorithmes les plus populaires est C4.5.

· Les réseaux de neurones sont un modèle représenté comme des ensembles d'éléments (neurones) et de connexions entre eux, qui en général peuvent être dirigés ou non et avoir certains poids. Pendant le fonctionnement d'un réseau de neurones, une partie de ses neurones, appelée entrée, reçoit un signal (données d'entrée), qui est en quelque sorte distribué et transformé, et à la sortie du réseau (neurones de sortie), vous pouvez voir le résultat du le fonctionnement du réseau, par exemple les probabilités de classes individuelles. Les réseaux de neurones seront abordés plus en détail dans ce travail dans la section suivante.

· Machines à vecteurs de support - le concept de l'algorithme est le même que dans le cas de la régression logistique, dans la recherche d'un plan de division (ou de plusieurs plans), cependant, la méthode de recherche d'un plan donné dans ce cas est différente - un Le plan est recherché de telle sorte que la distance qui le sépare des points les plus proches soit autant que possible représentative des deux classes, pour lesquelles des méthodes d'optimisation quadratiques sont généralement utilisées.

· Les apprenants paresseux sont un type particulier d'algorithmes de classification qui, au lieu de construire d'abord un modèle puis de prendre des décisions concernant l'attribution d'un objet à une classe particulière en fonction de celui-ci, sont basés sur l'idée que des objets similaires ont le plus souvent la même classe. Lorsqu'un tel algorithme reçoit un objet à classer en entrée, il recherche des objets similaires parmi les objets précédemment visualisés et, en utilisant des informations sur leurs classes, forme sa prédiction concernant la classe de l'objet cible.

On peut voir que les algorithmes de classification peuvent avoir des idées très différentes et, bien sûr, montrer une efficacité différente pour différents types de problèmes. Ainsi, pour les problèmes avec un petit nombre de fonctionnalités d'entrée, les systèmes basés sur des règles peuvent être utiles si, pour les objets d'entrée, vous pouvez calculer rapidement et facilement une métrique de similarité - des classificateurs paresseux, mais si nous parlons de problèmes avec un très grand nombre de paramètres , qui sont également difficiles à identifier ou à interpréter, comme la reconnaissance d'images ou de parole, les réseaux de neurones deviennent la méthode de classification la plus adaptée.

1.2 Réseaux de neurones

Les réseaux de neurones artificiels sont l’un des modèles d’apprentissage automatique les plus connus et utilisés. L'idée des réseaux de neurones artificiels repose sur la simulation du système nerveux des animaux et des humains.

Un modèle simplifié du système nerveux animal est représenté comme un système de cellules dont chacune possède un corps et des branches de deux types : les dendrites et les axones. À un certain moment, une cellule reçoit des signaux d'autres cellules à travers les dendrites et, si ces signaux sont d'intensité suffisante, elle s'excite et transmet cette excitation aux autres cellules avec lesquelles elle est connectée via des axones. Ainsi, le signal (excitation) se propage dans tout le système nerveux. Le modèle de réseau neuronal est structuré de la même manière. Un réseau neuronal est constitué de neurones et de connexions dirigées entre eux, chaque connexion ayant un certain poids. Dans ce cas, certains neurones sont entrés - ils reçoivent des données de l'environnement externe. Ensuite, à chaque étape, le neurone reçoit un signal de tous les neurones d’entrée, calcule la somme pondérée des signaux, lui applique une fonction et transmet le résultat à chacune de ses sorties. Le réseau possède également un certain nombre de neurones de sortie qui constituent le résultat du réseau. Ainsi, pour une tâche de classification, les valeurs de sortie de ces neurones peuvent signifier les probabilités prédites de chacune des classes pour l'objet d'entrée. En conséquence, la formation d'un réseau de neurones consiste à sélectionner de tels poids pour les connexions entre neurones afin que les valeurs de sortie de toutes les données d'entrée soient aussi proches que possible des valeurs réelles.

Il existe plusieurs grands types d’architectures de réseaux neuronaux :

· Réseau Feed-forward - implique que les neurones et les connexions entre eux forment un graphe acyclique, où les signaux se propagent dans une seule direction. Ce sont ces réseaux qui sont les plus populaires et les plus étudiés, et leur formation présente le moins de difficultés.

· Réseaux de neurones récurrents - dans de tels réseaux, contrairement aux réseaux à action directe, les signaux peuvent être transmis dans les deux sens et peuvent arriver plusieurs fois au même neurone au cours du traitement d'une valeur d'entrée. Un type particulier de réseaux de neurones récurrents est par exemple la machine de Boltzmann. La principale difficulté de travailler avec de tels réseaux est de les former, car créer un algorithme efficace pour cela dans le cas général est une tâche difficile et n'a toujours pas de solution universelle.

· Cartes Kohonen auto-organisées - un réseau neuronal conçu principalement pour le clustering et la visualisation de données.

Dans l'histoire du développement des réseaux de neurones, il y a 3 périodes principales de croissance. Les premières recherches dans le domaine des réseaux de neurones artificiels remontent aux années 40 du 20e siècle. En 1954, J. McCulloch et W. Pitts ont publié l'ouvrage « Logical Calculus of Ideas Relating to Nervous Activity », qui décrivait les principes de base de la construction de réseaux de neurones artificiels. En 1949, le livre de D. Hebb « Organisation du comportement » est publié, dans lequel l'auteur examine les fondements théoriques de l'entraînement des réseaux de neurones et formule pour la première fois le concept d'entraînement des réseaux de neurones comme ajustement des poids entre les neurones. En 1954, W. Clark a fait la première tentative de mise en œuvre d'un analogue du réseau Hebb à l'aide d'un ordinateur. En 1958, F. Rosenblatt a proposé un modèle du perceptron, qui était essentiellement un réseau neuronal comportant une couche cachée. La vue principale du perceptron Rosenblatt est présentée à la figure 1.

Figure 1. Perceptron de Rosenblatt

Ce modèle a été entraîné selon la méthode de correction d'erreur, qui consistait dans le fait que les poids restent inchangés tant que la valeur de sortie du perceptron est correcte, mais en cas d'erreur, le poids de communication change de 1 dans le sens opposé à le signe de l'erreur survenue. Cet algorithme, comme l'a prouvé Rosenblatt, converge toujours. En utilisant un tel modèle, il a été possible de créer un ordinateur reconnaissant certaines lettres de l'alphabet latin, ce qui a sans aucun doute été un grand succès à cette époque.

Cependant, l'intérêt pour les réseaux de neurones a considérablement diminué après la publication du livre « Perceptrons » de M. Minsky et S. Papert en 1969, où ils décrivaient les limitations importantes du modèle perceptron, notamment l'impossibilité de représenter l'exclusivité ou fonction, et a également souligné que les exigences en matière de puissance de calcul requise des ordinateurs pour la formation des réseaux de neurones sont trop élevées. Ces scientifiques jouissant d’une très haute autorité dans la communauté scientifique, les réseaux de neurones ont été reconnus pendant un certain temps comme une technologie peu prometteuse. La situation n’a changé qu’après la création de l’algorithme de rétropropagation en 1974.

L'algorithme de rétropropagation a été proposé en 1974 simultanément et indépendamment par deux scientifiques, P. Verbos et A. Galushkin. Cet algorithme est basé sur la méthode de descente de gradient. L'idée principale de l'algorithme est de propager les informations d'erreur des sorties du réseau vers ses entrées, c'est-à-dire dans le sens opposé par rapport à l'approche standard. Dans ce cas, les poids des connexions sont ajustés en fonction des informations d'erreur qui leur sont parvenues. La principale exigence imposée par cet algorithme est que la fonction d'activation des neurones soit différentiable, puisque la méthode de descente de gradient, sans surprise, est calculée en fonction du gradient.

L'algorithme de rétropropagation facilite la formation d'un réseau comportant plusieurs couches cachées, ce qui permet de contourner les limitations du perceptron qui bloquaient auparavant le développement de cette industrie. D'un point de vue mathématique, cet algorithme se résume à une multiplication matricielle séquentielle - qui est un problème assez bien étudié et optimisé. De plus, cet algorithme est hautement parallélisable, ce qui peut considérablement accélérer le temps de formation du réseau. Tout cela ensemble a conduit à un nouvel épanouissement des réseaux de neurones et à de nombreuses recherches actives dans ce sens.

L’algorithme de rétropropagation présente également un certain nombre de problèmes. Ainsi, l’utilisation de la descente de gradient comporte le risque de convergence vers un minimum local. Un autre problème important est le long temps de formation de l'algorithme en présence d'un grand nombre de couches, puisque l'erreur dans le processus de rétropropagation a tendance à diminuer de plus en plus à mesure qu'on se rapproche du début du réseau ; par conséquent, la formation des couches initiales du réseau se fera extrêmement lentement. Un autre inconvénient inhérent aux réseaux de neurones en général est la difficulté d'interpréter les résultats de leurs travaux. Le modèle entraîné d'un réseau de neurones est quelque chose comme une boîte noire, dont l'entrée est un objet et la sortie est une prévision, mais déterminant quelles caractéristiques de l'objet d'entrée ont été prises en compte et quel neurone est responsable de ce qui est généralement assez problématique. Cela rend les réseaux de neurones moins attrayants par rapport, par exemple, aux arbres de décision, dans lesquels le modèle formé lui-même représente une quintessence de connaissances sur le domaine considéré et il est facile pour le chercheur de comprendre pourquoi un objet donné a été attribué. à une classe particulière.

Ces lacunes, combinées au fait que même si les réseaux de neurones ont montré de bons résultats, ces résultats étaient comparables à ceux d'autres classificateurs, par exemple les machines à vecteurs de support de plus en plus populaires, alors que les résultats de ces dernières étaient beaucoup plus faciles à interpréter et nécessitaient une formation. moins de temps, a conduit à un autre déclin du développement des réseaux de neurones.

Ce déclin n'a pris fin que dans les années 2000 du 21e siècle, lorsque le concept de deep learning, ou deep learning, est apparu et a commencé à se répandre. La renaissance des réseaux de neurones a été facilitée par l'émergence de nouvelles architectures, telles que les réseaux convolutifs, les machines Bolzman restreintes, les auto-encodeurs empilés, etc., qui ont permis d'obtenir des résultats nettement meilleurs dans des domaines d'apprentissage automatique tels que la reconnaissance d'images et de parole. Un facteur important pour leur développement a également été l'émergence et la diffusion de cartes vidéo puissantes et leur utilisation pour des tâches informatiques. Les cartes vidéo, dotées d'un nombre de cœurs nettement plus important qu'un processeur, bien que chacune d'une puissance inférieure, sont idéales pour entraîner les réseaux neuronaux. Ceci, combiné à la récente augmentation significative des performances informatiques en général et à la prolifération des clusters informatiques, a permis de former des architectures de réseaux neuronaux beaucoup plus complexes et approfondies qu'auparavant.

1.3 Profondapprentissage

L’un des problèmes les plus importants rencontrés lors de l’utilisation d’algorithmes d’apprentissage automatique est le problème du choix des bonnes fonctionnalités sur lesquelles s’entraîner. Ce problème devient particulièrement important lorsqu'on considère des tâches telles que la reconnaissance d'images, la reconnaissance vocale, le traitement du langage naturel, etc., c'est-à-dire celles pour lesquelles il n'existe pas d'ensemble évident de fonctionnalités pouvant être utilisées pour la formation. En règle générale, la sélection d'un ensemble de fonctionnalités pour la formation est effectuée par le chercheur lui-même au moyen d'un travail analytique, et c'est l'ensemble de fonctionnalités sélectionné qui détermine en grande partie le succès de l'algorithme. Ainsi, pour la tâche de reconnaissance d'image, ces caractéristiques peuvent être la couleur prédominante dans l'image, le degré de son changement, la présence de limites claires dans l'image ou autre chose. La question de la reconnaissance d'images et du choix des fonctionnalités appropriées sera abordée plus en détail dans le chapitre correspondant.

Cependant, cette approche présente des inconvénients importants. Premièrement, cette approche implique un travail important pour identifier les caractéristiques, et ce travail est effectué manuellement par le chercheur et peut prendre beaucoup de temps. Deuxièmement, l'identification des caractéristiques sur la base desquelles un algorithme de haute qualité peut être obtenu dans ce cas devient en grande partie aléatoire ; de plus, il est peu probable que les caractéristiques pouvant avoir un impact important sur la structure interne de l'image soient prises en compte, mais ce n'est pas évident pour les humains. Ainsi, l’idée d’identifier automatiquement des fonctionnalités qui pourront ensuite être utilisées pour faire fonctionner des algorithmes d’apprentissage automatique semble particulièrement attrayante. Et c’est précisément l’opportunité offerte par l’utilisation de l’approche d’apprentissage profond.

Du point de vue de la théorie de l’apprentissage automatique, l’apprentissage profond est un sous-ensemble de ce que l’on appelle l’apprentissage par représentation. Le concept principal de l'apprentissage des représentations est précisément la recherche automatique de caractéristiques, sur la base desquelles un algorithme, par exemple la classification, fonctionnera à l'avenir.

D'autre part, un autre problème important auquel on doit faire face lors de l'utilisation de l'apprentissage automatique est la présence de facteurs de variation qui peuvent avoir un impact significatif sur l'apparence des données sources, mais qui ne sont pas liés à leur essence même, ce que le chercheur considère. essayer d'analyser. Ainsi, dans une tâche de reconnaissance d'image, ces facteurs peuvent être l'angle selon lequel l'objet dans l'image est tourné vers l'observateur, l'heure de la journée, l'éclairage, etc. Ainsi, selon le point de vue et la météo, la voiture rouge peut avoir une teinte et une forme différentes sur la photo. Par conséquent, pour des tâches telles que l’identification d’un objet sur une photographie, il semble raisonnable de considérer non pas des faits spécifiques de bas niveau, tels que la couleur d’un pixel particulier, mais des caractéristiques d’abstraction de niveau supérieur, telles que la présence de roues. Cependant, il est évident que déterminer, sur la base de l’image originale, s’il est équipé de roues n’est pas une tâche triviale et que la résoudre directement peut être très difficile. De plus, la présence de roues n’est qu’une des nombreuses caractéristiques possibles, et les identifier toutes et écrire des algorithmes pour vérifier leur présence sur une image ne semble pas très réaliste. C’est là que les chercheurs peuvent tirer pleinement parti de l’approche du deep learning. L’apprentissage profond consiste à fournir l’objet original sous la forme d’une structure hiérarchique de fonctionnalités, de telle sorte que chaque niveau de fonctionnalités suivant soit construit sur la base d’éléments du niveau précédent. Ainsi, si nous parlons d'images, le niveau le plus bas sera les pixels d'origine de l'image, le niveau suivant sera les segments que l'on peut distinguer parmi ces pixels, puis les coins et autres formes géométriques dans lesquelles les segments sont ajoutés. Au niveau suivant de leurs figures, se forment des objets déjà reconnaissables par l'homme, par exemple des roues, et enfin, le dernier niveau de la hiérarchie est responsable d'objets spécifiques dans l'image, par exemple une voiture.

Pour mettre en œuvre l’approche d’apprentissage profond dans la science moderne, des réseaux neuronaux multicouches de diverses architectures sont utilisés. Les réseaux de neurones sont idéaux pour résoudre le problème de l'identification à partir des données et de la construction d'un ensemble hiérarchique de fonctionnalités, car, par essence, un réseau de neurones est un ensemble de neurones, dont chacun n'est activé que si les données d'entrée répondent à certains critères, c'est-à-dire , il représente une certaine fonctionnalité, tandis que les règles d'activation des neurones - ce qui détermine cette fonctionnalité - sont apprises automatiquement. Dans le même temps, les réseaux de neurones dans leur forme la plus courante représentent eux-mêmes une structure hiérarchique, dans laquelle chaque couche de neurones suivante utilise comme entrée les sorties des neurones de la couche précédente - ou, en d'autres termes, les caractéristiques d'un niveau supérieur sont formé sur la base des caractéristiques d’un niveau inférieur.

La diffusion de cette approche et, en relation avec celle-ci, l'épanouissement ultérieur des réseaux de neurones, était due à trois raisons interdépendantes :

· L'émergence de nouvelles architectures de réseaux de neurones adaptées pour résoudre des problèmes spécifiques (réseaux convolutifs, machines Boltzmann, etc.)

· Développement et disponibilité de l'informatique utilisant des GPU et de l'informatique parallèle en général

· L'émergence et la diffusion de l'approche de formation couche par couche pour les réseaux de neurones, dans laquelle chaque couche est formée séparément à l'aide de l'algorithme de rétropropagation standard (généralement sur des données non étiquetées, c'est-à-dire, en substance, un auto-encodeur est formé), ce qui rend il est possible d'identifier des caractéristiques significatives à un niveau donné, puis toutes les couches sont combinées en un seul réseau et le réseau est ensuite formé à l'aide de données étiquetées pour résoudre un problème spécifique (réglage fin). Cette approche présente deux avantages significatifs. Premièrement, de cette manière, l'efficacité de la formation du réseau est considérablement augmentée, car à chaque instant, ce n'est pas la structure profonde qui est formée, mais le réseau avec une couche cachée - en conséquence, des problèmes de diminution des valeurs d'erreur comme la profondeur du réseau augmente et une diminution correspondante du taux d'apprentissage disparaît. Et deuxièmement, cette approche de la formation en réseau vous permet d'utiliser des données non étiquetées lors de la formation, ce qui est généralement bien plus que des données étiquetées - ce qui rend la formation en réseau plus simple et plus accessible aux chercheurs. Les données étiquetées dans cette approche ne sont nécessaires qu'à la toute fin pour affiner le réseau afin de résoudre un problème de classification spécifique, et en même temps, puisque la structure générale des caractéristiques décrivant les données a déjà été créée au cours du processus précédent. Lors de la formation, il faut beaucoup moins de données pour affiner le réseau que pour la formation initiale afin d'identifier les panneaux. En plus de réduire la quantité requise de données étiquetées, cette approche vous permet d'entraîner le réseau une fois en utilisant une grande quantité de données non étiquetées, puis d'utiliser la structure de fonctionnalités résultante pour résoudre divers problèmes de classification, en affinant le réseau à l'aide de différents ensembles de données. beaucoup moins de temps qu'il n'en faudrait en cas de formation complète du réseau à chaque fois.

Examinons un peu plus en détail les architectures de base des réseaux neuronaux couramment utilisées dans le contexte du deep learning.

· Perceptron multicouche - est un réseau neuronal régulier entièrement connecté avec un grand nombre de couches. La question de savoir combien de couches sont considérées comme suffisamment grandes n'a pas de réponse claire, mais généralement les réseaux comportant 5 à 7 couches sont déjà considérés comme « profonds ». Cette architecture de réseaux de neurones, bien qu'elle ne présente pas de différences fondamentales par rapport aux réseaux précédemment utilisés avant la diffusion du concept d'apprentissage profond, peut s'avérer très efficace si le problème de sa formation est résolu avec succès, ce qui était le cas. principal problème de travailler avec de tels réseaux auparavant. Actuellement, ce problème est résolu en utilisant des cartes graphiques pour la formation du réseau, ce qui permet une formation plus rapide et, par conséquent, un plus grand nombre d'itérations de formation, ou une formation couche par couche du réseau mentionnée précédemment. Ainsi, en 2012, Ciresan et ses collègues ont publié l'article « Deep big multilayer perceptrons for digit retention », dans lequel ils faisaient l'hypothèse qu'un perceptron multicouche avec un grand nombre de couches, en cas de temps d'entraînement suffisant (ce qui est obtenu dans un un temps raisonnable en utilisant le calcul parallèle sur un GPU) et une quantité suffisante de données d'entraînement (obtenues en appliquant diverses transformations aléatoires à l'ensemble de données d'origine) peuvent montrer des performances pas pires que d'autres modèles plus complexes. Leur modèle, qui est un réseau neuronal à 5 ​​couches cachées, a montré un taux d'erreur de 0,35 lors de la classification des nombres de l'ensemble de données MNIST, ce qui est meilleur que les résultats précédemment publiés de modèles plus complexes. De plus, en combinant plusieurs réseaux ainsi formés en un seul modèle, ils ont réussi à réduire le taux d'erreur à 0,31 %. Ainsi, malgré son apparente simplicité, le perceptron multicouche est un représentant assez réussi des algorithmes d’apprentissage profond.

· Autoencodeur empilé (autoencodeur empilé) - ce modèle est étroitement lié au perceptron multicouche et, en général, à la tâche de formation des réseaux neuronaux profonds. C'est à l'aide d'un auto-encodeur de pile que la formation couche par couche des réseaux profonds est mise en œuvre. Cependant, ce modèle n'est pas seulement utilisé à des fins de formation d'autres modèles, mais il a souvent en soi une grande importance pratique. Pour décrire l'essence d'un auto-encodeur de pile, considérons d'abord le concept d'un auto-encodeur régulier. Un auto-encodeur est un algorithme d'apprentissage non supervisé dans lequel les valeurs de sortie attendues d'un réseau neuronal sont ses propres valeurs d'entrée. Le modèle d'auto-encodeur est représenté schématiquement dans la figure 2 :

Figure 2. Encodeur automatique classique

De toute évidence, la tâche de formation d'un tel modèle a une solution triviale si le nombre de neurones dans la couche cachée est égal au nombre de neurones d'entrée - alors la couche cachée a simplement besoin de diffuser ses valeurs d'entrée vers la sortie. Par conséquent, lors de la formation des auto-encodeurs, des restrictions supplémentaires sont introduites, par exemple, le nombre de neurones dans la couche cachée est défini pour être nettement inférieur à celui de la couche d'entrée, ou des techniques de régularisation spéciales sont utilisées pour assurer un degré élevé de parcimonie des neurones cachés. neurones en couches. L’une des utilisations les plus courantes des auto-encodeurs purs est la tâche consistant à obtenir une représentation compressée des données originales. Par exemple, un auto-encodeur avec 30 neurones dans la couche cachée, formé sur l'ensemble de données MNIST, vous permet de restaurer les images originales des nombres sur la couche de sortie pratiquement sans modifications, ce qui signifie qu'en fait, chacune des images originales peut être assez décrit avec précision par seulement 30 chiffres. Dans cette application, les auto-encodeurs sont souvent considérés comme une alternative à l’analyse en composantes principales. Un auto-encodeur empilé est essentiellement une combinaison de plusieurs auto-encodeurs ordinaires entraînés couche par couche. Dans ce cas, les valeurs de sortie des neurones entraînés de la couche cachée du premier des auto-encodeurs servent de valeurs d'entrée pour le second d'entre eux, etc.

· Les réseaux convolutifs sont récemment l'un des modèles d'apprentissage profond les plus populaires, utilisés principalement pour la reconnaissance d'images. Le concept de réseaux convolutifs repose sur trois idées principales :

o Sensibilité locale (champs récepteurs locaux) - si nous parlons du problème de la reconnaissance d'image, cela signifie que la reconnaissance d'un élément dans une image doit principalement être influencée par son environnement immédiat, tandis que les pixels situés dans une autre partie de l'image sont très probablement influencés par son environnement immédiat. ne sont en aucun cas associés à cet élément et ne contiennent aucune information permettant de l'identifier correctement

o Poids partagés : la présence de poids partagés dans un modèle représente en fait l'hypothèse selon laquelle le même objet peut être trouvé dans n'importe quelle partie de l'image, tandis que le même modèle (ensemble de poids) est utilisé pour le rechercher dans toutes les parties de l'image. image

o Le sous-échantillonnage est un concept qui vous permet de rendre un modèle plus résistant aux écarts mineurs par rapport au motif souhaité - y compris ceux associés à des déformations mineures, des changements d'éclairage, etc. L'idée du sous-échantillonnage est que lors de la correspondance d'un motif, ce n'est pas la valeur exacte d'un pixel ou d'une région de pixels donnée qui est prise en compte, mais son agrégation dans un certain voisinage, par exemple la valeur moyenne ou maximale.

D'un point de vue mathématique, la base des réseaux de neurones convolutifs est l'opération de convolution matricielle, qui consiste en la multiplication élément par élément d'une matrice représentant une petite zone de l'image originale (par exemple, 7 * 7 pixels) avec une matrice de même taille, appelée noyau de convolution, et sommation ultérieure des valeurs résultantes. Dans ce cas, le noyau de vérification est essentiellement un certain modèle, et le nombre obtenu à la suite de la sommation caractérise le degré de similitude d'une zone donnée de l'image avec ce modèle. En conséquence, chaque couche du réseau convolutif se compose d'un certain nombre de modèles, et la tâche de formation du réseau est de sélectionner les valeurs correctes dans ces modèles afin qu'elles reflètent les caractéristiques les plus significatives des images originales. Dans ce cas, chaque modèle est comparé séquentiellement avec toutes les parties de l'image - c'est là que l'idée de séparation des poids trouve son expression. Ces types de couches dans un réseau convolutif sont appelés couches de convolution. En plus des couches de convolution, les réseaux convolutifs contiennent des couches de sous-échantillonnage qui remplacent de petites régions de l'image par un seul numéro, réduisant ainsi simultanément la taille de l'échantillon avec lequel la couche suivante doit travailler et rendant le réseau plus robuste aux petits changements dans les données. Les dernières couches d'un réseau convolutif utilisent généralement une ou plusieurs couches entièrement connectées qui sont entraînées pour classer directement les objets. Ces dernières années, l'utilisation de réseaux convolutifs est devenue la norme de facto en classification d'images et permet d'obtenir les meilleurs résultats dans ce domaine.

· Les machines Boltzmann restreintes sont un autre type de modèles d'apprentissage profond, contrairement aux réseaux convolutifs, utilisés principalement pour la tâche de reconnaissance vocale. Une machine de Boltzmann dans son sens classique est un graphe non orienté dans lequel les arêtes reflètent les dépendances entre nœuds (neurones). Dans ce cas, certains neurones sont visibles et d’autres sont cachés. Du point de vue des réseaux de neurones, la machine de Boltzmann est essentiellement un réseau de neurones récurrent ; du point de vue des statistiques, c'est un champ de Markov aléatoire. Les concepts importants pour les machines Boltzmann sont les concepts d'énergie de réseau et d'états d'équilibre. L'énergie du réseau dépend du nombre de neurones fortement interconnectés qui sont simultanément dans un état activé, et la tâche de formation d'un tel réseau est de converger vers un état d'équilibre dans lequel son énergie est minimale. Le principal inconvénient de ces réseaux réside dans les gros problèmes liés à leur formation de manière générale. Pour résoudre ce problème, J. Hinton et ses collègues ont proposé un modèle de machines Boltzmann restreintes, qui impose des restrictions sur la structure du réseau, le représentant sous la forme d'un graphe biparti, dans une partie duquel se trouvent uniquement des neurones visibles, et dans l'autre - uniquement les cachés, par conséquent, les connexions ne sont présentes qu'entre les neurones visibles et cachés. Cette limitation a permis de développer des algorithmes efficaces pour la formation de réseaux de ce type, grâce auxquels des progrès significatifs ont été réalisés dans la résolution des problèmes de reconnaissance vocale, où ce modèle a pratiquement remplacé le modèle auparavant populaire des réseaux de Markov cachés.

Maintenant, après avoir examiné les concepts et principes de base du deep learning, considérons brièvement les principes de base et l'évolution du développement de la reconnaissance d'images et la place qu'y occupe le deep learning.

1.4 Reconnaissance d'images

Il existe de nombreuses formulations pour le problème de la reconnaissance d'images, et il est assez difficile de le définir sans ambiguïté. Par exemple, on peut considérer la reconnaissance d’image comme la tâche de rechercher et d’identifier certains objets logiques dans l’image originale.

La reconnaissance d’images est généralement une tâche difficile pour un algorithme informatique. Cela est dû tout d'abord à la grande variabilité des images d'objets individuels. Ainsi, la tâche de trouver une voiture dans une image est simple pour le cerveau humain, qui est capable d'identifier automatiquement la présence de caractéristiques importantes pour une voiture (roues, forme spécifique) dans un objet et, si nécessaire, de « récupérer » image dans l'imagination, imaginant les détails manquants, et extrêmement difficile pour un ordinateur, car il existe un grand nombre de variétés de voitures de différentes marques et modèles, ayant des formes très différentes, en plus, la forme finale de l'objet dans l'image Cela dépend grandement du point de prise de vue, de l'angle sous lequel il est pris et d'autres paramètres. L'éclairage joue également un rôle important, car il affecte la couleur de l'image résultante et peut également rendre certains détails invisibles ou déformer.

Ainsi, les principales difficultés de reconnaissance d’images sont causées par :

· Variabilité des matières au sein de la classe

Variabilité de forme, taille, orientation, position dans l'image

· Variabilité de l'éclairage

Pour lutter contre ces difficultés, diverses méthodes ont été proposées tout au long de l’histoire de la reconnaissance d’images, et des progrès significatifs ont déjà été réalisés dans ce domaine.

La première recherche dans le domaine de la reconnaissance d'images a été publiée en 1963 par L. Roberts dans l'article « Machine Perception Of Three-Dimensional Solids », où l'auteur tentait de faire abstraction des changements possibles dans la forme d'un objet et se concentrait sur la reconnaissance d'images. de formes géométriques simples dans différentes conditions d'éclairage et lorsqu'il y a des virages. Le programme informatique qu'il a développé était capable d'identifier des objets géométriques de formes simples dans une image et d'en générer un modèle tridimensionnel sur l'ordinateur.

En 1987, S. Ullman et D. Huttenlocher ont publié l'article « Object Recongnition Using Alignment » dans lequel ils tentaient également de reconnaître des objets de formes relativement simples, et le processus de reconnaissance était organisé en deux étapes : d'abord, la recherche de la zone dans l'image où se trouve l'objet cible, et détermination de sa taille et de son orientation possibles (« alignement ») à l'aide d'un petit ensemble de caractéristiques, puis comparaison pixel par pixel de l'image potentielle de l'objet avec celle attendue.

Cependant, la comparaison d'images pixel par pixel présente de nombreux inconvénients importants, tels que sa complexité, la nécessité de disposer d'un modèle pour chacun des objets des classes possibles, et aussi le fait que dans le cas d'une comparaison pixel par pixel , seule une recherche d'un objet spécifique peut être effectuée, et non d'une classe entière d'objets. Dans certaines situations, cela est applicable, mais dans la plupart des cas, il est toujours nécessaire de rechercher non pas un objet spécifique, mais plusieurs objets d'une certaine classe.

L'une des directions importantes dans le développement ultérieur de la reconnaissance d'images est devenue la reconnaissance d'images basée sur l'identification des contours. Dans de nombreux cas, ce sont les contours qui contiennent l'essentiel des informations sur l'image, et en même temps, considérer l'image comme un ensemble de contours permet de la simplifier considérablement. Pour résoudre le problème de recherche de contours dans une image, l'approche classique et la plus connue est le Canny Edge Detector, dont le fonctionnement est basé sur la recherche d'un maximum de gradient local.

Une autre direction importante dans le domaine de l'analyse d'images est l'application de méthodes mathématiques telles que le filtrage de fréquence et l'analyse spectrale. Ces méthodes sont utilisées par exemple pour compresser des images (compression JPEG) ou améliorer leur qualité (filtre gaussien). Cependant, comme ces méthodes ne sont pas directement liées à la reconnaissance d’images, elles ne seront pas abordées plus en détail ici.

Une autre tâche souvent envisagée en relation avec le problème de la reconnaissance d’images est le problème de segmentation. L'objectif principal de la segmentation est de mettre en évidence des objets individuels dans une image, chacun pouvant ensuite être étudié et classé séparément. La tâche de segmentation est grandement simplifiée si l'image source est binaire, c'est-à-dire qu'elle est composée de pixels de deux couleurs seulement. Dans ce cas, le problème de segmentation est souvent résolu en utilisant des méthodes de morphologie mathématique. L'essence des méthodes de morphologie mathématique est de représenter une image comme un certain ensemble de valeurs binaires et d'appliquer des opérations logiques à cet ensemble, les principales étant le transfert, l'accumulation (addition logique) et l'érosion (multiplication logique). Grâce à ces opérations et leurs dérivés, comme la fermeture et l'ouverture, il devient possible, par exemple, d'éliminer le bruit dans une image ou de mettre en évidence des limites. Si de telles méthodes sont utilisées dans un problème de segmentation, leur tâche la plus importante devient précisément la tâche d'éliminer le bruit et de former des zones plus ou moins homogènes dans l'image, qui peuvent ensuite être facilement trouvées à l'aide d'algorithmes similaires à la recherche de composants connectés dans un graphique. - ce seront les segments d'images souhaités.

Concernant la segmentation d'image RVB, l'une des sources importantes d'informations sur les segments d'image peut être sa texture. Pour déterminer la texture d'une image, on utilise souvent un filtre de Gabor, créé dans le but de reproduire les caractéristiques de la perception de la texture par la vision humaine. Le fonctionnement de ce filtre repose sur la fonction de conversion de fréquence de l'image.

Une autre famille importante d’algorithmes utilisés pour la reconnaissance d’images sont ceux basés sur la recherche de caractéristiques locales. Les caractéristiques locales sont des zones clairement distinguables de l'image qui vous permettent de corréler l'image avec le modèle (l'objet souhaité) et de déterminer si l'image donnée correspond au modèle et, si c'est le cas, de déterminer les paramètres du modèle (par exemple, l'angle d'inclinaison , compression appliquée, etc.) . Pour remplir efficacement leurs fonctions, les singularités locales doivent résister aux transformations affines, aux déplacements, etc. Un exemple classique de caractéristiques locales sont les coins, qui sont souvent présents aux limites de divers objets. L'algorithme le plus populaire pour trouver les coins est le détecteur Harris.

Récemment, les méthodes de reconnaissance d'images basées sur les réseaux de neurones et l'apprentissage profond sont devenues de plus en plus populaires. Le principal épanouissement de ces méthodes est survenu après l’émergence des réseaux convolutifs (LeCun, 2015) à la fin du 20e siècle, qui montrent des résultats nettement meilleurs en reconnaissance d’images par rapport aux autres méthodes. Ainsi, la plupart des principaux algorithmes (et pas seulement) du concours annuel de reconnaissance d'images ImageNet-2014 ont utilisé des réseaux convolutifs sous une forme ou une autre.

1.5 Reconnaissance des panneaux routiers

La reconnaissance des panneaux de signalisation routière en général est l'une des nombreuses tâches liées à la reconnaissance d'images ou, dans certains cas, d'enregistrements vidéo. Cette tâche est d'une grande importance pratique, puisque la reconnaissance des panneaux routiers est utilisée, par exemple, dans les programmes d'automatisation de la conduite. La tâche de reconnaissance des panneaux routiers comporte de nombreuses variantes - par exemple, identifier la présence de panneaux routiers sur une photographie, mettre en évidence une zone dans une image qui représente un panneau routier, déterminer quel panneau spécifique est représenté sur une photographie qui est évidemment une image de un panneau routier, etc. En règle générale, il existe trois tâches globales associées à la reconnaissance des panneaux routiers - leur identification dans le paysage environnant, leur reconnaissance directe ou leur classification, et ce que l'on appelle le suivi - cela implique la capacité de l'algorithme à « suivre », c'est-à-dire pour garder le panneau routier au point dans la séquence vidéo. Chacune de ces sous-tâches en soi constitue un sujet de recherche distinct et dispose généralement de son propre cercle de chercheurs et d'approches traditionnelles. Dans ce travail, l'attention s'est concentrée sur le problème de la classification du panneau routier représenté sur la photographie, nous l'examinerons donc plus en détail.

Ce problème est un problème de classification pour les classes déséquilibrées en fréquence. Cela signifie que la probabilité qu'une image appartienne à différentes classes est différente, puisque certaines classes sont plus courantes que d'autres - par exemple, sur les routes russes, le panneau de limitation de vitesse « 40 » est beaucoup plus courant que le panneau « Passage interdit ». De plus, les panneaux routiers forment plusieurs groupes de classes de telle sorte que les classes au sein d'un groupe sont très similaires les unes aux autres - par exemple, tous les panneaux de limitation de vitesse se ressemblent beaucoup et ne diffèrent que par les chiffres qu'ils contiennent, ce qui, bien sûr, complique considérablement la tâche de classement. D'autre part, les panneaux routiers ont une forme géométrique claire et un petit ensemble de couleurs possibles, ce qui pourrait grandement simplifier la procédure de classification - sans le fait que de vraies photographies de panneaux routiers peuvent être prises sous différents angles et sous différents éclairages. Ainsi, la tâche de classification des panneaux routiers, bien qu’elle puisse être considérée comme une tâche typique de reconnaissance d’images, nécessite une approche particulière pour obtenir le meilleur résultat.

Jusqu'à un certain moment, la recherche sur ce sujet était assez chaotique et sans rapport, puisque chaque chercheur fixait ses propres tâches et utilisait son propre ensemble de données, il n'était donc pas possible de comparer et de généraliser les résultats existants. Ainsi, en 2005, Bahlmann et ses collègues, dans le cadre d'un système complet de reconnaissance des panneaux routiers prenant en charge les 3 sous-tâches de reconnaissance des panneaux routiers mentionnées précédemment, ont mis en œuvre un algorithme de reconnaissance des panneaux qui fonctionne avec une précision de 94 % pour les panneaux routiers appartenant à 23 différents types de panneaux. Des classes. L'entraînement a été réalisé sur 40 000 images, le nombre d'images correspondant à chaque classe variant de 30 à 600. Pour détecter les panneaux routiers dans ce système, l'algorithme AdaBoost et les ondelettes de Haar ont été utilisés, et pour classer les panneaux trouvés, une approche basée sur sur l’algorithme de maximisation des attentes a été utilisé. Le système de reconnaissance des panneaux de limitation de vitesse développé par Moutarde en 2007 avait une précision allant jusqu'à 90 % et a été entraîné sur un ensemble de 281 images. Ce système utilisait des détecteurs de cercles et de carrés pour détecter les panneaux de signalisation dans les images (pour les panneaux européens et américains, respectivement), qui extrayaient ensuite chaque chiffre et le classaient à l'aide d'un réseau neuronal. En 2010, Ruta et ses collègues ont développé un système permettant de détecter et de classer 48 types différents de panneaux de signalisation avec une précision de classification de 85,3 %. Leur approche était basée sur la recherche d'images de cercles et de polyèdres et sur l'identification d'un petit nombre de régions particulières qui permettent de distinguer ce signe de tous les autres. Dans ce cas, une transformation spéciale des couleurs de l'image a été appliquée, appelée par les auteurs Color Distance Transform, qui permet de réduire le nombre de couleurs présentes dans l'image et, par conséquent, d'augmenter les possibilités de comparaison des images et de réduire la taille des données traitées. Broggie et Collen ont proposé en 2007 un algorithme en trois étapes pour détecter et classer les panneaux routiers, comprenant une segmentation des couleurs, une détection de forme et un réseau neuronal, mais leur publication ne fournit pas d'indicateurs quantitatifs des résultats de leur algorithme. Gao et al., en 2006, ont proposé un système de reconnaissance des panneaux de signalisation basé sur l'analyse de la couleur et de la forme du panneau prévu et ont montré une précision de reconnaissance de 95 % parmi 98 exemples de panneaux de signalisation.

La situation avec la fragmentation de la recherche dans le domaine de la reconnaissance des panneaux routiers a changé en 2011, lorsqu'un concours sur la reconnaissance des panneaux routiers a été organisé dans le cadre de la conférence IJCNN (International Joint Conference on Neural Networks). Pour ce concours, l'ensemble de données GTSRB (Deutsch Traffic Sign Recognition Benchmark) a été développé, contenant plus de 50 000 images de panneaux de signalisation situés sur les routes allemandes et appartenant à 43 classes différentes. Sur la base de cet ensemble de données, un concours a été organisé, composé de deux étapes. Sur la base des résultats de la deuxième étape, l'article « Man vs. Computer: Benchmarking Machine Learning Algorithms for Traffic Sign Recognition », qui donne un aperçu des résultats du concours et une description des approches utilisées par les équipes les plus performantes. Aussi, à la suite de cet événement, un certain nombre d'articles ont été publiés par les auteurs des algorithmes eux-mêmes - participants au concours, et cet ensemble de données est devenu par la suite la référence de base pour les algorithmes liés à la reconnaissance des panneaux routiers, à l'instar du MNIST bien connu pour reconnaître les chiffres manuscrits.

Les algorithmes les plus performants de ce concours incluent le Committee of Convolutional Networks (équipe IDSIA), Multi-Scale CNN (équipe Sermanet) et Random Forests (équipe CAOR). Examinons chacun de ces algorithmes un peu plus en détail.

Le comité de réseau neuronal proposé par l'équipe IDSIA de l'Institut italien Dalle Molle pour la recherche en intelligence artificielle, dirigée par D. Ciresan, a atteint une précision de classification des caractères de 99,46 %, supérieure à la précision humaine (99,22 %), une évaluation qui a été réalisées dans le cadre du même concours. Cet algorithme a ensuite été décrit plus en détail dans l'article « Multi-Column Deep Neural Network for Traffic Sign Classification ». L'idée principale de l'approche est que 4 méthodes de normalisation différentes ont été appliquées aux données sources : ajustement de l'image, égalisation de l'histogramme, égalisation adaptative de l'histogramme et normalisation du contraste. Ensuite, pour chaque ensemble de données obtenu à la suite de la normalisation et l'ensemble de données d'origine, 5 réseaux convolutifs avec des valeurs initiales de poids initialisées aléatoirement, chacune de 8 couches, ont été construits et entraînés, tandis que diverses transformations aléatoires ont été appliquées à les valeurs d'entrée du réseau lors de la formation, ce qui a permis d'augmenter la taille et la variabilité de l'échantillon de formation. La prédiction de réseau résultante a été formée en faisant la moyenne de la prédiction de chacun des réseaux convolutifs. Pour entraîner ces réseaux, une implémentation utilisant le calcul GPU a été utilisée.

Un algorithme utilisant un réseau convolutif multi-échelle a été proposé par une équipe composée de P. Sermanet et Y. LeCun de l'Université de New York. Cet algorithme a été décrit en détail dans l'article « Traffic Sign Recognition with Milti-Scale Convolutional Networks ». Dans cet algorithme, toutes les images sources ont été mises à l'échelle à une taille de 32*32 pixels et converties en niveaux de gris, après quoi une normalisation du contraste leur a été appliquée. En outre, la taille de l'ensemble de formation d'origine a été multipliée par 5 en appliquant de petites transformations aléatoires aux images d'origine. Le réseau résultant était composé de deux étapes, comme le montre la figure 3, et les valeurs de sortie non seulement de la deuxième étape, mais également de la première, ont été utilisées dans la classification finale. Ce réseau a montré une précision de 98,31%.

Figure 3. Réseau neuronal multi-échelle

Le troisième algorithme réussi utilisant la forêt aléatoire a été développé par l'équipe CAOR de MINES ParisTech. Une description détaillée de leur algorithme a été publiée dans l’article « Reconnaissance des panneaux de signalisation en temps réel à l’aide d’arbres HOG spatialement pondérés ». Cet algorithme est basé sur la construction d'une forêt de 500 arbres de décision aléatoires, chacun étant formé sur un sous-ensemble sélectionné au hasard de l'ensemble de formation, la valeur de sortie finale du classificateur étant celle qui a reçu le plus de votes. Ce classificateur, contrairement aux précédents considérés, n'utilisait pas les images originales sous la forme d'un ensemble de pixels, mais des représentations d'images HOG (histogrammes de gradient orienté) fournies par les organisateurs du concours avec elles. Le résultat final de l'algorithme était de 96,14 % d'images correctement classées, ce qui montre que des méthodes non liées aux réseaux de neurones et à l'apprentissage profond peuvent également être utilisées avec beaucoup de succès pour la tâche de reconnaissance des panneaux de signalisation, bien que leur efficacité soit encore en retard sur les résultats de la convolution. réseaux .

1.6 Analyse des bibliothèques existantes

Pour implémenter des algorithmes permettant de travailler avec des réseaux de neurones dans le système en cours de développement, il a été décidé d'utiliser l'une des bibliothèques existantes. Par conséquent, une analyse des solutions logicielles existantes pour la mise en œuvre d'algorithmes d'apprentissage profond a été réalisée et, sur la base des résultats de cette analyse, un choix a été fait. L'analyse des solutions existantes s'est déroulée en deux phases : théorique et pratique.

Lors de la phase théorique, des bibliothèques telles que Deeplearning4j, Theano, Pylearn2, Torch et Caffe ont été prises en compte. Examinons chacun d'eux plus en détail.

· Deeplearning4j (www.deeplearning4j.org) est une bibliothèque open source pour la mise en œuvre de réseaux de neurones et d'algorithmes d'apprentissage profond, écrits en Java. Peut être utilisé à partir des langages Java, Scala et Closure, prend en charge l'intégration avec Hadoop, Apache Spark, Akka et AWS. La bibliothèque est développée et maintenue par Skymind, qui fournit également un support commercial pour la bibliothèque. Cette bibliothèque utilise une bibliothèque pour un travail rapide avec des tableaux à n dimensions ND4J développée par la même société. Deeplearning4j prend en charge de nombreux types de réseaux, notamment le perceptron multicouche, les réseaux convolutifs, les machines Bolzmann restreintes, les auto-encodeurs à débruitage empilés, les auto-encodeurs profonds, les auto-encodeurs récursifs, les réseaux de croyance profonde, les réseaux récurrents et quelques autres. Une caractéristique importante de cette bibliothèque est sa capacité à fonctionner en cluster. La bibliothèque prend également en charge les réseaux de formation utilisant des GPU.

· Theano (www.github.com/Theano/Theano) est une bibliothèque Python open source qui vous permet de créer, d'évaluer et d'optimiser efficacement des expressions mathématiques à l'aide de tableaux multidimensionnels. Pour représenter des tableaux multidimensionnels et des actions sur ceux-ci, la bibliothèque NumPy est utilisée. Cette bibliothèque est destinée principalement à la recherche scientifique et a été créée par un groupe de scientifiques de l'Université de Montréal. Les capacités de Theano sont très larges et travailler avec les réseaux de neurones n'est qu'une de ses petites parties. De plus, cette bibliothèque particulière est la plus populaire et est la plus souvent mentionnée lorsqu'il s'agit de travailler avec l'apprentissage profond.

· Pylearn2 (www.github.com/lisa-lab/pylearn2) - une bibliothèque Python open source construite sur Theano, mais offrant une interface plus pratique et plus simple pour les chercheurs, fournissant un ensemble d'algorithmes prêts à l'emploi et permettant une configuration simple de réseaux au format fichiers YAML. Développé par un groupe de scientifiques du laboratoire LISA de l'Université de Montréal.

· Torch (www.torch.ch) est une bibliothèque de calcul et d'implémentation d'algorithmes d'apprentissage automatique, implémentée en C, mais permettant aux chercheurs d'utiliser le langage de script Lua, beaucoup plus pratique, pour travailler avec. Cette bibliothèque fournit sa propre implémentation efficace d'opérations sur des matrices, des tableaux multidimensionnels et prend en charge les calculs GPU. Vous permet de mettre en œuvre des réseaux entièrement connectés et convolutifs. C'est open source.

· Caffe (www.caffe.berkeleyvision.org) - une bibliothèque axée sur la mise en œuvre efficace d'algorithmes d'apprentissage profond, développée principalement par le Berkley Vision and Learning Center, mais comme toutes les précédentes, elle est open source. La bibliothèque est implémentée en C, mais fournit également une interface pratique pour Python et Matlab. Prend en charge les réseaux entièrement connectés et convolutifs, permet de décrire les réseaux sous la forme d'un ensemble de couches au format .prototxt, prend en charge les calculs GPU. Les avantages de la bibliothèque incluent également la présence d'un grand nombre de modèles et d'exemples pré-entraînés, qui, combinés à d'autres caractéristiques, font de la bibliothèque la plus simple pour commencer à travailler parmi celles ci-dessus.

Sur la base d'un ensemble de critères, 3 bibliothèques ont été sélectionnées pour un examen plus approfondi : Deeplearning4j, Theano et Caffe. Ces 3 librairies ont été installées et testées en pratique.

Parmi ces bibliothèques, Deeplearning4j s'est avérée être la plus problématique à installer, de plus, des erreurs ont été découvertes dans les exemples de démonstration fournis avec la bibliothèque, ce qui a soulevé des questions quant à la fiabilité de la bibliothèque et a rendu extrêmement difficile son étude plus approfondie. Compte tenu par ailleurs de la moindre productivité du langage Java par rapport au C, dans lequel Caffe est implémenté, il a été décidé d'abandonner toute réflexion ultérieure sur cette bibliothèque.

La bibliothèque Theano s'est également avérée assez difficile à installer et à configurer, mais pour cette bibliothèque, il existe une grande quantité de documentation de haute qualité et bien structurée et des exemples de code fonctionnel, donc à la fin la bibliothèque a pu fonctionner, y compris l'utilisation d'une carte graphique. Cependant, il s'est avéré que la mise en œuvre même d'un réseau neuronal élémentaire dans cette bibliothèque nécessite l'écriture d'une grande quantité de votre propre code ; par conséquent, de grandes difficultés surviennent également lors de la description et de la modification de la structure du réseau. Par conséquent, malgré les capacités potentiellement beaucoup plus larges de cette bibliothèque par rapport à Caffe, pour cette étude, il a été décidé de se concentrer sur cette dernière, car elle est la plus appropriée pour les tâches définies.

1.7 BibliothèqueCafé

La bibliothèque Caffe fournit une interface assez simple et conviviale pour les chercheurs, vous permettant de configurer et de former facilement des réseaux de neurones. Pour travailler avec la bibliothèque, vous devez créer une description de réseau au format prototxt (fichier de définition de tampon de protocole - un langage de description de données créé par Google), qui est quelque peu similaire au format JSON, bien structuré et lisible par l'homme. La description du réseau est essentiellement une description de chacune de ses couches. La bibliothèque peut fonctionner avec une base de données (leveldb ou lmdb), des données en mémoire, des fichiers HDF5 et des images comme données d'entrée. Il est également possible d'utiliser un type spécial de données appelé DummyData à des fins de développement et de test.

La bibliothèque prend en charge la création de couches des types suivants : InnerProduct (couche entièrement connectée), Splitting (convertit les données pour les transmettre à plusieurs couches de sortie à la fois), Flattening (convertit les données d'une matrice multidimensionnelle en un vecteur), Reshape (vous permet pour changer la dimension des données), Concaténation (convertit les données de plusieurs couches d'entrée en une seule sortie), Découpage et plusieurs autres. Pour les réseaux convolutifs, des types spéciaux de couches sont également pris en charge - Convolution (couche de convolution), Pooling (couche de sous-échantillonnage) et Local Response Normalization (couche pour la normalisation des données locales). De plus, plusieurs types de fonctions de perte utilisées dans l'entraînement réseau (Softmax, Euclidean, Hinge, Sigmoid Cross-Entropy, Infogain et Accuracy) et les fonctions d'activation neuronale (Rectified-Linear, Sigmoid, Hyperbolic Tangent, Absolute Value, Power et BNLL) sont pris en charge. - qui sont également configurés en tant que couches réseau distinctes.

Ainsi, le réseau est décrit de manière déclarative sous une forme assez simple. Des exemples de configurations réseau utilisées dans cette étude peuvent être consultés à l'annexe 1. De plus, pour que la bibliothèque fonctionne à l'aide de scripts standards, il est nécessaire de créer un fichier solver.prototxt, qui décrit la configuration de formation réseau - le nombre d'itérations pour la formation , taux d'apprentissage, plate-forme informatique - CPU ou GPU, etc.

La formation de modèles peut être implémentée à l'aide de scripts intégrés (après qu'ils aient été modifiés pour la tâche en cours) ou manuellement en écrivant du code à l'aide de l'API fournie en Python ou Matlab. Dans le même temps, il existe des scripts qui vous permettent non seulement d'entraîner le réseau, mais aussi, par exemple, de créer une base de données basée sur la liste d'images fournie - dans ce cas, les images seront ramenées à une taille fixe et normalisé avant d’être ajouté à la base de données. Les scripts utilisés pour la formation encapsulent également certaines actions auxiliaires : par exemple, ils évaluent la précision actuelle du modèle après un certain nombre d'itérations et enregistrent l'état actuel du modèle entraîné dans un fichier instantané. L'utilisation de fichiers instantanés vous permet de continuer à entraîner le modèle dans le futur au lieu de recommencer, si un tel besoin s'en fait sentir, et également, après un certain nombre d'itérations, de modifier la configuration du modèle - par exemple, d'ajouter une nouvelle couche - et dans le même temps, les poids des couches précédemment entraînées conserveront leurs valeurs, ce qui vous permettra de mettre en œuvre le mécanisme d'apprentissage couche par couche décrit précédemment.

En général, la bibliothèque s'est avérée assez pratique à utiliser et nous a permis d'implémenter tous les modèles souhaités, ainsi que d'obtenir des valeurs de précision de classification pour ces modèles.

2. Développement d'un prototype de système de reconnaissance d'images

.1 Algorithme de classification des images

Au cours de l'étude du matériel théorique sur le sujet et des expériences pratiques, l'ensemble d'idées suivant a été formé qui devrait être incarné dans l'algorithme final :

· Utilisation de réseaux neuronaux convolutifs profonds. Les réseaux convolutifs affichent systématiquement les meilleurs résultats en matière de reconnaissance d'images, y compris les panneaux de signalisation, leur utilisation dans l'algorithme développé semble donc logique

· Utilisation de perceptrons multicouches. Malgré l'efficacité généralement plus grande des réseaux convolutifs, il existe des types d'images pour lesquelles un perceptron multicouche donne de meilleurs résultats, il a donc été décidé d'utiliser également cet algorithme.

· Combiner les résultats de plusieurs modèles à l'aide d'un classificateur supplémentaire. Puisqu'il a été décidé d'utiliser au moins deux types de réseaux de neurones, il est nécessaire de trouver un moyen de générer un résultat de classification global basé sur les résultats de chacun d'eux. Pour cela, il est prévu d'utiliser un classificateur supplémentaire non associé aux réseaux de neurones, dont les valeurs d'entrée sont les résultats de classification de chacun des réseaux, et la sortie est la classe d'image finale prédite

· Application de transformations supplémentaires aux données d'entrée. Pour augmenter l'adéquation des images d'entrée à la reconnaissance et, par conséquent, améliorer les performances du classificateur, plusieurs types de transformations doivent être appliqués aux données d'entrée et les résultats de chacune d'elles doivent être traités par un réseau distinct formé à la reconnaissance des images. avec ce type de transformation.

Sur la base de toutes les idées ci-dessus, le concept suivant de classificateur d'images a été formé. Le classificateur est un ensemble de 6 réseaux de neurones fonctionnant indépendamment : 2 perceptrons multicouches et 4 réseaux convolutifs. Dans ce cas, les réseaux du même type diffèrent les uns des autres par le type de transformation appliqué aux données d'entrée. Les données d'entrée sont mises à l'échelle de sorte que l'entrée sur chaque réseau produise toujours des données de la même taille, bien que ces tailles puissent varier selon les réseaux. Pour agréger les résultats de tous les réseaux, un classificateur classique supplémentaire est utilisé, parmi lesquels 2 options ont été utilisées : l'algorithme J48, basé sur un arbre de décision, et l'algorithme kStar, qui est un classificateur « paresseux ». Transformations utilisées dans le classificateur :

· Binarisation - l'image est remplacée par une nouvelle, composée uniquement de pixels de couleurs noir et blanc. Pour effectuer la binarisation, la méthode de seuillage adaptatif est utilisée. L'essence de la méthode est que pour chaque pixel de l'image, la valeur moyenne d'un certain voisinage de ses pixels est calculée (on suppose que l'image ne contient que des nuances de gris ; pour cela, les images originales ont été préalablement converties en conséquence) , puis, sur la base de la valeur moyenne calculée, il est déterminé si le pixel doit être considéré comme noir ou blanc.

· Égalisation de l'histogramme - l'essence de la méthode est d'appliquer une certaine fonction à l'histogramme d'une image, de telle sorte que les valeurs du diagramme résultant soient réparties aussi uniformément que possible. Dans ce cas, la fonction cible est calculée sur la base de la fonction de distribution de l'intensité des couleurs dans l'image d'origine. Un exemple d'application d'une fonction similaire à un histogramme d'image est présenté dans la figure 4. Cette méthode peut être utilisée à la fois pour les images en noir et blanc et en couleur - séparément pour chaque composante de couleur. Les deux options ont été utilisées dans cette étude.

Figure 4, Résultats de l'application de l'alignement du graphique à une image

· Amélioration du contraste - consiste dans le fait que pour chaque pixel de l'image un minimum et un maximum locaux sont trouvés dans une partie de son voisinage et ensuite ce pixel est remplacé par un maximum local si sa valeur d'origine est plus proche du maximum, ou d'un local minimum sinon. S'applique aux images en noir et blanc.

Le schéma général du classificateur résultant est représenté schématiquement sur la figure 5 :

Figure 5, diagramme du classificateur final

Pour implémenter la partie du modèle chargée de transformer les données d'entrée et les réseaux de neurones, le langage Python et la bibliothèque Caffe sont utilisés. Décrivons plus en détail la structure de chacun des réseaux.

Les deux perceptrons multicouches contiennent 4 couches cachées et leur configuration globale est décrite comme suit :

· Couche d'entrée

Couche 1, 1500 neurones

Couche 2, 500 neurones

Couche 3, 300 neurones

Couche 4, 150 neurones

Couche de sortie

Un exemple de fichier de configuration Caffe décrivant ce réseau est disponible en annexe 1. Quant aux réseaux convolutionnels, leur architecture était basée sur le réseau LeNet bien connu, développé pour classer les images du jeu de données ImageNet. Cependant, pour accueillir les images en question, qui sont nettement plus petites, le réseau a été modifié. Sa brève description ressemble à ceci :

Le schéma de ce réseau est présenté dans la figure 6.

Figure 6, diagramme de réseau convolutif

Chacun des réseaux neuronaux qui pilotent le modèle est formé séparément. Après avoir entraîné les réseaux de neurones, un script spécial en Python pour chacun des réseaux pour chacune des images de l'ensemble d'entraînement reçoit le résultat de la classification sous la forme d'une liste de probabilités pour chaque classe, sélectionne les deux classes les plus probables et écrit le les valeurs résultantes ainsi que la valeur réelle de la classe d'image dans un fichier. Le fichier résultant est ensuite transmis sous forme d'ensemble de formation à un classificateur (J48 et kStar) implémenté dans la bibliothèque Weka. En conséquence, une classification plus approfondie est effectuée à l'aide de cette bibliothèque.

2.2 Architecture du système

Maintenant, après avoir considéré l'algorithme de reconnaissance des panneaux routiers à l'aide de réseaux de neurones et d'un classificateur supplémentaire, passons directement à la description du système développé qui utilise cet algorithme.

Le système développé est une application avec une interface Web qui permet à l'utilisateur de télécharger une image d'un panneau routier et d'obtenir un résultat de classification pour ce panneau en utilisant l'algorithme décrit. Cette application se compose de 4 modules : application web, module réseau neuronal, module de classification et interface administrateur. Un diagramme schématique de l'interaction des modules est présenté à la figure 7.

Figure 7, schéma du système de classification

Les nombres dans le diagramme indiquent la séquence d'actions lorsque l'utilisateur travaille avec le système. L'utilisateur télécharge une image. La demande de l'utilisateur est traitée par le serveur Web et l'image téléchargée est transférée vers le module de réseaux de neurones, où toutes les transformations nécessaires sont effectuées sur l'image (mise à l'échelle, modification de la palette de couleurs, etc.), après quoi chacun des réseaux de neurones génère sa propre prédiction. Ensuite, la logique de contrôle de ce module sélectionne les deux prédictions les plus probables pour chaque réseau et renvoie ces données au serveur Web. Le serveur Web transmet les données reçues sur les prédictions de réseau au module de classification, où elles sont traitées et une réponse finale sur la classe d'image prédite est générée, qui est renvoyée au serveur Web et de là à l'utilisateur. Dans ce cas, l'interaction entre l'utilisateur et le serveur Web et le serveur Web et les modules de réseau neuronal et de classification s'effectue via des requêtes REST utilisant le protocole HTTP. L'image est transmise au format de données sous forme de plusieurs parties et les données sur les résultats des classificateurs sont transmises au format JSON. Cette logique de fonctionnement rend les modules individuels suffisamment isolés les uns des autres, ce qui leur permet d'être développés indépendamment, y compris en utilisant différents langages de programmation, et aussi, si nécessaire, de modifier facilement la logique de fonctionnement de chaque module séparément sans affecter la logique de fonctionnement des autres.

Pour implémenter l'interface utilisateur dans ce système, les langages HTML et Java Script ont été utilisés, Java a été utilisé pour implémenter le serveur Web et le module de classification, et Python a été utilisé pour implémenter le module de réseau neuronal. L'apparence de l'interface utilisateur du système est illustrée à la figure 8.

Figure 8. Interface utilisateur du système

L'utilisation de ce système suppose que le réseau neuronal et les modules de classification contiennent déjà des modèles formés. Dans le même temps, pour la formation des modèles, une interface administrateur est fournie, qui est essentiellement un ensemble de scripts en Python pour la formation des réseaux de neurones et un utilitaire de console en Java pour la formation du classificateur final. Ces outils ne sont pas destinés à être utilisés fréquemment ou par des utilisateurs non professionnels, ils ne nécessitent donc pas une interface plus avancée.

En général, l'application développée remplit avec succès toutes les tâches qui lui sont assignées, notamment permettre à l'utilisateur d'obtenir facilement une prédiction de classe pour l'image qu'il a sélectionnée. Par conséquent, la seule question qui reste ouverte concerne les résultats pratiques du travail du classificateur utilisé dans cet algorithme ; il sera discuté au chapitre 3.

3. Résultats des études expérimentales

.1 Données initiales

L’ensemble de données GTSRB (Deutsch Traffic Signs Recognition Benchmark) mentionné précédemment a été utilisé comme données d’entrée dans cette étude. Cet ensemble de données se compose de 51840 images appartenant à 43 classes. De plus, le nombre d'images appartenant à différentes classes est différent. La répartition du nombre d'images par classe est présentée dans la figure 9.

Figure 9. Répartition du nombre d'images par classe

Les tailles des images d'entrée varient également. La plus petite image a une largeur de 15 pixels et la plus grande une largeur de 250 pixels. La répartition générale des tailles d’image est présentée à la figure 10.

Figure 10. Distribution de la taille de l'image

Les images sources sont présentées au format ppm, c'est-à-dire sous la forme d'un fichier où chaque pixel correspond à trois nombres - les valeurs d'intensité des composantes de couleur rouge, verte et bleue.

3.2 Prétraitement des données

Avant de commencer le travail, les données source ont été préparées en conséquence - converties du format PPM au format JPEG, avec lequel la bibliothèque Caffe peut fonctionner, divisées de manière aléatoire en un ensemble de formation et de test dans un rapport de 80 : 20 %, et également mises à l'échelle. L'algorithme de classification utilise des images de deux tailles - 45*45 (pour entraîner un perspétron multicouche sur des données binarisées) et 60*60 (pour entraîner d'autres réseaux), donc pour chaque image de l'ensemble d'entraînement et de test, des instances de ces deux tailles ont été créé. De plus, les transformations mentionnées précédemment (binarisation, normalisation de l'histogramme, amélioration du contraste) ont été appliquées à chacune des images, et les images résultantes ont été enregistrées dans la LMDB (Lightning Memory-Mapped Database), qui est un magasin de valeurs-clés rapide et efficace. " Cette méthode de stockage des données garantit le fonctionnement le plus rapide et le plus pratique de la bibliothèque Caffe. La Python Imaging Library (PIL) et scikit-image ont été utilisés pour convertir les images. Des exemples d'images obtenues après chacune des transformations sont présentés dans la figure 11. Les images stockées dans la base de données ont ensuite été utilisées pour l'entraînement direct des réseaux de neurones.

Figure 11. Résultats de l'application de transformations à une image

Quant à la formation des réseaux de neurones, chacun des réseaux a été formé séparément et les résultats de son travail ont été évalués, puis le classificateur final a été construit et formé. Cependant, avant cela, un réseau simple avait été construit et formé, qui était un perceptron avec une couche cachée. L'examen de ce réseau avait deux objectifs : étudier le travail avec la bibliothèque Caffe à l'aide d'un exemple simple et constituer une sorte de référence pour une évaluation plus détaillée des résultats d'autres réseaux par rapport à celui-ci. Par conséquent, dans la section suivante, examinez plus en détail chacun des modèles de réseau et les résultats de ses travaux.

3.3 Résultats des modèles individuels

Les modèles mis en œuvre dans cette étude comprennent :

· Réseau neuronal avec une couche cachée

· Réseau neuronal multicouche construit sur la base des données sources

· Réseau neuronal multicouche construit sur la base de données binarisées

· Réseau convolutif construit sur la base des données originales

· Réseau convolutif construit sur la base de données RVB après alignement des cartes

· Réseau convolutif construit sur des données en niveaux de gris après alignement des graphiques

Réseau convolutif construit sur des données en niveaux de gris après amélioration du contraste

· Un modèle combiné composé d'une combinaison de deux réseaux de neurones multicouches et de 4 réseaux convolutifs.

Examinons chacun d'eux plus en détail.

Il existe une couche neuronale avec une couche cachée, bien qu'elle n'appartienne pas aux modèles d'apprentissage profond, elle s'avère néanmoins très utile pour la mise en œuvre, d'une part, comme matériel de formation pour travailler avec la bibliothèque, et d'autre part, comme algorithme de base pour comparaison avec le travail d'autres modèles . Les avantages incontestables de ce modèle incluent la facilité de sa construction et sa vitesse d'apprentissage élevée.

Ce modèle a été construit pour des images couleur initiales de 45*45 pixels, tandis que la couche cachée contenait 500 neurones. La formation du réseau a pris environ 30 minutes et la précision de la prédiction qui en a résulté était de 59,7 %.

Le deuxième modèle construit est un réseau neuronal multicouche entièrement connecté. Ce modèle a été conçu pour les versions binarisées et couleur d'images de plus petit format et contenait 4 couches cachées. La configuration du réseau est décrite comme suit :

· Couche d'entrée

Couche 1, 1500 neurones

Couche 2, 500 neurones

Couche 3, 300 neurones

Couche 4, 150 neurones

Couche de sortie

Le modèle de ce réseau est schématisé sur la figure 12.

Figure 12. Schéma d'un perceptron multicouche

La précision finale du modèle résultant est de 66,1 % pour les images binarisées et de 81,5 % pour les images couleur. Cependant - ce qui justifie la construction d'un modèle pour images binarisées, malgré sa moindre précision - il existait un certain nombre d'images pour lesquelles le modèle binarisé était capable de déterminer la classe correcte. De plus, le modèle basé sur des images couleur nécessitait beaucoup plus de temps de formation – environ 5 heures contre 1,5 heure pour la version binarisée.

Le reste des modèles construits sont d'une manière ou d'une autre basés sur des réseaux convolutifs, puisque ce sont précisément ces réseaux qui ont montré la plus grande efficacité dans des tâches telles que la reconnaissance d'images. L'architecture du réseau neuronal était basée sur le réseau LeNet bien connu, développé pour classer les images de l'ensemble de données ImageNet. Cependant, pour accueillir les images en question, qui sont nettement plus petites, le réseau a été modifié. Brève description de l'architecture du réseau :

· 3 couches de convolution avec des tailles de noyau 9, 3 et 3 respectivement

· 3 couches de sous-échantillonnage

· 3 couches entièrement connectées avec des tailles de 100, 100 et 43 neurones

Ce réseau a été formé séparément sur des images sources plus grandes, des images égalisées par histogramme (couleur préservée), des images égalisées par histogramme converties en noir et blanc et enfin des images en noir et blanc à contraste amélioré. Les résultats d'apprentissage sont présentés dans le tableau 1 :

Tableau 1. Résultats de la formation sur les réseaux convolutifs

Vous pouvez voir que les meilleurs résultats ont été montrés par le réseau construit sur la base d'images en noir et blanc après égalisation de l'histogramme. Cela peut s'expliquer par le fait que lors du redressement du diagramme, la qualité des images, par exemple les différences entre l'image et l'arrière-plan et le degré global de luminosité, se sont améliorées, tout en générant des informations inutiles. contenus dans la couleur et ne portent pas une charge sémantique significative - une personne est capable de reconnaître facilement les mêmes signes en noir et blanc - mais qui bruitaient l'image et compliquaient la classification - ont été éliminés.

Entraînez chaque réseau sur l'ensemble d'entraînement en utilisant la méthode de rétropropagation (l'ensemble est le même pour tous les réseaux, mais différentes transformations sont appliquées aux images)

2. Pour chaque instance de l'ensemble de formation, obtenez les deux classes les plus probables par ordre décroissant de probabilité de chaque réseau, enregistrez l'ensemble résultant (12 valeurs au total) et l'étiquette de classe réelle

Utilisez l'ensemble de données résultant - 12 attributs et une étiquette de classe - comme ensemble de formation pour le classificateur final

Évaluez l'exactitude du modèle résultant : pour chaque instance de l'ensemble de test, obtenez les deux classes les plus probables par ordre décroissant de probabilité de chaque réseau et la prédiction de classe finale basée sur cet ensemble de données.

Sur la base des résultats de l'exécution des étapes de ce schéma, la précision finale de l'algorithme combiné a été calculée : 93 % lors de l'utilisation de l'algorithme J48 et 94,8 % lors de l'utilisation de KStar. Dans le même temps, un algorithme basé sur un arbre de décision donne des résultats légèrement moins bons, mais présente deux avantages importants : d'une part, l'arbre obtenu grâce à l'algorithme démontre clairement la logique de classification et permet de mieux comprendre la structure réelle de les données (par exemple, lequel des réseaux donne les prédictions les plus précises pour un certain type de signes et donc sa prédiction détermine de manière unique le résultat), d'autre part, après avoir construit un modèle, cet algorithme permet de classer très rapidement de nouvelles entités, puisque la classification ne nécessite qu'un seul passage dans l'arbre de haut en bas. Quant à l'algorithme KStar, lors de son fonctionnement, il n'y a en fait aucune construction de modèle et la classification est basée sur la recherche des instances les plus similaires parmi l'ensemble d'apprentissage. Par conséquent, cet algorithme, bien qu'il classe les entités, ne leur fournit aucune information supplémentaire et, surtout, la classification de chaque instance peut nécessiter un temps important, ce qui peut être inacceptable pour des tâches où il est nécessaire d'obtenir un résultat. très rapidement, par exemple, dans la reconnaissance des panneaux routiers en conduite automatique.

Le tableau 2 présente une comparaison générale des résultats de tous les algorithmes considérés.

Tableau 2. Comparaison des résultats de l'algorithme

La figure 13 montre le graphique d'entraînement du réseau en utilisant l'exemple d'un réseau convolutif pour les données en niveaux de gris avec égalisation d'histogramme (nombre d'itérations sur l'axe des x, précision sur l'axe des y).

Figure 13. Graphique de formation du réseau convolutif

Pour résumer les résultats de l'étude, il est également utile d'étudier les résultats de la classification et d'identifier quels signes se sont avérés les plus faciles à classer et lesquels, au contraire, sont difficiles à reconnaître. Pour ce faire, considérez les valeurs de sortie de l'algorithme J48 et le tableau de contingence qui en résulte (voir annexe 3). Vous pouvez voir que pour certains panneaux, la précision de la classification est de 100 % ou très proche - par exemple, ce sont les panneaux « Stop » (classe 14), « Céder le passage » (classe 13), « Route principale » (classe 12). ), « Mettre fin à toutes les restrictions » (classe 32), « Le passage de transit est interdit » (classe 15) (Figure 12). La plupart de ces panneaux ont une forme distinctive (« Main Road ») ou des éléments graphiques spéciaux qui n'ont pas d'analogue sur d'autres panneaux (« La fin de toutes les restrictions »).

Figure 12. Exemples de panneaux routiers facilement reconnaissables

D'autres panneaux sont souvent mélangés les uns aux autres, comme par exemple le dépassement à gauche et le dépassement à droite, ou divers panneaux de limitation de vitesse (Figure 13).

Figure 13. Exemples de caractères couramment mélangés

Un phénomène frappant est que les réseaux de neurones mélangent souvent des signes symétriques les uns aux autres - cela est particulièrement vrai pour les réseaux convolutifs qui recherchent des signes locaux dans une image et n'analysent pas l'image dans son ensemble - les perceptrons multicouches sont plus adaptés à la classification de tels signes. images.

En résumé, nous pouvons dire qu'avec l'aide de réseaux de neurones convolutifs et d'un algorithme combiné construit sur leur base, il a été possible d'obtenir de bons résultats dans la classification des panneaux routiers - la précision du classificateur résultant est de près de 95 %, ce qui permet nous pour obtenir des résultats pratiques, en outre, l'approche proposée utilisant un classificateur supplémentaire pour combiner les résultats des réseaux de neurones présente de nombreuses possibilités d'amélioration.

Conclusion

Dans ce travail, le problème de la reconnaissance d’images a été étudié en détail à l’aide de réseaux de neurones artificiels. Les approches les plus pertinentes actuellement en matière de reconnaissance d'images, y compris celles utilisant des réseaux de neurones profonds, ont été examinées et notre propre algorithme de reconnaissance d'images a été développé en utilisant l'exemple du problème de la reconnaissance des panneaux routiers à l'aide de réseaux profonds. Sur la base des résultats des travaux, nous pouvons dire que toutes les tâches fixées au début des travaux ont été réalisées :

Une revue analytique de la littérature a été réalisée sur le thème de l'utilisation des réseaux de neurones artificiels pour la reconnaissance d'images. Sur la base des résultats de cette revue, il a été constaté que les approches les plus efficaces et les plus répandues récemment sont les approches de reconnaissance d'images basées sur l'utilisation de réseaux convolutifs profonds.

Un algorithme de reconnaissance d'images a été développé à l'aide de l'exemple de la tâche de reconnaissance des panneaux routiers, en utilisant un ensemble de réseaux de neurones constitué de deux perceptrons multicouches et de 4 réseaux convolutifs profonds, et en utilisant deux types de classificateurs supplémentaires - J48 et KStar - pour combiner les résultats des réseaux individuels et forment la prédiction finale

Un prototype de système de reconnaissance d'image a été développé en utilisant l'exemple des panneaux de signalisation routier sur la base de l'algorithme de l'article 3, qui fournit à l'utilisateur une interface Web pour charger l'image et, à l'aide de modèles pré-entraînés, classe cette image et affiche le résultat de la classification. à l'utilisateur

L'algorithme développé à l'étape 3 a été formé à l'aide de l'ensemble de données GTSRB, et les résultats de chacun de ses réseaux constitutifs ainsi que la précision finale de l'algorithme pour deux types de classificateurs supplémentaires ont été évalués séparément. Selon les résultats des expériences, la précision de reconnaissance la plus élevée, égale à 94,8 %, est obtenue en utilisant un ensemble de réseaux de neurones et le classificateur KStar, et parmi les réseaux individuels, les meilleurs résultats - une précision de 89,1 % - ont été montrés par un réseau convolutif qui utilise une conversion préliminaire d'image en niveaux de gris et effectue une égalisation de l'histogramme de l'image.

Dans l’ensemble, cette étude confirme que les réseaux de neurones artificiels profonds, notamment les réseaux convolutifs, constituent actuellement l’approche la plus efficace et la plus prometteuse pour la classification d’images, comme le confirment les résultats de nombreuses études et concours de reconnaissance d’images.

Liste de la littérature utilisée

1. Al-Azawi M. A. N. Reconnaissance automatique des panneaux de signalisation basée sur un réseau neuronal //Journal international de l'information numérique et des communications sans fil (IJDIWC). - 2011. - T. 1. - Non. 4. - pp. 753-766.

2. Baldi P. Autoencodeurs, apprentissage non supervisé et architectures profondes //ICML apprentissage non supervisé et par transfert. - 2012. - T. 27. - P. 37-50.

Bahlmann C. et coll. Un système de détection, de suivi et de reconnaissance des panneaux de signalisation utilisant des informations sur la couleur, la forme et le mouvement // Symposium sur les véhicules intelligents, 2005. Actes. IEEE. - IEEE, 2005. - pages 255-260.

Bastien F. et al. Theano : nouvelles fonctionnalités et améliorations de vitesse //préimpression arXiv arXiv:1211.5590. - 2012.

Bengio Y., Goodfellow I., Courville A. L'apprentissage en profondeur. - MIT Press, livre en préparation

Bergstra J. et coll. Theano : Un compilateur mathématique CPU et GPU en Python //Proc. 9ème Python en Science Conf. - 2010. - P. 1-7.

Broggi A. et al. Reconnaissance des panneaux routiers en temps réel // Symposium sur les véhicules intelligents, 2007 IEEE. - IEEE, 2007. - pp. 981-986.

Canny J. Une approche informatique de la détection des contours // Analyse de modèles et intelligence machine, Transactions IEEE sur. - 1986. - Non. 6. - pp. 679-698.

Ciresan D., Meier U., Schmidhuber J. Réseaux de neurones profonds multi-colonnes pour la classification d'images // Vision par ordinateur et reconnaissance de formes (CVPR), Conférence IEEE 2012 sur. - IEEE, 2012. - pp. 3642-3649.

Ciresan D. et coll. Un comité de réseaux de neurones pour la classification des panneaux de signalisation //Neural Networks (IJCNN), The 2011 International Joint Conference on. - IEEE, 2011. - pages 1918-1921.

11. Ciresan D.C. et al. Grands perceptrons multicouches profonds pour la reconnaissance des chiffres //Réseaux de neurones : astuces du métier. - Springer Berlin Heidelberg, 2012. - pp. 581-598.

Daugman J. G. Transformations de Gabor 2D discrètes complètes par réseaux de neurones pour l'analyse et la compression d'images //Acoustique, traitement de la parole et du signal, transactions IEEE. - 1988. - T. 36. - Non. 7. - pp. 1169-1179.

Gao X.W. et al. Reconnaissance des panneaux de signalisation en fonction de leurs caractéristiques de couleur et de forme extraites à l'aide de modèles de vision humaine // Journal of Visual Communication and Image Representation. - 2006. - T. 17. - Non. 4. - pp. 675-685.

Goodfellow I.J. et coll. Pylearn2 : une bibliothèque de recherche sur l'apprentissage automatique //préimpression arXiv arXiv :1308.4214. - 2013.

Han J., Kamber M., Pei J. Exploration de données : concepts et techniques. -Morgan Kaufmann, 2006.

Harris C., Stephens M. Un détecteur combiné de coins et de bords // Conférence sur la vision Alvey. - 1988. - T. 15. - P. 50.

Houben S. et coll. Détection des panneaux de signalisation dans des images du monde réel : The German Traffic Sign Detection Benchmark //Neural Networks (IJCNN), The 2013 International Joint Conference on. - IEEE, 2013. - pages 1 à 8.

Huang F. J., LeCun Y. Apprentissage à grande échelle avec svm et réseau convolutionnel pour la reconnaissance d'objets génériques // Conférence 2006 de l'IEEE Computer Society sur la vision par ordinateur et la reconnaissance de formes. - 2006.

Huttenlocher D. P., Ullman S. Reconnaissance d'objets par alignement //Proc. ICCV. - 1987. - T. 87. - P. 102-111.

Jia, Yangqing. "Caffe : une architecture convolutive open source pour une intégration rapide des fonctionnalités." h ttp://caffe. vision de Berkeley. organisation (2013).

Krizhevsky A., Sutskever I., Hinton G. E. Classification Imagenet avec réseaux neuronaux convolutifs profonds // Avancées dans les systèmes de traitement de l'information neuronale. - 2012. - P. 1097-1105.

Lafuente-Arroyo S. et al. Classification des panneaux de signalisation invariante aux rotations à l'aide de machines à vecteurs de support // Actes de Advabced Concepts for Intelligent Vision Systems, Bruxelles, Belgique. - 2004.

LeCun Y., Bengio Y. Réseaux convolutifs pour les images, la parole et les séries temporelles //Le manuel de théorie du cerveau et des réseaux de neurones. - 1995. - T. 3361. - P. 310.

LeCun Y. et coll. Algorithmes d'apprentissage pour la classification : une comparaison sur la reconnaissance des chiffres manuscrits //Réseaux de neurones : la perspective de la mécanique statistique. - 1995. - T. 261. - P. 276.

Masci J. et coll. Encodeurs automatiques convolutifs empilés pour l'extraction de caractéristiques hiérarchiques //Réseaux de neurones artificiels et apprentissage automatique-ICANN 2011. - Springer Berlin Heidelberg, 2011. - pp.

Matan O. et coll. Reconnaissance de caractères manuscrits à l'aide d'architectures de réseaux neuronaux // Actes de la 4e conférence USPS Advanced Technology. - 1990. - Art. 1003-1011.

McCulloch W. S., Pitts W. Un calcul logique des idées immanentes à l'activité nerveuse //Le bulletin de biophysique mathématique. - 1943. - T. 5. - Non. 4. - pp. 115-133.

Minsky M., Seymour P. Perceptrons. - 1969.

Mitchell T. Classificateurs génératifs et discriminants : Bayes naïf et régression logistique, 2005 //Manuscrit disponible sur #"897281.files/image021.gif">

Une revue des méthodes de réseaux neuronaux utilisées dans la reconnaissance d'images est fournie. Les méthodes de réseaux de neurones sont des méthodes basées sur l'utilisation de différents types de réseaux de neurones (NN). Les principaux domaines d'application de divers réseaux de neurones pour la reconnaissance de formes et d'images :

  • application pour extraire les caractéristiques ou caractéristiques clés d'images données,
  • classification des images elles-mêmes ou des caractéristiques déjà extraites de celles-ci (dans le premier cas, l'extraction des caractéristiques clés se fait implicitement au sein du réseau),
  • résoudre des problèmes d'optimisation.

L'architecture des réseaux de neurones artificiels présente certaines similitudes avec les réseaux de neurones naturels. Les NN conçus pour résoudre divers problèmes peuvent différer considérablement dans leurs algorithmes de fonctionnement, mais leurs principales propriétés sont les suivantes.

Le réseau de neurones est constitué d’éléments appelés neurones formels, eux-mêmes très simples et connectés à d’autres neurones. Chaque neurone convertit un ensemble de signaux reçus à son entrée en un signal de sortie. Ce sont les connexions entre neurones, codées par des poids, qui jouent un rôle clé. L'un des avantages des réseaux de neurones (ainsi qu'un inconvénient lors de leur mise en œuvre sur une architecture séquentielle) est que tous les éléments peuvent fonctionner en parallèle, augmentant ainsi considérablement l'efficacité de résolution d'un problème, notamment en traitement d'image. Outre le fait que les réseaux de neurones peuvent résoudre efficacement de nombreux problèmes, ils fournissent de puissants mécanismes d'apprentissage flexibles et universels, ce qui constitue leur principal avantage par rapport aux autres méthodes (méthodes probabilistes, séparateurs linéaires, arbres de décision, etc.). L'apprentissage élimine le besoin de sélectionner les fonctionnalités clés, leur signification et les relations entre les fonctionnalités. Mais néanmoins, le choix de la représentation initiale des données d'entrée (vecteur dans un espace à n dimensions, caractéristiques fréquentielles, ondelettes, etc.) affecte significativement la qualité de la solution et constitue un sujet à part. Les NN ont une bonne capacité de généralisation (meilleure que les arbres de décision), c'est-à-dire peut étendre avec succès l’expérience acquise sur l’ensemble de formation final à l’ensemble des images.

Décrivons l'utilisation des réseaux de neurones pour la reconnaissance d'images, en notant les possibilités d'application pour la reconnaissance humaine à partir d'une image de visage.

1. Réseaux de neurones multicouches

L'architecture d'un réseau neuronal multicouche (MNN) se compose de couches connectées séquentiellement, où le neurone de chaque couche est connecté avec ses entrées à tous les neurones de la couche précédente et aux sorties de la suivante. Un réseau neuronal avec deux couches de décision peut se rapprocher de n’importe quelle fonction multidimensionnelle avec n’importe quelle précision. Un réseau neuronal avec une seule couche de décision est capable de former des surfaces de division linéaires, ce qui réduit considérablement la gamme de problèmes qu'ils peuvent résoudre ; en particulier, un tel réseau ne sera pas en mesure de résoudre un problème de type « ou exclusif ». Un réseau neuronal avec une fonction d'activation non linéaire et deux couches décisives permet la formation de toutes les régions convexes dans l'espace de solution, et avec trois couches décisives - des régions de toute complexité, y compris les régions non convexes. Dans le même temps, le MNS ne perd pas sa capacité de généralisation. Les MNN sont formés à l'aide de l'algorithme de rétropropagation, qui est une méthode de descente de gradient dans l'espace des poids afin de minimiser l'erreur totale du réseau. Dans ce cas, les erreurs (plus précisément les valeurs de correction des poids) se propagent en sens inverse des entrées vers les sorties, à travers les poids reliant les neurones.

L'application la plus simple d'un réseau neuronal monocouche (appelé mémoire auto-associative) consiste à entraîner le réseau à reconstruire les images alimentées. En fournissant une image de test en entrée et en calculant la qualité de l'image reconstruite, vous pouvez évaluer dans quelle mesure le réseau a reconnu l'image d'entrée. Les propriétés positives de cette méthode sont que le réseau peut restituer des images déformées et bruitées, mais elle ne convient pas à des fins plus sérieuses.

Riz. 1. Réseau neuronal multicouche pour la classification des images. Le neurone ayant l'activité maximale (ici le premier) indique l'appartenance à la classe reconnue.

MNN est également utilisé pour la classification directe d'images : soit l'image elle-même sous une forme ou un ensemble de caractéristiques clés de l'image préalablement extraites est fournie en entrée ; en sortie, le neurone avec une activité maximale indique l'appartenance à la classe reconnue (Fig. 1). Si cette activité est inférieure à un certain seuil, alors on considère que l'image soumise n'appartient à aucune des classes connues. Le processus d'apprentissage établit la correspondance des images fournies à l'entrée avec l'appartenance à une certaine classe. C’est ce qu’on appelle l’apprentissage supervisé. Appliquée à la reconnaissance humaine à partir d’une image faciale, cette approche convient parfaitement aux tâches de contrôle d’accès d’un petit groupe de personnes. Cette approche garantit que le réseau compare directement les images elles-mêmes, mais avec l'augmentation du nombre de classes, le temps de formation et de fonctionnement du réseau augmente de façon exponentielle. Par conséquent, des tâches telles que la recherche d’une personne similaire dans une grande base de données nécessitent l’extraction d’un ensemble compact de caractéristiques clés sur lesquelles baser la recherche.

Une approche de classification utilisant les caractéristiques de fréquence de l'image entière est décrite dans. Un réseau neuronal monocouche basé sur des neurones à valeurs multiples a été utilisé. Une reconnaissance à 100 % a été constatée sur la base de données du MIT, mais la reconnaissance a été réalisée parmi les images pour lesquelles le réseau a été entraîné.

L'utilisation des MNN pour classer les images du visage en fonction de caractéristiques telles que les distances entre certaines parties spécifiques du visage (nez, bouche, yeux) est décrite dans. Dans ce cas, ces distances ont été introduites à l’entrée du NS. Des méthodes hybrides ont également été utilisées - dans la première, les résultats du traitement par un modèle de Markov caché ont été introduits dans l'entrée du NN, et dans la seconde, le résultat du fonctionnement du NN a été introduit dans l'entrée du modèle de Markov. Dans le second cas, aucun avantage n’a été observé, ce qui laisse penser que le résultat de la classification NN est suffisant.

L'application d'un réseau neuronal pour la classification d'images est illustrée lorsque l'entrée du réseau reçoit les résultats de la décomposition d'images à l'aide de la méthode des composants principaux.

Dans le MNN classique, les connexions neuronales intercouches sont entièrement connectées et l'image est représentée comme un vecteur unidimensionnel, bien qu'elle soit bidimensionnelle. L'architecture du réseau neuronal convolutif vise à surmonter ces lacunes. Il a utilisé des champs récepteurs locaux (fournissant une connectivité bidimensionnelle locale des neurones), des poids partagés (fournissant la détection de certaines caractéristiques n'importe où dans l'image) et une organisation hiérarchique avec sous-échantillonnage spatial. Le réseau neuronal convolutif (CNN) offre une résistance partielle aux changements d'échelle, aux déplacements, aux rotations et aux distorsions. L'architecture d'un CNN se compose de plusieurs couches, chacune comportant plusieurs plans, et les neurones de la couche suivante ne sont connectés qu'à un petit nombre de neurones de la couche précédente à proximité de la région locale (comme dans le système visuel humain). cortex). Les poids en chaque point d’un plan sont les mêmes (couches convolutives). La couche convolutive est suivie d'une couche qui réduit sa dimension par moyenne locale. Puis encore la couche convolutive, et ainsi de suite. De cette manière, une organisation hiérarchique est réalisée. Les couches ultérieures extraient des caractéristiques plus générales qui sont moins affectées par la distorsion de l'image. Le CNN est formé à l’aide de la méthode standard de rétropropagation. Une comparaison entre MNS et CNN a montré des avantages significatifs de ce dernier, tant en termes de rapidité que de fiabilité de la classification. Une propriété utile des CNN est que les caractéristiques générées aux sorties des couches supérieures de la hiérarchie peuvent être utilisées pour la classification à l'aide de la méthode du plus proche voisin (par exemple, en calculant la distance euclidienne), et le CNN peut extraire avec succès ces caractéristiques pour les images. qui ne sont pas dans l'ensemble de formation. Les CNN se caractérisent par des vitesses d’apprentissage et de fonctionnement rapides. Le test d'un CNN sur une base de données ORL contenant des images de visages avec de légers changements d'éclairage, d'échelle, de rotations spatiales, de position et diverses émotions a montré une précision de reconnaissance d'environ 98 %, et pour les visages connus, des variantes de leurs images ont été présentées qui n'étaient pas dans la formation. ensemble. Ce résultat rend cette architecture prometteuse pour de futurs développements dans le domaine de la reconnaissance d’images d’objets spatiaux.

Les MNN sont également utilisés pour détecter des objets d'un certain type. Outre le fait que tout MNN entraîné peut, dans une certaine mesure, déterminer si les images appartiennent à « leurs » classes, il peut être spécialement entraîné pour détecter de manière fiable certaines classes. Dans ce cas, les classes de sortie seront des classes qui appartiennent et n'appartiennent pas au type d'image donné. Un détecteur de réseau neuronal a été utilisé pour détecter une image de visage dans l’image d’entrée. L'image a été numérisée avec une fenêtre de 20x20 pixels, qui a été transmise à l'entrée du réseau, qui décide si une zone donnée appartient à la classe des visages. La formation a été réalisée à partir d'exemples positifs (diverses images de visages) et d'exemples négatifs (images qui ne sont pas des visages). Pour augmenter la fiabilité de la détection, une équipe de réseaux de neurones a été utilisée, entraînée avec différents poids initiaux, à la suite de quoi les réseaux de neurones ont commis des erreurs de différentes manières, et la décision finale a été prise par vote de toute l'équipe.

Riz. 2. Composantes principales (faces propres) et décomposition de l'image en composantes principales.

Un réseau neuronal est également utilisé pour extraire les caractéristiques clés de l’image, qui sont ensuite utilisées pour une classification ultérieure. Dans , une méthode de mise en œuvre de réseau neuronal de la méthode d'analyse en composantes principales est présentée. L'essence de la méthode d'analyse en composantes principales est d'obtenir des coefficients décorés au maximum caractérisant les images d'entrée. Ces coefficients sont appelés composants principaux et sont utilisés pour la compression statistique d'images, dans laquelle un petit nombre de coefficients sont utilisés pour représenter l'image entière. Un réseau de neurones avec une couche cachée contenant N neurones (ce qui est beaucoup plus petit que la dimension de l'image), entraîné à l'aide de la méthode de rétropropagation pour restituer l'image de sortie transmise à l'entrée, génère les coefficients des N premières composantes principales en sortie. des neurones cachés, qui sont utilisés à des fins de comparaison. Généralement, de 10 à 200 composants principaux sont utilisés. À mesure que le nombre d’un composant augmente, sa représentativité diminue considérablement et cela n’a aucun sens d’utiliser des composants avec des nombres plus grands. Lors de l'utilisation de fonctions d'activation non linéaires d'éléments neuronaux, une décomposition non linéaire en composants principaux est possible. La non-linéarité permet de refléter plus précisément les variations des données d’entrée. En appliquant l'analyse en composantes principales à la décomposition d'images faciales, nous obtenons des composantes principales appelées faces propres (holons dans l'œuvre), qui ont également une propriété utile : il existe des composantes qui reflètent principalement des caractéristiques essentielles d'un visage telles que le sexe, la race, les émotions. Une fois reconstruits, les composants ont l'apparence d'un visage, les premiers reflétant la forme la plus générale du visage, les seconds représentant diverses petites différences entre les visages (Fig. 2). Cette méthode est bien adaptée pour trouver des images similaires de visages dans de grandes bases de données. La possibilité de réduire davantage la dimension des composants principaux en utilisant NN est également présentée. En évaluant la qualité de la reconstruction de l'image d'entrée, on peut déterminer très précisément son appartenance à la classe des visages.