3. 實際應用
假設輸入層為乙個大小為64×64畫素、三通道彩色。經過乙個包含4個filter的卷積層,最終輸出4個feature map,且尺寸與輸入層相同。整個過程可以用下圖來概括:
卷積層共有4個filters,每個filter有3個kernel,每個kernel的大小為3x3,因此卷積層的引數數量為:4 x 3 x 3 x 3 = 108
深度可分離卷積將常規卷積分成兩步(depthwise convolution與pointwise convolution)來提取feature map,其優點是通過減少參數量,降低執行成本。
乙個大小為64×64畫素、三通道彩色首先經過第一次卷積運算,不同之處在於此次的卷積完全是在二維平面內進行,且filter的數量與上一層的depth相同。相當於對每個channel先進行一次卷積運算,所以乙個三通道的影象經過運算後生成了3個feature map,如下圖所示:
其中,乙個filter只有乙個kernel,每個kernel的大小為3 x 3,經過depthwise convolution後的feature map數量與輸入層的depth相同,這種運算對輸入層的每個channel進行一次單獨的卷積運算,沒有有效利用不同map在相同空間位置上的有效資訊,因此需要經過pointwise convolution來將這些map組合成新的feature map。
pointwise convolution的卷積核尺寸為1 x 1 x m,m為前一層的depth,因此該層卷積會將上一層的feature在深度上進行加權組合,生成新的feature map,有幾個filter就有幾個feature map。
普通卷積參數量:4 x 3 x 3 x 3 = 108;
深度可分離卷積參數量:3 x 3 x 3 + 4 x 3 = 39;
使用深度可分離卷積參數量大概為普通卷積的三分之一。
在產品上適配mobilenetv2時,遇到了大量的深度可分離卷積操作。mobilenet通過使用深度可分離卷積在犧牲部分精度的情況下,極大的降低了參數量。
產品原始碼似乎是通過將group引數從1改為輸入通道數來實現的深度可分離卷積。但是編譯過程中,由於修改group引數的值,該層的權重資料也擴大了group倍,導致實際編譯出來的模型比原始模型大了三倍左右,後續可能需要進行優化。
深度可分離卷積
下面這個文章介紹了深度可分離卷積是怎麼做的 本文的很多內容都是在這兩個文章的基礎上整理的。卷積基礎 描述乙個二維矩陣,使用row col。三維的,使用channel row col。四維則多了乙個引數 batch channel row col。batch channel row col的邏輯順序則...
深度可分離卷積
如果乙個卷積核代表乙個影象的屬性的話,上圖的方法就只能提取到乙個屬性。那麼如果想要多個屬性就需要多個卷積核 上圖中是最常見的卷積方法,使用多個卷積核來提取多個屬性。但是存在引數量過大的情況 先用三個卷積核對三個通道分別卷積,再對得到的結果進行1x1的卷積,這時候只要增加1 1卷積核的個數就能對應的增...
深度可分離卷積 總結
深度可分離卷積 深度卷積 depthwise convolution 逐點卷積 pointwise convolution 分組卷積 group convolution 輸入通道數c in,輸出通道數c out,將輸入feature map分為g組,每組分別卷積,最後進行拼接。分組卷積作用 引數量減...