Sind Upsampling und Transponierungsfaltung in CNN gleich?

12

Sowohl die Begriffe "Upsampling" als auch "Transponierungsfaltung" werden verwendet, wenn Sie "Entfaltung" durchführen (<- kein guter Begriff, aber lassen Sie mich ihn hier verwenden). Ursprünglich dachte ich, dass sie dasselbe bedeuten, aber es scheint mir, dass sie sich unterscheiden, nachdem ich diese Artikel gelesen habe. kann jemand bitte klarstellen?

  1. Transponieren transponieren : Es sieht so aus, als könnten wir es verwenden, wenn wir den Verlust über ein konvolutonales neuronales Netzwerk propagieren.

    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 , Abschnitt 4 "Für die Faltungsschicht ..."

  2. Upsampling : Es scheint, als würden wir es verwenden, wenn wir von kleineren Eingaben zu größeren Eingaben in der Convnet-Decovnet-Struktur ein Upsampling durchführen möchten.

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

RockTheStar
quelle
1
Cross-posted unter datascience.stackexchange.com/questions/15863/… . Bitte posten Sie nicht, sondern entscheiden Sie, auf welcher Website Ihre Frage gestellt werden soll.
Scortchi - Monica wieder einsetzen
@ Scortchi Oh, sie sind verbunden!? Entschuldigung, ich entferne den in Data Science.
RockTheStar
Ein interessanter Beitrag über sogenannte Entfaltungen
hans

Antworten:

9

Da es keine detaillierte und markierte Antwort gibt, werde ich mein Bestes geben.

Lassen Sie uns zunächst verstehen, woher die Motivation für solche Schichten kommt: zB ein Faltungsautoencoder. Sie können einen Faltungs-Autoencoder verwenden, um Bildmerkmale zu extrahieren, während Sie den Autoencoder trainieren, um das Originalbild zu rekonstruieren. (Es ist eine unbeaufsichtigte Methode.)

Ein solcher Autoencoder besteht aus zwei Teilen: dem Encoder, der die Merkmale aus dem Bild extrahiert, und dem Decoder, der das Originalbild aus diesen Merkmalen rekonstruiert. Die Architektur des Codierers und Decodierers wird normalerweise gespiegelt.

In einem Faltungs-Autoencoder arbeitet der Encoder mit Faltungs- und Pooling-Schichten. Ich gehe davon aus, dass Sie wissen, wie diese funktionieren. Der Decoder versucht, den Encoder zu spiegeln, aber anstatt "alles kleiner zu machen", hat er das Ziel, "alles größer zu machen", um der Originalgröße des Bildes zu entsprechen.

Das Gegenteil der Faltungsschichten sind die transponierten Faltungsschichten (auch als Entfaltung bekannt , aber mathematisch gesehen ist dies etwas anderes). Sie arbeiten mit Filtern, Kerneln und Schritten genau wie die Faltungsschichten, aber anstatt z. B. 3x3 Eingangspixel auf 1 Ausgang abzubilden, ordnen sie 1 Eingangspixel 3x3 Pixel zu. Natürlich funktioniert auch die Backpropagation etwas anders.

Das Gegenteil der Pooling-Ebenen sind die Upsampling- Ebenen, die in ihrer reinsten Form nur die Bildgröße ändern (oder das Pixel so oft wie nötig kopieren). Eine fortschrittlichere Technik wird unpooling die resverts maxpooling durch die Lage der Maxima in den maxpooling Schichten und in den unpooling Schichten Erinnern Sie den Wert auf genau diesem Ort kopieren. Um aus diesem Papier ( https://arxiv.org/pdf/1311.2901v3.pdf ) zu zitieren :

Im Convnet ist die maximale Pooling-Operation nicht invertierbar. Wir können jedoch eine ungefähre Umkehrung erhalten, indem wir die Positionen der Maxima innerhalb jeder Pooling-Region in einem Satz von Schaltvariablen aufzeichnen. Im Dekonvnet verwendet die Entpoolungsoperation diese Schalter, um die Rekonstruktionen aus der darüber liegenden Schicht an geeigneten Stellen zu platzieren, wobei die Struktur des Stimulus erhalten bleibt.

Weitere technische Informationen und Informationen zum Kontext finden Sie in dieser wirklich guten, demonstrativen und ausführlichen Erklärung: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html

Und werfen Sie einen Blick auf https://www.quora.com/Was-ist-die-Differenz- zwischen-Deconvolution-Upsampling-Unpooling- and-Convolutional-Sparse- Coding

Maikefer
quelle
F. Chollet (Schöpfer von Keras) würde argumentieren, dass dies eine selbstüberwachte Technik ist .
Hans
6

Dies kann von dem von Ihnen verwendeten Paket abhängen.

In Keras sind sie unterschiedlich. Upsampling wird hier definiert. Https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py Vorausgesetzt, Sie verwenden das Tensorflow-Backend, geschieht tatsächlich, dass Keras die Funktion tensorflow resize_images aufruft , was im Wesentlichen eine Interpolation ist und nicht trainierbar.

Transponierte Faltung ist mehr beteiligt. Es ist in demselben Python-Skript definiert, das oben aufgeführt ist. Es ruft die Funktion tensorflow conv2d_transpose auf , hat den Kernel und ist trainierbar.

Hoffe das hilft.

Jian
quelle
1

Entfaltung im Kontext von Faltungs-Neuronalen Netzen ist gleichbedeutend mit der Transponierung von Faltung. Entfaltung kann in anderen Bereichen eine andere Bedeutung haben .

Die Transponierungsfaltung ist unter anderem eine Strategie zur Durchführung von Upsampling.

Franck Dernoncourt
quelle
Ja, ich stimme zu. Aber die Art und Weise, wie die Referenzen sie erklären, scheint anders zu sein. Schauen Sie sich das Video in Nr. 2 an und schauen Sie sich dann die Referenzen in Nr. 1 an (persönlich gehe ich zur Erklärung Nr. 1)
RockTheStar
@RockTheStar Welches Konzept wird anders erklärt? Faltung oder Upsampling transponieren?
Franck Dernoncourt
1
das im Video in Nr. 2 erläuterte Upsampling / Deconvolution-Konzept. Es ist ungefähr ein paar Minuten.
RockTheStar
0

Hier ist eine ziemlich gute Illustration zum Unterschied zwischen 1) Transponierungsfaltung und 2) Upsampling + Faltung. https://distill.pub/2016/deconv-checkerboard/

Während die Transponierungsfaltung effizienter ist, befürwortet der Artikel Upsampling + Faltung, da sie nicht unter dem Schachbrettartefakt leidet.

Shaobo Guan
quelle