萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

 2019-02-20 09:44:00.0

按:深度學習中的各種卷積網絡大家知多少?對於那些聽說過卻又對它們沒有特別清晰的認識的小夥伴們,Kunlun Bai 這篇文章非常值得一讀。Kunlun Bai 是一位人工智能、機器學習、物體學以及工程學領域的研究型科學家,在本文中,他詳細地介紹了 2D、3D、1x1 、轉置 、空洞(擴張)、空間可分離、深度可分離、扁平化、 分組等十多種卷積網絡類型。編譯如下。

(本部分爲下篇,點擊查看上篇內容)

7. 空洞卷積(擴張卷積)

下面這兩篇論文對空洞卷積(Dilated Convolution)進行了介紹:

  • 《使用深度卷積網絡和全連接 CRF 做語義圖像分割》(Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs,https://arxiv.org/abs/1412.7062

  • 《通過空洞卷積做多規模的上下文聚合》(Multi-scale context aggregation by dilated convolutions,https://arxiv.org/abs/1511.07122

空洞卷積也稱作擴張卷積(Atrous Convolution)。

這是一個標準的離散卷積:

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

標準卷積

空洞卷積如下:

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

當 l=1 時,空洞卷積就變成了一個標準卷積。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

直觀上,空洞卷積通過在卷積核部分之間插入空間讓卷積核「膨脹」。這個增加的參數 l(空洞率)表明了我們想要將卷積核放寬到多大。雖然各實現是不同的,但是在卷積核部分通常插入 l-1 空間。下圖顯示了當 l-1,2,4 時的卷積核大小。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

空洞卷積的感受野。本質上是在不增加額外的計算成本的情況下觀察感受野。

在圖像中,3 x 3 的紅點表明經過卷積後的輸出圖像的像素是 3 x 3。雖然三次空洞卷積都得出了相同維度的輸出圖像,但是模型觀察到的感受野(receptive field)是大不相同的。l=1 時,感受野爲 3 x 3;l=2 時,感受野是 7 x 7;l=3 時,感受野增至 15x15。有趣的是,伴隨這些操作的參數數量本質上是相同的,不需要增加參數運算成本就能「觀察」大的感受野。正因爲此,空洞卷積常被用以低成本地增加輸出單元上的感受野,同時還不需要增加捲積核大小,當多個空洞卷積一個接一個堆疊在一起時,這種方式是非常有效的。

《通過空洞卷積做多規模的上下文聚合》的論文作者在多層空洞卷積以外創建了一個網絡,其中的空洞率 l 每層都以指數級的方式增長。結果,當參數數量每層僅有直線式的增長時,有效的感受野實現了指數型的增長。

該論文中,空洞卷積被用於系統地聚合多規模的上下文信息,而不需要損失分辨率。該論文表明,其提出的模塊提高了當時(2016 年)最先進的語義分割系統的準確率。大家可以閱讀這篇論文獲得更多信息。

8. 可分離卷積

可分離卷積用於一些神經網絡架構,例如 MobileNet(該架構論文地址:https://arxiv.org/abs/1704.04861)。可分離卷積分爲空間可分離卷積(spatially separable convolution)和深度可分離卷積(depthwise separable convolution)。

8.1 空間可分離卷積

空間可分離卷積在圖像的 2D 空間維度上執行,例如高和寬兩個維度。從概念上來看,顧名思義,空間可分離卷積將卷積分解爲兩項單獨的操作。下面所展示的案例中,一個卷積核爲 3x3 的 Sobel 卷積核拆分成了一個 3x1 卷積核和一個 1x3 卷積核。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

一個卷積核爲 3x3 的 Sobel 卷積核拆分成了一個 3x1 卷積核和一個 1x3 卷積核

在卷積中,3x3 卷積核可以直接對圖像進行卷積操作。在空間可分離卷積中,首先由 3x1 卷積覈對圖像進行卷積,之後再應用 1x3 卷積核。在執行相同的操作中,這就要求 6 個而不是 9 個參數了。

此外,比起卷積,空間可分離卷積要執行的矩陣乘法運算也更少。舉一個具體的案例,在卷積核爲 3x3 的 5x5 圖像上做卷積,要求橫向掃描 3 個位置(以及縱向掃描 3 個位置)上的卷積核,共有 9 個位置,如下圖標出的 9 個點所示。在每個位置都進行 9 次元素級別的乘法運算,共執行 9 x 9 = 81 次運算。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

針對空間可分離卷積,另一方面,我們先在 5x5 圖像上應用一個 3x1 的過濾器,這樣的話就能橫向掃描 5 個位置的卷積核以及縱向掃描 3 個位置的卷積核,總共 5 x 3=15 個位置,如下圖所標的點所示。這樣的話就共要進行 15 x 3 = 45 次乘法運算。現在得到的是一個 3 x 5 的矩陣,這個矩陣經過 1 x 3 卷積核的卷積操作——從橫向上的 3 個位置以及縱向上的 5 個位置來掃描該矩陣。對於這 9 個位置中的每一個,都進行了 3 次元素級別的乘法運算,這個步驟總共要求 9 x 3=27 次乘法運算。因此,總體上,該空間可分離卷積共進行了 45 + 27 = 72 次乘法運算,也比標準的卷積所要進行的乘法運算次數要少。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

有 1 個通道的空間可分離卷積

讓我們稍微概括一下上面的案例。假設我們現在在 m x m 卷積核、卷積步長=1 、填充=0 的 N x N 圖像上做卷積。傳統的卷積需要進行 (N-2) x (N-2) x m x m 次乘法運算,而空間可分離卷積只需要進行 N x (N-2) x m + (N-2) x (N-2) x m = (2N-2) x (N-2) x m 次乘法運算。空間可分離卷積與標準的卷積的計算成本之比爲:

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

對於圖像大小 N 大於過濾器大小(N >> m),這個比率就變成了 2 / m,這就意味着在這種漸進情況(N >> m)下,對於一個 3x3 的過濾器,空間可分離卷積與標準的卷積之間的計算成本比率爲 2/3;對於一個 5x5 的過濾器,比率爲 2/5;對於一個 7x7 的過濾器,比如爲 2/7,以此類推。

雖然空間可分離卷積節省了計算成本,但是它很少應用於深度學習中。一個主要的原因是,並不是所有的卷積核都能被拆分爲 2 個更小的卷積核。如果我們用這種空間可分離卷積來取代所有傳統的卷積,就會束縛我們去搜尋訓練期間所有可能存在的卷積核,因爲這個訓練結果可能是還只是次優的。

8.2 深度可分離卷積

現在,讓我們移步到深度可分離卷積,它在深度學習中的應用要更普遍得多(例如在 MobileNet 和 Xception 中)。深度可分離卷積由兩步組成:深度卷積以及 1x1 卷積。

在介紹這些步驟前,值得回顧一下前面部分所提到的 2D 卷積核 1x1 卷積。讓我們先快速過一下標準的 2D 卷積。舉一個具體的案例,假設輸入層的大小爲 7 x 7 x 3(高 x 寬 x 通道),過濾器大小爲 3 x 3 x 3,經過一個過濾器的 2D 卷積後,輸出層的大小爲 5 x 5 x 1(僅有 1 個通道)。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

使用 1 個過濾器做標準的 2D 卷積來創建一個 1 層的輸出

一般來說,兩個神經網絡層間應用了多個過濾器,現在假設過濾器個數爲 128。128 次 2D 卷積得到了 128 個 5 x 5 x 1 的輸出映射。然後將這些映射堆疊爲一個大小爲 5 x 5 x 128 的單個層。空間維度如高和寬縮小了,而深度則擴大了。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

使用 128 個過濾器做標準的 2D 卷積來創建一個 128 層的輸出

接下來看看使用深度可分離卷積如何實現同樣的轉換。

首先,我們在輸入層上應用深度卷積。我們在 2D 卷積中分別使用 3 個卷積核(每個過濾器的大小爲 3 x 3 x 1),而不使用大小爲 3 x 3 x 3 的單個過濾器。每個卷積核僅對輸入層的 1 個通道做卷積,這樣的卷積每次都得出大小爲 5 x 5 x 1 的映射,之後再將這些映射堆疊在一起創建一個 5 x 5 x 3 的圖像,最終得出一個大小爲 5 x 5 x 3 的輸出圖像。這樣的話,圖像的空間維度縮小了嗎,但是深度保持與原來的一樣。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

深度可分離卷積—第一步:在 2D 卷積中分別使用 3 個卷積核(每個過濾器的大小爲 3 x 3 x 1),而不使用大小爲 3 x 3 x 3 的單個過濾器。每個卷積核僅對輸入層的 1 個通道做卷積,這樣的卷積每次都得出大小爲 5 x 5 x 1 的映射,之後再將這些映射堆疊在一起創建一個 5 x 5 x 3 的圖像,最終得出一個大小爲 5 x 5 x 3 的輸出圖像。

深度可分離卷積的第二步是擴大深度,我們用大小爲 1x1x3 的卷積核做 1x1 卷積。每個 1x1x3 卷積覈對 5 x 5 x 3 輸入圖像做卷積後都得出一個大小爲 5 x 5 x1 的映射。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

這樣的話,做 128 次 1x1 卷積後,就可以得出一個大小爲 5 x 5 x 128 的層。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

深度可分離卷積完成這兩步後,同樣可以將一個 7 x 7 x 3 的輸入層轉換爲 5 x 5 x 128 的輸出層。

深度可分離卷積的完整過程如下圖所示:


萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

深度可分離卷積的完整過程

因此,做深度可分離卷積的優勢是什麼?高效!相比於 2D 卷積,深度可分離卷積的執行次數要少得多。

讓我們回憶一下 2D 卷積案例中的計算成本:128 個 3x3x3 的卷積核移動 5x5 次,總共需要進行的乘法運算總數爲 128 x 3 x 3 x 3 x 5 x 5 = 86,400 次。

那可分離卷積呢?在深度卷積這一步,有 3 個 3x3x3 的卷積核移動 5x5 次,總共需要進行的乘法運算次數爲 3x3x3x1x5x5 = 675 次;在第二步的 1x1 卷積中,有 128 個 3x3x3 的卷積核移動 5x5 次,總共需要進行的乘法運算次數爲 128 x 1 x 1 x 3 x 5 x 5 = 9,600 次。因此,深度可分離卷積共需要進行的乘法運算總數爲 675 + 9600 = 10,275 次,花費的計算成本僅爲 2D 卷積的 12%。

因此對於任意大小的圖像來說,應用深度可分離卷積能節省多少次計算呢?我們稍微概括一下上面的案例。假設輸入圖像大小爲 H x W x D,2D 卷積的卷積步長爲 1,填充爲 0,卷積核大小爲 h x h x D(兩個 h 相等)、個數爲 Nc。2D 卷積後,大小爲 H x W x D 的輸入層最終轉換爲大小爲(H-h+1)x(W-h+1)x Nc 的輸出層,總共需要進行的乘法運算次數爲:Nc x h x h x D x (H-h+1) x (W-h+1)。

針對同樣的轉換,深度可分離卷積總共需要進行的乘法運算次數爲:D x h x h x 1 x (H-h+1) x (W-h+1) + Nc x 1 x 1 x D x (H-h+1) x (W-h+1) = (h x h + Nc) x D x (H-h+1) x (W-h+1)。

深度可分離卷積與 2D 卷積之間的乘法運算次數之比爲:

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

對於大部分現代框架而言,輸出層往往都有許多個通道,例如幾百甚至幾千個通道。對於 Nc >> h 的層,上面的表達式會縮短爲 1/h/h,這就意味着對於這個漸進的表達式而言,如果使用的過濾器大小爲 3 x 3,2D 卷積需要進行的乘法運算次數比深度可分離卷積多出 9 次;使用大小爲 5 x5 的過濾器,則要多出 25 次。

使用深度可分離卷積有什麼缺點嗎?當然有。深度可分離卷積會減少卷積中的參數個數,這樣的話,對於一個小的模型,如果採用深度可分離模型來踢打 2D 模型,該模型的能力就會被大爲削弱。結果,該模型也會變成次優的模型。然而,如果恰當使用,深度可分離卷積可以提高效率而不會明顯損害模型的性能。

9. 扁平化卷積

《將扁平化卷積神經網絡應用於前饋加速》(Flattened convolutional neural networks for feedforward acceleration,https://arxiv.org/abs/1412.5474)這篇論文對扁平化卷積(Flattened convolutions)進行了介紹。直觀上,這種卷積的思路就是應用過濾器分離,即將標準的分離器拆分爲 3 個 1D 分離器,而不是直接應用一個標準的卷積過濾器來將輸入層映射爲輸出層。這個思路類似於前部分所提到的空間可分離卷積,其中的一個空間過濾器近似於兩個 rank-1 過濾器。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

圖片源自:https://arxiv.org/abs/1412.5474

需要注意的一點事,如果標準卷積的過濾器是 rank-1 過濾器,這樣的過濾器可以被拆分爲 3 個 1D 過濾器的交叉乘積,但是這是一個前提條件並且標準過濾器的固有 rank 往往比現實應用中的更高。正如論文中所指出的:「隨着分類問題的難度增加,解決該問題還需要更多的關鍵部分... 深度網絡中學習過濾器具有分佈的特徵值,並且將分離直接用於過濾器會導致明顯的信息丟失。」

爲了減輕這類問題,論文限制了感受野的關係從而讓模型可以根據訓練學習 1D 分離的過濾器。這篇論文聲稱,通過使用由連續的 1D 過濾器組成的扁平化網絡在 3D 空間的所有方向上訓練模型,能夠提供的性能與標準卷積網絡相當,不過由於學習參數的顯著減少,其計算成本要更低得多。

10. 分組卷積

2012 年的一篇 AlexNet 論文(ImageNet Classification with Deep Convolutional Neural Networks,https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)對分組卷積(Grouped convolution)進行了介紹。採用這種卷積的主要原因是爲了讓網絡用有限的記憶(1.5GB 記憶/GPU)在兩個 GPU 上進行訓練。下圖的 AlexNet 現實了大部分層的兩條分離的卷積路線,正在進行兩個 GPU 的模型並行化計算。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

圖片源自:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

這裏我描述的是分組卷積是如何實現的。首先,傳統的 2D 卷積步驟如下圖所示。在這個案例中,通過應用 128 個過濾器(每個過濾器的大小爲 3 x 3 x 3),大小爲 7 x 7 x 3 的輸入層被轉換爲大小爲 5 x 5 x 128 的輸出層。針對通用情況,可概括爲:通過應用 Dout 個卷積核(每個卷積核的大小爲 h x w x Din),可將大小爲 Hin x Win x Din 的輸入層轉換爲大小爲 Hout x Wout x Dout 的輸出層。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

標準 2D 卷積

在分組卷積中,過濾器被拆分爲不同的組,每一個組都負責具有一定深度的傳統 2D 卷積的工作。下圖的案例表示得更清晰一些。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)


拆分爲 2 個過濾組的分組卷積

上圖表示的是被拆分爲 2 個過濾器組的分組卷積。在每個過濾器組中,其深度僅爲名義上的 2D 卷積的一半(Din / 2),而每個過濾器組都包含 Dout /2 個過濾器。第一個過濾器組(紅色)對輸入層的前半部分做卷積([:, :, 0:Din/2]),第二個過濾器組(藍色)對輸入層的後半部分做卷積([:, :, Din/2:Din])。最終,每個過濾器組都輸出了 Dout/2 個通道。整體上,兩個組輸出的通道數爲 2 x Dout/2 = Dout。之後,我們再將這些通道堆疊到輸出層中,輸出層就有了 Dout 個通道。

10.1 分組卷積 VS 深度卷積

你可能已經觀察到了分組卷積和深度可分離卷積中用到的深度卷積之間的某些聯繫和區別。如果過濾器組的數量與輸入層的通道數相同,每個過濾器的深度就是 Din / Din = 1,其與深度卷積中的過濾器深度相同。

從另一個角度來說,每個過濾器組現在包含 Dout / Din 個過濾器。總體而言,其輸出層的深度就是 Dout,這就與深度卷積的輸出層深度不同,深度卷積不改變層的深度,但隨後深度可分離卷積中的 1 x 1 卷積會加大層的深度。

執行分組卷積有如下幾個優勢:

第一個優勢是訓練的高效性。由於卷積被拆分到幾條路線中,每條路線都由不同的 GPU 分別進行處理。這一過程就允許模型以平行的方式在多個 GPU 上進行訓練。比起在一個 GPU 上一個一個地訓練模型,這種在多個 GPU 上的模型並行化訓練方式每一步都可以給網絡餵養更多的圖像。模型並行化被認爲比數據並行化更佳,後者將數據集進行拆分,然後對每一批數據進行訓練。不過,當每批數據的大小過小時,我們執行的工作基本上是隨機的,而不是批量梯度下降。這就會造成訓練速度變慢或聚合效果變差的結果。

對於訓練非常深度的神經網絡,分組卷積變得很重要,如下圖中 ResNeXt 所示。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

圖片源自:https://arxiv.org/abs/1611.05431

第二個優勢是模型更加高效,例如,當過濾器組數增加時,模型參數就會減少。在前一個案例中,在標準的 2D 卷積中,過濾器有 h x w x Din x Dout 個參數,而在拆分爲 2 個過濾器組的分組卷積中,過濾器僅有 (h x w x Din/2 x Dout/2) x 2 個參數:參數數量減少了一半。

第三個優勢是給人帶來了些驚喜的。分組卷積能提供比標準 2D 卷積更好的模型。另一篇很棒的博客

「A Tutorial on Filter Groups (Grouped Convolution)」闡述了這一點。這裏僅提取了文章的部分內容,大家可前往 https://blog.yani.io/filter-group-tutorial/ 閱讀全文。

其原因與稀疏的過濾器有關。下面的圖像就是相鄰層的過濾器之間的相互關係,這個關係是稀疏的。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

在 CIFAR10 訓練的 Network-in-Network 模型中相鄰層的過濾器之間的相關性矩陣。高相關的過濾器對更亮,而低相關過濾器對更暗。圖片源自:https://blog.yani.io/filter-group-tutorial/

那針對分組卷積的相關性映射是怎麼樣的呢?

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

當採用 1、2、4、8 和 16 個過濾器組訓練時,在 CIFAR10 訓練的 Network-in-Network 模型中相鄰層的過濾器之間的相關性。圖片源自:https://blog.yani.io/filter-group-tutorial/

上圖表示的就是模型採用 1、2、4、8 和 16 個過濾器組訓練時,相鄰層的過濾器的相互關係。這篇文章提出了一個推論:「過濾器組的作用就是學習通道維度上的塊對角結構的稀疏性... 在對過濾器進行了分組的網絡中,高相關性的過濾器以更結構化的方式學習。結果,不要求學習的過濾器關係也不再需要用參數進行表示,這就顯著減少了網絡中的參數數量,並且在減少參數的過程中不容易過度擬合,因此這種類似正則化的效果可以讓優化器學習更準確、更有效的深度網絡。」

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

過濾器分離:正如論文作者所指出的,過濾器組似乎將學習的過濾器分爲兩個不同的組:黑白過濾器和彩色過濾器。圖片源自:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

此外,每個過濾器組都學習數據獨一無二的表示。正如 AlexaNet 這篇論文的作者所提到的,過濾器組似乎將學習的過濾器組織成了兩個不同的組:黑白濾鏡和彩色濾鏡。

11. 混洗分組卷積

曠視研究院的 ShuffleNet 論文(ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices,https://arxiv.org/abs/1707.01083)對混洗分組卷積(Shuffled grouped convolution)進行了介紹。ShuffleNet 是一種計算高效的卷積架構,專爲計算能力十分有限的移動設備(如 10–150 MFLOPs)設計。

混洗分組卷積背後的思路與分組卷積(應用於 MobileNet 、ResNeXt 等網絡)以及深度可分離卷積(應用於 Xception)背後的思路相關。

總的來說,混洗分組卷積包括分組卷積和通道混洗(channel shuffling)。

在分組卷積部分,我們瞭解到了過濾器被拆分爲不同的組,每個組都負責擁有一定深度的傳統 2D 卷積的工作,顯著減少了整個操作步驟。在下圖這個案例中,假設過濾器分成了 3 組。第一個過濾器組對輸入層的紅色部分做卷積;第二個和第三個過濾器組分別對輸入層的綠色和藍色部分做卷積。每個過濾器組中的卷積核深度僅爲輸入層整個通道的 1/3。在這個案例中,進行第一個分組卷積 GConv1 後,輸入層被映射到中間的特徵映射上,之後特徵映射又通過第一個分組卷積 GConv2 被映射到輸出層上。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

分組卷積雖然計算高效,但它也存在問題,即每個過濾器分組僅對從前面層的固定部分向後傳遞的信息進行處理。在上面這個圖像的案例中,第一個過濾器組(紅色)僅處理從輸入通道的前 1/3 部分向後傳遞的信息;藍色過濾器組僅處理從輸入通道的後 1/3 部分向後傳遞的信息。這樣的話,每個過濾器組就僅限於學習一些特定的特徵,這種屬性就阻礙了訓練期間信息在通道組之間流動,並且還削弱了特徵表示。爲了克服這一問題,我們可以應用通道混洗。

通道混洗的思路就是混合來自不同過濾器組的信息。下圖中,顯示了應用有 3 個過濾器組的第一個分組卷積 GConv1 後所得到的特徵映射。在將這些特徵映射餵養到第二個分組卷積之前,先將每個組中的通道拆分爲幾個小組,然後再混合這些小組。

萬字長文帶你看盡深度學習中的各種卷積網絡(下篇)

通道混洗

經過這種混洗,我們再接着如常執行第二個分組卷積 GConv2。但是現在,由於經過混洗的層中的信息已經被混合了,我們本質上是將特徵映射層的不同小組餵養給了 GConv2 中的每個組。結果,不僅信息可以在通道組間進行流動,特徵表示也得到增強。

12. 逐點分組卷積

ShuffleNet 論文(ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices,https://arxiv.org/abs/1707.01083)同樣也對逐點分組卷積(Pointwise grouped convolution)進行了介紹。一般針對 MobileNet 或 ResNeXt 中的分組卷積,分組在 3x3 的空間卷積而不是 1x1 卷積上執行。

ShuffleNet 這篇論文認爲 1x1 卷積的計算成本也很高,提議也對 1x1 卷積進行分組。逐點分組卷積,顧名思義,就是針對 1x1 卷積進行分組操作,這項操作與分組卷積的相同,僅有一項更改——就是在 1x1 過濾器而非 NxN 過濾器 (N>1) 執行。

在該論文中,作者使用了我們都有所瞭解的 3 種卷積: (1) 混洗分組卷積; (2) 逐點分組卷積; 以及 (3) 深度可分離卷積。這種架構設計能明顯地減少計算量同時還能保持準確性。在實際的移動設備上,ShuffleNet 的分類錯誤與 AlexNet 的相當。然而,從使用 AlexNe 的 720 MFLOPs 到使用 ShuffleNet 的 40–140 MFLOPs,計算成本明顯下降。在面向移動設備的卷積神經網絡領域,ShuffleNe 以相對較小的計算成本以及良好的模型性能廣受歡迎。

其他參考博文&文章

論文

via:https://towardsdatascience.com/a-comprehensive-introduction-to-different-types-of-convolutions-in-deep-learning-669281e58215 

文章來源:雷鋒網