華為諾亞、北大提出GhostNet,使用線性變換生成特徵圖,準確率超...

2020-12-05 AI科技大本營

作者 | Kai Han, Yunhe Wang等

編譯 | Conv

出品 | AI科技大本營(rgznai100)

受限於內存空間和計算資源,將卷積神經網絡部署到嵌入式設備中會比較困難。CNNs中特徵圖的冗餘性是保證其成功的關鍵,但是在神經網絡的結構設計中卻鮮有研究。

本文提出了一個全新的Ghost模塊,旨在通過極其小的代價操作生成更多更豐富的特徵圖。基於一組固有的特徵圖,作者應用一系列線性變換,以很小的代價生成許多能充分揭示固有特徵信息的虛特徵圖(Ghost feature maps)。

新提出的Ghost模塊可以作為一個即插即用的組件來升級現有的卷積神經網絡,通過將Ghost模塊堆疊得到Ghost bottlenecks,然後就可以輕易的構建出輕量級的Ghost網絡——GhostNet。實驗證明了Ghost替代傳統卷積層的有效性,在ImageNet分類數據集上,與MobileNet v3相比,GhostNet在相似計算複雜度的情況下,top-1 上的正確率達到75.7% 。

引言

深度卷積神經網絡在諸如目標識別,目標檢測,實例分割等任務上都取得了很大的進步。為了獲得更好地準確率表現,傳統的卷積神經網絡需要大量的參數和浮點運算,在ResNet-50中,大約有25.6M的參數,如果需要處理一張224x224的圖片,需要的浮點數計算有4.1B。這種需求需要巨大的存儲空間和算力要求。對於嵌入式設備和移動計算來說基本不可能。

因此,需要探索同時兼顧輕量級和效率的網絡結構來滿足移動計算的需要。在過去的幾年,有很多探索輕量級網絡的方法被提出,代表性的有網絡剪枝,知識蒸餾等,除此之外,高效的神經網絡結構設計在建立高效的、參數和計算較少的深度網絡方面具有很高的潛力,並且最近已經取得了相當大的成功。這種方法也可以為自動搜索方法提供新的搜索單元,代表性的有MobileNet系列,將傳統卷積方法拆分為深度卷積和點卷積。

ShuffleNet主要思路是使用Group convolution和Channel shuffle改進ResNet,可以看作是ResNet的壓縮版本,進一步提升了輕量模型的性能。在一個訓練良好的深度神經網絡特徵圖中,通常會包含豐富甚至冗餘的信息,以保證對輸入數據有全面的理解。如下圖所示,在ResNet-50中,將經過第一個殘差塊處理後的特徵圖拿出來,其中三個相似的特徵圖使用相同顏色的框圈出。其中一個特徵圖可以通過對另一個特徵圖進行簡單的變換(用扳手表示)來近似得到。這些相似的特徵映射對,就類似彼此的虛像,作者用Ghost表示,十分形象。

由此可見,特徵圖中的冗餘度是深度神經網絡成功的重要保證。作者並沒有刻意避免冗餘的特性圖,而是傾向於採用它們,但是以了一種低成本的方式。

在本文中,作者引入了新的Ghost模塊,旨在通過更少的參數生成更多更豐富的特徵。具體來說,Ghost模塊將傳統的卷積層劃分為兩部分。第一部分就是常規的卷積但是它們的數量會受到嚴格的限制。將第一部分得到的特徵圖作為固有卷積,應用一系列的線性變換生成更多特徵圖。在不改變輸出特徵圖尺寸的情況下,與普通卷積神經網絡相比,Ghost模塊的參數總需求和計算複雜度都有所降低。GhostNet就是在Ghost模塊的基礎上建立的。

作者首先在基準神經架構中替換原有的卷積層來證明Ghost模塊的有效性,然後在多個數據集上驗證GhostNets的性能。實驗結果表明,所提出的Ghost模塊在保持相似的識別性能的同時,能夠有效降低計算成本,並且GhostNets能夠超越目前最先進的深度模型模型MobileNetV3,適用於移動計算。

相關工作

目前對於輕量神經網絡的設計主要有兩大方法:模型壓縮和緊湊模型設計。

模型壓縮對於給定的神經網絡,模型壓縮的目的是減少計算和存儲成本。連接剪枝將那些不重要的神經元連接剪掉,通道剪枝將無用通道去除,實現計算加速。模型量化用離散值表示神經網絡中的權重,實現壓縮和加速。知識蒸餾將網絡分為教師網絡和學生網絡,旨在通過強大的教師網絡得到兼具正確率和輕量的學生網絡。

緊湊模型設計為了將神經網絡嵌入到行動裝置上,近年來提出了很多緊湊型網絡。SqueezeNet利用bottleneck結構在比AlexNet減少50倍參數的基礎上,達到了相似精度。MobileNets是一系列基於深度可分卷積的輕量級深度神經網絡,經過三個版本的進化迭代,實現了很高的精度。ShuffleNet引入了shuffle機制,改進了通道組之間的信息流交換。雖然這些模型獲得了很好的性能,但是特徵圖之間的相關性和冗餘性一直沒有得到很好的利用。

方法

Ghost 模塊深度卷積神經網絡通常包含大量的卷積計算,導致需要大量的計算成本,對移動計算,嵌入式設備來說很不現實。而事實上,主流CNNs的中間特徵圖中有廣泛存在的冗餘。作者提出通過減少諸如CNNs中的卷積核數量等來減少所需的資源需求。給定輸入數據X,表示為:

其中,c是通道數,h,w分別表示輸入數據的高和寬。任意卷積層生成n個feature map的操作可以表示為:

其中,*表示卷積操作,b是偏置項,此時得到的特徵圖Y維度信息為[h』 x w』 x n],需要的卷積核f維度信息為[ c x k x k x n ]。

接下來計算一下這個卷積過程需要的浮點數(FLOPs):

這個數據量高達數十萬,因為卷積核的數目n和通道數目c通常都非常大(例如256或512)

回顧常規卷積計算過程我們可以知道,要優化的參數(在f和b中)的數量由輸入和輸出特徵映射的維數顯式地確定,又因為卷積層的輸出特徵圖往往包含大量的冗餘,有些可能是相似的。作者認為沒有必要用大量的FLOPs和參數一個個地生成這些冗餘的特徵圖。設輸出的特性圖是通過對固有特性圖進行簡單轉換後得到的「幽靈」(Ghost)特徵圖。這些固有的特徵圖由常規卷積產生且尺寸較小。假定,現在的固有特徵圖Y』維度信息為[h』 x w』 x m ],可以通過一個普通卷積操作生成:

其中,f'維度為[c x k x k x m]。與上文中普通卷積的卷積核f相比,m小於等於n。其他的超參數諸如卷積核尺寸,填充方式,步長等都與普通卷積保持一致以此確保輸出的特徵圖空間大小與普通卷積相同。在保證了空間尺度相同的情況下,現在需要得到n維的feature maps,現在固有的feature maps只有m維。為此,作者對這些固有feature maps進行一系列簡單線性變換。具體公式為:

其中, 表示固有feature maps中的第i個特徵圖, 表示對第i個feature map進行的第j個線性變換,也就是說,某一層feature map可能對應多個線性變換,得到多個變換結果。在變換的最後,還需要增加一個同等映射,也就是將固有的feature maps原封不動的疊加到變換後的feature maps上去,以此保留固有特徵中的信息。通過上式,我們可以得到經過Ghost模塊後的n維特徵圖Y=[y11,y12,...,yms],n=mxs,示意圖如下:

線性操作 操作每個通道的計算成本遠小於普通的卷積,在實際操作中,在一個Ghost模塊中可能會有幾種不同的線性運算,這些將在實驗部分進行分析。

與現有方法的不同:

與那些利用1x1點卷積的方法相比,Ghost模塊對固有卷積的操作可以不限制卷積核大小。現有的方法]採用逐點卷積跨通道處理特徵,然後採用深度卷積處理空間信息。與之相反,Ghost模塊首先通過普通卷積操作生成小數量的固有特徵圖,此時的空間大小信息已經固定,只需要再通過簡單的線性變化進行空間通道的擴充和豐富。在過去的結構中,處理每個特徵圖的操作僅限於深度卷積或移位操作,而Ghost模塊中的線性操作可以具有較大的多樣性。在Ghost模塊中,同等映射與線性變換並行,以保持原有的特徵映射。GhostNets的構建Ghost Bottlenecks

ResNet中的bottleneck結構大家非常了解,作者針對Ghost模塊,專門為小卷積構建了bottlenecks。如下圖所示,與ResNet中的結構很相似,在Ghost中,bottlenecks主要由兩個堆積的Ghost模塊構成,第一個Ghost模塊的作用是擴展特徵圖的通道數,我們把輸出通道數與輸入通道數之比稱為擴展比。第二個Ghost模塊的作用是減少通道數來匹配捷徑路徑(shortcut path)。然後將這兩個Ghost模塊的輸入和輸出連接起來,除了按照MobileNetV2的建議在第二個Ghost模塊之後不使用ReLU外,每一層之後都使用batch歸一化(BN)和ReLU進行非線性激活。下圖是針對步長為1和2時的結構。當步長為2時,shortcut通過下採樣實現,且在兩個Ghost模塊間插入步長為2的深度卷積。

有了Ghost bottlenecks,接下來開始構建GhostNets。作者參考了MobileNetV3的基本架構,利用Ghost bottlenecks代替了MobileNetV3中的bottlenecks。在GhostNets中,第一層是有16個卷積核的普通卷積,然後是一系列通道數逐漸增加的Ghost bottlenecks。這些Ghost bottlenecks根據其輸入特徵圖的大小被分組到不同的階段。所有的bottlenecks步長均為1,除了最後一個為2。最後利用全局平均池化和卷積層將特徵圖轉化為一個1280維的特徵向量進行最終分類。SENet中的擠壓激勵模塊(SE)也適用於某些bottlenecks層。與MobileNetsV3不同,GhostNets並沒用應用hard-swish激活函數,因為它的延時性很高。

寬度係數

儘管給定架構已經可以提供低延遲和保證精度,但在某些場景中,我們可能需要更小、更快的模型或更高的特定任務的精度。定製所需的網絡需求,可以在每一層簡單地乘以一個係數α來加寬網絡。這個因子α稱為寬度乘數,因為它可以改變整個網絡的寬度。寬度乘數可以控制模型大小和計算成本大約α平方。

實驗

數據集:CIFAR10,ImageNet,MS COCO

Ghost模塊有效性實驗我們已經知道在卷積過程中生成的特徵圖中有一些相似的特徵映射對,它們可以通過一些線性操作來有效地生成。作者首先進行實驗來觀察原始特徵圖和生成的Ghost特徵圖之間的重構誤差。

以上圖中的的三對特徵映射為例,將左邊的特徵作為輸入,另一個作為輸出,利用一個小的深度卷積濾波器來學習映射,代表它們之間的線性操作。利用均方差MSE作為評價標準,結果如下圖所示,可以看到,MSE值非常小,表在深度神經網絡中,特徵圖之間存在很強的相關性,這些冗餘特徵圖可以由多個固有特徵圖生成。

除了上述實驗中用到的卷積,我們還可以探索其他一些低成本的線性操作來構造Ghost模塊,如仿射變換和小波變換。然而,卷積是一種高效的運算,已經得到了當前硬體的良好支持,它可以涵蓋許多廣泛使用的線性運算,如平滑、模糊、運動等。在Ghost有兩個超參數,分別是線性轉換中的卷積核大小d和步長s,結果如下所示,可以看到,提出的d=3的Ghost模塊比較小或較大的Ghost模塊性能更好。這是因為尺寸為1×1的卷積核不能在feature maps上引入空間信息,而尺寸較大的卷積核如d = 5或d = 7會導致過擬合和計算量增加。

因此,我們在接下來的實驗中採用d = 3進行實驗。s與得到的網絡的計算代價直接相關,s越大,壓縮比越大。當我們增加s的時候,FLOPs明顯減小,準確率逐漸降低,這與預期一致。特別是當s = 2表示將VGG-16壓縮2倍時,本文方法的性能甚至比原模型稍好一些,說明了所提出的Ghost模塊的優越性。

CIFAR-10實驗結果作者將Ghost模塊嵌入VGG-16和ResNet-56中,得到新的網絡結構,稱為Ghost-VGG-16和Ghost-ResNet-56,利用CIFAR-10數據集評估Ghost模塊。結構如下圖所示,我們將GhostNet與VGG-16和ResNet-56架構中具有代表性的最新模型進行了比較,對於VGG-16,本文模型得到的精度略高於原始的模型且速度快2倍以上,說明VGG模型存在較大的冗餘

特徵圖可視化如下圖所示,通過ghost模塊得到的特徵圖,雖然生成的feature maps來自於固有的feature maps,但是它們確實有顯著的差異,這意味著生成的feature足夠靈活,可以滿足特定任務的需要。左上角的圖像為輸入,左邊紅色框中的feature maps來自於固有卷積,右邊綠色框中的feature maps來自於經過Ghost模塊後的特徵輸出。

ImageNet實驗結果將Ghost模塊嵌入到標準的ResNet- 50中,並在ImageNet數據集上進行實驗。結果如下表所示,在兩倍多加速的情況下,本文的方法可以獲得明顯更好的性能。當s增加到4時,模型精度下降了0.3%,計算速度提高了4倍左右。相比之下,採用相似權重或FLOPs的比較方法的性能要差得多。

GhostNet實驗結果下表是最先進的小網絡在ImageNet上的實驗結果,可以看到,GhostNet超越了SOTA,兼顧了速度和準確率。

結論

為了降低當前深度神經網絡的計算成本,適應移動計算的需求。本文提出了一種新的Ghost模塊,用於構建高效的神經網絡結構。基本的Ghost模塊將原始的卷積分為兩部分,首先利用較少的卷積核生成幾個固有特徵圖,在此基礎上,進一步應用一定數量的線性變換操作,有效地生成豐富的特徵圖。

在基準模型和數據集上的實驗表明,該方法是一種即插即用的模型壓縮方法,可以將原始模型轉換為緊湊模型,同時保持可比較的性能。此外,使用新的Ghost模塊構建的GhostNet在效率和準確性方面都優於最先進的輕量級神經網絡架構。

論文連結:

https://arxiv.org/abs/1911.11907

GitHub 連結 (pytorch version):

https://github.com/iamhankai/ghostnet.pytorch

(*本文由 AI 科技大本營編譯,轉載請聯繫微信1092722531)

【end】

2月29日全天直播——中國「遠程辦公」大考·線上峰會

10+位來自華為、阿里、微軟、CODING等名企的專家大牛為大家做全天直播!

在線答疑、吐槽評論、現場抽獎等與大咖多維互動,不出家門,用程式設計師的方式來共同「抗」疫!

乾貨!從0到1教你打造一個令人上癮的聊天機器人?黑科技抗疫,Python開發者大集結!拿什麼拯救我的遠程辦公?解析雲原生與雲計算本質區別,別再傻傻分不清楚了!真實版「刪庫跑路」?程式設計師蓄意破壞線上生產環境!遊戲之道

相關焦點

  • 華為提出高效輕量級網絡GhostNet, 性能超越MobileNetV3
    特徵映射中的冗餘是CNN成功的一個重要特徵,但在神經結構設計中很少被研究。在訓練較好的深度網絡的特徵圖中,豐富甚至冗餘的信息常常保證了對輸入數據的全面理解。例如在輸入圖像的一些特徵映射,並且存在許多相似的特徵映射對,就像彼此的「幽靈」一樣。華為的研究員團隊並沒有避免冗餘的特性映射,而是傾向於採用它們,提出了一種新的Ghost模塊,從簡單的操作中獲取更多的特徵映射。
  • ...Transformer:華為諾亞、北大等提出IPT模型,刷榜多項底層視覺任務
    例如 OpenAI 的 iGPT、Facebook 提出的 DETR 等,這些跨界模型多應用於圖像識別、目標檢測等高層視覺任務。而華為、北大、悉大以及鵬城實驗室近期提出了一種新型預訓練 Transformer 模型——IPT(Image Processing Transformer),用於完成超解析度、去噪、去雨等底層視覺任務。
  • 預訓練圖像處理Transformer:華為諾亞、北大等提出IPT模型,刷榜多...
    例如 OpenAI 的 iGPT、Facebook 提出的 DETR 等,這些跨界模型多應用於圖像識別、目標檢測等高層視覺任務。而華為、北大、悉大以及鵬城實驗室近期提出了一種新型預訓練 Transformer 模型——IPT(Image Processing Transformer),用於完成超解析度、去噪、去雨等底層視覺任務。
  • 線性變換的幾何意義
    線性變換的幾何意義(The geometry of linear transformations)讓我們來看一些簡單的線性變換例子,以 2 X 2 的線性變換矩陣為例,首先來看一個較為特殊的,對角矩陣:從幾何上講,M是將二維平面上的點(x,y)經過線性變換到另外一個點的變換矩陣,如下圖所示變換的效果如下圖所示,
  • 華為諾亞方舟加拿大實驗室提出BANet,雙向視覺注意力機制用於單目...
    本文解讀的是論文《Bidirectional Attention Network for Monocular Depth Estimation》,論文作者來自華為加拿大諾亞方舟實驗室。  由於MDE是一個單plane估計(即單通道輸出)問題,基於此,本文的方法加入了深度到空間( depth-to-space,D2S)變換的思想,作為解碼階段下採樣操作的補救措施。 然而,直接對最終特徵圖進行 D2S 變換可能會因為缺乏可靠估計所需的場景全局上下文而受到影響。因此,本文的方法還在D2S變換後的單通道特徵圖上為每個階段的骨幹模型注入全局上下文信息。
  • 北大,華為Oral論文提出加法神經網絡
    在此論文中,來自北大、華為諾亞方舟實驗室等機構的作者們提出完全用加法代替乘法,用 L1 距離代替卷積運算,從而顯著減少計算力消耗。演講主題:加法神經網絡:在深度學習中我們是否真的需要乘法?簡介:陳漢亭,北京大學智能科學系碩博連讀三年級在讀,同濟大學學士,師從北京大學許超教授,研究興趣主要包括計算機視覺、機器學習和深度學習。
  • 7 Papers|MIT學神開源微分太極;北大等提出沒有乘法的神經網絡
    機器之心&ArXiv Weekly Radiostation參與:杜偉、楚航、羅若天本周的重要論文有 MIT 學神胡淵鳴等開源的自動微分版太極以及北大、華為諾亞方舟實驗室等主張以加法運算代替深度神經網絡中的乘法運算。
  • 華為諾亞ICLR 2020滿分論文:基於強化學習的因果發現算法
    本文介紹了華為諾亞方舟實驗室被 ICLR 2020 接收的一篇滿分論文。因果研究中一個經典的問題是「因果發現」問題——從被動可觀測的數據中發現潛在的因果圖結構。在此論文中,華為諾亞方舟實驗室因果研究團隊將強化學習應用到打分法的因果發現算法中,通過基於自注意力機制的 encoder-decoder 神經網絡模型探索數據之間的關係,結合因果結構的條件,並使用策略梯度的強化學習算法對神經網絡參數進行訓練,最終得到因果圖結構。
  • 華為提出移動端部署神經網絡新方法
    選自arXiv作者:Mostafa Elhoushi 等機器之心編譯參與:魔王、杜偉前不久,機器之心報導過北大、華為諾亞等合著的一篇論文,探討了不用乘法用加法能不能做深度學習。最近,我們又看到華為的另一篇論文,這一次沒有用加法替代乘法,而是用「按位移位」和「按位取反」來取代乘法運算。
  • 華為提出移動端部署神經網絡新方法
    、華為諾亞等合著的一篇論文,探討了不用乘法用加法能不能做深度學習。使用了卷積移位和全連接移位的神經網絡架構族即 DeepShift 模型。DeepShift 模型可以在不使用乘法的情況下實現,且在 CIFAR10 數據集上獲得了高達 93.6% 的準確率,在 ImageNet 數據集上獲得了 70.9%/90.13% 的 Top-1/Top-5 準確率。
  • 高等代數之線性變換
    今天我們來看一下不變子空間與線性變換的矩陣化簡之間的一個關係。我們先回顧一下不變子空間的定義:接下來我們來看一下線性變換在不變子空間W的一組基擴充為整個線性空間的基之後,在這一組基之下的矩陣會變成什麼樣子的。我們可以發現這個時候線性變換在這組基之下的矩陣已經變得相對簡單了,出現了分塊的0矩陣,如果可以出現更多的0那麼這個矩陣將會變得更加的簡單。
  • 斯坦福學者造出機器鴿;港科大等提出學生情緒分析新系統
    2)如何從視頻中提取有效時空聯合特徵,避免準確率下降?針對這些問題,來自北航、愛奇藝等機構的研究者提出了耦合知識蒸餾的輕量級視頻顯著區域檢測方法。輕量級視頻顯著區域檢測的難點在於模型泛化能力不足,時域空域線索結合難,影響方法的檢測性能。 研究者提出了一種輕量級的網絡架構 UVA-Net,並利用耦合知識蒸餾的訓練方法提高視頻顯著區域檢測性能。
  • 圖像特徵點、投影變換與圖像拼接
    投影變換不僅僅用於全景拼接,我們還可以使用它來做視角變換,比如把正視圖變換為俯視圖或側視圖:而在全景拼接中,假如我們要把在不同相機中心位置拍攝的圖像通過投影變換拼接到一起時,會怎麼樣呢?比如下圖,我們要將圖像平面1和2通過投影變換到綠色線表示的共同平面上去,從而實現拼接,此時會怎樣呢?
  • 圖像特徵點、投影變換與圖像拼接
    而在全景拼接中,假如我們要把在不同相機中心位置拍攝的圖像通過投影變換拼接到一起時,會怎麼樣呢?比如下圖,我們要將圖像平面1和2通過投影變換到綠色線表示的共同平面上去,從而實現拼接,此時會怎樣呢?所以如果知道原始圖像和變換後的圖像的一對對應點的坐標,可以構成兩個線性方程。因此,如果要確定變換矩陣中的8個未知量,一共需要4對對應點,8個線性方程:
  • 線性變換——線性代數的本質(二)
    線性變換 要了解線性變換,首先要知道它的定義嘛,以下來自百度詞條:線性映射( linear mapping)是從一個向量空間是線性空間V到其自身的線性映射。而線性變換(linear transformation)是線性空間V到其自身的線性映射。
  • 先融合再填充,上海交大提出少樣本圖像生成新方法F2GAN
    基於變換的方法(transformation-based):輸入單張圖片,對這張圖片進行變換,得到另一張屬於同一類別的圖片。比如 DAGAN [3] 輸入單張圖片和一個隨機向量,對輸入圖片進行微調得到新的同類圖片。
  • 線性變換是高等代數的半壁江山, 那什麼是線性變換的半壁江山呢?
    首先, 要承認線性變換最重要的知識點就是不變子空間.
  • 線性變換終於來了冪等變換
    今天我們改回手寫稿,之前一直沒有怎麼寫線性變換的知識點.原因是我感覺一下說不清楚,以後內容太多了.但是,畢竟線性變換太重要的,肯定需要給大家說.今天就開一個頭,每篇文章的開頭我都會說點最基礎的知識點,這對我們學號線性變換非常有幫助.首先,我們要知道線性變換是什麼?
  • 谷歌大腦提出NAS-FPN:一種學會自動架構搜索的特徵金字塔網絡
    為了解決這個問題,很多現代目標檢測器普遍使用金字塔特徵表示,它表示具有多尺度特徵層的圖像。在這篇論文中,谷歌大腦的 Quoc V. Le 等研究者提出了一種新的架構搜索方法 NAS-FPN。他們希望藉助神經架構搜索的優勢,並學習更好的目標檢測特徵金字塔網絡架構。
  • KDD 2019 | 自動探索特徵組合,第四範式提出新方法AutoCross
    在基準數據集和真實業務數據集上的實驗結果表明,AutoCross 可以顯著提高線性模型和深度模型對表數據的學習能力和性能,優於其他基於搜索和深度學習的特徵生成方法,進一步證明了其有效性和效率。這篇論文證明了 xDeepFM 可生成的特徵是 AutoCross 可生成特徵嵌入(embedding)的子集。AutoCross 的優勢高效+高階:AutoCross 可高效構建高階組合特徵,進一步提高學習性能;易用:AutoCross 具有高度的簡單性和最小化的超參數。