PP-LCNet-A Lightweight CPU Convolutional Neural Network
一、Introduction
動機
由于MKLDNN庫的限制,現(xiàn)有的NN在速度上無法在Inter-CPU上得到最大的提升,本文設(shè)計了一種專為Inter CPU準備的輕量級網(wǎng)絡(luò),設(shè)計這個網(wǎng)絡(luò)的時候,我們主要考慮了一下幾個問題
如何讓網(wǎng)絡(luò)獲取更強的特征表達而不增加推理時延?
到底是什么因素/模塊幫助CPU端的輕量級網(wǎng)絡(luò)提高accuracy?
設(shè)計基于CPU的輕量級網(wǎng)絡(luò)的時候,如何有效的結(jié)合不同的策略?
貢獻
總結(jié)了一系列的方法,來提升accuracy但是不增加inference time
給出了如何結(jié)合這些方法來最終獲得一個好結(jié)果
二、Approach
2.1 BaseNet
很多輕量級CNN在ARM上速度很快,但是在Interl-CPU上表現(xiàn)一般,大部分原因是因為沒有充分利用MKLDNN庫。
-
我們使用MobileNet V1里面的DepthSepConv作為基礎(chǔ)模塊。這個模塊,無add,無cat 操作,不僅會拖累模型的速讀,而且對于輕量級模型的accuracy提升無用(暫時無法理解為什么add,cat這種類似于特征融合的操作對于輕量級模型無用)
-
DepthSepConv這個模塊在Inter CPU 加速庫中已經(jīng)被高度優(yōu)化過了,因此比inverted block和shufflenet-block更快
-
我們基于DepthSepConv堆疊形成了BaseNet,然后添加了一些現(xiàn)有的成熟的技術(shù),構(gòu)建了PP-LCNet
個人總結(jié):已知Inter CPU的加速快對于 DepthSepConv做了深度優(yōu)化,且add,cat幾乎無收益,進而設(shè)計了一個專用于Inter CPU的網(wǎng)絡(luò)
2.2 激活函數(shù)使用H-Swish
EfficientNet使用Swish獲得了比ReLU更好的性能;
MobileNet V3使用Hard Swish獲得了比Swish更好的性能,
我們也在BaseNet中使用Hard Swish替換了原先的ReLu,也獲得了更好的accuracy,而且不增加inference time
2.3 把SE模塊插入到合適的位置
SE模塊確實很有效,但是基于Inter CPU上,SE會增加推理時間
經(jīng)過大量實驗證明,位于NN深層的SE模塊比其他位置的SE模塊起到了更重要的作用,因此我們僅在NN的深層加入了SE模塊(這個幾乎就是印證了微軟的動態(tài)卷積的結(jié)論,注意力機制在深層更有效)
2.4 使用更大的卷積核
在MixNet中,作者證明了使用不同大小的kernel的組合可以獲得更好的效果,但這明顯會增加推理時間。所以我們決定,每一層卷積僅使用一種大小的kernel,并且確保使用大kernel的時候既能提升accuracy也不能增加latency。(這其實言外之意就是在小的feature map上才使用大的kernel-size)
經(jīng)過,本文在NN的尾部使用5×5的kernel size替代了3×3的kernel,可以獲得與替換所有卷積層近似的效果,這個結(jié)論和SE的替換很像。
2.5 在GAP之后使用一個高維的1×1卷積
在PP-LCNet中,最后一個卷積是512維度,如果直接在GAP(輸出為512維向量)之后接上classification layer會導(dǎo)致丟失特征的結(jié)合(??????)。為了使網(wǎng)絡(luò)具有更好的擬合能力,我們在GAP之后添加了一個1280的1×1卷積(等價于一個FC),這使得具有更好的能力,同時增加的inference time很少
三、實驗
實驗配置:基于paddlepaddle框架,基于4卡V100訓(xùn)練,基于Intelr Xeonr Gold 6148
處理器 batch size=1 ,使用MKLDNN 加速.
-
不同scale下的PP-LCNet表現(xiàn),帶*的表示使用了蒸餾算法進一步優(yōu)化
-
和其它網(wǎng)絡(luò)進行對比
-
作為backbone進行目標檢測
-
作為backbone進行分割
- Acti, SE, Large-kernel 最后額外增加的全連接,各個模塊的作用與時延
-
SE 模塊添加位置的消融實驗
-
Large-kernel添加位置的消融實驗
總結(jié)
以上是生活随笔為你收集整理的PP-LCNet-A Lightweight CPU Convolutional Neural Network的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统截图有快捷键吗,Linux
- 下一篇: 夏天的羊肉汤