卷積神經網絡-深度可分離卷積

一、簡介

MobileNet架構中提出的有空間可分離卷積和深度可分離卷積,本文中我們將着重介紹深度可分離卷積實現及其意義。

二、深度可分離卷積

空間可分離卷積:
從概念上講,這是兩者中較容易的一個,並說明了將一個卷積分成兩部分(兩個卷積核)的想法,所以我將從這開始。 不幸的是,空間可分離卷積具有一些顯着的侷限性,這意味着它在深度學習中沒有被大量使用。
空間可分卷積之所以如此命名,是因爲它主要處理圖像和卷積核(kernel)的空間維度:寬度和高度。 (另一個維度,“深度”維度,是每個圖像的通道數)。
空間可分離卷積簡單地將卷積核劃分爲兩個較小的卷積核。 最常見的情況是將3x3的卷積核劃分爲3x1和1x3的卷積 核,如下所示:
在這裏插入圖片描述
深度可分離卷積:
與空間可分離卷積不同,深度可分離卷積與卷積核無法“分解”成兩個較小的內核。 因此,它更常用。 這是在keras.layers.SeparableConv2D或tf.layers.separable_conv2d中看到的可分離卷積的類型。
深度可分離卷積之所以如此命名,是因爲它不僅涉及空間維度,還涉及深度維度(信道數量)。 輸入圖像可以具有3個信道:R、G、B。 在幾次卷積之後,圖像可以具有多個信道。類似於空間可分離卷積,深度可分離卷積將卷積核分成兩個單獨的卷積核,這兩個卷積核進行兩個卷積:深度卷積和逐點卷積。
深度卷積:
在第一部分,深度卷積中,我們在不改變深度的情況下對輸入圖像進行卷積。我們使用3個形狀爲5x5x1的內核。視頻1:通過一個3通道的圖像迭代3個內核:
在這裏插入圖片描述
每個5x5x1內核迭代圖像的一個通道(注意:一個通道,不是所有通道),得到每25個像素組的標量積,得到一個8x8x1圖像。將這些圖像疊加在一起可以創建一個8x8x3的圖像。

逐點卷積:
記住,原始卷積將12x12x3圖像轉換爲8x8x256圖像。目前,深度卷積已經將12x12x3圖像轉換爲8x8x3圖像。現在,我們需要增加每個圖像的通道數。逐點卷積之所以如此命名是因爲它使用了一個1x1核函數,或者說是一個遍歷每個點的核函數。該內核的深度爲輸入圖像有多少通道;在我們的例子中,是3。因此,我們通過8x8x3圖像迭代1x1x3內核,得到8x8x1圖像。
在這裏插入圖片描述

我們可以創建256個1x1x3內核,每個內核輸出一個8x8x1圖像,以得到形狀爲8x8x256的最終圖像。

三、總結

相同的輸入,同樣是得到4張Feature map,Separable Convolution的參數個數是常規卷積的約1/3。因此,在參數量相同的前提下,採用Separable Convolution的神經網絡層數可以做的更深。深度可分離卷積的缺點是什麼?當然!因爲它減少了卷積中參數的數量,如果你的網絡已經很小,你可能會得到太少的參數,你的網絡可能無法在訓練中正確學習。然而,如果使用得當,它可以在不顯著降低效率的情況下提高效率,這使得它成爲一個非常受歡迎的選擇。

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