GhostNet論文筆記

_white_door發表於2020-11-08

GhostNet

pdf:https://arxiv.org/abs/1911.11907

程式碼:https://github.com/iamhankai/ghostnet

簡介

作者發現當CNN的提取的特徵層很多的時候,有大部分的特徵其實是相關的(如figure-1所示),

在這裡插入圖片描述

彼此之間的區別不大,並且因為卷積的特性,模型的引數量和計算量是與特徵緯度正相關的。因此為了在維持模型效能的前提下,進一步的減少模型的引數量和計算量,作者提出了使用線性核和卷積核組合的方法進行計算。先使用維度較少的卷積層計算特徵,再利用線性層計算與卷積層輸出相關的特徵。這種方法可以成倍的減少網路的引數和計算量,並儘量維持網路的效能。

ghost module

在這裡插入圖片描述

GhostNet由許多的ghost module組成,每個ghoset module分為兩個部分,第一個部分是常規的卷積,不過與普通的ResNet不同的是,ghost module輸出的維度是res module的1/s。第二部分是利用m個線性核計算卷積特徵的相關特徵(論文裡面稱作ghost feature),因為有多個線性核所以每個卷積特徵也會有多個ghost feature,最終的輸出緯度還是n = 卷積的特徵維度 + ghost feature的特徵維度。假設本來的resnet的卷積核大小為k*k*n,那麼ghost module的卷積核大小就為k*k*n/s,線性核大小為d*d,那麼理論上ghost module的提升速度的倍數就如下所示:
在這裡插入圖片描述

同理引數量也減少了s倍。

ghost net

在這裡插入圖片描述

ghost net整體結構與resnet相似,只不過吧res block替換成了ghost block,每個ghost block由兩個ghost module組成,前一個負責提升特徵維度,後一個用於對齊shortcut的維度。 當需要pooling時,網路會使用一個stride為2的深度可分離卷積替代pooling層。與mobileNet V2一樣,網路去掉了第二個ghost module
後面的非線性層。

試驗結果

在這裡插入圖片描述

可以看到相比mobileNet V3,在計算量更小一些的情況下,ghostNet的效果更好一些,不過引數量會多一些。

相關文章