鏈接:https://arxiv.org/pdf/1911.08609.pdf

近年來, 卷積神經網絡 (CNN)已經主宰了計算機視覺領域。自 AlexNet 誕生以來,計算機視覺社區已經找到了一些能夠改進 CNN 的設計,讓這種骨幹網絡變得更加強大和高效,其中比較出色的單個分支網絡包括 Network in Network、VGGNet、ResNet、DenseNet、ResNext、MobileNet v1/v2/v3 和 ShuffleNet v1/v2。近年來同樣吸引了研究社區關注的還有多分辨率骨幹網絡。爲了能夠實現多分辨率學習,研究者設計出了模塊內複雜的連接來處理不同分辨率之間的信息交換。能夠有效實現這種方法的例子有 MultiGrid-Conv、OctaveConv 和 HRNet。這些方法在推動骨幹網絡的設計思想方面做出了巨大的貢獻。

爲了設計出更高效的 CNN,主流的發展方向有兩個:神經架構搜索(Neural Architecture Search,NAS)和網絡剪枝(Network Pruning,NP)。NAS 的思路是:給定限量的計算資源,自動確定最佳的網絡連接方式、模塊設計和 超參數 超參數 搜索(Hyperparameter searching)是機器學習領域內一大經典的研究主題,本文所指的 NAS 僅限定於搜索神經網絡的連接方式和模塊設計。NP 的思路是:給定一個經過預訓練的網絡,使用能夠移除不重要連接的自動算法,從而降低計算和參數量。

不同於搜索連接方式的 NAS 以及 NP,EfficientNet 則爲骨幹網絡提供了聯合 超參數 :深度縮放因子 d、寬度縮放因子 w、輸入分辨率縮放因子 r,這被稱爲複合縮放因子。基於 MobileNet v3 的一種變體,這些聯合搜索的縮放因子讓 EfficientNet 系列網絡在計算成本(MAdds)或參數數量方面比所有之前的骨幹網絡高效 5 到 10 倍。

作者認爲目前實現高效卷積網絡的工作流程可以分成兩步:1)設計一種網絡架構;2)對該網絡中的連接進行剪枝。

在第一步,作者研究了人類專家設計的架構與搜索得到的架構之間的共同模式:對於每種骨幹網絡,其架構都是由其普通模塊和歸約模塊(reduction block)的設計所確定的。他們的具體操作是在每一階段開始時插入一個歸約模塊,然後反覆堆疊普通模塊。每一階段都重複多次,則每一階段普通模塊的數量可能各不相同。作者將這種設計模式稱爲單調設計(Monotonous Design,下圖 3)

圖 3: 單調設計。

舉例來說,ResNet 是單調重複 Bottleneck 模塊,ShuffleNet 是單調重複 ShuffleBlock,MobileNet v2/v3 和 EfficientNet 是單調重複 Inverted Residual Block(MBBlock),NASNet 是重複 Normal Cell,FBNet 是重複 MBBlock 的一種有不同 超參數 的變體。作者表示,目前所有主流的網絡模塊都保證了完整的信息交換。

第二步會將某些連接剪枝去掉,這樣就不能保證每個模塊都有完整的信息交換了。

Facebook AI 的研究者在這篇論文中通過在網絡設計步驟中考慮剪枝,爲圖像識別任務設計了一種更高效的網絡。他們創造了一種新的模塊設計方法:Idle。在 Idle 設計中,輸入的一個子空間是不會進行變換的:它只是會閒置並被直接傳遞給輸出(下圖 1)。

圖 1: Idle 的設計思路。 Idle 設計中的信息交換應用在 Idle 模塊之外。

他們還突破了當前先進架構的單調設計限制,並將新提出的非單調式組成方法稱爲混合組成(Hybrid Composition/HC)方法(下圖 4)。

圖 4: 混合組成。

初始的結果與預期相符:如果單調地使用 IdleBlock 構建一個網絡,則我們會得到一個準確度損失在可接受範圍內的已剪枝網絡。如果使用 IdleBlock(和 MBBlock)進行混合構建,能夠在顯著節省計算的同時極大降低準確度損失。但結果中還有出乎意料的發現:通過利用 IdleBlock 混合組合後節省的計算來繼續加大網絡深度就可以得到同等計算下新的 SOTA 網絡結構——而無需複雜的多分辨率設計或神經架構搜索。

Idle 與 IdleBlock 的設計

關鍵的卷積模塊設計

下面簡要展示了過去幾種關鍵的卷積構建模塊設計示意圖:

Bottleneck 模塊的目標是減少空間卷積的計算量。其中每個模塊都由經過擴展的輸入和輸出構成,沒有非線性。殘差連接位於經過擴展的表徵之間。

圖 5: Bottleneck 模塊。

逆向殘差連接模塊(Inverted Residual Block,MBBlock)的目標是從經過擴展的投射中提取出豐富的空間信息。其中每個模塊都由較窄的輸入和輸出構成,沒有非線性。殘差連接位於經過收窄的表徵之間。

圖 6: 逆向殘差連接模塊。

ShuffleBlock v1 是 Bottleneck 模塊的一種擴展。其未來減少收窄後的表徵計算,引入一種分組式逐點運算,並在後面使用了通道混洗操作。

圖 7: ShuffleBlock v1。

ShuffleBlock v2 移除了分組式逐點運算,而是使用分割來獲取收窄的表徵。類似於 Bottleneck 模塊和 ShuffleBlock v1,每個都由經過擴展的輸入和輸出構成。

圖 8: ShuffleBlock v2。

Idle 設計

這篇論文提出了一種新的設計模式:Idle,其目標是將輸入的一個子空間直接傳遞到輸出張量,而不經歷任何變換。上圖 1 展示了 Idle 和網絡剪枝的思路。作者在 Idle 設計中引入了一個 Idle 因子 α ∈ (0, 1),它也可以被視爲剪枝因子。給定一個有 C 個通道的輸入張量x,張量會被切分爲兩個分支:一個是包含 C · (1 − α) 個通道的主動分支 x_1,這會輸出一個 C ·(1−α) 個通道的張量y_1;另一個是有 C · α 個通道的 Idle 分支 x_2,它會被直接複製到有 C 個通道的輸出張量y。

Idle 設計與 Residual connection, Dense connection 和 ShuffleBlock v2 的區別請參考原文。

IdleBlock

首先,作者給出了在 ShuffleBlock v1/v2 和 MBBlock 上得到的一些直觀結果和實驗經驗教訓:

  • 需要在經過擴展的特徵圖上應用深度卷積(MobileNet v1 對比 MobileNet v2);

  • 分組卷積是不必要的(ShuffleNet v1 對比 ShuffleNet v2);

  • 通道混洗操作對各種加速器並不友好,應避免使用。

基於這些經驗教訓,本文提出了 MBBlock 的一種 Idle 化版本:IdleBlock。IdleBlock 有兩種變體。如果在基於兩個分支構建輸出張量時使用的連接函數是 concat(y1, x2),則稱之爲 L-IdleBlock(下圖 9);而如果使用的連接函數是 concat(x2, y1),則稱之爲 R-IdleBlock。如果是信息交換模塊之後緊跟着一個 IdleBlock,則 L-IdleBlock 和 R-IdleBlock 是等效的。當堆疊兩個或多個 IdleBlock 時,L/R-IdleBlock 單元的混合不同於 L/R-IdleBlock 單元的單調組成。 

圖 9: L-IdleBlock。

混合組成網絡

混合組成(HC)是一種全新的非單調式網絡組成方法。

在混合組成中,網絡的每個階段都使用多種類型的構建模塊進行非單調的組成。這隻有當不同模塊的輸入和輸出維度限制一樣時才能實現。

在使用 IdleBlock 的案例中,IdleBlock 和 MBBlock 都滿足混合組成的輸入和輸出約束。此外,一旦實現了 IdleBlock 和 MBBlock 的混合化,MBBlock 中的首個逐點卷積運算就可以幫助我們交換 IdleBlock 的兩個分支的信息,而無需像在 ShuffleBlock 中一樣執行顯式的通道混洗操作。

但是,混合組成又帶來了另外的問題。如果一個網絡階段包含 n 個 MBBlock 單元,則該 Idle 網絡中 MBBlock 和 IdleBlock 的放置方式有 2^n 種候選組合,但需要探索的只是這些候選組合中的一小部分。

爲了解決這個難題,研究者探索了 MBBlock 與 IdleBlock 的三種不同的混合組成配置:Maximum、None 和 Adjacent。具體解釋請參閱原論文。

實驗

作者基於 ImageNet 2012分類數據集進行了實驗,結果表明了使用 IdleBlock 的混合組成的有效性。

表 1: 在 MobileNet v3 上應用不同混合組成配置的結果。 ★表示使用分佈式訓練。 None 配置是標準的 MobileNet v3。 Adjacent + 1 IdleBlock L/R 是用一個 L-IdleBlock 和一個 R-IdleBlock 替換一個 MBBlock 的配置。 當使用 IdleBlock 添加或替換 MBBlock 時,都使用了與被替換的 MBBlock 同樣的 SE、通道和激活設置。

表 2: 在 MobileNet v3 上使用 IdleBlock 的混合組成與 SOTA 人類專家設計的網絡與 NAS 網絡之間的比較。 新方法的結果表示爲 HC(M=x, I=y): M 是 MBBlock 的總數,I 是 IdleBlock 的總數。 ★表示使用了分佈式訓練。

表 3: 在 EfficientNet-B0 上應用不同混合組成配置的結果。 如 MobileNet v3 實驗一樣,SE、通道、非線性激活和 DropConnect 設置與被替換的 MBBlock 一樣。

表 4: 使用了混合組成的 Efficient-B0 與當前最佳方法的比較。 ★ 表示新方法的結果; ◇表示來自 GluonCV 的結果; □ 表示使用 320 × 320 分辨率的圖像訓練和測試的網絡。

另外,作者也進行了一些控制變量實驗研究,讓新方法的有效性得到了進一步的驗證。

相關文章