Dans CNN, le suréchantillonnage et la transposition de convolution sont-ils les mêmes?


12

Les termes «suréchantillonnage» et «convolution transposée» sont tous deux utilisés lorsque vous effectuez une «déconvolution» (<- ce n'est pas un bon terme, mais permettez-moi de l'utiliser ici). À l'origine, je pensais qu'ils signifiaient la même chose, mais il me semble qu'ils sont différents après avoir lu ces articles. quelqu'un peut-il clarifier?

  1. Transposer la convolution : on dirait que nous pouvons l'utiliser lorsque nous propageons la perte via le réseau neuronal convolutonal.

    http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/#Backward-Propagation

    https://github.com/vdumoulin/conv_arithmetic

    https://arxiv.org/pdf/1312.6034v2.pdf , section 4 "Pour la couche convolutionnelle ..."

  2. Suréchantillonnage : il semble que nous l'utilisions lorsque nous voulons suréchantillonner d'une entrée plus petite à une entrée plus grande dans la structure convnet-decovnet.

    https://www.youtube.com/watch?v=ByjaPdWXKJ4&feature=youtu.be&t=22m


1
Post -cross sur datascience.stackexchange.com/questions/15863/… . Veuillez ne pas effectuer de cross-post, mais décider sur quel site vous souhaitez poser votre question.
Scortchi - Réintégrer Monica

@Scortchi Oh, ils sont liés!? Désolé, je supprime celui de la science des données.
RockTheStar

Une intéressante après le déconvolutions soi-disant
HANS

Réponses:


9

Puisqu'il n'y a pas de réponse détaillée et marquée, je ferai de mon mieux.

Voyons d'abord d'où vient la motivation pour de telles couches: par exemple un autoencodeur convolutionnel. Vous pouvez utiliser un autoencodeur convolutif pour extraire des traits d'images tout en entraînant l'autoencodeur pour reconstruire l'image d'origine. (Il s'agit d'une méthode non supervisée.)

Un tel auto-encodeur a deux parties: l'encodeur qui extrait les caractéristiques de l'image et le décodeur qui reconstruit l'image originale à partir de ces caractéristiques. L'architecture de l'encodeur et du décodeur est généralement reflétée.

Dans un autoencodeur convolutionnel, l'encodeur fonctionne avec des couches de convolution et de mise en commun. Je suppose que vous savez comment cela fonctionne. Le décodeur essaie de refléter l'encodeur, mais au lieu de "tout réduire", il a pour objectif de "rendre tout plus grand" pour correspondre à la taille d'origine de l'image.

L'opposé des couches convolutives sont les couches de convolution transposées (également connues sous le nom de déconvolution , mais correctement, mathématiquement parlant, c'est quelque chose de différent). Ils fonctionnent avec des filtres, des noyaux, des foulées tout comme les couches de convolution mais au lieu de mapper, par exemple, des pixels d'entrée 3x3 à 1 sortie, ils sont mappés de 1 pixel d'entrée à 3x3 pixels. Bien sûr, la rétropropagation fonctionne également un peu différemment.

L'opposé des couches de mise en commun sont les couches de suréchantillonnage qui, dans leur forme la plus pure, ne redimensionnent l'image (ou copient le pixel autant de fois que nécessaire). Une technique plus avancée est le désengagement qui rétablit le maximum de covoiturage en se souvenant de l'emplacement des maxima dans les couches de maximum de covoiturage et dans les couches de non-covoiturage copiez la valeur exactement à cet emplacement. Pour citer ce document ( https://arxiv.org/pdf/1311.2901v3.pdf ):

Dans le convnet, l'opération de regroupement maximale n'est pas inversible, mais nous pouvons obtenir une inverse approximative en enregistrant les emplacements des maxima dans chaque région de regroupement dans un ensemble de variables de commutation. Dans le déconvnet, l'opération de désengagement utilise ces commutateurs pour placer les reconstructions de la couche au-dessus dans des emplacements appropriés, en préservant la structure du stimulus.

Pour plus d'informations techniques et contextuelles, jetez un œil à cette très bonne explication, démonstrative et approfondie: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html

Et jetez un œil à https://www.quora.com/What-is-the-difference-between-Deconvolution-Upsampling-Unpool-and-Convolutional-Sparse-Coding


F. Chollet (créateur de Keras) dirait qu'il s'agit d'une technique auto-supervisée .
han

6

Cela peut dépendre du package que vous utilisez.

Dans les keras, ils sont différents. Suréchantillonnage est défini ici https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py A condition que vous utilisez backend tensorflow, ce qui se passe en réalité est appels KERAS tensorflow resize_images fonction, qui est essentiellement une interpolation et non entraînable.

La convolution transposée est plus impliquée. Il est défini dans le même script python répertorié ci-dessus. Il appelle la fonction tensorflow conv2d_transpose et il a le noyau et est entraînable.

J'espère que cela t'aides.


1

La déconvolution dans le contexte des réseaux de neurones convolutionnels est synonyme de transposition de la convolution. La déconvolution peut avoir une autre signification dans d'autres domaines.

Transposer la convolution est une stratégie parmi d'autres pour effectuer un suréchantillonnage.


Oui je suis d'accord. mais il semble que la façon dont les références les expliquent est différente. Jetez un oeil à la vidéo dans le n ° 2, puis regardez les références dans le n ° 1 (Personnellement, je vais pour l'explication n ° 1)
RockTheStar

@RockTheStar Quel concept est expliqué différemment? Transposer la convolution ou le suréchantillonnage?
Franck Dernoncourt

1
le concept de suréchantillonnage / déconvolution expliqué dans la vidéo du n ° 2. C'est à peu près quelques minutes.
RockTheStar

0

voici une assez bonne illustration de la différence entre 1) convolution transposée et 2) suréchantillonnage + convolution. https://distill.pub/2016/deconv-checkerboard/

Alors que la convolution de transposition est plus efficace, l'article préconise le suréchantillonnage + convolution car il ne souffre pas de l'artefact en damier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.