En ce moment, j'essaie de distinguer 7 types de fruits, mais je n'étais pas satisfait du sentiment final (j'ai amélioré la précision) après la classification en utilisant CNN. Je vais donc comprendre CNN de ce que c'est.
CNN (Convolutional Neural Network) est un réseau neuronal composé non seulement d'une couche entièrement connectée, mais également d'une couche de convolution et d'une couche de mise en commun, contrairement à un réseau neuronal de type général à propagation directe.
Hmm, je ne sais pas. Qu'est-ce qu'un réseau neuronal de type à propagation directe générale? Quand j'ai cherché, c'était très facile à comprendre. [Remarques lors de la lecture du deep learning (1. Réseau de propagation avant)] (https://qiita.com/ma-oshita/items/99b2cf313494adbb964d)
Dans la couche convolutive et la couche de regroupement, comme le montre la figure ci-dessous, une partie du neurone d'entrée est rétrécie et associée localement à la couche suivante. Chaque couche est une image qui possède plusieurs détecteurs appelés filtres.
Dans l'exemple de reconnaissance d'image, les bords sont détectés dans la première couche, les textures sont détectées dans la couche suivante et des caractéristiques plus abstraites sont détectées dans la couche suivante. CNN apprend automatiquement les paramètres du filtre, qui est un détecteur pour extraire ces caractéristiques.
・ Détection des visages tagués Facebook ・ Recherche de photos Google et reconnaissance vocale
Il y a trois points notables dans CNN. Convolution, invariance de traduction et compositionnalité.
La convolution est une technique souvent utilisée dans le traitement d'images. Pour chaque élément de données numériques en forme de grille appelé noyau (ou filtre) et données numériques d'une image partielle (appelée fenêtre) de la même taille que le noyau. C'est un processus pour convertir en une valeur numérique en calculant la somme des produits de. Ce processus de conversion est converti en petites données numériques en forme de grille en effectuant un processus de pas en décalant la fenêtre petit à petit. Puisque le filtre est glissé de cette manière, il est parfois appelé une fenêtre glissante.
Citation: Standford wiki / Convolution schematic.gif
Les données calculées de cette manière sont appelées une carte des caractéristiques.
Une fois que vous aurez compris chaque composant de CNN, vous pourrez les combiner comme un puzzle.
Chaque couche transmet les données significatives à la couche suivante dans l'ordre. À mesure que le niveau progresse, le réseau peut apprendre des niveaux de fonctionnalités plus élevés.
Prenant comme exemple la discrimination des fruits, la première couche détecte la couleur et la forme, la couche suivante les combine pour détecter le bruit, et à mesure que cela devient plus profond, il devient possible de détecter les caractéristiques des fruits et même les variétés. Il peut y avoir.
Comme on le voit dans l'exemple de convolution mentionné ci-dessus, la détection est effectuée à partir d'une zone locale à travers un filtre, de sorte que la position de l'objet n'est pas déplacée.
Autrement dit, la fonction peut être détectée n'importe où dans les données d'entrée. C'est ce qu'on appelle l'immuabilité mobile.
En ce qui concerne l'invariance à la rotation et l'agrandissement / réduction, il est nécessaire de concevoir une telle augmentation de ces données par l'expansion et l'apprentissage des données.
CNN est composé d'une combinaison de couches, de fonctions d'activation et de certains paramètres.
Le remplissage à zéro est le remplissage de 0 autour de la carte d'entités d'entrée. Le remplissage signifie des marges, ce qui présente les avantages suivants.
・ Étant donné que le nombre de convolutions pour les données de bord augmente, les caractéristiques de bord seront également prises en compte. -Depuis que le nombre d'opérations de convolution augmente, de nombreuses mises à jour de paramètres sont exécutées. ・ Vous pouvez ajuster la taille du noyau et le nombre de couches. -Étant donné que la taille de sortie diminue progressivement dans la couche Convolution et la couche Pooling, le nombre de couches peut être augmenté en augmentant la taille avec un remplissage nul.
Stride est littéralement stride. Jusqu'à présent, le filtre était appliqué à des intervalles de 1 pixel = la foulée est de 1. Si vous l'appliquez à des intervalles de 2 pixels, la foulée sera de 2.
C'est la dernière couche de CNN pour la discrimination d'image.
La "couche de pliage" et la "couche de regroupement" qui ont été utilisées jusqu'à présent se présentent essentiellement sous la forme d'un tableau d'images d'entrée. Afin de classer l'image d'entrée, il est nécessaire de convertir la forme de l'image en la forme qui peut produire une sortie unidimensionnelle.
CNN aplatit les données d'image en un vecteur de colonne après une certaine convolution et mise en commun. S'il devient plat, il peut être hérité par le calque masqué et le calque de sortie.
La couche Fully Connected prend un vecteur unidimensionnel comme valeur d'entrée et génère un vecteur unidimensionnel. De cette manière, CNN extrait les caractéristiques prédominantes de l'image d'entrée avant de la transmettre au réseau de neurones par anticipation, afin qu'elles puissent être classées à l'aide de la méthode softmax.
La couche de regroupement est généralement utilisée après la couche convolutionnelle. Cette couche compresse les données d'entrée.
Plus la résolution est élevée, plus il y a de bruit. La mise en commun consiste à réduire la résolution en réduisant et en redimensionnant tout en conservant les fonctionnalités. La couche Pooling est généralement appliquée après la couche Convolutoin. Les informations sont compressées et sous-échantillonnées pour transformer les données d'entrée en une forme plus gérable.
Les avantages suivants sont obtenus par compression, et il fonctionne pour détecter les entités dans la couche Convolution et la couche Pooling. ・ Robustesse améliorée (moins sensible aux changements de position infimes) ・ Supprimez dans une certaine mesure le surapprentissage ・ Le coût de calcul peut être supprimé
En enquêtant et en résumant cette fois, j'ai pu comprendre le CNN que j'utilisais avec désinvolture. Je n'ai qu'une idée approximative de la formule gorigori, mais je pense que je peux enfin rentrer chez moi.
<a target = "_ blank" href = "https://www.amazon.co.jp/gp/product/4839970270/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4839970270&linkCode=as2&tag=samuragbim-28 > Apprenez en bougeant avec TensorFlow et Keras ~ Mécanisme d'apprentissage en profondeur ~ Explication approfondie du réseau neuronal convolutif ~ (série Compass Books) <img src = "// ir-jp.amazon-adsystem.com/e/ir?t = samuragouchim-22 & l = am2 & o = 9 & a = 4839970270 "width =" 1 "height =" 1 "border =" 0 "alt =" "style =" border: none! Important; margin: 0px! Important; "/> ・ Cliquez ici pour les images [Convolutional Neural Networks (CNNs / ConvNets)] (https://cs231n.github.io/convolutional-networks/) ・ Comprendre le réseau neuronal convolutif classique à partir de zéro