Quelle est la différence entre la convolution dilatée et la déconvolution?

11

Ces deux opérations de convolution sont très courantes dans le deep learning en ce moment.

J'ai lu sur la couche convolutionnelle dilatée dans cet article: WAVENET: UN MODÈLE GÉNÉRATIF POUR L'AUDIO BRUT

et la déconvolution est dans cet article: Réseaux entièrement convolutifs pour la segmentation sémantique

Les deux semblent sur-échantillonner l'image mais quelle est la différence?

Shamane Siriwardhana
la source

Réponses:

9

En quelque sorte des termes mécanistes / picturaux / basés sur l'image:

Dilatation: ### VOIR COMMENTAIRES, TRAVAILLER À CORRIGER CETTE SECTION

La dilatation est en grande partie la même que la convolution ordinaire (tout comme la déconvolution), sauf qu'elle introduit des lacunes dans ses noyaux, c'est-à-dire qu'un noyau standard glisserait généralement sur des sections contiguës de l'entrée, son homologue dilaté peut, par exemple, "encercler" une plus grande partie de l'image - tout en ne disposant que d'autant de poids / entrées que la forme standard.

(Notez bien, alors que la dilatation injecte des zéros dans son noyau afin de diminuer plus rapidement les dimensions faciales / résolution de sa sortie, transposer par convolution injecte des zéros dans son entrée afin d' augmenter la résolution de sa sortie.)

Pour rendre cela plus concret, prenons un exemple très simple: disons
que vous avez une image 9x9, x sans remplissage. Si vous prenez un noyau 3x3 standard, avec la foulée 2, le premier sous-ensemble de préoccupation de l'entrée sera x [0: 2, 0: 2], et les neuf points dans ces limites seront pris en compte par le noyau. Vous balayez ensuite x [0: 2, 2: 4] et ainsi de suite.

De toute évidence, la sortie aura des dimensions faciales plus petites, en particulier 4x4. Ainsi, les neurones de la couche suivante ont des champs récepteurs de la taille exacte de ces noyaux. Mais si vous avez besoin ou désirez des neurones avec une connaissance spatiale plus globale (par exemple, si une caractéristique importante n'est définissable que dans des régions plus grandes que celle-ci), vous devrez convoluer cette couche une deuxième fois pour créer une troisième couche dans laquelle le champ récepteur efficace est une certaine union des couches précédentes rf.

Mais si vous ne voulez pas ajouter plus de couches et / ou si vous pensez que les informations transmises sont trop redondantes (c'est-à-dire que vos champs récepteurs 3x3 dans la deuxième couche ne contiennent en réalité qu'une quantité "2x2" d'informations distinctes), vous pouvez utiliser un filtre dilaté. Soyons extrêmes à ce sujet pour plus de clarté et disons que nous utiliserons un filtre 9x9 à 3 cadrans. Maintenant, notre filtre "encerclera" la totalité de l'entrée, nous n'aurons donc pas à la faire glisser du tout. Cependant, nous ne prendrons encore que 3x3 = 9 points de données de l'entrée, x , généralement:

x [0,0] U x [0,4] U x [0,8] U x [4,0] U x [4,4] U x [4,8] U x [8,0] U x [8,4] U x [8,8]

Maintenant, le neurone dans notre couche suivante (nous n'en aurons qu'une) aura des données "représentant" une partie beaucoup plus grande de notre image, et encore une fois, si les données de l'image sont très redondantes pour les données adjacentes, nous aurions bien pu conserver la mêmes informations et appris une transformation équivalente, mais avec moins de couches et moins de paramètres. Je pense que dans les limites de cette description , il est clair que tout définissable comme rééchantillonnage, nous sommes ici sous - échantillonnage pour chaque noyau.


Fractionnée ou transposée ou "déconvolution":

Ce type est encore bien loin de la convolution. La différence est, encore une fois, que nous passerons d'un volume d'entrée plus petit à un volume de sortie plus important. OP n'a posé aucune question sur ce qu'est le suréchantillonnage, donc je vais économiser un peu de largeur, cette fois-ci et passer directement à l'exemple pertinent.

Dans notre cas 9x9 d'avant, disons que nous voulons maintenant suréchantillonner à 11x11. Dans ce cas, nous avons deux options communes: nous pouvons prendre un noyau 3x3 et avec la foulée 1 et le balayer sur notre entrée 3x3 avec 2-padding afin que notre première passe soit sur la région [left-pad-2: 1, above-pad-2: 1] puis [left-pad-1: 2, above-pad-2: 1] et ainsi de suite et ainsi de suite.

Alternativement, nous pouvons également insérer un remplissage entre les données d'entrée et balayer le noyau dessus sans autant de remplissage. Il est clair que nous allons parfois être nous en ce qui concerne les exactement les mêmes points d'entrée plus d'une fois pour un seul noyau; c'est là que le terme "à pas fractionnés" semble plus raisonné. Je pense que l'animation suivante (empruntée à partir d' ici et basée (je crois) sur ce travail aidera à clarifier les choses malgré ses dimensions différentes. L'entrée est bleue, les zéros et le remplissage injectés blancs et la sortie verte:

conv transposée, l'entrée est bleue, la sortie verte

Bien sûr, nous nous préoccupons de toutes les données d'entrée par opposition à la dilatation qui peut ou non ignorer complètement certaines régions. Et comme nous nous retrouvons clairement avec plus de données que nous n'en avions commencé, le «suréchantillonnage».

Je vous encourage à lire l'excellent document auquel j'ai lié pour une définition et une explication plus solides et abstraites de la convolution de transposition, ainsi que pour savoir pourquoi les exemples partagés sont des formes illustratives mais largement inappropriées pour calculer réellement la transformation représentée.

Doug Brummell
la source
1
Veuillez garder à l'esprit, je ne suis pas un expert, - juste quelqu'un qui a récemment dû distinguer ces concepts moi-même. Veuillez me faire savoir s'il y a des erreurs ou des simplifications excessives qui pourraient compromettre l'exactitude globale des réponses. Merci!
Doug Brummell
Doug Brummel Wow explique gentiment. J'avais la même idée. J'aimerais connaître votre opinion sur l'application de la convolution dilatée, comment devrions-nous commencer à appliquer cela dans CNN. Faut-il d'abord appliquer une convolution normale puis appliquer une conolution dilatée? Une autre chose que la convolution dilatée peut manquer d'informations si on ne met pas à zéro. Je pense donc que nous devrions appliquer une convolution dilatée après quelques couches de convnets normales?
Shamane Siriwardhana
Je crois que l'idée standard est d'augmenter la quantité de dilatation à l'avenir, en commençant par des filtres réguliers non dilatés pour l = 1, en se déplaçant vers des filtres à 2 puis à 3 dilatations et ainsi de suite à mesure que vous progressez dans la profondeur de votre réseau. Cela vous permet de vous assurer que toutes les données d'une couche sont transmises à la suivante (y compris, surtout, dans le réseau lui-même) tout en permettant un sous-échantillonnage exponentiellement plus rapide avec chaque couche mais sans paramètres d'augmentation. L'objectif étant de larges champs réceptifs sans sacrifier l'inclusion des données. Et oui, l'attention au rembourrage devrait être importante dès le début.
Doug Brummell
Voir [cet article] ( arxiv.org/pdf/1511.07122.pdf ), il est référencé ci-dessus et fournit un bon aperçu de ce que j'ai lu sur le sujet.
Doug Brummell
Une autre chose, ce document déclare qu'il n'y a pas de perte de résolution dans un schéma de dilatation si croissant ... Je suppose que je me méfie simplement des autres pertes que je pourrais couvrir sous "résolution". Bien sûr, si vous pouvez remplacer un groupe de couches conv avec moins de couches dilatées et maintenir la précision, tant mieux, vous devriez absolument le faire. Mais pour moi (et je vais devoir revenir sur les livres à ce sujet), je pense aux pertes potentielles dans le cas où vous architectez dès le départ avec dilatation ...
Doug Brummell
5

Bien que les deux semblent faire la même chose, qui consiste à suréchantillonner une couche, il y a une marge claire entre elles.

On parle d'abord de convolution dilatée

J'ai trouvé ce joli blog sur le sujet ci-dessus. Donc, si j'ai bien compris, cela ressemble plus à l'exploration des points de données d'entrée d'une manière large . Ou augmenter le champ récepteur de l'opération de convolution.

Voici un diagramme de convolution dilaté du papier .

Image 3

C'est plus une convolution normale, mais aide à capturer de plus en plus de contexte global à partir de pixels d'entrée sans augmenter la taille des paramètres. Cela peut également aider à augmenter la taille spatiale de la sortie. Mais l'essentiel ici est que cela augmente la taille du champ récepteur de façon exponentielle avec le nombre de couches. Ceci est très courant dans le domaine du traitement du signal.

Ce blog explique vraiment ce qui est nouveau dans la convolution dilatée et comment cela est comparé à la convolution normale.

Blog: Convolutions dilatées et convolutions factorisées Kronecker

Je vais maintenant expliquer ce qu'est la déconvolution

C'est ce qu'on appelle la convolution transposée. Ceci est égal à la fonction que nous avons utilisée pour la convolution dans la rétropropagation.

Simplement dans backprop, nous distribuons les gradients d'un neurone dans la carte des caractéristiques de sortie à tous les éléments dans les champs récepteurs, puis nous résumons également les gradients pour l'endroit où ils coïncident avec les mêmes éléments récepteurs

Voici une bonne ressource avec des photos .

L'idée de base est donc que la déconvolution fonctionne dans l'espace de sortie. Pas de pixels d'entrée. Il essaiera de créer des dimensions spatiales plus larges dans la carte de sortie. Ceci est utilisé dans les réseaux neuronaux entièrement convolutifs pour la segmentation sémantique .

Donc, plus de Deconvolution est une couche de suréchantillonnage apprenable.

Il essaie d'apprendre à suréchantillonner tout en combinant avec la perte finale

C'est la meilleure explication que j'ai trouvée pour la déconvolution. Cours 13 en cs231, à partir du 21.21 .

Shamane Siriwardhana
la source
Pourriez-vous expliquer comment la convolution dilatée aide à augmenter la taille spatiale de la sortie? Il semble exiger encore plus de remplissage que les convolutions traditionnelles, donc pire en ce qui concerne la taille de sortie.
wlnirvana