dilated convolutions 擴張卷積

2022-08-20 15:09:12 字數 1250 閱讀 3095

最近在閱讀《context encoding for semantic segmentation》中看到應用了dilated convolutions。

擴張卷積與普通的卷積相比,除了卷積核的大小以外,還有乙個擴張率(dilation rate)引數,主要用來表示擴張的大小。擴張卷積與普通卷積的相同點在於,卷積核的大小是一樣的,在神經網路中即引數數量不變,區別在於擴張卷積具有更大的感受野。感受野是卷積核在影象上看到的大小,例如3×3

'>3×3

3×3卷積核的感受野大小為9。3×

3'>(a) 普通卷積,1-dilated convolution,卷積核的感受野為3×3

=9'>3×3=9

3×3=9。 

(b) 擴張卷積,2-dilated convolution,卷積核的感受野為7×7

=49'>7×7=49

7×7=49。 

(c) 擴張卷積,4-dilated convolution,卷積核的感受野為15×15

=225

'>15×15=225

15×15=225。

擴充套件卷積在保持引數個數不變的情況下增大了卷積核的感受野,同時它可以保證輸出的特徵對映(feature map)的大小保持不變。乙個擴張率為2的3×3卷積核,感受野與5×5的卷積核相同,但引數數量僅為9個,是5×5卷積引數數量的36

%'>36%。36%

'>dilated的好處是不做pooling損失資訊的情況下,加大了感受野,讓每個卷積輸出都包含較大範圍的資訊。在影象需要全域性資訊或者語音文字需要較長的sequence資訊依賴的問題中,都能很好的應用dilated conv。

可以形象的做個解釋:

對於標準的k*k卷積操作,stride為s,分三種情況:

(1) s>1,即卷積的同時做了downsampling,卷積後影象尺寸減小;

(2) s=1,普通的步長為1的卷積,比如在tensorflow中設定padding=same的話,卷積的影象輸入和輸出有相同的尺寸大小;

(3) 0而dilated conv不是在畫素之間padding空白的畫素,而是在已有的畫素上,skip掉一些畫素,或者輸入不變,對conv的kernel引數中插一些0的weight,達到一次卷積看到的空間範圍變大的目的。

當然將普通的卷積stride步長設為大於1,也會達到增加感受野的效果,但是stride大於1就會導致downsampling,影象尺寸變小。

人臉壓縮與擴張

這個人臉原本是左邊壓縮右邊擴張,經過下面程式處理,變成了左邊擴張右邊壓縮,然後進行插值,用的是效果比較差的線性插值。雖然有一點失真,效果還是看得出來是有的,而且可能因為我是隨便取的乙個角度a還有插值選得不好。a imread f myorl2 s1 6.pgm sina 0.5 y b y1 d f...

opencv 侵蝕和擴張

形態作業 形態操作將結構元素應用於輸入影象並生成輸出影象。最基本的形態作用是 侵蝕和擴張。消除噪音 隔離單個元素並連線影象中的不同元素。查詢影象中的強度凸點或孔 擴張 該操作包括將影象與某些核心進行卷積,其可以具有任何形狀或尺寸,通常為正方形或圓形。核心具有定義的錨點,通常是核心的中心。當核心在影象...

空洞 擴張dilated 卷積

也可以根據字面意思把dilated這個詞直接翻譯成膨脹卷積或者擴張卷積。這個概念就得重新回到感受野這個話題上,這裡補充一些感受野的知識點。感受野可以理解為乙個神經元接觸到原始特徵圖的區域範圍,感受野越大,神經網路越可以看到更加巨集觀的特徵。這個也很好理解,如果關注乙個畫素,只能看到影象的顏色資訊,但...