卷積和反卷積

2021-08-21 05:55:17 字數 1091 閱讀 6636

n=((image_h + 2*pad_h – kernel_h)/stride_h+ 1)*((image_w +2*pad_w – kernel_w)/stride_w + 1)

image_h:輸入影象的高度

image_w:輸入影象的寬度

pad_h:在輸入影象的高度方向兩邊各增加pad_h個單位長度(因為有兩邊,所以乘以2)

pad_w:在輸入影象的寬度方向兩邊各增加pad_w個單位長度(因為有兩邊,所以乘以2)

kernel_h:卷積核的高度

kernel_w:卷積核的寬度

stride_h:高度方向的滑動步長;

stride_w:寬度方向的滑動步長。

目前使用得最多的deconvolution有2種,上文都已經介紹。 

方法1:full卷積, 完整的卷積可以使得原來的定義域變大

方法2:記錄pooling index,然後擴大空間,再用卷積填充

輸入:2x2, 卷積核:4x4, 滑動步長:3, 輸出:7x7

即輸入為2x2的經過4x4的卷積核進行步長為3的反卷積的過程

1.輸入每個畫素進行一次full卷積,根據full卷積大小計算可以知道每個畫素的卷積後大小為 1+4-1=4, 即4x4大小的特徵圖,輸入有4個畫素所以4個4x4的特徵圖

2.將4個特徵圖進行步長為3的fusion(即相加); 例如紅色的特徵圖仍然是在原來輸入位置(左上角),綠色還是在原來的位置(右上角),步長為3是指每隔3個畫素進行fusion,重疊部分進行相加,即輸出的第1行第4列是由紅色特陣圖的第一行第四列與綠色特徵圖的第一行第一列相加得到,其他如此類推。

可以看出翻捲積的大小是由卷積核大小與滑動步長決定, in是輸入大小, k是卷積核大小, s是滑動步長, out是輸出大小

得到 out = (in - 1) * s + k

上圖過程就是, (2 - 1) * 3 + 4 = 7

卷積和反卷積(deconv)的正向

提取區域性區域內的特徵 輸入 輸出feature 長 寬 的計算 區域性連線 對輸入的部分區域提取 影象資料在空間上與距離較近的區域有關,與距離較遠的基本無關,所以神經元只需接受區域性輸入 權重共享 有多個卷積核,每個生成乙個新的feature map 影象 新的feature map 圖形 上的每...

反卷積 轉置卷積

搞明白了卷積網路中所謂deconv到底是個什麼東西後,不寫下來怕又忘記,根據參考資料,加上我自己的理解,記錄在這篇部落格裡。第一次看到deconv這個詞,以為deconv的結果就是卷積的逆,覺得神奇,不禁產生了 哦?轉置的卷積就可以求逆了嗎?這樣的想法,然後在matlab裡面實驗求證,我還記得當時以...

轉置卷積 反卷積

借鑑於此個部落格,寫的非常好 轉置卷積 transposed convolution 也叫做反卷積 deconvolution pytorch中可以使用torch.nn.convtranspose2d 來呼叫,caffe中對應的轉置卷積層為deconv layer 作用 在 中用於對影象上取樣。操作...