顯著提升影像識別網路效率,Facebook提出IdleBlock混合組成方法

  • 2019 年 11 月 29 日
  • 筆記

Facebook AI 近日一項研究提出了一種新的卷積模組 IdleBlock 以及使用該模組的混合組成(HC)方法。實驗表明這種簡潔的新方法不僅能顯著提升網路效率,而且還超過絕大多數神經網路結構搜索的工作,在同等計算成本下取得了 SOTA 表現,相信這項研究能給影像識別網路的開發、神經網路結構搜索甚至其他領域網路設計思路帶來一些新的啟迪。

鏈接: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 解析度的影像訓練和測試的網路。

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