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.
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 :
"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.
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".
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).
(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.
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é.
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 :
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 :
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.
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 :
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 :
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 poolingsignifie 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. 5.ShapeLorsqu'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)
Comme le montre l'image ci-dessus :
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.
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
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.
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.
(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 :
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.
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é.
Parmi eux :
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.
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!