EagleEye:一種用模型剪枝的快速衡量子網(wǎng)絡(luò)性能的方法
本文提出的一種能夠快速衡量剪枝后模型性能的方法,經(jīng)實驗?zāi)軌驅(qū)obilenetV1減少50%的FLOPs情況下,仍能保證在Imagenet數(shù)據(jù)集上Top1精度達(dá)到70.9%。
論文鏈接:https://arxiv.org/abs/2007.02491
論文repo:https://github.com/anonymous47823493/EagleEye
引言
隨著AI技術(shù)的發(fā)展,人們對于AI的需求也越發(fā)多樣化。在手機(jī)端、嵌入式設(shè)備上部署模型的需求已經(jīng)十分普遍。一般移動端、嵌入式設(shè)備無法滿足神經(jīng)網(wǎng)絡(luò)的計算需求。因此,我們一般需要利用模型壓縮技術(shù),盡量不影響模型性能的前提下,減少模型的參數(shù)量和計算量,使其滿足硬件的限制。
將剪枝后模型訓(xùn)練至收斂后,評估網(wǎng)絡(luò)性能。 將剪枝后模型訓(xùn)練規(guī)定數(shù)量epoch后,評估網(wǎng)絡(luò)性能。 直接對剪枝后的模型評估性能
當(dāng)需要進(jìn)行多次迭代嘗試時,前兩種方法所需要的時間成本都很較大,第三種辦法常常面臨不準(zhǔn)確的問題。因此,EagleEye提出一種快速并且準(zhǔn)確衡量子網(wǎng)絡(luò)性能的方法,加快剪枝的過程。
EagleEye
動機(jī)
傳統(tǒng)模型剪枝的三步流程是:模型預(yù)訓(xùn)練、模型剪枝和finetuning。為什么會需要finetuning這個環(huán)節(jié)呢?因為剪枝后模型精度下降比較明顯,finetuning能夠有效提升剪枝后模型精度。EagleEye論文中,對這一現(xiàn)象提出了兩個問題:
裁剪的權(quán)重通常被認(rèn)為是“不重要”的權(quán)重,為什么模型精度還會有如此大的下降? 未進(jìn)行finetuning的模型精度和finetuning收斂后的模型精度是否成存在正相關(guān)?
針對這兩個問題,EagleNet論文中進(jìn)行了研究和實驗。如下圖,右圖主要展示了在finetuning過程中模型權(quán)重的變化情況,其中x軸表示卷積核的L1范數(shù)大小,y軸表示卷積核數(shù)量,z軸表示不同epoch下權(quán)重分布情況。在finetuning過程中,權(quán)重分布只發(fā)生了一點偏移,但是finetuning前后模型性能發(fā)生巨大變化。
在左圖中,我們可以看出finetuning前后的模型性能分布差別較大,finetuning前后模型的精度沒有較強(qiáng)的正相關(guān)

那么問題的答案是什么呢?EagleNet論文認(rèn)為是網(wǎng)絡(luò)中的BN層對于模型的精度評估有較強(qiáng)的影響。在沒有進(jìn)行finetuning的模型,模型的BN層參數(shù)繼承于原模型,和當(dāng)前模型的權(quán)重參數(shù)并不match,影響了模型的精度,并且導(dǎo)致finetuning前后模型精度不成正相關(guān)的問題在finetuning的過程,模型的精度逐漸在上升,是因為其參數(shù)在逐漸被優(yōu)化,BN層的參數(shù)也在逐漸“適應(yīng)”新的網(wǎng)絡(luò)結(jié)構(gòu)。但是這種方法并不高效,因此論文中引出Adaptive Batch Normalization結(jié)構(gòu),解決這個問題。
Adaptive Batch Normalization
Adaptive Batch Normalization方法是非常的樸素,論文提出的思路是將網(wǎng)絡(luò)中的其他參數(shù)凍住,然后利用**訓(xùn)練集(不是測試集)**的樣本進(jìn)行前向計算,修正“繼承”來的BN層參數(shù)。Adaptive Batch Normalization的方法效果對比圖如下:

圖中橫縱坐標(biāo)分別是finetuning前后模型的精度。其中,左圖是沒有采用Adpative BN的finetuning模型前后的模型精度關(guān)系,右圖則是使用adpative BN之后的表現(xiàn),可以看出成比較明顯的正相關(guān)。
工作流程
EagleEye的核心點在于利用Adaptive BN方法,一定程度上解決了傳統(tǒng)剪枝工作流下,finetuning前后模型精度弱相關(guān)的問題。Finetuning前后模型精度具備強(qiáng)相關(guān)性的話,我們就能省去傳統(tǒng)finetuning的過程,極大的加速整個迭代流程。
EagleEye的整體工作流程如下:
采用隨機(jī)策略生成大量的剪枝方案 對于不同的剪枝策略,修正其BN層參數(shù) 對于不同的剪枝策略,衡量其剪枝策略的精度,并且選取最優(yōu)的剪枝策略。 對于最優(yōu)的剪枝策略進(jìn)行finetuning,精度恢復(fù)。

實驗效果
相似性實驗
論文中進(jìn)行了更為詳細(xì)的相似性實驗,其中分別是在不同F(xiàn)LOPs限制的剪枝策略前提下,Adaptive BN方法效果的對比圖。從實驗結(jié)果,我們可以看出其方法在多種FLOPs限制下,都保持了較好的效果。

對比實驗
效率方面
EagleEye主要的優(yōu)勢在于其省掉了finetuning步驟,在剪枝效率方面有很大的優(yōu)勢。其中,我們可以看出與ThiNet、AMC和Meta-Pruning方法進(jìn)行對比,EagleEye所需要的GPU Hours完全不再一個數(shù)量級。


總結(jié)
EagleEye論文的思想比較簡單,但是其一定程度上解釋了剪枝后模型精度下降的原因,并且提出了修正finetuning前后模型精度弱相關(guān)的辦法,從而省去了評估剪枝策略中finetuning模型過程,極大地加快剪枝迭代速度。另外,由于其方法簡單,能夠很方便的應(yīng)用在其他剪枝算法中,提升剪枝算法速度。
?------------------------------------------------
雙一流高校研究生團(tuán)隊創(chuàng)建 ↓
專注于計算機(jī)視覺原創(chuàng)并分享相關(guān)知識 ?

