Une plongée plus approfondie dans la façon dont les CNN interprètent les images.
Introduction
Imaginez créer un ordinateur pour voir et comprendre le monde, un peu comme la façon dont nous, les humains, reconnaissons les visages ou repérons les objets. Cette tâche semble facile pour le cerveau humain, mais pas tellement pour un ordinateur !
Dans cet article, nous décomposerons les réseaux de neurones convolutifs en termes plus simples.
Les réseaux de neurones convolutifs (CNN) sont comme les yeux et les cerveaux numériques qui permettent aux machines de donner un sens aux images. La façon dont l'ordinateur regarde les images est comme une grille de nombres, ces nombres sont généralement des nombres RVB compris entre 0 et 255.
Dans le monde des réseaux de neurones convolutifs, nous comprendrons comment les ordinateurs regardent les images et découvriront ce qu’elles contiennent. De la compréhension des bases de la façon dont ils « voient » aux choses intéressantes qu'ils peuvent faire, préparez-vous pour une balade amusante au cœur de cette technologie qui change la façon dont les ordinateurs comprennent les merveilles visuelles qui nous entourent !
Réseau neuronal profond pour la reconnaissance d'images (Source) Les CNN sont principalement utilisés pour extraire des fonctionnalités d'une image d'entrée en appliquant certains filtres.
Conditions préalables
- Compréhension de base des réseaux de neurones : familiarité avec les réseaux de rétroaction et le fonctionnement des pondérations et des biais.
- Bases de l'algèbre linéaire et du calcul : connaissance des opérations matricielles, des gradients et des concepts d'optimisation.
- Programmation Python : expérience avec des bibliothèques telles que TensorFlow ou PyTorch pour l'apprentissage en profondeur.
- Principes fondamentaux du traitement d'images : compréhension des pixels, des filtres et des opérations de convolution.
Pourquoi les CNN ?
Un CNN est un type spécial d'ANN qui a également gagné en popularité pour l'analyse d'images et d'autres problèmes de classification. Les CNN sont parfaits pour détecter des motifs à partir d'une image et les rendent donc utiles pour l'analyse d'images. Un CNN se compose d’une couche d’entrée, d’une couche cachée et d’une couche de sortie. La couche cachée comprend une couche convolutive, une couche de pooling et des couches denses entièrement connectées.
Maintenant, la question pourrait se poser : pouvons-nous utiliser ANN pour la reconnaissance d’images ?
Comprenons avec un exemple !
Source
Dans ce cas, supposons que nous ayons un oiseau, l'image est une image colorée et aura donc trois canaux RVB.
- La taille de l'image est de 3082 × 2031, donc les neurones de la première couche seront de 3082 x 2031 x 3 ~ 18 millions.
- Les neurones de la couche cachée seront presque égaux à 10 millions
- Les poids entre la première couche et la couche cachée atteindront 19 mil x 10 mil ~ 190 millions
L’utilisation d’un réseau neuronal densément connecté pour la classification d’images entraîne une charge de calcul importante, ce nombre pourrait potentiellement atteindre des milliards. Cette quantité de calcul est non seulement excessive mais également inutile. De plus, les réseaux de neurones artificiels (ANN) ont tendance à traiter tous les pixels de manière uniforme, quelle que soit leur proximité spatiale. Étant donné que la reconnaissance d’images repose principalement sur des caractéristiques locales, cette approche devient un inconvénient. Le défi réside dans la difficulté du réseau à détecter les objets dans une image lorsque la disposition des pixels est modifiée. Il s’agit d’une limitation potentielle rencontrée avec ANN.
Opération de convolution et saut de foulée
Dans le cerveau humain, le processus de reconnaissance d’images implique l’examen de caractéristiques individuelles par des ensembles spécifiques de neurones. Ces neurones sont ensuite liés à un autre ensemble qui identifie des caractéristiques distinctes, et cet ensemble, à son tour, se connecte à un autre groupe chargé d'agréger les résultats pour déterminer si l'image représente un chat, un chien ou un oiseau.
Un concept similaire est utilisé dans CNN, où les fonctionnalités sont détectées à l'aide de filtres ou de noyaux. Ce filtre est appliqué aux données ou à l'image d'entrée en le faisant glisser sur toute l'entrée. Dans chaque cellule, une multiplication par élément est effectuée et les résultats sont résumés pour produire une valeur unique pour cette cellule spécifique. De plus, le filtre fait un pas en avant et la même opération est répétée jusqu'à ce que l'image entière soit capturée. Le résultat de cette opération est appelé carte de fonctionnalités.
Multiplication matricielle (source)
Les cartes de fonctionnalités sont chargées de capturer des modèles spécifiques en fonction du filtre utilisé. Au fur et à mesure que le filtre franchit l’entrée, il détecte différents modèles locaux, capturant des informations spatiales.
Appliquer un filtre sur une image (source)
En termes simples, lorsque nous utilisons un filtre ou effectuons une opération de convolution, nous créons une carte de caractéristiques qui met en évidence une caractéristique spécifique. Considérez ces filtres comme des outils spéciaux capables de détecter des caractéristiques particulières, comme un « détecteur oculaire » pour un oiseau. Lorsque nous appliquons ce détecteur à une image, il la scanne et s’il trouve des yeux, il marque leur emplacement sur la carte des caractéristiques. Il est important de noter que ces filtres ne se soucient pas de l’endroit où se trouvent les yeux dans l’image ; ils les trouveront quel que soit l’emplacement car le filtre glisse sur toute l’image. Chaque filtre est comme un détective spécialisé, nous aidant à identifier différents aspects de l'image.
Filtres utilisés pour détecter certaines caractéristiques d'un objet
Ces filtres peuvent être des filtres 2D ou 3D. Par exemple un filtre de tête sera un filtre agrégé des yeux, de la queue, du bec, etc., et ce filtre devient un détecteur de tête. De la même manière, il pourrait y avoir un détecteur de corps. Une fonctionnalité complexe serait capable de localiser un détail très complexe dans une image. Ces filtres de fonctionnalités génèrent les cartes de fonctionnalités.
Cartes des fonctionnalités
La carte de fonctionnalités ou carte d'activation est un tableau aplati de nombres qui capturent des modèles ou des fonctionnalités spécifiques dans une image. En vision par ordinateur, en particulier dans les réseaux de neurones convolutifs (CNN), les cartes de caractéristiques sont créées en appliquant des filtres ou des noyaux aux images d'entrée. Chaque numéro de la carte des fonctionnalités représente le niveau d'activation de la fonctionnalité correspondante dans les données d'entrée. Ces cartes de caractéristiques sont aplaties pour obtenir un tableau 1D et sont en outre connectées à un réseau neuronal dense entièrement connecté pour la tâche de classification.
Cartes de fonctionnalités connectées au réseau neuronal profond pour la classification
Pourquoi avons-nous besoin d’un réseau neuronal dense ?
Le réseau neuronal tient compte du fait que les objets dans les images peuvent se trouver à différents endroits et qu’il peut y avoir plusieurs objets dans une même image. Par conséquent, nous utilisons d’abord une opération neuronale convolutive, qui recherche différentes caractéristiques dans l’image. Cela l’aide à reconnaître divers modèles dans l’image. Ensuite, un réseau neuronal dense est utilisé pour déterminer le contenu de l’image en fonction de ces caractéristiques. Ainsi, la première partie trouve différents détails, et la deuxième partie décide de ce que ces détails signifient en termes de classification.
Ce n'est pas tout, nous ajoutons également une fonction d'activation généralement après la couche convolutive et les couches neuronales profondes entièrement connectées. Une fonction d'activation très courante est ReLu.
ReLu
L'activation ReLU est utilisée pour introduire de la non-linéarité dans notre modèle. Essentiellement, il prend la carte des caractéristiques et remplace toutes les valeurs négatives par zéro, tout en laissant les valeurs positives inchangées. Ce mécanisme simple consistant à mettre les valeurs négatives à zéro et à conserver les valeurs positives contribue à rendre le modèle non linéaire. Cette fonction d'activation aide également à éliminer le problème de disparition du gradient.
f(x) = max(0, x)
Faire face à des calculs lourds
Avec tous ces calculs, nous n’avons toujours pas abordé la question des calculs lourds. Pour surmonter ce problème, nous utilisons le Pooling.
En termes plus simples, la mise en commun peut être comprise comme une synthèse d’informations. Par exemple, pour résumer une image globale, pour comprendre ce qu’elle contient sans avoir besoin de chaque détail. La mise en commun aide en réduisant la taille de l’image tout en conservant les parties importantes. Pour ce faire, il examine de petits morceaux de l'image à la fois et sélectionne les informations les plus importantes dans chaque morceau. Par exemple, s’il examine un groupe de quatre pixels, il se peut qu’il ne conserve que le plus lumineux. De cette façon, il réduit l'image tout en capturant les principales caractéristiques, ce qui rend le travail avec l'ordinateur plus facile et plus rapide.
Mise en commun maximale
À partir de l'illustration ci-dessus, un filtre vide (2, 2) est glissé sur une image (4, 4) avec un pas de 2. La valeur maximale des pixels est extraite à chaque fois pour former une nouvelle image. L'image résultante est une représentation groupée maximale résultante de l'image d'origine. L'image résultante est la moitié de la taille de l'image d'origine. Cela permet de réduire la dimension ainsi que la puissance de calcul. La mise en commun réduit également le surapprentissage.
Un CNN typique aura : -
- Une couche de convolution
- Couche de fonction d'activation ReLu
- Mise en commun
- Enfin, à la fin un réseau de neurones denses entièrement connecté
Conclusion
Pour résumer, l'objectif principal d'un réseau de neurones convolutifs est d'extraire des fonctionnalités, et la partie suivante des fonctions est comme un réseau de neurones artificiels. La convolution détecte non seulement les caractéristiques, mais réduit également la dimensionnalité. Les trois principaux avantages de cette opération sont la rareté des premières connexions réduisant le surapprentissage, ce qui implique que tous les nœuds ne sont pas connectés à tous les autres nœuds, comme on le voit dans les réseaux denses. Deuxièmement, la convolution se concentre sur des régions locales de l’image à la fois, évitant ainsi tout impact sur l’ensemble de l’image. Troisièmement, la combinaison de la convolution et du pooling permet une détection de fonctionnalités invariante en fonction de l'emplacement. En termes plus simples, les réseaux de neurones convolutifs excellent dans la recherche de caractéristiques dans les images, aidant ainsi à prévenir le surajustement et garantissant une flexibilité dans la reconnaissance des caractéristiques à différents endroits.
L'activation ReLu introduit la non-linéarité et réduit encore le surapprentissage. L'augmentation des données est également utilisée pour générer une variation dans les échantillons.
Références
- Écrire des CNN à partir de zéro dans PyTorch
- Filtres dans les réseaux de neurones convolutifs
- Regroupement dans les réseaux de neurones convolutifs
- Mise en commun mondiale dans les réseaux de neurones convolutifs
- Explication simple du réseau neuronal convolutif | Tutoriel Deep Learning 23 (Tensorflow et Python)