關於深度可分離卷積(dsc)與傳統卷積間差別的一點點思考,望各位大佬指正。
dsc是將conv對spatial(receptive-field-wise)和semantic(channel-wise)的同時學習給一分為二了。
在分開的這兩個階段中,stage 1. depthwise conv用通道為1的多個「薄」卷積核僅學習各個input通道上的空間特徵;stage 2. pointwise conv,也即1 *1 conv或者pixelwise conv,用多個這樣的「厚」且「尖」的卷積核逐點進行channel manipulation,即由input channel數向output channel數的轉化。
相比之下,dsc之所以可以降低params,是因為迴避了(k * k) *( m * n)這個大連乘。前乙個括號中是spatial-wise,後乙個括號中是semantic-wise operations。要知道,m * n在乙個很深的網路中將會是乙個非常的的數字。
dsc所涉及的引數量變為,(k * k * m) + (1 * 1 * m * n),前乙個括號是stage 1 spatial conv,後乙個括號是是stage 2 semantic conv。可見,k * k僅連乘了m,而將m * n這個負擔交給 1 * 1 來弱化,變k * k 與 m * n之間的乘法為加法。
引數減少,dsc的filter能夠capture、learn、extract的feature就變弱了。why?因為傳統conv的filter所學得的feature是立體的、即有空間描述,又有語義深度,即,filter本身就是乙個k * k * m的tensor,它所表徵represent的特徵一定更為豐富。反觀dsc中,一不存在完整的k * k * m的filter,只有分開的k * k * 1 filter和1 * 1 * m filter。這種割裂、強行分離,破壞了cnn本質的compositional屬性。上一層得到的m-channel的feature作為本層的輸入,應當被一次性地用乙個compact的filter去學習其中蘊含的spatial-semantic特徵,而非先spatial後semantic。
僅僅是個人的理解和主觀臆斷,大佬們見笑了 : d.
深度可分離卷積
下面這個文章介紹了深度可分離卷積是怎麼做的 本文的很多內容都是在這兩個文章的基礎上整理的。卷積基礎 描述乙個二維矩陣,使用row col。三維的,使用channel row col。四維則多了乙個引數 batch channel row col。batch channel row col的邏輯順序則...
深度可分離卷積
如果乙個卷積核代表乙個影象的屬性的話,上圖的方法就只能提取到乙個屬性。那麼如果想要多個屬性就需要多個卷積核 上圖中是最常見的卷積方法,使用多個卷積核來提取多個屬性。但是存在引數量過大的情況 先用三個卷積核對三個通道分別卷積,再對得到的結果進行1x1的卷積,這時候只要增加1 1卷積核的個數就能對應的增...
深度可分離卷積
3.實際應用 假設輸入層為乙個大小為64 64畫素 三通道彩色。經過乙個包含4個filter的卷積層,最終輸出4個feature map,且尺寸與輸入層相同。整個過程可以用下圖來概括 卷積層共有4個filters,每個filter有3個kernel,每個kernel的大小為3x3,因此卷積層的引數數...