加州大學(xué)與微軟提出MicroNet,比MobileNetv3更小更快的網(wǎng)絡(luò)
點(diǎn)擊左上方藍(lán)字關(guān)注我們


論文地址:https://arxiv.org/pdf/2108.05894.pdf
開源代碼:GitHub目前未開放
MicroNet基于2個(gè)設(shè)計(jì)原則來處理極低的FLOPs:
1、降低網(wǎng)絡(luò)節(jié)點(diǎn)(神經(jīng)元)之間的連通性而不降低網(wǎng)絡(luò)的寬度;
2、使用更復(fù)雜的非線性激活函數(shù)來彌補(bǔ)通性網(wǎng)絡(luò)深度的減少所帶來的精度損失。
設(shè)計(jì)方法簡述
Micro-Factorized convolution 將MobileNet中的point-wise卷積以及depth-wise卷積分解為低秩矩陣,從而使得通道數(shù)目和輸入輸出的連通性得到一個(gè)良好的平衡。 Dynamic Shift-Max 使用一種新的激活函數(shù),通過最大化輸入特征圖與其循環(huán)通道偏移之間的多重動(dòng)態(tài)融合,來增強(qiáng)非線性特征。之所以稱之為動(dòng)態(tài)是因?yàn)椋?span style="outline: 0px;max-width: 100%;font-weight: 600;box-sizing: border-box !important;overflow-wrap: break-word !important;">融合過程的參數(shù)依賴于輸入特征圖。

詳細(xì)解讀
1. 設(shè)計(jì)原理
要想實(shí)現(xiàn)低FLOPs,主要是要限制網(wǎng)絡(luò)寬度(通道數(shù))和網(wǎng)絡(luò)深度(網(wǎng)絡(luò)層數(shù))。如果把一個(gè)卷積層抽象為一個(gè)圖,那么該層輸入和輸出中間的連接邊,可以用卷積核的參數(shù)量來衡量。因此作者定義了卷積層連通性(connectivity)的概念,即每個(gè)輸出節(jié)點(diǎn)所連接的邊數(shù)。如果我們把一個(gè)卷積層的計(jì)算量設(shè)為固定值,那么更多的網(wǎng)絡(luò)通道數(shù)就意味著更低的連通性(比如深度可分離卷積,具有較多的通道數(shù)但是有很弱的連通性)。作者認(rèn)為平衡好通道數(shù)目和連通性之間的關(guān)系,避免減少通道數(shù),可以有效地提升網(wǎng)絡(luò)的容量。除此之外,當(dāng)網(wǎng)絡(luò)的深度(層數(shù))大大減少時(shí),其非線性性質(zhì)會受到限制,從而導(dǎo)致明顯的性能下降。因此,作者提出以下兩個(gè)設(shè)計(jì)原則:
1. 通過降低節(jié)點(diǎn)連接性來避免網(wǎng)絡(luò)寬度的減小
作者是通過分解points-wise卷積以及depth-wise卷積來實(shí)現(xiàn)如上原則。
2. 增強(qiáng)每一層的非線性性質(zhì)來彌補(bǔ)網(wǎng)絡(luò)深度減少所帶來的損失
作者是通過設(shè)計(jì)了一個(gè)全新的激活函數(shù)來實(shí)現(xiàn)如上原則,稱為Dynamic Shift-Max
2. Micro-Factorized 卷積
作者將pointwise卷積和depthwise卷積分解為更為合適的尺度,用來平衡通道數(shù)目和輸入輸出連通性。
Micro-Factorized Point-wise Convolution
將point-wise卷積進(jìn)行分解,原文給出的公式較為復(fù)雜,我這里直接對圖進(jìn)行講解。假設(shè)輸出和輸出通道數(shù)都為C。對于常規(guī)的點(diǎn)卷積,其實(shí)就是一個(gè)C*C的實(shí)矩陣W(C維到C維的線性變換)。

但是這樣的點(diǎn)卷積是一種稠密的全連接,在這就帶來巨大的計(jì)算負(fù)擔(dān)。為了進(jìn)一步減少計(jì)算量,提升網(wǎng)絡(luò)的稀疏性(降低連通性),作者將原始的稠密矩陣W分解為3個(gè)更加稀疏的矩陣。

如上圖所示,W為

微分解點(diǎn)卷積網(wǎng)絡(luò)拓?fù)鋱D
如上圖所示,我們把一個(gè)特征圖(通道)當(dāng)作一個(gè)節(jié)點(diǎn),輸入和輸出都是C=18個(gè)節(jié)點(diǎn), 壓縮率 R=2, 分組數(shù) G=3。原始點(diǎn)卷積就需要一個(gè)18*18的實(shí)矩陣實(shí)現(xiàn)變換。作者將原始的點(diǎn)卷積操作分為3步:
將18個(gè)節(jié)點(diǎn)映射到9個(gè)節(jié)點(diǎn)(壓縮率為2),分三組卷積,因此每組需要一個(gè)6*3的矩陣。
將9個(gè)節(jié)點(diǎn)使用置換矩陣,進(jìn)行重新排序。
將9個(gè)節(jié)點(diǎn)分三組,映射回18個(gè)節(jié)點(diǎn),每組需要一個(gè)3*6的矩陣。

如上圖所示,上圖即為計(jì)算過程中矩陣的形態(tài),其中P和Q為對角塊矩陣,
Micro-Factorized Depth-wise Convolution
對于depth-wise卷積的分解,就是常規(guī)的空間可分離卷積,即將一個(gè)K*K的卷積核分解為兩個(gè)K*1和1*K的向量。

將Micro-Factorized Pointwise Convolution和Depth-wise Convolution結(jié)合起來,得到Lite Combination。其并非是簡單地將depthwise和pontwise卷積拼在一起,而是先用depthwise進(jìn)行expand(通道數(shù)增加),再使用pointwise進(jìn)行squeeze(通道壓縮),這樣可以節(jié)省更多的計(jì)算資源用到depthwise上,而非通道融合的pointwise上。
3. Dynamic Shift-Max
假設(shè)

則引入動(dòng)態(tài)最大偏移函數(shù)(Dynamic Shift-Max)如下:

Dynamic Shift-Max 激活函數(shù)
其中

如上圖所示,使用Dynamic Shift-Max改裝后的Micro-Factorized Pointwise Convolution(K=1,J=2),在置換矩陣之后又添加了Group Shift映射,實(shí)現(xiàn)2個(gè)通道的信息融合(每個(gè)節(jié)點(diǎn)都來自兩個(gè)不同組節(jié)點(diǎn)的映射)。通過添加Dynamic Shift-Max激活函數(shù),卷積矩陣W中9個(gè)子矩陣塊的秩從1上升到了2,提高了連通性。
4. Micro-Net Architecture
作者介紹了3種不同MicroNet模型,其計(jì)算量FLOPs從6M到44M.它們都是由 Micro-Factorized Pointwise Convolution 和 Micro-Factorized Depth-wise Convolution以不同的形式組合而來,并且它們都使用Dynamic Shift-Max作為激活函數(shù)。

總結(jié)
這篇論文主要的創(chuàng)新點(diǎn):
通過分解卷積核,進(jìn)一步壓縮網(wǎng)絡(luò)的連接性,使得網(wǎng)絡(luò)更加稀疏化,提高計(jì)算性能。
設(shè)計(jì)了全新的動(dòng)態(tài)激活函數(shù),引入更多的非線性特征,增強(qiáng)模型表現(xiàn)力。
我在GitHub上開源了一個(gè)加法網(wǎng)絡(luò)硬件加速開源項(xiàng)目,歡迎大家加入,一起完善。

GitHub鏈接 https://github.com/Charmve/AccANN
更多模型壓縮、剪枝的內(nèi)容,可以參考CSDN付費(fèi)專欄:

專欄鏈接 https://blog.csdn.net/charmve/category_10101246.html
參考資料
[1] 知乎@有童心的老王 鏈接:https://zhuanlan.zhihu.com/p/337107958
[2] Micro-Net: Towards Image Recognition with Extremely Low FLOPs
[3] Mobile-Nets: Efficient Convolutional Neural Networks for Mobile Vision Applications
[4] Shuffle-Net: An Extremely Efficient Convolutional Neural Network for Mobile Devices
[5] Squeeze-and-Excitation Networks
END
點(diǎn)贊三連,支持一下吧↓
