輕量級網絡的核心是在盡量保持精度的前提下,從體積和速度兩方面對網絡進行輕量化改造,本文對輕量級網絡進行簡述,主要涉及以下網絡:
- SqueezeNet系列
- ShuffleNet系列
- MnasNet
- MobileNet系列
- CondenseNet
- ESPNet系列
- ChannelNets
- PeleeNet
- IGC系列
- FBNet系列
- EfficientNet
- GhostNet
- WeightNet
- MicroNet
- MobileNext
SqueezeNet系列
SqueezeNet系列是比較早期且經典的輕量級網絡,SqueezeNet使用Fire模塊進行參數壓縮,而SqueezeNext則在此基礎上加入分離卷積進行改進。雖然SqueezeNet系列不如MobieNet使用廣泛,但其架構思想和實驗結論還是可以值得借鑒的。
SqueezeNet
SqueezeNet是早期開始關注輕量化網絡的研究之一,使用Fire模塊進行參數壓縮。
SqueezeNet的核心模塊為Fire模塊,結構如圖1所示,輸入層先通過squeeze卷積層($1\times 1$卷積)進行維度壓縮,然后通過expand卷積層($1\times 1$卷積和$3\times 3$卷積混合)進行維度擴展。Fire模塊包含3個參數,分別為squeeze層的$1\times 1$卷積核數$s_{1x1}$、expand層的$1\times 1$卷積核數$e_{1x1}$和expand層的$3\times 3$卷積核數$e_{3x3}$,一般$s_{1x1}<(e_{1x1}+e_{3x3})$
SqueezeNext
SqueezeNext是SqueezeNet實戰升級版,直接和MobileNet對比性能。SqueezeNext全部使用標准卷積,分析實際推理速度,優化的手段集中在網絡整體結構的優化。
SqueezeNext的設計沿用殘差結構,沒有使用當時流行的深度分離卷積,而是直接使用了分離卷積,設計主要基於以下策略:
-
Low Rank Filters
低秩分解的核心思想就是將大矩陣分解成多個小矩陣,這里使用CP分解(Canonical Polyadic Decomposition),將$K\times K$卷積分解成$K\times 1$和$1\times K$的分離卷積,參數量能從$K^2$降為$2K$。 -
Bottleneck Module
參數量與輸入輸出維度有關,雖然可以使用深度分離卷積來減少計算量,但是深度分離卷積在終端系統的計算並不高效。因此采用SqueezeNet的squeeze層進行輸入維度的壓縮,每個block的開頭使用連續兩個squeeze層,每層降低1/2維度。 -
Fully Connected Layers
在AlexNet中,全連接層的參數占總模型的96%,SqueezeNext使用bottleneck層來降低全連接層的輸入維度,從而降低網絡參數量。
ShuffleNet系列
ShuffleNet系列是輕量級網絡中很重要的一個系列,ShuffleNetV1提出了channel shuffle操作,使得網絡可以盡情地使用分組卷積來加速,而ShuffleNetV2則推倒V1的大部分設計,從實際出發,提出channel split操作,在加速網絡的同時進行了特征重用,達到了很好的效果。
ShuffleNet V1
ShuffleNet的核心在於使用channel shuffle操作彌補分組間的信息交流,使得網絡可以盡情使用pointwise分組卷積,不僅可以減少主要的網絡計算量,也可以增加卷積的維度。
在目前的一些主流網絡中,通常使用pointwise卷積進行維度的降低,從而降低網絡的復雜度,但由於輸入維度較高,pointwise卷積的開銷也是十分巨大的。對於小網絡而言,昂貴的pointwise卷積會帶來明顯的性能下降,比如在ResNext unit中,pointwise卷積占據了93.4%的計算量。為此,論文引入了分組卷積,首先探討了兩種ShuffleNet的實現:
- 圖1a是最直接的方法,將所有的操作進行了絕對的維度隔離,但這會導致特定的輸出僅關聯了很小一部分的輸入,阻隔了組間的信息流,降低了表達能力。
- 圖1b對輸出的維度進行重新分配,首先將每個組的輸出分成多個子組,然后將每個子組輸入到不同的組中,能夠很好地保留組間的信息流。
圖1b的思想可以簡單地用channel shuffle操作進行實現,如圖1c所示,假設包含$g$組的卷積層輸出為$g\times n$維,首先將輸出reshape()為$(g, n)$,然后進行transpose(),最后再flatten()回$g\times n$維。
ShuffleNet V2
ShuffleNetV1的pointwise分組卷積以及bottleneck結果均會提高MAC,導致不可忽視的計算損耗。為了達到高性能以及高准確率,關鍵是在不通過稠密卷積以及過多分組的情況下,獲得輸入輸出一樣的大維度卷積。ShuffleNet V2從實踐出發,以實際的推理速度為指導,總結出了5條輕量級網絡的設計要領,並根據要領提出了ShuffleNetV2,很好地兼顧了准確率和速度,其中channel split操作十分亮眼,將輸入特征分成兩部分,達到了類似DenseNet的特征重用效果。
ShuffeNetV1的unit結構如圖3ab所示,在V1的基礎上加入channel split操作,如圖3c所示。在每個unit的開頭,將特征圖分為$c-c{'}$以及$c{'}$兩部分,一個分支直接往后傳遞,另一個分支包含3個輸入輸出維度一樣的卷積。V2不再使用分組卷積,因為unit的開頭已經相當於進行了分組卷積。在完成卷積操作后,將特征concate,恢復到unit的輸入大小,然后進行channel shuffle操作。這里沒有了element-wise adddition操作,也節省了一些計算量,在實現的時候將concat/channel shuffle/channel split合在一起做了,能夠進一步提升性能。
空間下采樣時對unit進行了少量的修改,如圖3d所示,去掉了channel split操作,因此輸出大小降低一倍,而維度則會增加一倍。
MnasNet
論文提出了移動端的神經網絡架構搜索方法,該方法主要有兩個思路,首先使用多目標優化方法將模型在實際設備上的耗時融入搜索中,然后使用分解的層次搜索空間讓網絡保持層多樣性的同時,搜索空間依然很簡潔,MnasNet能夠在准確率和耗時中有更好的trade off
MobileNet系列
MobileNet系列是很重要的輕量級網絡家族,出自谷歌,MobileNetV1使用深度可分離卷積構建輕量級網絡,MobileNetV2提出創新的inverted residual with linear bottleneck單元,雖然層數變多了,但是整體網絡准確率和速度都有提升,MobileNetV3則結合AutoML技術與人工微調進行更輕量級的網絡構建。
MobileNetV1
MobileNetV1基於深度可分離卷積構建了非常輕量且延遲小的模型,並且可以通過兩個超參數進一步控制模型的大小,該模型能夠應用到終端設備中,具有很重要的實踐意義。
MobileNet通過深度可分離卷積優進行計算量優化,將標准卷積轉化為深度卷積和$1\times 1$pointwise卷積,每層后面都會接BN和ReLU。
MobileNetV2
MobileNetV2首先表明高維特征實際可以用緊湊的低維特征表達,然后提出了新的層單元inverted residual with linear bottleneck,該結構與殘差網絡單元類似,都包含shorcut,區別在於該結構是輸入輸出維度少,中間通過線性卷積先擴展升維,然后通過深度卷積進行特征提取,最后再映射降維,可以很好地保持網絡性能且網絡更加輕量。
MobileNetV3
MobileNetV3先基於AutoML構建網絡,然后進行人工微調優化,搜索方法使用了platform-aware NAS以及NetAdapt,分別用於全局搜索以及局部搜索,而人工微調則調整了網絡前后幾層的結構、bottleneck加入SE模塊以及提出計算高效的h-swish非線性激活。
CondenseNet
DenseNet基於特征復用,能夠達到很好的性能,但是論文認為其內在連接存在很多冗余,早期的特征不需要復用到較后的層。為此,論文基於可學習分組卷積提出CondenseNet,能夠在訓練階段自動稀疏網絡結構,選擇最優的輸入輸出連接模式,並在最后將其轉換成常規的分組卷積分組卷積結構。
分組卷積的學習包含多個階段,前半段訓練過程包含多個condensing階段,結合引導稀疏化的正則化方法來反復訓練網絡,然后將不重要的filter剪枝。后半部分為optimization階段,這個階段對剪枝固定后的網絡進行學習。
ESPNet系列
ESPNet系列的核心在於空洞卷積金字塔,每層具有不同的dilation rate,在參數量不增加的情況下,能夠融合多尺度特征,相對於深度可分離卷積,深度可分離空洞卷積金字塔性價比更高。另外,HFF的多尺度特征融合方法也很值得借鑒 。
ESPNet
ESPNet是用於語義分割的輕量級網絡,核心在於ESP模塊。如圖a所示,該模塊包含point-wise卷積和空洞卷積金字塔,分別用於降低計算復雜度以及重采樣有效感受域不同的特征。ESP模塊比其它卷積分解方法(mobilenet/shufflenet)更高效,ESPNet能在GPU/筆記本/終端設備上達到112FPS/21FPS/9FPS。
另外,論文發現,盡管空洞卷積金字塔帶來更大的感受域,但直接concate輸出卻會帶來奇怪網格紋路。為了解決這個問題,論文提出圖b的HFF操作,在concate之前先將輸出進行層級相加。相對於添加額外的卷積來進行后處理,HFF能夠有效地解決網格紋路而不帶來過多的計算量。另外,為了保證網絡的梯度傳遞,在ESP模塊添加了一條從輸入到輸出的shortcut連接。
ESPNetV2
ESPNetv2在ESPNet的基礎上結合深度分離卷積的設計方法,進行了進一步的模型輕量化。首先將point-wise卷積替換為分組point-wise卷積,然后將計算量較大的空洞卷積替換為深度可分離空洞卷積,最后依然使用HFF來消除網格紋路,輸出特征增加一次特征提取,得到圖b的結構。考慮到單獨計算K個point-wise卷積等同於單個分組數為K的point-wise分組卷積,而分組卷積的在實現上更高效,於是改進為圖c的最終結構。
ChannelNets
論文提出channel-wise卷積的概念,將輸入輸出維度的連接進行稀疏化而非全連接,區別於分組卷積的嚴格分組,以類似卷積滑動的形式將輸入channel與輸出channel進行關聯,能夠更好地保留channel間的信息交流。基於channel-wise卷積的思想,論文進一步提出了channel-wise深度可分離卷積,並基於該結構替換網絡最后的全連接層+全局池化的操作,搭建了ChannelNets。
PeleeNet
基於DenseNet的稠密連接思想,論文通過一系列的結構優化,提出了用於移動設備上的網絡結構PeleeNet,並且融合SSD提出目標檢測網絡Pelee。從實驗來看,PeleeNet和Pelee在速度和精度上都是不錯的選擇。
IGC系列
IGC系列網絡的核心在分組卷積的極致運用,將常規卷積分解成多個分組卷積,能夠減少大量參數,另外互補性原則和排序操作能夠在最少的參數量情況下保證分組間的信息流通。但整體而言,雖然使用IGC模塊后參數量和計算量降低了,但網絡結構變得更為繁瑣,可能導致在真實使用時速度變慢。
IGCV1
Interleaved group convolution(IGC)模塊包含主分組卷積和次分組卷積,分別對主分區和次分區進行特征提取,主分區通過輸入特征分組獲得,比如將輸入特征分為$L$個分區,每個分區包含$M$維特征,而對應的次分區則分為$M$個分區,每個分區包含$L$維特征。主分組卷積負責對輸入特征圖進行分組特征提取,而次組卷積負責對主分組卷積的輸出進行融合,為$1\times 1$卷積。IGC模塊形式上與深度可分離卷積類似,但分組的概念貫穿整個模塊,也是節省參數的關鍵,另外模塊內補充了兩個排序模塊來保證channel間的信息交流。
IGCV2
IGCV1通過兩個分組卷積來對原卷積進行分解,減少參數且保持完整的信息提取。但作者發現,因為主分組卷積和次分組卷積在分組數上是互補的,導致次卷積的分組數一般較小,每個分組的維度較大,次卷積核較為稠密。為此,IGCV2提出Interleaved Structured Sparse Convolution,使用多個連續的稀疏分組卷積來替換原來的次分組卷積,每個分組卷積的分組數都足夠多,保證卷積核的稀疏性。
IGCV3
基於IGCV和bootleneck的思想,IGCV3結合低秩卷積核和稀疏卷積核來構成稠密卷積核,如圖1所示,IGCV3使用低秩稀疏卷積核(bottleneck模塊)來擴展和輸入分組特征的維度以及降低輸出的維度,中間使用深度卷積提取特征,另外引入松弛互補性原則,類似於IGCV2的嚴格互補性原則,用來應對分組卷積輸入輸出維度不一樣的情況。
FBNet系列
FBNet系列是完全基於NAS搜索的輕量級網絡系列,分析當前搜索方法的缺點,逐步增加創新性改進,FBNet結合了DNAS和資源約束,FBNetV2加入了channel和輸入分辨率的搜索,FBNetV3則是使用准確率預測來進行快速的網絡結構搜索。
FBNet
論文提出FBNet,使用可微神經網絡搜索(DNAS)來發現硬件相關的輕量級卷積網絡,流程如圖1所示。DNAS方法將整體的搜索空間表示為超網,將尋找最優網絡結構問題轉換為尋找最優的候選block分布,通過梯度下降來訓練block的分布,而且可以為網絡每層選擇不同的block。為了更好地估計網絡的時延,預先測量並記錄了每個候選block的實際時延,在估算時直接根據網絡結構和對應的時延累計即可。
FBNetV2
DNAS通過訓練包含所有候選網絡的超網來采樣最優的子網,雖然搜索速度快,但需要耗費大量的內存,所以搜索空間一般比其它方法要小,且內存消耗和計算量消耗隨搜索維度線性增加。為了解決這個問題,論文提出DMaskingNAS,將channel數和輸入分辨率分別以mask和采樣的方式加入到超網中,在帶來少量內存和計算量的情況下,大幅增加$10^{14}$倍搜索空間。
FBNetV3
論文認為目前的NAS方法大都只滿足網絡結構的搜索,而沒有在意網絡性能驗證時的訓練參數的設置是否合適,這可能導致模型性能下降。為此,論文提出JointNAS,在資源約束的情況下,同時搜索最准確的訓練參數以及網絡結構。FBNetV3完全脫離了FBNetV2和FBNet的設計,使用的准確率預測器以及基因算法都已經在NAS領域有很多應用,主要亮點在於將訓練參數加入到了搜索過程中,這對性能的提升十分重要。
EfficientNet
論文對模型縮放進行深入研究,提出混合縮放方法,該方法可以更優地選擇寬度、深度和分辨率的維度縮放比例,從而使得模型能夠達到更高的精度。另外,論文通過NAS神經架構搜索提出EfficientNet,配合混合縮放方法,能夠使用很少量的參數達到較高的准確率。
GhostNet
訓練好的網絡一般都有豐富甚至冗余的特征圖信息來保證對輸入的理解,相似的特征圖類似於對方的ghost。但冗余的特征是網絡的關鍵特性,論文認為與其避免冗余特征,不如以一種cost-efficient的方式接受,於是提出能用更少參數提取更多特征的Ghost模塊,首先使用輸出很少的原始卷積操作(非卷積層操作)進行輸出,再對輸出使用一系列簡單的線性操作來生成更多的特征。這樣,不用改變其輸出的特征圖數量,Ghost模塊的整體的參數量和計算量就已經降低了。
WeightNet
論文提出了一種簡單且高效的動態生成網絡WeightNet,該結構在權值空間上集成了SENet和CondConv的特點,在激活向量后面添加一層分組全連接,直接產生卷積核的權值,在計算上十分高效,並且可通過超參數的設置來進行准確率和速度上的trade-off。
MicroNet
論文提出應對極低計算量場景的輕量級網絡MicroNet,包含兩個核心思路Micro-Factorized convolution和Dynamic Shift-Max,Micro-Factorized convolution通過低秩近似將原卷積分解成多個小卷積,保持輸入輸出的連接性並降低連接數,Dynamic Shift-Max通過動態的組間特征融合增加節點的連接以及提升非線性,彌補網絡深度減少帶來的性能降低。
MobileNext
論文深入分析了inverted residual block的設計理念和缺點,提出更適合輕量級網絡的sandglass block,基於該結構搭建的MobileNext。sandglass block由兩個depthwise卷積和兩個pointwise卷積組成,部分卷積不需激活以及shorcut建立在高維度特征上。根據論文的實驗結果,MobileNext在參數量、計算量和准確率上都有更優的表現。
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】