可分離卷積 輕量級卷積神經網路

2021-10-06 23:51:06 字數 2039 閱讀 7879

任何看過mobilenet架構的人都會遇到可分離卷積(separable convolutions)這個概念。但什麼是「可分離卷積」,它與標準的卷積又有什麼區別?可分離卷積主要有兩種型別:

空間可分離卷積(spatial separable convolutions)

深度可分離卷積(depthwise separable convolutions)

從概念上講,這是兩者中較容易的乙個,並說明了將乙個卷積分成兩部分(兩個卷積核)的想法,所以我將從這開始。 不幸的是,空間可分離卷積具有一些顯著的侷限性,這意味著它在深度學習中沒有被大量使用。

空間可分卷積之所以如此命名,是因為它主要處理影象和卷積核(kernel)的空間維度:寬度和高度。 (另乙個維度,「深度」維度,是每個影象的通道數)。

空間可分離卷積簡單地將卷積核劃分為兩個較小的卷積核。 最常見的情況是將3x3的卷積核劃分為3x1和1x3的卷積 核,如下所示:

圖1:在空間上分離3x3核心

空間可分卷積的主要問題是並非所有卷積核都可以「分離」成兩個較小的卷積核。 這在訓練期間變得特別麻煩,因為網路可能採用所有可能的卷積核,它最終只能使用可以分成兩個較小卷積核的一小部分。

與空間可分離卷積不同,深度可分離卷積與卷積核無法「分解」成兩個較小的核心。 因此,它更常用。 這是在keras.layers.separableconv2d或tf.layers.separable_conv2d中看到的可分離卷積的型別。

深度可分離卷積之所以如此命名,是因為它不僅涉及空間維度,還涉及深度維度(通道數量)。 輸入影象可以具有3個通道:r、g、b。 在幾次卷積之後,影象可以具有多個通道。 你可以將每個通道想象成對該影象特定的解釋說明(interpret); 例如,「紅色」通道解釋每個畫素的「紅色」,「藍色」通道解釋每個畫素的「藍色」,「綠色」通道解釋每個畫素的「綠色」。 具有64個通道的影象具有對該影象的64種不同解釋。

類似於空間可分離卷積,深度可分離卷積將卷積核分成兩個單獨的卷積核,這兩個卷積核進行兩個卷積:深度卷積和逐點卷積。 但首先,讓我們看看正常的卷積是如何工作的。

在第一部分,深度卷積中,我們在不改變深度的情況下對輸入影象進行卷積。我們使用3個形狀為5x5x1的核心。

圖6:深度卷積,使用3個核心將12x12x3影象轉換為8x8x3影象 。

每個5x5x1核心迭代影象的乙個通道(注意:乙個通道,不是所有通道),得到每25個畫素組的標量積,得到乙個8x8x1影象。將這些影象疊加在一起可以建立乙個8x8x3的影象。

記住,原始卷積將12x12x3影象轉換為8x8x256影象。目前,深度卷積已經將12x12x3影象轉換為8x8x3影象。現在,我們需要增加每個影象的通道數。

逐點卷積之所以如此命名是因為它使用了乙個1x1核函式,或者說是乙個遍歷每個點的核函式。該核心的深度為輸入影象有多少通道;在我們的例子中,是3。因此,我們通過8x8x3影象迭代1x1x3核心,得到8x8x1影象。

圖7:逐點卷積,將乙個3通道的影象轉換為乙個1通道的影象

我們可以建立256個1x1x3核心,每個核心輸出乙個8x8x1影象,以得到形狀為8x8x256的最終影象。

就是這樣!我們把卷積分解成兩部分:深度卷積和逐點卷積。更抽象地說,如果原始卷積函式是12x12x3 - (5x5x3x256)→12x12x256,我們可以將這個新的卷積表示為12x12x3 - (5x5x1x1) - > (1x1x3x256) - >12x12x256。

我們來計算一下計算機在原始卷積中要做的乘法的個數。有256個5x5x3核心可以移動8x8次。這是256 x3x5x5x8x8 = 1228800乘法。

深度可分離卷積神經網路和標準卷積神經網路

深度可分離卷積神經網路是有moblienet引出來的概念。mobilenet是為了在手機等嵌入式上可以執行計算所提出的一種卷積神經網路。這種網路的特點是參數量少,對硬體資源要求相對低。參數量少是因為使用了深度可卷積神經網路代替了標準卷積神經網路。雖然計算量降低了,但是同時準確性也降低了。這是在準確性...

深度可分離卷積網路

以 3,64,64 的input為例,假設我們要得到 4,64,64 的output.以3x3卷積核為例.常規的卷及操作如下圖所示 參數量共計3 x 3 x 3 x 4 108.深度可分離卷積可分為2個部分 常規卷積,卷積核是作用於所有的depth方向的.depthwise conv對不同chann...

深度可分離卷積

下面這個文章介紹了深度可分離卷積是怎麼做的 本文的很多內容都是在這兩個文章的基礎上整理的。卷積基礎 描述乙個二維矩陣,使用row col。三維的,使用channel row col。四維則多了乙個引數 batch channel row col。batch channel row col的邏輯順序則...