圖像卷積與反捲積

聲明:本文章爲轉載文章,原文網址:https://www.cnblogs.com/raorao1994/p/9485814.html

一、圖像卷積類型

  在2維圖像卷積計算中,大致分爲full、same和valid這三類。

  1、valid卷積操作

  

            圖1 valid卷積操作

  valid卷積的圖像大小計算公式爲:滑動步長爲S,圖片大小爲N1xN1,卷積核大小爲N2xN2,卷積後圖像大小:((N1-N2)/S+1)x( (N1-N2)/S+1)

  如圖1,滑動步長爲1,圖片大小爲5x5,卷積核大小爲3x3,卷積後圖像大小:3x3

  2、same卷積操作

  

 

        圖2 same卷積操作

  .same卷積的圖像大小計算公式爲: 滑動步長爲1,圖片大小爲N1xN1,卷積核大小爲N2xN2,卷積後圖像大小:N1xN1

  same卷積會自動補全圖像,使得輸入輸出圖像保證相同大小的輸出。

  3、full卷積操作

  

        圖3 same卷積操作

  

  valid卷積的圖像大小計算公式爲:滑動步長爲S,圖片大小爲N1xN1,卷積核大小爲N2xN2,卷積後圖像大小:(N1-N2)/S+1 x (N1-N2)/S+1
  如圖3,滑動步長爲1,圖片大小爲5x5,卷積核大小爲3x3,卷積後圖像大小:3x3
 
二、反捲積
  
      圖4 反捲積
    假設原圖是3X3,首先使用上採樣讓圖像變成7X7,可以看到圖像多了很多空白的像素點。使用一個3X3的卷積覈對圖像進行滑動步長爲1的valid卷積,得到一個5X5的圖像,我們知道的是使用上採樣擴大圖片,使用反捲積填充圖像內容,使得圖像內容變得豐富,這也是CNN輸出end to end結果的一種方法。
  目前使用得最多的deconvolution有2種,上文都已經介紹。 
  方法1:full卷積, 完整的卷積可以使得原來的定義域變大
  方法2:記錄pooling index,然後擴大空間,再用卷積填充
  圖像的deconvolution過程如下,

  輸入: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
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章