web-dev-qa-db-ja.com

3つの(RGB)チャネルを持つ画像の畳み込みはどのように計算されますか?

単一のチャネル画像(5x5)があるとします。

A = [ 1 2 3 4 5
      6 7 8 9 2
      1 4 5 6 3
      4 5 6 7 4
      3 4 5 6 2 ]

そしてフィルターK(2x2)

K = [ 1 1
      1 1 ]

畳み込みを適用する例(最初の2x2をAから取得しましょう)は次のようになります。

1*1 + 2*1 + 6*1 + 7*1 = 16

これは非常に簡単です。ただし、マトリックスAに深度係数を導入しましょう。つまり、ディープネットワーク(深度= 512の可能性があります)の3チャネルまたはconvレイヤーのRGB画像です。同じフィルターでたたみ込み演算をどのように実行しますか? 同様のワークアウトは、RGBの場合に非常に役立ちます。

16
Aragorn

それらは、1つではなく3つの行列を取得することを除いて、単一チャネル画像で行う方法とまったく同じです。 これ は、CNNの基礎についての講義ノートであり、参考になると思います。

7
Lifu Huang

いくつかの行列Aによって与えられる3チャンネル(RGB)画像があるとしましょう

 
 A = [[[198 218 227] 
 [196 216 225] 
 [196 214 224] 
 ... 
 ... 
 [185 201 217] 
 [176 192 208] 
 [162 178 194]] 
 

とぼかしカーネル

 
 K = [[0.1111、0.1111、0.1111]、
 [0.1111、0.1111、0.1111]、
 [0.1111、0.1111、0.1111]] 
 
#実際には0.111〜= 1/9です
 

下の画像に示すように、畳み込みを表現できます convolution of RGB channel

画像を見るとわかるように、各チャネルは個別に畳み込まれ、その後結合されてピクセルを形成しています。

8
Muthukrishnan

RGBのような入力の場合、フィルターは実際には2 * 2 * 3であり、各フィルターは1つのカラーチャネルに対応するため、3つのフィルター応答が得られます。これら3つを合計すると、バイアスとアクティブ化によって1つに流れます。最後に、これは出力マップの1ピクセルです。

7
flankechen