天天看點

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

論文:https://arxiv.org/abs/1807.11164

1 摘要

目前,神經網絡架構設計主要由計算複雜度的間接度量(FLOP — 乘加數)衡量。然而,直接度量(例如,速度)還取決于諸如存儲通路量和硬體平台特性等其他因素。是以,本文評估目标平台上的直接度量,而不僅僅考慮FLOP。基于一系列對照實驗,本文為高效的網絡設計提供了幾個實用指南。最終提出了稱為ShuffleNet V2的新架構。全面的對比實驗驗證了我們的模型在速度和準确性權衡方面是最先進的。

2 簡介

深度卷積神經網絡(CNN)的體系結構已經發展了多年,變得更加準确和快速。自AlexNet的裡程碑工作以來,ImageNet分類的準确性通過使用新的結構得到了顯著改善,包括VGG,GoogLeNet,ResNet,DenseNet,ResNeXt ,SE-Net和自動架構搜尋[9,10,11]等。

除了準确性,計算複雜性是另一個重要考慮因素。現實任務通常旨在由目标平台(例如,硬體)和應用場景(例如,自動駕駛需要低延遲時間)給出的有限計算資源下獲得最佳準确度。這激發了一系列針對輕量級架構的設計和更好的速度 - 準确性權衡的工作,包括Xception,MobileNet,MobileNet V2 ,ShuffleNet和CondenseNet。組卷積和深度分離卷積在這些工作中發揮了重要作用。

為了衡量計算複雜度,廣泛使用的度量标準是浮點運算量(FLOP)。但是,FLOP其實是一個間接名額,它是我們真正關心的直接度量(例如速度或延遲)的近似值,但通常不完全等價。前面有的論文也注意到了間接度量和直接度量的不同。例如,MobileNet v2比NASNET-A [9]快得多,但它們FLOP很接近。圖1(c)(d)進一步呈現了這種現象,表明具有相似FLOP的網絡具有不同的速度。是以,使用FLOP作為計算複雜性的唯一度量是不夠的,隻基于Flop度量可能會導緻次優的設計結果。

間接(FLOP)和直接(速度)名額之間的差異可歸因于兩個主要原因。第一,FLOP沒有考慮幾個對速度有相當大影響的重要因素。一個因素是存儲器通路成本(MAC)。在諸如組卷積的某些操作中,這些成本占了很大一部分的運作時間。它可能是具有強大計算能力的裝置(例如GPU)的瓶頸。在網絡架構設計期間,不應忽略此成本。另一個是并行化程度。在相同的FLOP下,具有高并行度的模型可能比具有低并行度的模型快得多。

第二,運算速度取決于部署平台,具有相同FLOP的操作可能具有不同的運作時間。例如,張量分解廣泛用于早期工作[20,21,22]以加速矩陣乘法。然而,最近的工作[19]發現[22]中的分解在GPU上甚至更慢,盡管它将FLOP降低了75%。我們調查了這個問題并發現這是因為最新的CUDNN [23]庫專門針對3×3卷積而優化。我們不能想當然的認為3×3卷積比1×1卷積慢9倍。

通過這些觀察,我們建議應該考慮兩個原則來進行有效的網絡架構設計。首先,應該使用直接度量(例如,速度)而不是間接度量(例如,FLOP)。其次,應在目标平台上評估直接度量名額。

本文中,我們遵循這兩個原則,并提出一個更高效的網絡架構。在第2節中,我們首先分析了兩個具有代表性的最先進網絡ShuffleNet V1和MobileNet V2的運作時性能。然後,我們提出了四個高效網絡設計的指導方針,這些方針不僅僅考慮了FLOP。雖然這些方針與平台無關,但我們進行了一系列的對比實驗,以便在兩個不同平台(GPU和ARM)上通過專用代碼優化對其進行驗證,進而確定我們的結論是最先進的。

在第3節中,根據指導方針,我們設計了一個新的網絡結構。由于受到ShuffleNet V1的啟發,它被稱為ShuffleNet V2。通過第4節中的綜合驗證明驗證明,它比以前的網絡在兩個平台上都更快,更準确。圖1(a)(b)給出了比較的概述。例如,考慮到40M FLOP的計算複雜度預算,ShuffleNet v2分别比ShuffleNet v1和MobileNet v2精确率高3.5%和3.7%。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

3 高效網絡設計實用指南

我們的研究在兩個廣泛采用的硬體平台上進行,并對運作的CNN庫進行了工業級優化。我們的CNN庫比大多數開源庫更高效。是以,我們確定我們的觀察和結論對于工業實踐很适用。

  • GPU:使用單個NVIDIA GeForce GTX 1080Ti。卷積庫是CUDNN 7.0。我們還激活了CUDNN的基準測試功能,分别為不同的卷積選擇最快的算法。
  • ARM:Qualcomm Snapdragon 810。我們使用高度優化的基于Neon的實作。評估時隻使用單個線程。

其他設定包括:打開所有的優化選項(例如張量融合 — 用于減少小操作的開銷)。輸入圖像大小為224×224。每個網絡随機初始化并評估100次,使用平均運作時間作為最終評估标準。

為了開始我們的研究,我們分析了兩個最先進的網絡,ShuffleNet v1和MobileNet v2的推理性能。它們在ImageNet分類任務上都非常高效和準确,廣泛用于移動裝置等低計算能力的裝置。雖然我們隻分析這兩個網絡,但我們注意到它們代表了目前的趨勢,這兩個網絡的核心是組卷積和深度分離卷積,它們也是其他最先進網絡(如ResNeXt,Xception ,MobileNet 和CondenseNet)的關鍵元件 。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

我們統計了各操作的耗時,如圖2所示。我們注意到FLOPs度量僅考慮了卷積部分,雖然這部分消耗的時間最多,但其他操作包括資料I / O,資料混洗和逐元素操作(AddTensor,ReLU等)也占用了相當多的時間。是以,FLOP對實際運作時間的估計是不夠準确的。

基于這一觀察,我們從幾個不同的方面對運作時間(或速度)進行了詳細分析,并為有效的網絡架構設計推導出一些實用指南。

  • G1:相同的channel可最大限度地降低記憶體通路成本(MAC):輕量化網絡通常采用深度可分離卷積,其中逐點卷積(即1×1卷積)占了絕大部分的計算量。我們研究了1×1卷積的核心形狀,其由兩個參數指定:輸入通道的數量c1和輸出通道的數量c2。設h和w為特征映射圖的空間大小,1×1卷積的FLOP為B = h * w * c1 * c2。

    為簡單起見,我們假設計算裝置中的高速緩存足夠大以存儲整個特征映射圖和參數。是以,存儲器的通路成本(MAC)或存儲器的通路次數 MAC = hw(c1 + c2)+ c1c2。注意,這兩項分别對應于輸入/輸出特征映射圖和卷積核所占用的存儲空間。

    根據均值不等式( c 1 + c 2 ≥ 2 c 1 c 2 , c 1 = c 2 c_1 + c_2 \geq 2\sqrt{c_1c_2},c_1 =c_2 c1​+c2​≥2c1​c2​

    ​,c1​=c2​時,等号成立),是以有

    ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

    是以,MAC的下限和FLOP有關。并且當輸入和輸出通道的數量相等時,MAC達到下限。

    上面的結論是理論上的。實際上,許多裝置上的緩存都不夠大。此外,現代計算庫通常采用複雜的阻塞政策來充分利用緩存機制。是以,實際MAC可能偏離理論MAC。為了驗證上述結論,我們進行了如下實驗。通過重複堆疊10個網絡塊來建構基準網絡。每個塊包含兩個卷積層,第一個包含c1輸入通道和c2輸出通道,第二個相反。

    表1通過在固定總FLOP的同時改變c1:c2的比值來測試運作速度。很明顯,當c1:c2接近1:1時,MAC更小,網絡評估速度更快。

    ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結
  • G2:組卷積的組數越大,MAC越大:組卷積是輕量化網絡的核心,它通過将所有channel之間的密集卷積改變為稀疏(僅在同一組内)來降低計算複雜度(FLOP)。一方面,因為組卷積相比普通卷積降低了計算量,是以在給定FLOP的情況下使用組卷積可以使用更多的channel,增加了網絡的容量(進而提高了精度)。然而,另一方面,增加的channel數導緻更多的MAC。

    正式地,遵循G1和公式(1)中的符号,1×1組卷積的MAC和FLOP之間的關系是:

    1 * 1的組卷積的Flop為:B = h w c 1 c 2 g \frac{hwc_1c_2}{g} ghwc1​c2​​

    ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

    其中g是組的數量。很容易看出,給定固定輸入形狀c1×h×w和計算成本B,MAC随着g的增大而增加。

    為了研究實踐中的影響,通過堆疊10個逐點組卷積層來建構基準網絡。表2報告了在FLOP相同時不同組大小的模型的運作速度。很明顯,使用大的組數會顯著降低運作速度。例如,在GPU上,g=8比g=1(标準密集卷積)慢兩倍,而ARM上則慢30%。這主要是由于MAC的增加。

    ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結
    是以,我們建議應根據目标平台和任務仔細選擇組數目。輕易使用大的組是不明智的,雖然這樣允許我們可以使用更多的通道,但是快速增加的計算成本帶來的損失會輕易地抵消掉準确度增加帶來的好處。
  • G3:網絡碎片程度會降低推理的并行度:在GoogLeNet系列和自動生成的體系結構[9,11,10]中,每個網絡塊都廣泛采用了一種“多路徑”結構。許多小型操作(這裡稱為“碎片操作”)被用來代替幾個大的操作。例如,在NASNET-A中,碎片運算符的數量(即一個建構塊中的單個卷積或池化操作的數量)為13。相比之下,在ResNet等正常結構中,此數字為2或3。

    雖然這種碎片結構已被證明有利于提升準确性,但它可能會降低效率,因為它對具有強大并行計算能力的裝置(如GPU)不友好。它還引入了額外的開銷,例如核心啟動和同步。

    為了量化網絡碎片如何影響效率,我們評估了一系列具有不同碎片程度的網絡塊。每一個基礎塊都由1到4個 1 x 1 1 x 1 1x1卷積組成,所不同的是排列方式為順序排列還是并行排列。塊結構如下圖所示。每個塊重複堆疊10次。表3中的結果表明,碎片程度越大,在GPU上的速度會顯著降低,例如: 4分段結構比1分段結構慢3倍。在ARM上,速度降低相對較小。

    ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結
    ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結
  • G4:逐元素操作的執行時間是不可忽略的:如圖2所示,在像ShuffleNet V1和MobileNet V2這樣的輕量級模型中,逐元素操作占用了相當多的時間,尤其是在GPU上。這裡,逐元素運算包括ReLU,AddTensor,AddBias等。它們具有小的FLOP但是相對較重的MAC。特别地,我們還将深度分離卷積視為逐元素運算符,因為它也具有較高的MAC / FLOP比。

    為了驗證這個結論,我們在ResNet中嘗試了“瓶頸”單元(1×1卷積後跟3×3卷積,然後是1×1卷積,帶有ReLU和直連通道)的不同變體,表4中報告了不同變體的運作時間。在删除ReLU和直連通道後(減少了逐元素操作的計算量),我們觀察到在GPU和ARM上都獲得了大約20%的加速。

    ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結
  • 結論和讨論:基于上述指導原則和實驗結果,我們得出結論,高效的網絡架構應該:

    1)使用“平衡卷積"(相等的通道數);

    2)注意使用組卷積的成本;

    3)降低碎片化程度;

    4)減少逐元素操作。

    這些理想的屬性取決于超出理論FLOP的平台特性(例如記憶體操作和代碼優化)。它們應該被用于實際的網絡設計。

    輕量級神經網絡架構的最新進展主要基于FLOP的度量,并未考慮上述這些特性。例如,ShuffleNet v1嚴重依賴于組卷積(違反了G2)和bottleneck網絡塊(違反了G1)。MobileNet v2 使用了違反G1的反向bottleneck結構,并且在“thick”特征圖上使用深度分離卷積和ReLU,違反了G4。自動生成的結構[9,11,10]高度碎片化違反了G3。

4 ShuffleNet V2:一種高效的架構

回顧下ShuffleNet v1,它是一種先進的網絡架構,它廣泛應用于移動裝置等低端裝置,它激發了我們的工作。是以,首先對其進行審查和分析。

根據ShuffleNet v1所述,輕量級網絡面臨的主要挑戰是,在給定的計算預算(FLOP)下,隻能使用有限數量的channel。為了在不顯着增加FLOP的情況下增加通道數,在ShuffleNet v1中采用了兩種技術:逐點組卷積和bottleneck結構。然後引入“channel shuffle”操作以實作不同channel組之間的資訊互動并提高準确性。網絡基礎塊如圖3(a)(b)所示。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

如第2節所述,逐點組卷積和bottleneck結構都會增加MAC(G1和G2),這個成本是不可忽視的,特别是對于輕量級的模型。此外,使用太多組違反了G3。在直連通道中進行逐元素相加的操作也是不合需要的(G4)。是以,關鍵問題是如何在保持較大channel的情況下,既不使用密集卷積也不使用太大的組卷積時,實作高容量和高效率的模型。

Channel Spilt 和 ShuffleNet V2:為了達到上述目的,我們引入了channel split操作。如圖3(c)所示。在每個塊的開始處,c個特征通道的輸入被分成兩個分支,分别具有 c − c ′ c-c^{'} c−c′和 c ′ c^{'} c′個通道。按照G3,一個分支是恒等函數。另一個分支由三個卷積組成,這三個卷積具有相同的輸入和輸出通道以滿足G1。不同于ShuffleNet V1,兩個1×1的卷積不再是分組的了,這部分是一是為了遵循G2,二是拆分操作已經産生了兩個組。

卷積後,兩個分支連接配接在一起。是以,通道數保持不變(G1)。然後使用與ShuffleNet V1中相同的“channel shuffle“操作來實作不同channel之間的資訊互動。

shuffle後,進入了下一個網絡塊。請注意,ShuffleNet v1中的“Add“操作不再存在。ReLU和depthwise convolutions等元素操作僅存在于一個分支中。此外,三個連續的逐元素操作,”Concat“,“Channel Shuffle”和”Channel Split“,合并為單個逐元素操作。根據G4,這些更改是有益的。

需要進行下采樣的網絡塊,如圖3(d)所示。删除了通道拆分運算符,是以,輸出通道的數量加倍。

建構塊(c)(d)以及由此産生的網絡稱為ShuffleNet V2。基于上述分析,我們得出結論,該架構設計高效,因為它遵循所有的準則。

重複堆疊建構塊以建構整個網絡。為簡單起見,我們設定 c ′ = c / 2 c^{'} = c/2 c′=c/2。整體網絡結構類似于ShuffleNet v1,如表5所示。唯一的一個差別是,在全局平均池化之前添加額外的1×1卷積層以混合特征,這在ShuffleNet v1中是不存在的。與ShuffleNet v1類似,縮放每個塊中的通道數以生成不同複雜度的網絡,标記為0.5×,1×等。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

網絡準确率分析:ShuffleNet v2不僅高效,而且準确。主要有兩個原因,首先,每個建構塊的高效率使得能夠使用更多的channel,進而網絡的容量更大。其次,在每個塊中,一半的特征通道(當 c ′ = c / 2 c^{'} = c/2 c′=c/2時)直接通過該塊并入下一個塊,這可以被視為一種特征重用,與DenseNet和CondenseNet類似。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

在DenseNet中,為了分析特征重用模式,繪制了層間權重的l1範數,如圖4(a)所示。很明顯,相鄰層之間的連接配接比其他層更強。這意味着所有層之間的密集連接配接可能引入備援。最近的CondenseNet也支援這一觀點。

在ShuffleNet V2中,很容易證明第 i i i個和第 ( i + j ) (i + j) (i+j)個建構塊之間的直接連接配接的“通道”的數量是 r j c r^jc rjc,其中 r = 1 − c ′ / c r =1-c^{'}/c r=1−c′/c(這裡不應該有括号吧)。換句話說,特征重用量随着兩個塊之間的距離增大而呈指數級衰減。在遠端塊之間,特征重用變得更弱。對于r = 0.5,圖4(b)繪制了與(a)中類似的可視化圖。注意(b)中的模式類似于(a)。

是以,ShuffleNet V2的結構設計實作了這種特征重用。與DenseNet一樣,它具有高精度特征重用的優點,但如前所述,它的效率更高。這在實驗中得到驗證,見表8。

5 實驗

我們的對比實驗在ImageNet 2012分類資料集上執行。按照慣例,相比之下,所有網絡都有四個級别的計算複雜度,即大約40,140,​​300和500+ MFLOPs。這些計算量是移動場景的下典型值。其他超參數與ShuffleNet v1完全相同。

我們将與以下網絡架構進行比較:

  • ShuffleNet v1:在ShuffleNet v1中,比較了一系列組号g。最後建議g = 3在準确度和速度之間有更好的權衡。,這也符合我們的觀察。在本文中,我們主要使用g = 3。
  • MobileNet v2 :它比MobileNet v1更好。為了全面比較,我們報告了原始論文和我們重新實作版本的準确性,因為原始論文中的一些結果不可用。
  • Xception:原始Xception模型[12]非常大(FLOP> 2G),這超出了我們的比較範圍。最近的工作[34]提出了一種改進的輕量級Xception結構,它顯示了準确性和效率之間更好的權衡。是以,我們與這個變體進行比較。
  • DenseNet:原始論文僅報告大型模型的結果(FLOP> 2G)。為了直接比較,我們按照表5中的體系結構設定重新實作它,其中階段2-4中的建構塊由11個DenseNet塊組成。我們調整通道數以滿足不同的目标複雜性。

表8總結了所有結果。我們從不同方面分析這些結果。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

準确率 vs. FLOPs:很明顯,本文所提出的ShuffleNet v2模型在很大的範圍内表現優于所有其他網絡,特别是在較小的計算量下。此外,我們注意到MobileNet v2使用224×224大小的圖像在40 MFLOP級别上效果很差,這可能是由于channel太少造成的。相比之下,我們的模型沒有這個缺點,因為我們的高效設計允許使用更多的通道。此外,雖然我們的模型和DenseNet都重用了特征,但我們的模型效率更高,如第3節所述。

表8還将我們的模型與其他最先進的網絡進行了比較,包括CondenseNet ,IGCV2和IGCV3。我們的模型在各種複雜程度上表現更好。

推理速度 vs. FLOPs/Accuracy:對于四個具有良好準确性的架構,ShuffleNet v2,MobileNet v2,ShuffleNet v1和Xception,我們将它們的實際速度與FLOP進行比較,如圖1(c)(d)所示。附錄表1提供了有關不同分辨率的更多結果。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

例如,在500MFLOPs時,ShuffleNet v2比MobileNet v2快58%,比ShuffleNet v1快63%,比Xception快25%。在ARM上,ShuffleNet v1,Xception和ShuffleNet v2的速度相當;但是,MobileNet v2要慢得多,特别是在較小的FLOP上。我們認為這是因為MobileNet v2具有更高的MAC(參見第2節中的G1和G4),這在移動裝置上非常重要。

與MobileNet v1,IGCV2和IGCV3相比,我們有兩個觀察結果。首先,盡管MobileNet v1的準确性不是很好,但它在GPU上的速度要快于所有同類産品,包括ShuffleNet v2。我們認為這是因為它的結構滿足了大多數提議的指南(例如,對于G3,MobileNet v1的片段甚至比ShuffleNet v2更少)。其次,IGCV2和IGCV3很慢,這是由于使用了太多的卷積組([27,28]中的4或8)。兩項意見均與我們提出的指引一緻。

最近,自動模型搜尋[9,10,11,35,36,37]已成為CNN架構設計的一種有前途的趨勢。表8中的底部評估了一些自動生成的模型。我們發現它們的速度相對較慢。我們認為這主要是由于使用了太多碎片化設計(見G3)。盡管如此,這一研究方向仍然很有希望。例如,如果模型搜尋算法與我們提出的指南相結合,并且在目标平台上評估直接度量(速度),則可以獲得更好的模型。

最後,圖1(a)(b)總結了精确度與速度的結果,即直接度量。我們得出結論,ShuffeNet v2在GPU和ARM上都是最好的。

和其他模型比較:ShuffeNet v2可與其他技術相結合,進一步提升性能。當配備Squeezeand-excitation(SE)子產品時,ShuffleNet v2的分類精度提高了0.5%,但代價是速度有一定的損失。塊結構如附錄圖2(b)所示。結果顯示在表8中(底部)。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

泛化到大的模型:盡管我們的主要對比實驗是針對輕量級情況進行的,但ShuffleNet v2可用于大型模型(例如,FLOP≥2G)。表6比較了50層ShuffleNet v2(附錄中的詳細資訊)與ShuffleNet v1和ResNet-50的對應結果。 ShuffleNet v2在2.3GFLOPs上仍然優于ShuffleNet v1和ResNet-50,FLOP比ResNet-50減少了40%。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結
ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

對于非常深的ShuffleNet v2(例如超過100層),為了使訓練更快收斂,我們通過添加殘差路徑稍微修改基本的ShuffleNet v2單元(詳見附錄)。表6顯示了一個配有SE [8]元件的164層ShuffleNet v2模型(詳見附錄)。與先前最先進的模型相比,它獲得了更高的精度[8],FLOP更少。

目标檢測:為了評估泛化能力,我們還測試了COCO目标檢測[38]任務。我們使用最先進的輕量級探測器Light-Head RCNN作為我們的架構并遵循相同的訓練和測試協定。隻有骨幹網被我們的網絡替換。模型在ImageNet上預先訓練,然後在檢測任務上進行微調。對于訓練,我們使用COCO中的train + val進行訓練,除了來自minival的5000張圖像,并使用minival集進行測試。精度度量是COCO标準mmAP,即檢測框的IoU門檻值從0.5到0.95的平均mAP。

将ShuffleNet v2與其他三種輕量級模型進行比較:Xception,ShuffleNet v1 和MobileNet v2,分為四個複雜程度。表7中的結果表明ShuffleNet v2表現最佳。

ShuffleNet V2:Practical Guidelines for Efficient CNN Architecture Design1 摘要2 簡介3 高效網絡設計實用指南4 ShuffleNet V2:一種高效的架構5 實驗6 總結

将檢測結果(表7)與分類結果(表8)進行比較,有趣的是,在分類上,準确度等級為ShuffleNetv2≥MobileNetv2> ShuffeNet v1> Xception,而在檢測時,等級變為ShuffleNet v2>Xception≥ShuffleNet v1≥MobileNetv2。這表明Xception在檢測任務方面很有用。這可能是由于Xception建構塊的感受野比其他對比算法(7對3)更大。受此啟發,*我們還通過在每個建構塊中的第一個逐點卷積之前引入額外的3×3深度卷積來擴大ShuffleNet v2的感受野。該變體表示為ShuffleNet v2 。隻需增加幾個額外的FLOP,它進一步提高了準确性。

我們還在GPU上對運作時間進行基準測試。為了公平比較,批量大小設定為4以確定完全利用GPU。由于資料複制的開銷(分辨率高達800×1200)和其他特定檢測操作(如PSRoI Pooling),不同算法之間的速度差距小于分類的速度差距。盡管如此,ShuffleNet v2仍然勝過其他人,例如比ShuffleNet v1快40%左右,比MobileNet v2快16%。

此外,變體ShuffleNet v2 *具有最佳精度,并且仍然比其他方法更快。這激發了一個實際問題:如何增加感受野的大小,這對于高分辨率圖像中的目标檢測至關重要。我們将來會研究這個話題。

6 總結

我們建議網絡架構設計應考慮直接度量,如速度,而不是像FLOP那樣的間接度量。我們提出實用指南和新穎的架構,ShuffleNet v2。綜合實驗驗證了我們新模型的有效性。我們希望這項工作能夠激發未來的平台意識和更實用的網絡架構設計工作。