當前位置:
首頁 > 知識 > 曠視科技提出新型輕量架構ShuffleNet V2:從理論複雜度到實用設計準則

曠視科技提出新型輕量架構ShuffleNet V2:從理論複雜度到實用設計準則

機器之心經授權發布

來源:曠視科技

作者:Ningning Ma、Xiangyu Zhang、Hai-Tao Zhen、Jian Sun

機器之心編譯

近日,曠視科技提出針對移動端深度學習的第二代卷積神經網路 ShuffleNet V2。研究者指出過去在網路架構設計上僅注重間接指標 FLOPs 的不足,並提出兩個基本原則和四項準則來指導網路架構設計,最終得到了無論在速度還是精度上都超越先前最佳網路(例如 ShuffleNet V1、MobileNet 等)的 ShuffleNet V2。在綜合實驗評估中,ShuffleNet V2 也在速度和精度之間實現了最佳權衡。研究者認為,高效的網路架構設計應該遵循本文提出的四項準則。本文已被 ECCV 2018 收錄。

1 簡介

深度卷積網路(CNN)的結構經過多年改進變得更加準確和快速。自 2012 年 AlexNet [1] 取得里程碑式突破,各種新型結構層出不窮,一次次刷新 ImageNet 分類準確率,這些結構包括 VGG [2]、GoogLeNet [3]、ResNet [4、5]、DenseNet [6]、ResNeXt [7]、SE-Net [8] 和神經網路架構自動搜索 [9–11]。

除了精度,計算複雜度是另一個重要的考慮因素。現實世界的任務通常是當目標平台(如硬體)和應用場景(如自動駕駛需要低延遲)既定時,在有限算力之下實現最優的精度。這催生出一系列針對輕量級架構設計和速度-精度更好權衡的研究,包括 Xception [12]、MobileNet [13]、MobileNet V2 [14]、Shu?eNet V1[15] 和 CondenseNet [16] 等等。在這些研究中,組卷積(group convolution)和深度卷積(depthwise convolution)至關重要。

度量計算複雜度的常用指標是浮點運算數,即 FLOPs。然而,FLOPs 是一種間接指標。它只是本文真正關心的直接指標(如速度或延遲)的一種近似形式,通常無法與直接指標劃等號。先前研究 [17,18,14,19] 已對這種差異有所察覺。比如,MobileNet V2 [14] 要遠快於 NASNET-A [9],但是兩者 FLOPs 相當。圖 1 (c) (d) 進一步解釋了這一現象,它表明 FLOPs 近似的網路也會有不同的速度。所以,將 FLOPs 作為衡量計算複雜度的唯一標準是不夠的,這樣會導致次優設計。

圖 1:四個網路架構在兩個硬體平台、四種不同計算複雜度上的(驗證集 ImageNet 分類)精度、速度和 FLOPs 結果。(a, c) GPU 結果,batchsize= 8。(b, d) ARM 結果,batchsize = 1。本文提出的 ShuffleNet V2(右上)在所有情況下取得了最優性能。

間接指標 (FLOPs) 和直接指標(速度)之間存在差異的原因可以歸結為兩點。首先,對速度有較大影響的幾個重要因素對 FLOPs 不產生太大作用。其中一個因素是內存訪問成本 (MAC)。在某些操作(如組卷積)中,MAC 占運行時間的很大一部分。對於像 GPU 這樣具備強大計算能力的設備而言,這就是瓶頸。在網路架構設計過程中,內存訪問成本不能被簡單忽視。另一個因素是並行度。當 FLOPs 相同時,高並行度的模型可能比低並行度的模型快得多。

其次,FLOPs 相同的運算可能有著不同的運行時間,這取決於平台。例如,早期研究 [20–22] 廣泛使用張量分解來加速矩陣相乘。但是,近期研究 [19] 發現張量分解在 GPU 上甚至更慢,儘管它減少了 75% 的 FLOPs。本文研究人員對此進行了調查,發現原因在於最近的 CUDNN [23] 庫專為 3×3 卷積優化:當然不能簡單地認為 3×3 卷積的速度是 1×1 卷積速度的 1/9。

據此,研究者提出了高效網路架構設計應該考慮的兩個基本原則:第一,應該用直接指標(例如速度)替換間接指標(例如 FLOPs);第二,這些指標應該在目標平台上進行評估。在這項研究中,作者遵循這兩個原則,並提出了一種更加高效的網路架構。

第 2 部分,作者首先分析了兩個代表性的當前最優網路 [15,14] 的運行性能,然後推導出高效網路設計的四個準則,它們揚棄了僅考慮 FLOPs 所帶來的局限性。儘管這些準則獨立於硬體平台,但研究者通過一系列可控實驗,以專用的代碼優化在兩個不同的硬體平台(GPU 和 ARM)上驗證其性能,確保本論文提出的準則是當前最佳的。

第 3 部分,研究者根據這些準則設計了一種新的網路架構。它是 ShuffleNet V1 的改進版,因此被稱為 ShuffleNet V2。第 4 部分,綜合驗證實驗的結果表明,ShuffleNet V2 在兩個平台上都比先前的網路快得多,並且更加準確。圖 1 (a) (b) 給出了對比結果的概覽。例如,給定計算複雜度預算 40M FLOPs,ShuffleNet V2 的精度比 ShuffleNet V1 高 3.5%,比 MobileNet V2 高 3.7%。

2 高效網路設計的實用準則

研究者分析了兩個移動端當前最佳網路 ShuffleNet V1 和 MobileNet V2 的運行時性能,發現它們的表現代表了當前的研究趨勢。它們的核心組件為組卷積和深度卷積,這也是其它當前最佳架構的關鍵組件,例如 ResNet、Xception、MobileNet 和 CondenseNet 等。

研究者注意到 FLOPs 僅和卷積部分相關,儘管這一部分需要消耗大部分的時間,但其它過程例如數據 I/O、數據重排和元素級運算(張量加法、ReLU 等)也需要消耗一定程度的時間。

基於以上觀察,研究者從不同層面做了運行時(速度方面)分析,並提出了設計高效網路架構需要遵循的準則:

G1. 相同的通道寬度可最小化內存訪問成本(MAC);

G2. 過度的組卷積會增加 MAC;

G3. 網路碎片化(例如 GoogLeNet 的多路徑結構)會降低並行度;

G4. 元素級運算不可忽視。

結論和討論:基於上述準則和實證研究,本文總結出一個高效的網路架構應該:(1)使用「平衡」的卷積(相同的通道寬度);(2)考慮使用組卷積的成本;(3)降低碎片化程度;(4)減少元素級運算。這些所需特性依賴於平台特徵(例如內存控制和代碼優化),且超越了理論化的 FLOPs。它們都應該在實際的網路設計中被考慮到。

近期,輕量級神經網路架構 [15,13,14,9, 11,10,12] 上的研究進展主要基於 FLOPs 間接指標,並且沒有考慮上述四個準則。例如,ShuffleNet V1 [15] 嚴重依賴組卷積(違反 G2)和瓶頸形態的構造塊(違反 G1)。MobileNet V2 [14] 使用一種倒置的瓶頸結構,違反了 G1。它在「厚」特徵圖上使用了深度卷積和 ReLU 激活函數,違反了 G4。自動生成結構 [9,10,11] 的碎片化程度很高,違反了 G3。

3 新型高效架構 Shu?eNet V2

Shu?eNet V1 回顧

Shu?eNet[15] 是一種先進的網路架構,廣泛應用於手機等低配設備。它啟發了本文工作,因此首先對其進行回顧與分析。

根據 Shu?eNet V1,輕量級網路的主要挑戰是在給定計算預算(FLOPs)時,只能獲得有限數量的特徵通道。為了在不顯著增加 FLOPs 情況下增加通道數量,Shu?eNet V1 採用了兩種技術:逐點組卷積核和類瓶頸(bottleneck-like)結構;然後引入「channel shu?e」操作,令不同組的通道之間能夠進行信息交流,提高精度。其構建模塊如圖 3(a)(b) 所示。

如第二部分所述,逐點組卷積和瓶頸結構都增加了 MAC(G1 和 G2)。這個成本不可忽視,特別是對於輕量級模型。另外,使用太多分組也違背了 G3。捷徑連接(shortcut connection)中的元素級「加法」操作也不可取 (G4)。因此,為了實現較高的模型容量和效率,關鍵問題是如何保持大量且同樣寬的通道,既沒有密集卷積也沒有太多的分組。

通道分割和 Shu?eNet V2

為此,本文引入一個簡單的操作——通道分割(channel split)。如圖 3(c) 所示。在每個單元的開始,c 特徵通道的輸入被分為兩支,分別帶有 c?c"和 c"個通道。按照準則 G3,一個分支仍然保持不變。另一個分支由三個卷積組成,為滿足 G1,令輸入和輸出通道相同。與 ShuffleNet V1 不同的是,兩個 1×1 卷積不再是組卷積。這部分是為了遵循 G2,部分是因為分割操作已經產生了兩個組。

卷積之後,把兩個分支拼接起來,從而通道數量保持不變 (G1)。然後進行與 ShuffleNet V1 相同的「Channel Shu?e」操作來保證兩個分支間能進行信息交流。

「Shuffle」之後,下一個單元開始運算。注意,Shu?eNet V1 [15] 中的「加法」操作不再存在。像 ReLU 和深度卷積這樣的操作只存在一個分支中。另外,三個連續的操作「拼接」、「Channel Shu?e」和「通道分割」合併成一個操作。根據 G4,這些變化是有利的。

對於空間下採樣,該單元經過稍微修改,詳見圖 3(d)。通道分割運算被移除。因此,輸出通道數量翻了一倍。

本文提出的構造塊 (c)(d),以及由此而得的網路,被稱之為 Shu?eNet V2。基於上述分析,本文得出結論:由於對上述四個準則的遵循,該架構設計異常高效。

上述構建模塊被重複堆疊以構建整個網路。為簡單起見,本文令 c" = c/2。整個網路結構類似於 Shuf?eNet V1(見表 5)。二者之間只有一個區別:前者在全局平均池化層之前添加了一個額外的 1×1 卷積層來混合特徵,Shu?eNet V1 中沒有該層。與 Shu?eNet V1 類似,每個構建塊中的通道數量可以擴展以生成不同複雜度的網路,標記為 0.5×、1×等。

圖 3:Shu?eNet V1 [15] 和 Shu?eNet V2 的構造塊。(a)Shu?eNet 基本單元;(b) 用於空間下採樣 (2×) 的 ShuffleNet 單元;(c) Shu?eNet V2 的基本單元;(d) 用於空間下採樣 (2×) 的 ShuffleNet V2 單元。DWConv:深度卷積 (depthwise convolution)。GConv:組卷積 (group convolution)。

表 5:Shu?eNet V2 的整體架構,複雜度包含四個級別。

圖 4:DenseNet [6] 和 Shu?eNet V2 中特徵重用模式的圖示。(a) 模型中卷積層的濾波器絕對權重平均值。像素顏色 (s,l) 編碼連接層 s 和 l 的權重的平均 L1 範數。(b) 像素顏色 (s,l) 表示直接連接 Shu?eNet V2 中模塊 s 和 l 的通道數量。所有像素值都歸一化到 [0,1] 區間。

4 實驗結果

本文的 Ablation 實驗是在 ImageNet 2012 分類數據集上展開的。按照一般原則,所有的對比網路有四種不同的計算複雜度,分別是 40,140,300 和 500+ MFLOPs。這樣的複雜度在移動端場景中很典型。超參數及其他設置與 Shu?eNet V1 一樣。本文對比的網路架構分別是 Shu?eNet V1,MobileNet V2,Xception,DenseNet。具體結果如下表所示:

表 6:大模型的結果。

表 7:Shu?eNet V2 在 COCO 目標檢測任務上的性能。輸入圖像大小是 800×1200。FLOPs 行列出了輸入圖像大小為 224×224 時的複雜度水平。至於 GPU 速度評估,批大小為 4。未測試 ARM,因為 [34] 中所需的 PSRoI 池化操作目前在 ARM 上不可行。

表 8:多個網路架構在兩個平台、四個計算複雜度級別上的(驗證集、單中心裁剪)分類誤差和速度對比。為方便起見,結果按照複雜度級別分組。GPU 的批大小是 8,ARM 的批大小是 1。除了 [*] 160 × 160 和 [**] 192 × 192,圖像大小均為 224×224。由於目前缺少高效實現,本文不提供 CondenseNets [16] 的速度測量結果。

5 結論

本文提出,網路架構設計應該考慮直接指標,比如速度,而不是間接指標,比如 FLOPs。更重要的是,本文還給出四個重要的實用設計準則,以及一個全新的架構——Shu?eNet V2,綜合實驗已經證實了其有效性。研究者希望本文的工作可以啟迪未來的網路架構設計,更加具有平台意識,並朝著實用的方向發展。

論文:Shu?eNet V2: Practical Guidelines for E?cient CNN Architecture Design

論文下載地址:https://pan.baidu.com/s/1so7aD3hLKO-0PB8h4HWliw

摘要:目前,神經網路架構設計主要由計算複雜度的間接指標(即 FLOPs)來指導。但是,直接指標(如速度)還依賴於其他因素,如內存訪問成本和平台特點。因此,本文提出在目標平台上評估直接指標,而不是只考慮 FLOPs。基於一系列對比實驗,本文得出多個高效、實用的網路設計準則,並據此得到了一個新的架構 Shu?eNet V2。綜合對比實驗證明了該模型在速度和精度的權衡方面達到當前最優水平。

本文為機器之心經授權發布,轉載請聯繫原作者獲得授權。

------------------------------------------------

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

如何保證演算法公正性?ICML 2018兩篇獲獎論文解讀
生物神經網路與機器學習的碰撞,Nature論文DNA試管網路識別

TAG:機器之心 |