GhostNet: 超越MobileNetV3的輕量級網絡

為了減少神經網絡的計算消耗,論文提出Ghost模塊來構建高效的網絡結果。該模塊將原始的卷積層分成兩部分,先使用更少的卷積核來生成少量內在特徵圖,然後通過簡單的線性變化操作來進一步高效地生成ghost特徵圖。從實驗來看,對比其它模型,GhostNet的壓縮效果最好,且準確率保持也很不錯,論文思想十分值得參考與學習  


論文: GhostNet: More Features from Cheap Operations

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  • 論文地址:https://arxiv.org/abs/1911.11907

Introduction


  目前,神經網絡的研究趨向於移動設備上的應用,一些研究著重於模型的壓縮方法,比如剪枝,量化,知識蒸餾等,另外一些則著重於高效的網絡設計,比如MobileNet,ShuffleNet等

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  訓練好的網絡一般都有豐富甚至冗餘的特徵圖信息來保證對輸入的理解,如圖1 ResNet-50的特徵圖,相似的特徵圖類似於對方的ghost。冗餘的特徵是網絡的關鍵特性,論文認為與其避免冗餘特徵,不如以一種cost-efficient的方式接受,獲得很不錯的性能提升,論文主要有兩個貢獻:

  • 提出能用更少參數提取更多特徵的Ghost模塊,首先使用輸出很少的原始卷積操作(非卷積層操作)進行輸出,再對輸出使用一系列簡單的線性操作來生成更多的特徵。這樣,不用改變其輸出的特徵圖,Ghost模塊的整體的參數量和計算量就已經降低了
  • 基於Ghost模塊提出GhostNet,將原始的卷積層替換為Ghost模塊

Approach


Ghost Module for More Features

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  對於輸入數據,卷積層操作如公式1,為輸出的n維特徵圖,為該層的卷積核,可得該層的計算量為,這個數值通常成千上萬,因為和一般都很大。公式1的參數量與輸入和輸出的特徵圖數息息相關,而從圖1可以看出中間特徵圖存在大量冗餘,且存在相似的特徵(Ghost),所以完全沒必要佔用大量計算量來計算這些Ghost

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  假設原輸出的特徵為某些內在特徵進行簡單的變換得到Ghost,通常這些內在特徵數量都很少,並且能通過原始卷積操作公式2獲得,為原始卷積輸出,為使用的卷積核,,bias直接簡化了

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  為了獲得原來的維特徵,對的內在特徵分別使用一系列簡單線性操作來產生維ghost特徵,為生成的-th ghost特徵圖的線性變換函數,最後的為保存內在特徵的identity mapping,整體計算如圖2b

  • Difference from Existing Methods

  與目前主流的卷積操作對比,Ghost模塊有以下不同點:

  1. 對比Mobilenet、Squeezenet和Shufflenet中大量使用 pointwise卷積,Ghost模塊的原始卷積可以自定義卷積核數量
  2. 目前大多數方法都是先做pointwise卷積降維,再用depthwise卷積進行特徵提取,而Ghost則是先做原始卷積,再用簡單的線性變換來獲取更多特徵
  3. 目前的方法中處理每個特徵圖大都使用depthwise卷積或shift操作,而Ghost模塊使用線性變換,可以有很大的多樣性
  4. Ghost模塊同時使用identity mapping來保持原有特徵
  • Analysis on Complexities

  假設Ghost模塊包含1個identity mapping和個線性操作,每個線性操作的核大小為

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  理論的加速比如公式4,而理論的壓縮比如公式5,讓與相似且

Building Efficient CNNs

  • Ghost Bottlenecks
GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  Ghost Bottleneck(G-bneck)與residual block類似,主要由兩個Ghost模塊堆疊二次,第一個模塊用於增加特徵維度,增大的比例稱為***expansion ration***,而第二個模塊則用於減少特徵維度,使其與shortcut一致。G-bneck包含stride=1和stride=2版本,對於stride=2,shortcut路徑使用下采樣層,並在Ghost模塊中間插入stride=2的depthwise卷積。為了加速,Ghost模塊的原始卷積均採用pointwise卷積

  • GhostNet
GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  基於Ghost bottleneck,GhostNet的結構如圖7所示,將MobileNetV3的bottleneck block替換成Ghost bottleneck,部分Ghost模塊加入了SE模塊

  • Width Multiplier

  儘管表7的結構已經很高效,但有些場景需要對模型進行調整,可以簡單地使用對每層的維度進行擴縮,稱為***width multiplier***,模型大小與計算量大約為倍

Experiments


Efficiency of Ghost Module

  • Toy Experiments
GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  論文對圖1的ghost pair進行了不同核大小的線性變化測試,將左圖作為輸出右圖作為輸入訓練depthwise卷積,然後使用訓練的結果對左圖進行變換,計算其變換後與右圖的MSE。可以看到,不同的核大小下差值都很小,說明線性變換是有效的,而且核大小的影響不大,所以用核固定為d的depthwise卷積來進行公式3計算

  • CIFAR-10
GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  將VGG的卷積層替換成Ghost模塊進行超參數測試,表3的,表4的

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  可以看到使用Ghost模塊不僅比其它壓縮方法更能降低模型的體量,也最能保持模型準確率

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  對Ghost模塊產生的特徵進行了可視化,儘管從內在特徵線性變換而來,但還是有明顯的差異,說明線性變換足夠靈活

  • Large Models on ImageNet
GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  在大型網絡上使用Ghost模塊,壓縮效果和準確率依然很不錯

GhostNet on Visual Benchmarks

  • ImageNet Classification
GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  使用, , 的GhostNet,結果如表7,不同的模型大小使用不同的值進行調整,整體而言,GhostNet最輕量且準確率最高

  • Object Detection
GhostNet: 超越MobileNetV3的輕量級網絡 | CVPR 2020

  在one-stage和two-stage檢測算法上,GhostNet能降低大部分計算量,而mAP與其它主幹網絡差不多

CONCLUSION


  為了減少神經網絡的計算消耗,論文提出Ghost模塊來構建高效的網絡結果。該模塊將原始的卷積層分成兩部分,先使用更少的卷積核來生成少量內在特徵圖,然後通過簡單的線性變化操作來進一步高效地生成ghost特徵圖。從實驗來看,對比其它模型,GhostNet的壓縮效果最好,且準確率保持也很不錯,論文思想十分值得參考與學習

     

如果本文對你有幫助,麻煩點個贊或在看唄~ 更多內容請關注 微信公眾號【曉飛的算法工程筆記】


分享到:


相關文章: