華爲開源端側神經網絡架構GhostNet,超越谷歌MobileNet | CVPR 2020論文解讀

近日,華爲諾亞方舟實驗室的一篇論文被CVPR 2020接受,該論文提出了一種新型的端側神經網絡架構GhostNet,該架構在同樣精度下,速度和計算量均少於SOTA算法。

該論文提供了一個全新的Ghost模塊,旨在通過廉價操作生成更多的特徵圖。基於一組原始的特徵圖,作者應用一系列線性變換,以很小的代價生成許多能從原始特徵發掘所需信息的“幻影”特徵圖(Ghost feature maps)。該Ghost模塊即插即用,通過堆疊Ghost模塊得出Ghost bottleneck,進而搭建輕量級神經網絡——GhostNet。在ImageNet分類任務,GhostNet在相似計算量情況下Top-1正確率達75.7%,高於MobileNetV3的75.2%。

論文鏈接:https://arxiv.org/abs/1911.11907

開源地址:https://github.com/huawei-noah/ghostnet

引言

卷積神經網絡推動了計算機視覺諸多任務的進步,比如圖像識別、目標檢測等。但是,神經網絡在移動設備上的應用還亟待解決,主要原因是現有模型又大又慢。因而,一些研究提出了模型的壓縮方法,比如剪枝、量化、知識蒸餾等;還有一些則着重於高效的網絡結構設計,比如MobileNet,ShuffleNet等。本文就設計了一種全新的神經網絡基本單元Ghost模塊,從而搭建出輕量級神經網絡架構GhostNet。

在一個訓練好的深度神經網絡中,通常會包含豐富甚至冗餘的特徵圖,以保證對輸入數據有全面的理解。如下圖所示,在ResNet-50中,將經過第一個殘差塊處理後的特徵圖拿出來,三個相似的特徵圖對示例用相同顏色的框註釋。 該對中的一個特徵圖可以通過廉價操作(用扳手錶示)將另一特徵圖變換而獲得,可以認爲其中一個特徵圖是另一個的“幻影”。因爲,本文提出並非所有特徵圖都要用卷積操作來得到,“幻影”特徵圖可以用更廉價的操作來生成。

圖1 ResNet50特徵圖可視化

在本文中,作者提出了一種新穎的Ghost模塊,可以使用更少的參數來生成更多特徵圖。具體來說,深度神經網絡中的普通卷積層將分爲兩部分。第一部分涉及普通卷積,但是將嚴格控制它們的總數。給定第一部分的固有特徵圖,然後將一系列簡單的線性運算應用於生成更多特徵圖。與普通卷積神經網絡相比,在不更改輸出特徵圖大小的情況下,該Ghost模塊中所需的參數總數和計算複雜度均已降低。基於Ghost模塊,作者建立了一種有效的神經體系結構,即GhostNet。作者首先在基準神經體系結構中替換原始的卷積層,以證明Ghost模塊的有效性,然後在幾個基準視覺數據集上驗證GhostNet的優越性。實驗結果表明,所提出的Ghost模塊能夠在保持相似識別性能的同時降低通用卷積層的計算成本,並且GhostNet可以超越MobileNetV3等先進的高效深度模型,在移動設備上進行快速推斷。

方法

Ghost模塊

圖2 (a) 普通卷積層 (b) Ghost模塊

複雜度分析

構建GhostNet

Ghost Bottleneck:利用Ghost模塊的優勢,作者介紹了專門爲小型CNN設計的Ghost bottleneck(G-bneck)。如圖3所示,Ghost bottleneck似乎類似於ResNet中的基本殘差塊(Basic Residual Block),其中集成了多個卷積層和shortcut。Ghost bottleneck主要由兩個堆疊的Ghost模塊組成。第一個Ghost模塊用作擴展層,增加了通道數。這裏將輸出通道數與輸入通道數之比稱爲expansion ratio。第二個Ghost模塊減少通道數,以與shortcut路徑匹配。然後,使用shortcut連接這兩個Ghost模塊的輸入和輸出。這裏借鑑了MobileNetV2,第二個Ghost模塊之後不使用ReLU,其他層在每層之後都應用了批量歸一化(BN)和ReLU非線性激活。上述Ghost bottleneck適用於stride= 1,對於stride = 2的情況,shortcut路徑由下采樣層和stride = 2的深度卷積(Depthwise Convolution)來實現。出於效率考慮,Ghost模塊中的初始卷積是點卷積(Pointwise Convolution)。

圖3 Ghost bottleneck

GhostNet:基於Ghost bottleneck,作者提出GhostNet,如表1所屬。作者遵循MobileNetV3的基本體系結構的優勢,然後使用Ghost bottleneck替換MobileNetV3中的bottleneck。GhostNet主要由一堆Ghost bottleneck組成,其中Ghost bottleneck以Ghost模塊爲構建基礎。第一層是具有16個卷積核的標準卷積層,然後是一系列Ghost bottleneck,通道逐漸增加。這些Ghost bottleneck根據其輸入特徵圖的大小分爲不同的階段。除了每個階段的最後一個Ghost bottleneck是stride = 2,其他所有Ghost bottleneck都以stride = 1進行應用。最後,利用全局平均池和卷積層將特徵圖轉換爲1280維特徵向量以進行最終分類。SE模塊也用在了某些Ghost bottleneck中的殘留層,如表1中所示。與MobileNetV3相比,這裏用ReLU換掉了Hard-swish激活函數。儘管進一步的超參數調整或基於自動架構搜索的Ghost模塊將進一步提高性能,但表1所提供的架構提供了一個基本設計參考。

表1 GhostNet網絡架構

實驗

Ghost模塊消融實驗

如上所述,Ghost模塊具有兩個超參數,也就是,s用於生成 m=n/s個內在特徵圖,以及用於計算幻影特徵圖的線性運算的 d*d (即深度卷積核的大小)。作者測試了這兩個參數的影響。

首先,作者固定s=2並在{1,3,5,7} 範圍中調整d,並在表2中列出CIFAR-10驗證集上的結果。作者可以看到,當d=3的時候,Ghost模塊的性能優於更小或更大的Ghost模塊。這是因爲大小爲1X1的內核無法在特徵圖上引入空間信息,而較大的內核(例如d=5或 d=7)會導致過擬合和更多計算。因此,在以下實驗中作者採用d=3來提高有效性和效率。

表2 超參數d的影響

在研究了內核大小的影響之後,作者固定d=3並在{2,3,4,5} 的範圍內調整超參數s。實際上, s與所得網絡的計算成本直接相關,即,較大的s導致較大的壓縮率和加速比。從表3中的結果可以看出,當作者增加s時,FLOP顯着減少,並且準確性逐漸降低,這是在預期之內的。特別地,當s=2 ,也就是將VGG-16壓縮2x時,Ghost模塊的性能甚至比原始模型稍好,表明了所提出的Ghost模塊的優越性。

表3 超參數s的影響

作者將Ghost模塊用在VGG-16和ResNet-56架構上,然後和幾個代表性的最新模型進行了比較。Ghost-VGG-16 (s=2)以最高的性能(93.7%)勝過競爭對手,但FLOPs明顯減少。 對於已經比VGG-16小得多的ResNet-56,基於Ghost模塊的模型可以將計算量降低一半時獲得可比的精度,還可以看到,其他具有相似或更大計算成本的最新模型所獲得的準確性低於Ghost模型。

表4 在CIFAR-10數據集和SOTA模型對比

特徵圖可視化

作者還可視化了Ghost模塊的特徵圖,如圖4所示。 圖4展示了Ghost-VGG-16的第二層特徵,左上方的圖像是輸入,左紅色框中的特徵圖來自初始卷積,而右綠色框中的特徵圖是經過廉價深度變換後的幻影特徵圖。儘管生成的特徵圖來自原始特徵圖,但它們之間確實存在顯着差異,這意味着生成的特徵足夠靈活,可以滿足特定任務的需求。

圖4 Ghost-VGG-16的第二層輸出特徵圖可視化

圖5 原始VGG-16的第二層輸出特徵圖可視化

GhostNet性能

ImageNet分類數據集:爲了驗證所提出的GhostNet的優越性,作者對ImageNet分類任務進行了實驗。在ImageNet驗證集上報告的所有結果均是single crop的top-1的性能。對於GhostNet,爲簡單起見,作者在初始卷積中設置了內核大小 k=1,在所有Ghost模塊中設置了s=2和 d=3 。作者和現有最優秀的幾種小型網絡結構作對比,包括MobileNet系列、ShuffleNet系列、IGCV3、ProxylessNAS、FBNet、MnasNet等。結果彙總在表5中,這些模型分爲3個級別的計算複雜性,即~50,~150和200-300 MFLOPs。從結果中我們可以看到,通常較大的FLOPs會在這些小型網絡中帶來更高的準確性,這表明了它們的有效性。而GhostNet在各種計算複雜度級別上始終優於其他競爭對手,主要是因爲GhostNet在利用計算資源生成特徵圖方面效率更高。

表5 GhostNet在ImageNet數據集的表現

硬件推理速度:由於提出的GhostNet是爲移動設備設計的,因此作者使用TFLite工具在基於ARM的手機華爲P30Pro上進一步測量GhostNet和其他模型的實際推理速度。遵循MobileNet中的常用設置,作者使用Batch size爲1的單線程模式。從圖6的結果中,我們可以看到與具有相同延遲的MobileNetV3相比,GhostNet大約提高了0.5%的top-1的準確性,另一方面GhostNet需要更少的運行時間來達到相同的精度。例如,精度爲75.0%的GhostNet僅具有40毫秒的延遲,而精度類似的MobileNetV3大約需要46毫秒來處理一張圖像。總體而言,作者的模型總體上勝過其他最新模型,例如谷歌MobileNet系列,ProxylessNAS,FBNet和MnasNet。

值得指出的是,華爲內部開發了一款神經網絡部署工具Bolt,對GhostNet實現做了進一步優化,速度相比其他框架如NCNN、TFLite更快。感興趣的讀者可以參考:

https://github.com/huawei-noah/bolt

COCO目標檢測數據集:爲了進一步評估GhostNet的泛化能力,作者在MS COCO數據集上進行了目標檢測實驗。具有特徵金字塔網絡(FPN)的兩階段Faster R-CNN和單階段的RetinaNet作爲baseline,而GhostNet用於骨幹網絡做特徵提取器。表6顯示了檢測結果,其中FLOPs是使用 [公式] 輸入圖像計算的。通過使用顯着降低的計算成本,GhostNet可以在單階段的RetinaNet和兩階段的Faster R-CNN框架上達到和MobileNetV2和MobileNetV3類似的mAP。

表6 GhostNet在COCO數據集的表現

總結

爲了減少最新的深度神經網絡的計算成本,本文提出了一種用於構建高效的神經網絡結構的新型Ghost模塊。Ghost模塊將原始卷積層分爲兩部分,首先使用較少的卷積核來生成原始特徵圖,然後,進一步使用廉價變換操作以高效生產更多幻影特徵圖。在基準模型和數據集上進行的實驗表明,該方法是一個即插即用的模塊,能夠將原始模型轉換爲更緊湊的模型,同時保持可比的性能。此外,在效率和準確性方面,使用提出的新模塊構建的GhostNet均優於最新的輕量神經網絡,如MobileNetV3。

作者介紹:

王雲鶴 華爲諾亞,深度學習邊緣計算

原文鏈接:

https://zhuanlan.zhihu.com/p/109325275

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章