孫文宇 曹健 李普 劉瑞
北京大學(xué)軟件與微電子學(xué)院, 北京 102600; ? 通信作者, E-mail: caojian@ss.pku.edu.cn
卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、目標(biāo)檢測等領(lǐng)域得到廣泛應(yīng)用。隨著網(wǎng)絡(luò)效果提升, 網(wǎng)絡(luò)規(guī)模愈發(fā)龐大, 需要高額存儲空間和計(jì)算資源, 使網(wǎng)絡(luò)部署到資源受限的端側(cè)硬件平臺變得困難。因此, 在保證模型精度的同時, 需盡可能降低模型參數(shù)量和計(jì)算消耗。研究者們提出過若干模型壓縮方法, 如模型剪枝[1-5]、權(quán)重量化[6-9]和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索[10-12]等。其中, 模型剪枝方法能大幅度地減少模型參數(shù)量和運(yùn)算量, 成為模型壓縮的主流方法, 又可分為非結(jié)構(gòu)化剪枝方法和結(jié)構(gòu)化剪枝方法。
非結(jié)構(gòu)化剪枝方法[13]認(rèn)為卷積神經(jīng)網(wǎng)絡(luò)中存在小值權(quán)重, 對網(wǎng)絡(luò)最終輸出貢獻(xiàn)少, 可將其置 0,以便減少網(wǎng)絡(luò)運(yùn)算量。采用此類方法的模型壓縮效果較好, 但部署到端側(cè)設(shè)備時, 硬件平臺要具有相應(yīng)的稀疏矩陣運(yùn)算加速庫才能實(shí)現(xiàn)提速, 故非結(jié)構(gòu)化剪枝方法在部署中通用性差。
結(jié)構(gòu)化剪枝方法將整個卷積核視為被裁剪對象, 對于硬件部署更加友好, 受到研究者青睞。Li等[14]提出基于卷積核 L1 范數(shù)的簡單有效的剪枝方法, 通過裁剪 L1 范數(shù)小的卷積核, 實(shí)現(xiàn)模型壓縮和加速。在此基礎(chǔ)上, Frankle 等[15]利用 L2 范數(shù)尋找大規(guī)模模型中的最小子網(wǎng)絡(luò), 實(shí)現(xiàn)模型剪枝。He等[16]將卷積核視為歐式空間中的點(diǎn), 計(jì)算每個卷積層的幾何中位數(shù), 將靠近幾何中心點(diǎn)的卷積核裁減掉, 實(shí)現(xiàn)模型壓縮。
以上剪枝方法往往需要大規(guī)模的模型訓(xùn)練和剪枝以及小規(guī)模的模型微調(diào) 3 個步驟。當(dāng)剪枝率過大時, 通過已有剪枝方法得到的小規(guī)模模型會因信息丟失嚴(yán)重及語義表達(dá)能力不足從而導(dǎo)致較大的精度損失。本文在模型微調(diào)前, 對小規(guī)模的模型進(jìn)行全局信息優(yōu)化, 使其在微調(diào)后可以取得較大的壓縮率,并具有極低的精度損失。此優(yōu)化方法可嵌入任何一種結(jié)構(gòu)化剪枝方法中, 具有工程易用性。
在適中剪枝率情況下, 剪枝方法對不同卷積層有不同的剪枝率[13], 即剪枝后每個卷積層的卷積核個數(shù)不同(見圖 1)。對于保留較多卷積核的卷積層,因保留了較多的原模型信息, 故在微調(diào)后可恢復(fù)語義表達(dá)能力。對于保留較少卷積核的卷積層, 因其原模型信息破壞較為嚴(yán)重, 導(dǎo)致模型精度下降。所以, 如果能使剪枝后模型盡可能多地具備原模型信息, 則可保證剪枝后模型的高精度。
圖1 VGG16 部分卷積層剪枝前后對比Fig. 1 Comparison of convolution layers before and after pruning in VGG16
圖2 正常卷積與剪枝后卷積的區(qū)別Fig. 2 Difference between normal convolution and convolution after pruning
綜上所述, 將剪枝后模型信息保留優(yōu)化問題轉(zhuǎn)化為求解形如式(1)的優(yōu)化問題, 通過改進(jìn)的 Matrix Sketching 算法求解[17]。改進(jìn)后的剪枝模型微調(diào)優(yōu)化算法流程如算法 1 所示。
由式(1)及算法 1 可知, 改進(jìn)后的微調(diào)優(yōu)化方法將原模型信息引入剪枝后模型, 并最小化二者間信息誤差, 從而實(shí)現(xiàn)對剪枝后模型某些卷積層的信息補(bǔ)償, 進(jìn)而在微調(diào)后獲得更高精度。原理解釋如圖3 所示。
圖3 算法原理解釋Fig. 3 Explanation of algorithm
殘差網(wǎng)絡(luò) ResNet[18]中的殘差模塊可以解決深層網(wǎng)絡(luò)無法有效訓(xùn)練的問題, 使深層網(wǎng)絡(luò)的準(zhǔn)確度得以提升, 其跳連結(jié)構(gòu)已應(yīng)用在許多大規(guī)模網(wǎng)絡(luò)中。將現(xiàn)有剪枝方法應(yīng)用于 YOLOv3[19]等存在跳連結(jié)構(gòu)的模型時, 均需保證剪枝后模型在跳連相加處通道數(shù)相同。如圖 4 所示, 剪枝后模型在微調(diào)前需保證c1′ =c2′, 進(jìn)而保證跳連相加可以順利進(jìn)行, 但會嚴(yán)重地限制剪枝方法的壓縮效果, 故此類特殊結(jié)構(gòu)也是限制模型壓縮效果的重要因素。
圖4 模型跳連部分的剪枝Fig. 4 Pruning of shortcut in the model
在現(xiàn)有剪枝方法上嵌入本文提出的微調(diào)優(yōu)化方法, 可在初步剪枝時不必要求跳連相加處通道數(shù)相同, 而是在微調(diào)時, 通過算法 1 將保留較多通道數(shù)的卷積層1c′優(yōu)化為2c′, 在保證最大化壓縮率的同時,還可以保證模型精度。
本文將算法 1 嵌入不同的剪枝方法, 并在主流圖像分類模型和目標(biāo)檢測模型上進(jìn)行對比實(shí)驗(yàn)來證明本文提出微調(diào)優(yōu)化方法的有效性及普遍適用性。
本文采用圖像分類數(shù)據(jù)集 CIFAR10 和 CIFAR 100, 在 VGG16 模型上驗(yàn)證微調(diào)優(yōu)化方法在分類任務(wù)中的效果。利用大規(guī)模遙感數(shù)據(jù)集 Visdrone[20],在 Anchor-base 目標(biāo)檢測模型 YOLOv3 和 Anchorfree 目標(biāo)檢測模型 CenterNet[21]上, 驗(yàn)證微調(diào)優(yōu)化方法在目標(biāo)檢測任務(wù)中的效果。數(shù)據(jù)集概況見表 1。
表1 本文所用數(shù)據(jù)集概況Table 1 Overview of the datasets used in the article
對于圖像分類任務(wù), 采用測試集準(zhǔn)確率(Acc)作為評價指標(biāo)。對于目標(biāo)檢測任務(wù), 輸入圖片分辨率均為 608×608, 采用交并比(IOU)閾值為 0.5、置信度(confidence)閾值為 0.1、非極大值抑制(NMS)閾值為 0.5 情況下的平均精度均值(mAP)作為評價指標(biāo)。
將微調(diào)優(yōu)化方法分別嵌入 L1 剪枝方法[14]和 Network Slimming (NS)剪枝方法[22], 在 VGG16 模型上, 利用 CIFAR10 和 CIFAR100 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表 2 所示。
表2 各剪枝方法在CIFAR10 和CIFAR100 數(shù)據(jù)集的效果對比Table 2 Effects of various pruning methods on CIFAR10 and CIFAR100
由表 2 可知, 在圖像分類任務(wù)中, 在已有的若干剪枝方法中嵌入微調(diào)優(yōu)化方法, 可以同時提高壓縮率和剪枝后模型的準(zhǔn)確率??梢钥闯? 此微調(diào)優(yōu)化方法對帶有模型稀疏化訓(xùn)練的剪枝方法更適用。通過模型稀疏化訓(xùn)練, 模型中更多的卷積核可被裁剪, 此時通過微調(diào)優(yōu)化方法, 可使模型在盡可能高的壓縮率下獲得更高的精度恢復(fù), 實(shí)現(xiàn)模型參數(shù)量與精度間的平衡。將此方法嵌入 Network Slimming剪枝后的 VGG16 網(wǎng)絡(luò)進(jìn)行微調(diào)時, 剪枝后模型精度比原模型略有提高, 說明經(jīng)過此方法優(yōu)化后的模型具備較優(yōu)的初始化參數(shù)及學(xué)習(xí)能力。
為了證明算法在其他任務(wù)中的有效性, 采用遙感數(shù)據(jù)集 Visdrone, 在 Anchor-base 目標(biāo)檢測模型YOLOv3 和 Anchor-free 目標(biāo)檢測模型 CenterNet 上進(jìn)行實(shí)驗(yàn), 結(jié)果如表 3 所示。
由表 3 可知, 在目標(biāo)檢測任務(wù)中, 本文所提微調(diào)優(yōu)化方法對于主流 Anchor-base 模型和 Anchor-Free 模型均具有適用性, 在最大程度上保證模型精度的同時, 可以降低模型參數(shù)量和復(fù)雜度。
表3 各剪枝方法在Visdrone 數(shù)據(jù)集效果對比Table 3 Effects of various pruning methods on Visdrone
本文針對現(xiàn)有剪枝方法在高壓縮率時精度嚴(yán)重下降的問題, 提出一種基于全局信息的模型剪枝微調(diào)優(yōu)化方法。對于剪枝率過大的卷積層, 此優(yōu)化方法將未剪枝模型的全局權(quán)重信息引入剪枝后模型中, 從而解決了模型跳連結(jié)構(gòu)對剪枝方法的限制問題。在圖像分類任務(wù)和目標(biāo)檢測任務(wù)中的實(shí)驗(yàn)結(jié)果表明, 將已有剪枝方法中嵌入此優(yōu)化方法, 在獲得高壓縮率的同時, 只有極低的精度損失。
在未來的工作中, 我們將進(jìn)一步探索剪枝后模型在微調(diào)前的權(quán)重優(yōu)化, 使本文提出的微調(diào)優(yōu)化方法在不失通用性的前提下獲得更高的壓縮率, 以便在端側(cè)智能設(shè)備的部署與加速。