一、參考資料
原始論文:[1]
IJCV22 | 已開源 | 華為GhostNet再升級,全系列硬件上最優極簡AI網絡
二、G-GhostNet
相關介紹
G-GhostNet
又稱為 GhostNetV1
的升級版,是針對GPU優化的輕量級神經網絡。
1. 摘要
GhostNetV1
作為近年來最流行的輕量級神經網絡架構,其在ARM和CPU端的應用已經非常廣泛。而在GPU和NPU這種并行計算設備上,GhostNetV1
并沒有體現出優勢。最近,華為諾亞的研究者針對GPU等設備的特點,巧妙引入跨層的廉價操作,減少計算量的同時減少的內存數據搬運,基于此設計了GPU版GhostNet
。實驗表明,G-GhostNet
在現有GPU設備上達到了速度和精度的最佳平衡。在華為自研NPU昇騰310上,G-GhostNet
的速度比同量級 ResNet
要快30%以上。該論文已被計算機視覺頂級期刊IJCV收錄。
2. 引言
關于GhostNetV1
網絡模型的詳細介紹,請參考另一篇博客:通俗易懂理解GhostNetV1輕量級神經網絡模型
基于卷積神經網絡的推理模型在以計算機視覺為基礎的各個終端任務如圖像識別、目標檢測、實力分割等場景中都有廣泛的應用。傳統的基礎神經網絡往往由于規模較大的參數量與計算量,導致各項終端任務無法實時工作。現有的輕量級推理網絡(MobileNet
, EfficientNet
, ShuffleNet
)都是針對CPU、ARM等移動設備設計而成,一般以深度可分離卷積為基礎,這些網絡相比于基于普通卷積的神經網絡(ResNet
, Inception
)具有更少的計算量。但是在GPU等基于大吞吐量設計的處理單元上的表現卻不盡人意,推理速度甚至比傳統的卷積神經網絡更慢。隨著硬件基礎的提升,云服務器、手機等端側設備也配備了大量的GPU模塊,設計出更適合GPU的推理模型具有重大的學術和商業價值。
回顧一下 GhostNetV1
的架構,GhostNetV1
由Ghost Module
搭建而成,Ghost Module
采用普通卷積生成少量特征圖,而更多特征圖則使用廉價操作(如DWConv
)來生成。這樣,Ghost Module
使用更少計算量更廉價的方式生成了和普通卷積層一樣多的特征圖。而 DWConv
等廉價操作對于流水線型CPU、ARM等移動設備更友好,對于并行計算能力強的GPU則不太友好。
相同stage之間,不同層的輸出特征具有較高的相似性,不同stage之間,特征的相似性較低。因此我們提出一種在同一個stage內進行跨層廉價線性變換,生成Ghost特征的基礎網絡結構 G-GhostNet
。
G-GhostNet
重點關注在GPU設備上能快速推理的卷積神經網絡,設計出用更少計算量和參數量達到更高推理速度和更高測試精度的模型,讓網絡生成與關鍵特征相似性高的特征。
3. G-Ghost stage
圖(a) 是普通卷積神經網絡(例如ResNet
)的stage,記作Vanilla CNN stage
,由n層卷積層 { L 1 , L 2 , ? , L n } \{L_{1},L_{2},\cdots,L_{n}\} {L1?,L2?,?,Ln?} 堆疊而成。給定輸入特征圖 X X X,則第一個block和最后一個block的輸出特征圖可以表示為:
Y 1 = L 1 ( X ) , Y n = L n ( L n ? 1 ( ? L 2 ( Y 1 ) ) ) , \begin{aligned}Y_1&=L_1(X),\\Y_n&=L_n(L_{n-1}(\cdots L_2(Y_1))),\end{aligned} Y1?Yn??=L1?(X),=Ln?(Ln?1?(?L2?(Y1?))),?
以 ResNet-34
為例,第2個stage的第一個block和最后一個block的輸出特征圖,如下圖所示。
圖(b) 是 G-Ghost
的stage,記作G-Ghost stage
,其由主干分支和Ghost分支組成。給定輸入特征圖 X ∈ R c × h × w X\in\mathbb{R}^{c\times h\times w} X∈Rc×h×w,主干分支的最后一個block的輸出特征圖記作 Y n c ∈ R ( 1 ? λ ) c × h × w Y_{n}^{c}\in\mathbb{R}^{(1-\lambda)c\times h\times w} Ync?∈R(1?λ)c×h×w,Ghost分支輸出的的Ghost特征圖記作 Y n g ∈ R λ c × h × w Y_{n}^{g}\in\mathbb{R}^{\lambda c\times h\times w} Yng?∈Rλc×h×w,其中 0 ≤ λ ≤ 1 0\leq\lambda\leq1 0≤λ≤1,表示Ghost特征圖的比例。
Y n c Y_{n}^{c} Ync? 可以表示為:
Y n c = L n ′ ( L n ? 1 ′ ( ? L 2 ′ ( Y 1 ) ) ) , Y_{n}^{c}=L'_{n}(L'_{n-1}(\cdots L'_{2}(Y_{1}))), Ync?=Ln′?(Ln?1′?(?L2′?(Y1?))),
其中, L 2 ′ , ? , L n ′ L_2^{\prime},\cdots,L_n^{\prime} L2′?,?,Ln′? 是以 ( 1 ? λ ) × w i d t h (1-\lambda)\times\mathrm{width} (1?λ)×width倍率進行壓縮的block。
Y n g Y_n^g Yng? 與第一個block的輸出特征圖 Y 1 Y_1 Y1?類似,可以通過廉價的線性變換 C C C得到,表達公式如下:
Y n g = C ( Y 1 ) , Y_n^g=C(Y_1), Yng?=C(Y1?),
其中, C C C 表示廉價的線性變換,linear kernels
尺寸可以為 1 × 1 1 \times 1 1×1 或者 5 × 5 5 \times 5 5×5 等。
最后,拼接(concat) Y n c Y_{n}^{c} Ync? 和 Y n g Y_n^g Yng?,得到G-Ghost stage
最終的輸出:
Y n = [ Y n c , Y n g ] . Y_n=[Y_n^c,Y_n^g]. Yn?=[Ync?,Yng?].
圖?是在G-Ghost stage
基礎上增加mix操作的stage,記作 G-Ghost?stage?w/?mix \text{G-Ghost stage w/ mix} G-Ghost?stage?w/?mix,mix操作用于增強中間層信息。 G-Ghost?stage?w/?mix \text{G-Ghost stage w/ mix} G-Ghost?stage?w/?mix利用多個廉價線性變換生成多個Ghost特征圖,其原理與G-Ghost stage
類似,不再贅述。
4. G-GhostNet
G-GhostNet
由多個G-Ghost stage
堆疊而成,具體網絡結構如下表所示。
解釋說明
Block
,表示傳統的殘差模塊;output
,表示輸出特征圖的尺寸;#out
,表示輸出特征圖的channels。
5. 總結
G-GhostNet
提出的跨層廉價線性變換,可用于不同網絡結構中,進一步優化模型運行所需的內存,提升GPU等設備上的運行速度。至此,GhostNet
系列網絡模型已經打通ARM、CPU、GPU甚至NPU的常用設備,能夠在不同硬件需求下達到最佳的速度和精度的平衡。
三、參考文獻
[1] Han K, Wang Y, Xu C, et al. GhostNets on heterogeneous devices via cheap operations[J]. International Journal of Computer Vision, 2022, 130(4): 1050-1069.