張佳鈺,寇金橋,劉寧鐘
(1.南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 211106;2.北京計(jì)算機(jī)技術(shù)及應(yīng)用研究所 方舟重點(diǎn)實(shí)驗(yàn)室,北京 100854)
深度神經(jīng)網(wǎng)絡(luò)更深更寬的架構(gòu)為計(jì)算機(jī)視覺(jué)任務(wù)帶來(lái)了卓越的性能[1-2]。例如,Krizhevsky等人[3]在2012年ImageNet挑戰(zhàn)賽[4]中取得了突破性的成果,使用的網(wǎng)絡(luò)包含6 000萬(wàn)個(gè)參數(shù),有五個(gè)卷積層和三個(gè)全連接層。在Labeled Faces in the Wild (LFW)數(shù)據(jù)集上的頂級(jí)人臉驗(yàn)證結(jié)果包含數(shù)億個(gè)參數(shù),使用了卷積層、局部連接層和全連接層的組合[5-6]。訓(xùn)練這樣一個(gè)模型以獲得合理的性能是非常耗時(shí)的。在只依靠全連接層的架構(gòu)中,參數(shù)的數(shù)量可以增長(zhǎng)到數(shù)十億。這些工作依賴(lài)于具有數(shù)百萬(wàn)甚至數(shù)十億參數(shù)的深度網(wǎng)絡(luò),而具有非常高的計(jì)算能力的GPU的可用性對(duì)其成功起到了關(guān)鍵性的作用。然而,這也導(dǎo)致了過(guò)于昂貴的計(jì)算成本,并使模型在移動(dòng)設(shè)備上的部署變得困難,甚至不可能。通常情況下,用一臺(tái)NVIDIA K40機(jī)器在ImageNet數(shù)據(jù)集上訓(xùn)練整個(gè)模型需要兩到三天時(shí)間。即使是具有高效率的最新架構(gòu),如殘差連接[7]或inception模塊[8],也有數(shù)百萬(wàn)個(gè)參數(shù)需要數(shù)十億次浮點(diǎn)運(yùn)算(FLOPs)。在進(jìn)行模型部署應(yīng)用時(shí),硬件不能承載模型巨大的參數(shù)量。因此,研究一個(gè)能夠?qū)⒛P偷膮?shù)量和浮點(diǎn)運(yùn)算(FLOPs)降低,卻又能夠保持模型的精度的算法,是非常有實(shí)際價(jià)值的。
針對(duì)以上問(wèn)題,在模型剪枝中,針對(duì)濾波器的選擇策略,該文設(shè)計(jì)了能擬合原始濾波器范數(shù)分布的算法,并在此算法的基礎(chǔ)上,對(duì)濾波器的修剪策略進(jìn)行了相關(guān)的改進(jìn)和設(shè)計(jì),使其更加適用于圖像分類(lèi)的場(chǎng)景,從而減緩了小型設(shè)備的算力與模型的巨大運(yùn)算量需求無(wú)法匹配的問(wèn)題,并成功提高了模型的推理速度。
伴隨著深度學(xué)習(xí)技術(shù)在目標(biāo)檢測(cè)、圖像分類(lèi)、點(diǎn)云等領(lǐng)域的應(yīng)用普及,在邊緣設(shè)備上應(yīng)用深度模型解決實(shí)際問(wèn)題引起了人們的廣泛關(guān)注并逐漸成為可能。模型壓縮[9-11]的方法主要分為以下幾類(lèi):參數(shù)修剪和量化、低等級(jí)因子化、轉(zhuǎn)移或壓縮卷積濾波器和知識(shí)提煉。該文主要研究基于圖像分類(lèi)的模型剪枝算法,從而實(shí)現(xiàn)對(duì)模型的壓縮與加速。網(wǎng)絡(luò)剪枝[12-15]可以分為兩類(lèi),即權(quán)重修剪[16-17]和濾波器修剪[18-19]。權(quán)重修剪直接刪除濾波器的權(quán)重值,可能會(huì)導(dǎo)致一種非結(jié)構(gòu)化的稀疏。這種不規(guī)則的結(jié)構(gòu)使得它難以利用高效的基本線性代數(shù)子程序(BLAS)庫(kù)[20]。與此相反,濾波器修剪直接丟棄了整個(gè)選定的濾波器,留下一個(gè)具有規(guī)則結(jié)構(gòu)的模型。因此,它不需要稀疏卷積庫(kù)的支持,并且可以與現(xiàn)有的用于密集矩陣乘法的高效BLAS庫(kù)協(xié)同工作。因此,濾波修剪更適合用來(lái)加速和減少模型大小。
目前,文獻(xiàn)[18,21-22]通過(guò)遵循“較小規(guī)范-不重要”的標(biāo)準(zhǔn)來(lái)進(jìn)行濾波器修剪,認(rèn)為范值較小的濾波器重要性較低,可以安全地修剪掉。而He等人[23]提出通過(guò)幾何中值修剪濾波器(FPGM)的方法來(lái)壓縮模型,不是根據(jù)濾波器的重要性來(lái)修剪,而是修剪該層中距離數(shù)據(jù)中心較近的濾波器,該文認(rèn)為這些濾波器信息是重合的,可能會(huì)產(chǎn)生冗余信息,所以這些濾波器不會(huì)對(duì)網(wǎng)絡(luò)產(chǎn)生影響。但是筆者認(rèn)為濾波器數(shù)據(jù)中心的數(shù)據(jù)可能是該層較為重要的數(shù)據(jù),僅對(duì)這一部分?jǐn)?shù)據(jù)進(jìn)行剪枝容易使得濾波器數(shù)據(jù)質(zhì)量下降。在訓(xùn)練后,濾波器的權(quán)重總是服從某一個(gè)分布,而修剪一部分?jǐn)?shù)據(jù)中心附近的數(shù)據(jù),會(huì)導(dǎo)致分布不均衡。集中修剪某一個(gè)點(diǎn)附近的數(shù)據(jù)后,其分布不再擬合原始的數(shù)據(jù)分布。
以前的工作通常使用“較小規(guī)范-不重要”的標(biāo)準(zhǔn)來(lái)修剪卷積神經(jīng)網(wǎng)絡(luò)中具有較小值的濾波器。該文指出,通過(guò)擬合濾波器的范數(shù)分布的方式,可以獲得更好的效果?;诖?,該文提出了一種基于擬合濾波器范數(shù)分布的剪枝算法來(lái)加速深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)的推理過(guò)程。具體來(lái)說(shuō),所提出的FPDF(Filter Pruning via Distribution Fitting)使得篩選的濾波器權(quán)重范數(shù)的分布能夠擬合原始網(wǎng)絡(luò)的濾波器權(quán)重范數(shù)的分布。與以前方法不同的是,F(xiàn)PDF通過(guò)修剪有冗余的濾波器來(lái)壓縮模型,而不是篩選掉相對(duì)權(quán)重值較小或者范數(shù)值較小的濾波器。
在兩個(gè)圖像分類(lèi)基準(zhǔn)上進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果驗(yàn)證了FPDF的有效性和優(yōu)越性。值得注意的是,在CIFAR-10上,F(xiàn)PDF在ResNet20上減少了62%以上的FLOPs,相對(duì)準(zhǔn)確率僅降低了0.14%。此外,在CIFAR-100上,F(xiàn)PDF在ResNet56上減少了63%以上的FLOPs,相對(duì)準(zhǔn)確率僅降低了1.27%。
FPGM[23]指出處于中位數(shù)附近的濾波器包含了冗余的信息,這些濾波器是可以被替代的,并提出了基于幾何中位數(shù)的剪枝方法。如果將中位數(shù)附近的濾波器減去,會(huì)造成濾波器分布上的一種空缺。位于中位數(shù)附近的濾波器對(duì)網(wǎng)絡(luò)的貢獻(xiàn)較大,當(dāng)剪枝率較大的時(shí)候,F(xiàn)PGM會(huì)將重要的濾波器誤刪,對(duì)計(jì)算結(jié)果造成較大的波動(dòng)。圖1分別展示了原濾波器范數(shù)分布(圖1a),按照文中算法刪除濾波器后的范數(shù)分布(圖1b),按照SFP刪除濾波器后的范數(shù)分布(圖1c)。由圖1a和圖1b的分布可以看出,文中算法使得濾波器刪除前后的數(shù)據(jù)分布趨于一致。SFP刪去的數(shù)據(jù)都是濾波器范數(shù)排序靠后,處于底部的數(shù)據(jù),其分布已經(jīng)和圖1a的分布區(qū)分開(kāi)了。刪除尾部范值較小的數(shù)據(jù)之后,分布曲線的尾部明顯消失,并且其規(guī)范值的偏離是顯著的。
圖1 刪去部分?jǐn)?shù)據(jù)前后的數(shù)據(jù)分布
算法的總體流程如圖2所示。
圖2 FPDF選擇需要?jiǎng)h除的濾波器的策略圖示
針對(duì)每一層網(wǎng)絡(luò)的所有濾波器,按照濾波器的范數(shù)數(shù)值進(jìn)行排序,然后按照設(shè)置好的間隔選擇要被刪去的濾波器。M、N為間隔參數(shù),表示每M個(gè)數(shù)據(jù)取前N個(gè),N/M也表示壓縮率。間隔參數(shù)將濾波器分為M個(gè)組,每一個(gè)組中的數(shù)據(jù)都是相似的,對(duì)濾波器范數(shù)分布的貢獻(xiàn)趨于相同,所以?xún)H刪去其中的前N個(gè)數(shù)據(jù),能夠使其保持原有的濾波器范數(shù)分布,即僅使用后M-N個(gè)數(shù)據(jù)來(lái)代表組內(nèi)M個(gè)數(shù)據(jù)。當(dāng)壓縮率為20%時(shí),數(shù)據(jù)篩選方法是間隔四個(gè)數(shù)據(jù)取一個(gè)(1/5=20%)。當(dāng)刪除率為50%時(shí),間隔為2,表示每?jī)蓚€(gè)數(shù)據(jù)取出一個(gè)數(shù)據(jù)。
圖3展示了應(yīng)用FPDF的濾波器選擇算法前后的濾波器范數(shù)分布。ResNet56和ResNet110的第一層僅有16個(gè)濾波器,最后一層有64個(gè)濾波器。圖3a和圖3c為網(wǎng)絡(luò)第一層的數(shù)據(jù),圖3b和圖3d為網(wǎng)絡(luò)最后一層的數(shù)據(jù)??梢钥闯?,刪去20%的濾波器之后,其分布隨著濾波器數(shù)量的增加可以擬合刪除前的分布。
與SFP[22]不同,該文采用的是硬剪枝,在選擇擬合原模型分布的濾波器之后對(duì)模型進(jìn)行一次性的裁剪。在剪枝之后,對(duì)得到的小模型進(jìn)行微調(diào),微調(diào)可以使模型收斂。具體步驟為對(duì)小模型進(jìn)行訓(xùn)練,直到模型收斂。
圖3 ResNet56和ResNet110在CIFAR-10數(shù)據(jù)集上網(wǎng)絡(luò)第一層和最后一層的濾波器分布
CIFAR-10(Canadian Institute for Advanced Research - 10 classes)是一個(gè)用于識(shí)別普適目標(biāo)的數(shù)據(jù)集。共包含10個(gè)類(lèi)別的RGB彩色圖片:飛機(jī)、汽車(chē)、鳥(niǎo)類(lèi)、貓、鹿、狗、蛙類(lèi)、馬、船和卡車(chē)。數(shù)據(jù)集中一共有50 000張訓(xùn)練圖片和10 000張測(cè)試圖片,圖片的尺寸為32×32。圖片所包含的都是現(xiàn)實(shí)世界中真實(shí)的物體,含有較大的噪聲,并且物體的比例與特征都不盡相同。
CIFAR-100(Canadian Institute for Advanced Research - 100 classes)是一個(gè)微小圖像數(shù)據(jù)集的子集。該數(shù)據(jù)集包含100個(gè)類(lèi)別的圖片,每個(gè)類(lèi)別有600張圖片,其中500張用于訓(xùn)練,另外100張用于測(cè)試。圖片尺寸為32×32。該數(shù)據(jù)集中包含兩個(gè)維度的類(lèi)別:100個(gè)粗粒度類(lèi)別和200個(gè)細(xì)粒度類(lèi)別,每一張圖片都有一個(gè)粗粒度類(lèi)別和一個(gè)細(xì)粒度類(lèi)別。
實(shí)驗(yàn)基于ResNet20、ResNet32、ResNet56、ResNet110網(wǎng)絡(luò),在CIFAR-10和CIFAR-100兩個(gè)數(shù)據(jù)集上對(duì)FPDF進(jìn)行驗(yàn)證。對(duì)比實(shí)驗(yàn)的方法包括SFP[22]、FPGM[23]、PEEC[18]、CP[24]等加速算法。CIFAR數(shù)據(jù)集的輸入為32×32的圖像,而原始的ResNet第一層卷積核為7×7,這樣的卷積結(jié)構(gòu)對(duì)于CIFAR數(shù)據(jù)集的性能表現(xiàn)較差,所以將ResNet第一層網(wǎng)絡(luò)的卷積核修改為3×3,并去掉之后的最大池化層。該文對(duì)這個(gè)修改后的網(wǎng)絡(luò)進(jìn)行剪枝以適用于基于CIFAR的圖像分類(lèi)場(chǎng)景。
文中實(shí)驗(yàn)參數(shù)設(shè)置與FPGM文中的參數(shù)保持一致。在CIFAR-10的實(shí)驗(yàn)中,使用的預(yù)訓(xùn)練模型為FPGM代碼倉(cāng)庫(kù)中提供的模型,因此不需要重新訓(xùn)練基線模型。在CIFAR-100的實(shí)驗(yàn)中,按照本節(jié)中的設(shè)置訓(xùn)練基線模型。文中實(shí)驗(yàn)在Ubuntu16.04操作系統(tǒng)下進(jìn)行,使用TITAN XP進(jìn)行訓(xùn)練,使用Pytorch1.4.0框架實(shí)現(xiàn)。學(xué)習(xí)率(learning rate)初始值設(shè)置為0.02,分別在第60輪、120輪以及160輪的時(shí)候分別衰減為0.000 2、0.000 02和0.000 002;動(dòng)量值為0.9;使用SGD表示優(yōu)化器;批大小(batch size)設(shè)置為128。
將FPDF應(yīng)用到四個(gè)網(wǎng)絡(luò)中,在CIFAR-10上的實(shí)驗(yàn)設(shè)置40%和50%的壓縮率,表示將模型的殘差塊的濾波器剪去40%和50%。在CIFAR-100的實(shí)驗(yàn)上設(shè)置了50%和60%的壓縮率,表示將模型的殘差塊的濾波器修剪去50%和60%。在濾波器修剪的過(guò)程中,為了與SFP、FPGM的設(shè)置保持一致,為網(wǎng)絡(luò)的每一層設(shè)置相同的剪枝率。將大模型修剪成小模型后會(huì)對(duì)模型進(jìn)行微調(diào),促使模型收斂。
準(zhǔn)確率:對(duì)于一個(gè)給定的數(shù)據(jù)集,分類(lèi)器將其分類(lèi)正確的樣本數(shù)與總樣本數(shù)的比例。計(jì)算公式為:
Accuracy=TP/(TP+FP)
其中,TP表示所有被預(yù)測(cè)為正類(lèi)的正類(lèi)實(shí)例個(gè)數(shù),F(xiàn)P表示所有被預(yù)測(cè)為負(fù)類(lèi)的正類(lèi)實(shí)例個(gè)數(shù)。下文中的準(zhǔn)確率Accuracy使用簡(jiǎn)寫(xiě)accu.代替。
FLOPs:Floating Point Operations,每秒浮點(diǎn)運(yùn)算次數(shù),通常用來(lái)衡量網(wǎng)絡(luò)模型的計(jì)算復(fù)雜度,也可以用來(lái)間接地衡量網(wǎng)絡(luò)模型的速度。
實(shí)驗(yàn)結(jié)果如表1和表2所示。表格第一列均表示不同的網(wǎng)絡(luò)模型,ResNet20、ResNet32、ResNet56、ResNet110,第二列均表示剪枝的方法,第三列均表示該網(wǎng)絡(luò)下訓(xùn)練的大模型的準(zhǔn)確率,第四列均表示模型壓縮之后的準(zhǔn)確率,第五列均表示模型壓縮后下降的準(zhǔn)確率,第六列均表示模型壓縮后的FLOPs,第七列均表示模型壓縮后減少的FLOPs。在CIFAR-10的實(shí)驗(yàn)結(jié)果中FPDF在剪枝率為50%的時(shí)候,文中方法的準(zhǔn)確率都優(yōu)于對(duì)比方法。在基于ResNet110的剪枝上,修剪去62.8%的FLOPs,可以將準(zhǔn)確率恢復(fù)至93.54%。在基于CIFAR-100的實(shí)驗(yàn)結(jié)果中,僅有基于ResNet20的剪枝效果略低于SFP,但是在基于層數(shù)較多的網(wǎng)絡(luò)上的剪枝效果均優(yōu)于SFP和FPGM,并且FPDF在ResNet110上壓縮了72.3%的FLOPs的準(zhǔn)確率比壓縮了62.8%的FLOPs的準(zhǔn)確率高了0.2%。
表1 在CIFAR-10數(shù)據(jù)集上剪枝的結(jié)果比較
表2 在CIFAR-100數(shù)據(jù)集上剪枝的結(jié)果比較
剪枝算法通常是依據(jù)濾波器的重要性進(jìn)行濾波器的刪除,經(jīng)典的剪枝方法僅依照濾波器權(quán)重值或范數(shù)值的大小對(duì)濾波器的重要性進(jìn)行評(píng)估,往往導(dǎo)致所選取的濾波器的范數(shù)分布發(fā)生變化,造成一定的精度損失。因此,該文提出了一種擬合濾波器范數(shù)分布的方法,用來(lái)解決范數(shù)分布不均衡問(wèn)題。并詳細(xì)介紹了該方法的算法流程,展示了其與現(xiàn)有算法的剪枝效果區(qū)別。通過(guò)在公開(kāi)數(shù)據(jù)集(CIFAR-10,CIFAR-100)上進(jìn)行實(shí)驗(yàn),展示了該方法能夠更好地維持原范數(shù)分布,并證明了該方法相比于現(xiàn)有方法,在圖像分類(lèi)任務(wù)上有更高的精度,且具有一定的魯棒性,可以泛化到多個(gè)數(shù)據(jù)集上。
綜上所述,提出的濾波器選擇策略改進(jìn)了現(xiàn)有的模型剪枝算法,使剪枝后的小模型維持較高的精度,有助于實(shí)際模型的產(chǎn)品落地。