Maison  >  Article  >  Périphériques technologiques  >  Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

WBOY
WBOYoriginal
2024-06-04 20:19:27337parcourir

Je crois que les amis qui aiment la technologie et qui s'intéressent beaucoup à l'IA comme l'auteur doivent être familiers avec les réseaux de neurones convolutifs et doivent avoir été confus par un nom aussi "avancé" depuis longtemps. L'auteur entrera aujourd'hui dans le monde des réseaux de neurones convolutifs à partir de zéro ~ partagez-le avec vous !

Avant de plonger dans le réseau neuronal convolutionnel, examinons d'abord les principes des images.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Principe de l'image

Les images sont représentées par des nombres (0-255) dans les ordinateurs. Chaque nombre représente la luminosité ou les informations de couleur d'un pixel de l'image. Parmi eux :

  • Image noir et blanc : Chaque pixel n'a qu'une seule valeur, et cette valeur varie entre 0 (noir) et 255 (blanc).

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

  • Image couleur : chaque pixel contient trois valeurs, la plus courante est le modèle RVB (Rouge-Vert-Bleu), c'est-à-dire que la lumière rouge, verte et bleue est combinée à différentes intensités pour produire différentes couleurs. Chaque canal de couleur possède 256 niveaux de luminosité, de 0 à 255, chaque couleur peut donc être exprimée par un nombre binaire de 8 bits, par exemple (255,0,0) représente le rouge, (0,255,0) représente le vert, ( 0 ,0,255) représente le bleu et d'autres combinaisons correspondent à différentes couleurs. Dans les ordinateurs, la structure de données d'une image couleur est généralement un tableau ou un tenseur tridimensionnel de forme (largeur, hauteur, profondeur), où la profondeur est le nombre de canaux. Pour les images RVB, la profondeur est de 3. Cela signifie que pour chaque position de pixel, il existe trois valeurs représentant la luminosité des trois canaux rouge, vert et bleu. Par exemple, une image RVB de 100 x 100 pixels occupera 100 x 100 x 3 octets de mémoire.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

"Comment comprenez-vous le "nombre binaire 8 bits" ici ?"

Dans le modèle de couleur RVB, chaque canal de couleur (rouge, vert, bleu) peut avoir 256 niveaux de luminosité différents, chaque canal représente une représentation binaire sur 8 bits. La valeur maximale du nombre binaire sur 8 bits est 11111111, soit 255 lorsqu'elle est convertie en décimal, la valeur minimale est 00000000, soit 0 lorsqu'elle est convertie en décimal.

Qu'est-ce que le réseau neuronal convolutif CNN ?

CNN a rapporté un scénario de candidature bien connu dans CV. En prenant la taille de l'image originale comme exemple 10x10, comme le montre la figure ci-dessous, la moitié gauche a des valeurs de pixels plus grandes et est une zone lumineuse ; la moitié droite a des valeurs de pixels plus petites et est une zone de profondeur. La ligne de démarcation au milieu est le bord à détecter.

"Alors comment détecter les bords ?" A ce moment, le filtre (également appelé noyau) apparaît, comme le montre la figure ci-dessous, la taille du noyau est de 3x3.

Le filtre glisse sur l'image d'entrée, s'arrête un instant dans chaque zone, multiplie et ajoute les éléments correspondants, puis glisse vers d'autres zones pour continuer le calcul jusqu'à ce qu'il glisse vers la dernière zone de l'image d'origine. Ce processus est appelé "convolution".

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Comme vous pouvez le voir sur l'image ci-dessus, le résultat de sortie a une couleur claire au milieu et une couleur sombre des deux côtés, indiquant que les limites de l'image originale ont été réfléchi. "On peut donc conclure que la détection des contours est reconnue grâce à l'opération de convolution de l'image d'entrée et du filtre correspondant."

De plus, le glissement implique ici également un concept de base, "foulée". Une foulée de 1 signifie que chaque fois que vous faites glisser une image, vous resterez dans un total de zones 8x8, le résultat final est donc une matrice 8x8.

"Alors, qu'est-ce qu'un réseau neuronal convolutif exactement ?"

Après l'analyse ci-dessus du scénario spécifique de détection de cible de détection de bord, il n'est pas difficile pour nous de comprendre que CNN (réseau neuronal convolutif) utilise divers filtres en continu extrait les caractéristiques de l'image, du local au global, puis identifie la cible.

Dans les réseaux de neurones, chaque nombre de ces filtres est un paramètre qui peut être obtenu grâce à un entraînement avec une grande quantité de données (c'est-à-dire le processus d'apprentissage profond).

Concepts de base dans CNN

1. Convolution (Convolution)

(1) Calcul de convolution

La convolution est une méthode de transformation intégrale en analyse mathématique, qui est utilisée dans le traitement d'image est la forme discrète de convolution. Dans le réseau neuronal convolutif CNN, l'essence de la mise en œuvre de la couche convolutive est le calcul de corrélation croisée (corrélation croisée) défini en mathématiques. Le processus de calcul spécifique est illustré dans la figure ci-dessous.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Parmi eux :

Image (a) : la taille de l'image de gauche est de 3 × 3, indiquant que les données d'entrée sont un tableau bidimensionnel d'une dimension de 3 × 3 ; la taille de l'image du milieu est de 2 × 2, indiquant un deux ; -tableau dimensionnel d'une dimension de 2×2 , également connu sous le nom de « noyau de convolution ». Le coin supérieur gauche du noyau de convolution est aligné avec le coin supérieur gauche (0,0) des données d'entrée, et les données de position correspondantes des deux sont multipliées puis ajoutées pour obtenir le premier résultat de la sortie de convolution 25.

Par analogie, les figures (b), (c) et (d) sont respectivement les deuxième, troisième et quatrième résultats de sortie de la sortie de convolution.

(2) Opération de convolution d'image

Alors, qu'est-ce que exactement l'opération de convolution d'image ? Comme le montre la figure ci-dessous, le processus de convolution de l'image couleur est illustré.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Pour le canal 1 (rouge), le canal 2 (vert) et le canal 3 (bleu) des images couleur, utilisez respectivement Kernel1, Kernel2 et Kernel3. Chaque noyau de convolution glisse sur l'image monochrome correspondante, effectue une opération de multiplication point par point sur la valeur du pixel dans une petite zone (taille du noyau) à chaque position et l'élément correspondant du noyau de convolution, puis ajoute ces produits. Obtenez un valeur. Ajoutez ensuite les valeurs obtenues à partir de chaque canal et ajoutez le biais global pour obtenir une valeur dans la carte des caractéristiques correspondante.

L'effet tridimensionnel est illustré dans la figure ci-dessous :

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

2.Padding

Dans l'exemple de détection de contour comme mentionné ci-dessus, vous pouvez voir que la taille de l'image originale est de 10x10, et après filtrage, elle est 8x8. Si vous faites une autre opération de convolution, ce sera 6x6... Dans ce cas, il y aura deux inconvénients :

  • Chaque fois que vous effectuez une opération de convolution, la taille de l'image de sortie sera réduite
  • Les pixels dans les coins. ou les zones de bord seront moins utilisées dans la sortie. Par conséquent, il est facile de perdre beaucoup d'informations sur la position des bords de l'image.

Comme le montre l'image ci-dessous, l'ombre rouge dans le coin supérieur gauche n'est touchée que par une seule sortie, tandis que le pixel du milieu (marqué par un cadre violet) sera recouvert de nombreuses zones 3x3. Par conséquent, les pixels dans les coins ou les zones de bord sont moins utilisés dans la sortie et il est facile de perdre beaucoup d'informations sur la position des bords de l'image.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Afin de résoudre ce problème, nous utilisons généralement la méthode Padding. Avant l'opération de convolution, remplissez d'abord le bord de l'image originale avec une couche de pixels. Par exemple, une image 10x10 peut être remplie jusqu'à un. taille de 12x12 et le volume La taille de l'image après multiplication est de 8x8, ce qui est la même taille que l'image d'origine. Cela permet aux pixels de la zone de bord de l'image d'origine d'être utilisés plusieurs fois.

Choisissez le nombre de pixels à remplir. Il existe généralement deux options :

  • Même convolution : comme mentionné ci-dessus, la taille de l'image après remplissage et convolution est la même que celle de l'image originale.
  • Convolution valide : pas d'opération de remplissage, convolution directe.

3.stride

Le concept de foulée a été mentionné dans l'introduction, qui représente la longueur de chaque diapositive du filtre dans les directions horizontale et verticale dans l'image originale, également appelée longueur de pas.

Supposons que s représente la longueur de foulée, p représente la longueur de rembourrage, que la taille de l'image originale est nxn et que la taille du filtre est fxf, alors la taille de l'image convoluée est :

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

4. la mise en commun C’est la réduction de dimensionnalité.

Le rôle de la couche de pooling dans le réseau convolutif : réduire le nombre de paramètres de la carte de caractéristiques, augmenter la vitesse de calcul et augmenter le champ de réception, qui est une opération de sous-échantillonnage.

Pooling couramment utilisé dans la détection d'objets : Max Pooling et Average Pooling.

(1) Max pooling

signifie prendre la valeur maximale dans la zone de glissement du filtre sans opération de convolution. Un nombre élevé signifie que certaines caractéristiques peuvent être détectées et d'autres valeurs ignorées, réduisant ainsi l'impact du bruit et améliorant la robustesse du modèle. "De plus, les hyperparamètres requis pour le pooling maximum sont uniquement la taille du filtre f et la longueur de foulée s. Il n'est pas nécessaire d'entraîner d'autres paramètres et le montant du calcul est faible."

C'est-à-dire que dans le filtre, calculez la valeur moyenne dans la zone coulissante du filtre.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

5.Shape

Lorsqu'il s'agit de données multidimensionnelles, en particulier de données d'image, il existe des différences entre la forme des données Tensorflow et Pytorch.

TensorFlow :(batch_size, hauteur, largeur, in_channels)

Pytorch :(batch_size, in_channels, hauteur, largeur)Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

où :

  • batch_size : Le nombre d'échantillons traités par lots.
  • in_channels : Le nombre de canaux de l'image d'entrée, généralement 3 (rouge, vert, bleu) pour les images couleur.
  • hauteur et largeur sont respectivement la hauteur et la largeur de l'image.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Comme le montre l'image ci-dessus :

  • Forme de l'image d'entrée : [hauteur, largeur, canaux], c'est-à-dire [8,8,3], qui représente une image 8x8 avec 3 canaux (R, G, B).
  • Forme du noyau de convolution : [kernel_height, kernel_width, in_channels, out_channels], c'est-à-dire [3,3,3,5], indiquant un noyau de convolution 3x3 avec 3 canaux (R, V, B), canal de sortie Le nombre est 5.
  • Forme de l'image de sortie : [hauteur, largeur, out_channels], c'est-à-dire [6,6,5], indiquant une image de sortie 6x6 avec 5 canaux (R, V, B).
out_height = (height - kernel_height + 1) / strideout_width = (width - kernel_width + 1) / stride

Pour une image 8x8 et un noyau de convolution 3x3, la taille de sortie sera (8 - 3 + 1) / 1 = 6, donc la forme de sortie est [6, 6, 5], indiquant une carte de fonctionnalités 6x6 avec 5 canaux de sortie .

Le nombre de canaux d'entrée (in_channels) du noyau de convolution est déterminé par le nombre de canaux de l'image d'entrée. Par exemple : une image au format RVB a un nombre de canaux d'entrée de 3.

Le nombre de canaux de la matrice de sortie (out_channels) est déterminé par le nombre de canaux de sortie du noyau de convolution, c'est-à-dire le nombre de filtres différents dont dispose le noyau de convolution. Dans cet exemple, le noyau de convolution dispose de 5 filtres, donc la sortie dispose de 5 canaux.

6. Fonction d'activation

Toutes les relations cartographiques ne peuvent pas être exprimées avec précision par des relations linéaires. Par conséquent, des fonctions d’activation sont nécessaires pour représenter les mappages non linéaires.

La fonction d'activation est également une cartographie non linéaire. Si le réseau neuronal n'est empilé que par des opérations linéaires, il ne pourra pas former un espace d'expression complexe et il sera difficile d'extraire des informations sémantiques élevées. Il est donc nécessaire d'ajouter des relations de mappage non linéaires.

(1) Fonction sigmoïde

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

La fonction sigmoïde compresse les caractéristiques dans l'intervalle (0,1). La fin 0 est l'état d'inhibition, la fin 1 est l'état d'activation et la fin 0 est l'état d'inhibition. le gradient dans la partie médiane est le plus grand.

(2) Fonction Relu

Unité Linéaire Rectifiée (ReLU). Habituellement utilisé pour atténuer le phénomène de disparition du gradient.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Dans la partie inférieure à 0, la valeur et le gradient sont 0, et la dérivée supérieure à 0 est 1, ce qui évite le problème de disparition du gradient provoqué par le gradient dans la fonction sigmoïde étant proche de 0.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

(3) Fonction Softmax

Le classificateur le plus couramment utilisé pour plusieurs catégories d'objets est la fonction Softmax.

Dans des tâches de classification spécifiques, l'entrée de la fonction Softmax est souvent les scores de plusieurs catégories, et la sortie est la probabilité correspondant à chaque catégorie. Les valeurs de probabilité​​de toutes les catégories sont comprises entre 0 et 1, et la. la somme est 1.

La formule de la fonction Softmax est la suivante :

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

où Vi représente le score de la i-ème catégorie, C représente le nombre total de catégories classées et la sortie Si est la probabilité de la i-ème catégorie.

Structure globale de CNN

Le réseau neuronal convolutif CNN se compose d'une couche d'entrée, d'une couche de convolution, de Relu, d'une couche de pooling, d'une couche entièrement connectée et d'une couche de sortie.

Comme le montre la figure ci-dessous, un exemple de réseau convolutif est la première couche du réseau convolutif, suivie d'autres couches convolutives ou couches de pooling, et la dernière couche est une couche entièrement connectée. Les calques ultérieurs identifient des parties plus grandes de l'image, et les calques antérieurs se concentrent généralement sur des caractéristiques simples (telles que la couleur et les bords). Au fur et à mesure que les données d'image progressent à travers les couches du CNN, elles commencent à identifier des éléments ou des formes d'objets plus grands jusqu'à ce qu'elles identifient finalement l'objet souhaité.

Vous pouvez comprendre les principes des réseaux de neurones convolutifs même sans fondement ! Hyper détaillé !

Parmi eux :

  • Couche d'entrée : reçoit les données d'image originales en entrée du réseau.
  • Couche de convolution : elle est composée de filtres et de fonctions d'activation. C'est la couche centrale de CNN. Sa fonction principale est d'extraire des exemples de fonctionnalités. Il se compose de données d'entrée, d'un filtre (ou noyau de convolution) et d'une carte de fonctionnalités. Si les données d'entrée sont une image RVB, cela signifie que l'entrée aura trois dimensions : hauteur, largeur et profondeur. L'essence du filtre est une matrice de poids bidimensionnelle, qui se déplacera dans le champ récepteur de l'image pour vérifier si la caractéristique existe. Le processus d’opération de convolution est tel que décrit ci-dessus. Les hyperparamètres généralement définis pour la couche convolutive incluent le nombre de filtres, la foulée, la méthode de remplissage (valide ou identique), la fonction d'activation, etc.
  • Couche de pooling : l'essence est le sous-échantillonnage. Il utilise le principe de corrélation locale de l'image pour sous-échantillonner l'image et réduire la quantité de traitement des données tout en conservant les informations utiles.
  • Couche entièrement connectée : Chaque nœud de cette couche est connecté à tous les nœuds de la couche précédente, qui sert à synthétiser les fonctionnalités extraites précédemment. Habituellement, la couche entièrement connectée possède le plus de paramètres.
  • Couche de sortie : obtenez le résultat avec la probabilité la plus élevée en fonction des informations de la couche entièrement connectée.

Avantages de CNN

Par rapport aux réseaux de neurones traditionnels, CNN présente les avantages des connexions locales, du partage de poids, etc., ce qui réduit considérablement la quantité de paramètres qu'il apprend et le réseau converge plus rapidement.

  • Partiellement connecté : chaque valeur de sortie de la carte de caractéristiques n'a pas besoin d'être connectée à chaque valeur de pixel de l'image d'entrée, mais doit uniquement être connectée au champ récepteur du filtre appliqué, de sorte que la couche convolutive est souvent appelée une « couche partiellement connectée », cette caractéristique est également appelée connexion locale.
  • Partage du poids : Lorsque le noyau de convolution se déplace sur l'image, son poids reste inchangé. C'est le partage du poids.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn