CNNでは、アップサンプリングと転置畳み込みは同じですか?


12

「アップサンプリング」と「転置たたみ込み」の両方の用語は、「デコンボリューション」を行うときに使用されます(<-良い用語ではありませんが、ここで使用します)。もともと同じ意味だと思っていましたが、これらの記事を読んでみると違うようです。誰かが明確にしていただけますか?

  1. 転置畳み込み:畳み​​込みニューラルネットワークを介して損失を伝播するときに使用できるように見えます。

    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、セクション4「畳み込み層の場合...」

  2. アップサンプリングは:私たちはconvnet-decovnet構造の大きな入力に小さい入力からアップサンプリングしたいときに我々はそれを使用するように思えます。

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


1
datascience.stackexchange.com/questions/15863/…にクロスポストされました。クロスポストはしないで、質問したいサイトを決めてください。
Scortchi-モニカを回復

@Scortchiああ、彼らはリンクされています!?申し訳ありませんが、データサイエンスの1つは削除します。
RockTheStar

面白いポストいわゆるデコンボリューションに
ハンス

回答:


9

詳しい回答はありませんので、頑張ります。

最初に、そのような層の動機がどこから来たかを理解しましょう:たとえば、たたみ込みオートエンコーダー。畳み込みオートエンコーダーを使用して、元の画像を再構築するようにオートエンコーダーをトレーニングしながら、画像の特徴を抽出できます。(これは監視なしの方法です。)

このようなオートエンコーダには2つの部分があります。画像から特徴を抽出するエンコーダと、これらの特徴から元の画像を再構築するデコーダです。エンコーダーとデコーダーのアーキテクチャは通常ミラーリングされます。

たたみ込みオートエンコーダでは、エンコーダはたたみ込み層とプーリング層で機能します。あなたはこれらがどのように機能するか知っていると思います。デコーダはエンコーダをミラーリングしようとしますが、「すべてを小さくする」のではなく、画像の元のサイズに合わせるために「すべてを大きくする」という目標があります。

たたみ込み層の反対は転置されたたたみ込み層です(deconvolutionとしても知られていますが、正確に数学的にこれは別のものです)。これらはフィルター、カーネル、ストライドを畳み込みレイヤーと同様に機能しますが、たとえば3x3入力ピクセルから1出力にマッピングする代わりに、1入力ピクセルから3x3ピクセルにマッピングします。もちろん、逆伝播も少し異なります。

プーリングレイヤーの反対はアップサンプリングレイヤーで、最も純粋な形式では画像のサイズを変更するだけです(または必要なだけピクセルをコピーします)。より高度な手法はアンプールです。これは、maxpoolingレイヤー内の最大値の場所を記憶することによりmaxpoolingを元に戻し、アンプーリングレイヤーで値をこの場所に正確にコピーします。この(https://arxiv.org/pdf/1311.2901v3.pdf)論文から引用するには:

convnetでは、最大のプーリング操作は不可逆ですが、スイッチ変数のセットの各プーリング領域内の最大値の位置を記録することにより、おおよその逆数を取得できます。deconvnetでは、アンプール操作はこれらのスイッチを使用して、上の層からの再構成を適切な場所に配置し、刺激の構造を維持します。

より技術的な入力とコンテキストについては、この非常に優れた実証的で詳細な説明をご覧ください。http//deeplearning.net/software/theano/tutorial/conv_arithmetic.html

そして、https://www.quora.com/What-is-the-difference-between-Deconvolution-Upsampling-Unpooling-and-Convolutional-Sparse-Codingを見てください


F. Chollet(Kerasの作成者)は、これは自己監視技術であると主張します。
ハンス・

6

使用しているパッケージによって異なる場合があります。

ケラでは違います。アップサンプリングは、ここで定義されhttps://github.com/fchollet/keras/blob/master/keras/layers/convolutional.pyを あなたはtensorflowバックエンドを使っている場合には、どのような実際に起こることはkerasコールがtensorflowあるresize_imagesに、本質的に補間していない機能を、トレーニング可能。

転置畳み込みはより複雑です。上記と同じpythonスクリプトで定義されています。それはテンソルフローconv2d_transpose関数を呼び出し、カーネルを持ち、トレーニング可能です。

お役に立てれば。


1

畳み込みニューラルネットワークのコンテキストでのデコンボリューションは、畳み込みを転置することと同義です。デコンボリューションは他の分野で別の意味を持つかもしれません。

転置畳み込みは、アップサンプリングを実行するための戦略の1つです。


はい私は同意する。しかし、参照がそれらを説明する方法が異なるように見えます。2番のビデオを見て、次に1番のリファレンスを見てください(個人的には、1番の説明に行きます)
RockTheStar

@RockTheStarどのコンセプトが異なって説明されていますか?畳み込みまたはアップサンプリングを転置しますか?
フランクダーノンコート16

1
No.2のビデオで説明されているアップサンプリング/デコンボリューションの概念。数分程度です。
RockTheStar

0

これは、1)転置畳み込みと2)アップサンプリング+畳み込みの違いについてのかなり良い説明です。 https://distill.pub/2016/deconv-checkerboard/

転置コンボリューションの方が効率的ですが、この記事ではチェッカーボードアーティファクトの影響を受けないため、アップサンプリング+コンボリューションを推奨しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.