畳み込みは「画像を平坦化」しますか?


8

マルチチャネル画像に適用したときに、深層学習の畳み込みがどのように機能するかについての良い説明を探しています。たとえば、RGBの3つのチャネルを持つ100 x 100ピクセルの画像があるとします。入力テンソルのサイズは100 x 100 x 3になります。

Nフィルターとストライド1を使用して畳み込みを適用すると、出力次元は次のようになります。

100 x 100 x 3 x N?

または

100 x 100 x N?

言い換えると、適用される畳み込みは画像を「平坦化」しますか、それともチャネルごとに畳み込みを適用しますか?

回答:


7

私が見た画像を処理するCNNのすべての実装では、任意のレイヤーの出力は

Width x Height x Channels

またはいくつかの順列。これは入力と同じ次元数であり、畳み込み層によって追加の次元は追加されません。CNNレイヤーの出力の各フィーチャーマップチャネルは、複数の2Dカーネル(入力レイヤーの各チャネルに1つ)の結果を追加することによって作成された「平坦化された」2D配列です。

通常、グレースケールの入力画像でもWidth x Height x 1、同じパターンに適合し、同じレイヤーモデルを使用できるように表現されることが期待されます。

標準の2D +チャンネル入力レイヤーを3D +チャンネルレイヤーに変換するレイヤーデザインを構築することは完全に実現可能です。これは私が以前に行ったことはありませんが、特定の問題に役立つ可能性があることを否定することはできません。

また、ビデオに適用されたCNNで3D +チャネルのたたみ込みが見られる場合もありますが、その場合、構造は次のようになります。

Width x Height x Frames x Channels

まことにありがとうございます。私は実際に、たたみ込みカーネルの形状を含む別の良い説明をここに見つけました:リンク
David Ruiz

2

選択するフィルターの数によって異なります。64個のフィルターを選択したとします。

ウェイトテンソルの形状は[3、3、3、64](3番目の3は入力層のチャネル数、64は出力層のチャネル数)であり、バイアステンソルの形状[64]

Pad = "SAME"の場合、出力は224 * 224 * 3 = 224 * 224 * 64の入力画像のストライド1

Pad = "Valid"の場合、出力は224 * 224 * 3 = 221 * 221 * 64の入力画像に対してストライド1

これで221 * 221 * 64の入力により、次のレイヤーで128のフィルターを作成する場合、-重みベクトル形状は[3、3、64、128]となり、-バイアスvecotr形状は[128]となります。

および出力形状-パッド= "SAME"の場合[221、221、128]-パッド= "有効"の場合[198、198、128]ストライド= [1,1,1,1]を考慮

これらの結果は、layername.get_shape()を使用してグラフを作成するときに確認できます。


1
技術的には、OPの質問に対する答えはフィルターの数に依存しません。したがって、最初の文は変更/明確化に関係している可能性があります。ただし、値の例は有用であり、特にウェイト配列の形状を明確にします。
Neil Slater

1

深層学習における畳み込みの出力次元は複数の要因に依存します

  1. フィルターのサイズ(カーネル)
  2. パディング(画像の周囲にゼロを追加するかどうか、およびその数)
  3. 使用するフィルターの数
  4. ストライド

最も単純な依存関係は、フィルターの数への依存ですN。出力に含まれる機能マップの数が表示されます。RGBチャネル、つまり3の入力の場合、出力の場合、この数は自由に選択できます。

次の要素はゼロパディングです。(3,3)のフィルターサイズと「有効な」パディングを使用する場合、つまり画像の周囲にゼロを追加しないと、dimensionの出力になります。

(100, 100, 3) -> (98, 98, N)

1のストライドを使用しているため、画像の端にある画像を横切って各方向にフィルターを移動すると、98ステップ後にフィルターが境界にぶつかります。

ただし、「SAME」パディングを使用する場合は、フィルターサイズを補正します(フィルターサイズが(3,3)で、画像の周りのゼロの1行に対応する場合)。

(100, 100, 3) -> (100, 100, N)

たとえば、ストライドが2の場合、フィルターの位置を2ピクセルシフトします。したがって、あなたは得る

(100, 100, 3) -> (50, 50, N)

1

RGBの3つのチャネルは、異なるカーネルによって畳み込まれ、各機能マップに追加されます。したがって、出力の最初のレイヤーとして100 x 100 x Nになります。

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