Différence entre «noyau» et «filtre» dans CNN

37

Quelle est la différence entre les termes "noyau" et "filtre" dans le contexte des réseaux de neurones à convolution?

ryguy
la source
5
Ce sont les mêmes! Le filtre ou le noyau est un simple groupe de pondérations partagées dans tout l'espace de saisie.
yasin.yazici

Réponses:

42

Dans le contexte des réseaux neuronaux convolutionnels, kernel = filter = feature detect.


Voici une excellente illustration du didacticiel d’apprentissage approfondi de Stanford (également expliqué par Denny Britz ).

entrez la description de l'image ici

Le filtre est la fenêtre coulissante jaune et sa valeur est:

[101010101]
Franck Dernoncourt
la source
2
Existe-t-il un nom spécifique pour le filtre? Comme un "flou" ou un "détecteur de bord"
Pratik Khadloya
2
@PratikKhadloya Non, ces noms sont donnés de manière subjective par les chercheurs en fonction de ce que le filtre semble détecter.
shadowtalker
1
@Frank Dernoncourt selon ce lien versdatascience.com/… ils sont différents quand nous avons plusieurs canaux. en fait, quand il y a plusieurs canaux Chaque filtre est en réalité une collection de noyaux, avec un noyau pour chaque canal d'entrée de la couche et chaque noyau étant unique. Je serais heureux d'avoir votre idée
sariii
6

Une carte de fonctionnalités est identique à un filtre ou "noyau" dans ce contexte particulier. Les poids du filtre déterminent quelles caractéristiques spécifiques sont détectées.

Ainsi, par exemple, Franck a fourni un excellent visuel. Notez que son filtre / détecteur de caractéristiques a x1 le long des éléments diagonaux et x0 tous les autres éléments. Cette pondération du noyau détecterait ainsi dans l'image des pixels ayant une valeur de 1 le long des diagonales de l'image.

Observez que la caractéristique convolue résultante montre des valeurs de 4 partout où l’image a un "1" le long des valeurs diagonales du filtre 3x3 (détectant ainsi le filtre dans cette section spécifique 3x3 de l’image), et des valeurs inférieures de 2 dans les zones de l'image où ce filtre ne correspond pas aussi fortement.

JohnnyUtah
la source
5

k×k×CCCHin×Hin×C32×32Image RVB). Il est logique d'utiliser un mot différent pour décrire un tableau 2D de poids et un autre pour la structure 3D des poids, car la multiplication a lieu entre des tableaux 2D et les résultats sont ensuite résumés pour calculer l'opération 3D.

Actuellement, il existe un problème de nomenclature dans ce domaine. Il existe de nombreux termes décrivant la même chose et même des termes utilisés indifféremment pour des concepts différents! Prenons comme exemple la terminologie utilisée pour décrire le résultat d’une couche de convolution: cartes de caractéristiques, canaux, activations, tenseurs, plans, etc.

D'après wikipedia, "Dans le traitement des images, un noyau est une petite matrice".

D'après wikipedia, "une matrice est un tableau rectangulaire organisé en lignes et en colonnes".

k1×k2×C

Eh bien, je ne peux pas dire que c'est la meilleure terminologie, mais il vaut mieux que les termes "noyau" et "filtre" soient utilisés indifféremment. De plus, nous avons besoin d’ un mot pour décrire le concept des tableaux 2D distincts qui forment un filtre.

Jim
la source
1

Les réponses existantes sont excellentes et répondent de manière exhaustive à la question. Je veux juste ajouter que les filtres dans les réseaux de convolution sont partagés sur toute l'image (c'est-à-dire que l'entrée est convolutionnée avec le filtre, comme visualisé dans la réponse de Franck). Le champ réceptif d'un neurone particulier sont toutes des unités d'entrée qui affectent le neurone en question. Le champ récepteur d'un neurone dans un réseau de convolution est généralement plus petit que celui d'un neurone dans un réseau dense, grâce aux filtres partagés (également appelé partage de paramètres ).

Le partage de paramètres confère un avantage certain aux CNN, à savoir une propriété appelée équivariance de la traduction . Cela signifie que si l'entrée est perturbée ou traduite, la sortie est également modifiée de la même manière. Ian Goodfellow donne un excellent exemple dans le Deep Learning Book concernant la manière dont les praticiens peuvent capitaliser sur l'équivariance des CNN:

Lors du traitement de données chronologiques, cela signifie que la convolution génère une sorte de chronologie indiquant le moment où différentes entités apparaissent dans l'entrée. Si nous déplaçons un événement ultérieurement dans l'entrée, la même représentation apparaîtra dans la sortie, juste plus tard. De la même manière que pour les images, convolution crée une carte en 2D de l'emplacement de certaines entités dans l'entrée. Si nous déplaçons l'objet dans l'entrée, sa représentation déplace la même quantité dans la sortie. Ceci est utile lorsque nous savons qu'une fonction d'un petit nombre de pixels voisins est utile lorsqu'elle est appliquée à plusieurs emplacements d'entrée. Par exemple, lors du traitement des images, il est utile de détecter les contours de la première couche d’un réseau de convolution. Les mêmes bords apparaissent plus ou moins partout dans l'image. Il est donc pratique de partager des paramètres sur toute l'image.

Pranav Vempati
la source