蔡瑞初,鐘椿榮,余 洋,陳炳豐,盧 冶,陳 瑤,3
(1.廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510006; 2.南開大學(xué) 計(jì)算機(jī)與控制工程學(xué)院,天津 300353;3.新加坡高等數(shù)字科學(xué)中心,新加坡 138602)
近年,卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network, CNN)憑借其強(qiáng)大的特征提取能力而被廣泛應(yīng)用于自動(dòng)控制、模式識(shí)別、計(jì)算機(jī)視覺、傳感器信號(hào)處理等方面,但由于智能識(shí)別任務(wù)數(shù)據(jù)交互量大,云計(jì)算中心存在負(fù)擔(dān)重和網(wǎng)絡(luò)傳輸延遲時(shí)間較長等問題,使得卷積神經(jīng)網(wǎng)絡(luò)在嵌入式終端的部署受到限制。例如,無人駕駛汽車領(lǐng)域[1],其車載傳感器和攝像頭持續(xù)捕捉實(shí)時(shí)路況信息,如果所有的無人駕駛汽車的數(shù)據(jù)直接發(fā)送到云計(jì)算中心處理,響應(yīng)延遲時(shí)間將會(huì)更長,以至于無法滿足自動(dòng)駕駛對實(shí)時(shí)性數(shù)據(jù)處理的需求。為了實(shí)現(xiàn)實(shí)時(shí)路況的及時(shí)響應(yīng),需在車載嵌入式等“邊緣”設(shè)備上進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的部署。
隨著卷積神經(jīng)網(wǎng)絡(luò)模型堆疊的層數(shù)越來越多,網(wǎng)絡(luò)模型的權(quán)重參數(shù)數(shù)量也隨之增長。例如,LeCun等[2]提出的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型需要訓(xùn)練600 000個(gè)參數(shù);Krizhevsky等[3]設(shè)計(jì)的AlexNet權(quán)重參數(shù)數(shù)量是LeNet-5的近100倍。而之后的VGG-19[4]網(wǎng)絡(luò)模型的權(quán)重參數(shù)數(shù)量達(dá)到了1×108;Coates等[5]甚至將卷積神經(jīng)網(wǎng)絡(luò)權(quán)重參數(shù)擴(kuò)展到1×109。卷積神經(jīng)網(wǎng)絡(luò)的復(fù)雜度主要體現(xiàn)在兩個(gè)部分:一是卷積層包含了網(wǎng)絡(luò)90%以上的運(yùn)算操作;二是全連接層產(chǎn)生了超過90%的網(wǎng)絡(luò)參數(shù)。這導(dǎo)致卷積神經(jīng)網(wǎng)絡(luò)的“邊緣”部署受到嵌入式設(shè)備的內(nèi)存空間、計(jì)算量和計(jì)算速度等方面的影響。
通常情況下,如車載嵌入式設(shè)備計(jì)算資源非常有限且對功耗有嚴(yán)格的要求,其處理器處理能力較弱、存儲(chǔ)及內(nèi)存空間較小,使得嵌入式設(shè)備的計(jì)算能力與存儲(chǔ)訪問能力受到了極大的限制,卷積神經(jīng)網(wǎng)絡(luò)較高的運(yùn)算及存儲(chǔ)訪問需求使其在嵌入式終端設(shè)備的實(shí)現(xiàn)成為難點(diǎn)。針對以上情況,神經(jīng)網(wǎng)絡(luò)應(yīng)用在嵌入式設(shè)備的實(shí)現(xiàn)需在保障其網(wǎng)絡(luò)模型不變的前提下解決其運(yùn)算量大及存儲(chǔ)需求高的問題。
本文的主要工作如下:
1) 針對原始網(wǎng)絡(luò)的計(jì)算及存儲(chǔ)訪問需求過高的問題,采用動(dòng)態(tài)網(wǎng)絡(luò)權(quán)重裁剪方法去除網(wǎng)絡(luò)中的冗余連接,在保障網(wǎng)絡(luò)模型精度在可控變化范圍內(nèi)的前提下有效減少模型的非零權(quán)重?cái)?shù)量;
2) 針對嵌入式硬件平臺(tái)的硬件特性對模型數(shù)據(jù)進(jìn)行以比特位為單位的動(dòng)態(tài)數(shù)據(jù)量化,充分利用嵌入式平臺(tái)所具有的位操作特性,進(jìn)一步提升網(wǎng)絡(luò)模型的執(zhí)行性能;
3) 提出針對嵌入式平臺(tái)的卷積神經(jīng)網(wǎng)絡(luò)處理框架,結(jié)合以上處理過程,并將處理結(jié)果進(jìn)行實(shí)現(xiàn)。
邊緣計(jì)算應(yīng)用主要針對當(dāng)前有許多在“邊緣”設(shè)備上使用神經(jīng)網(wǎng)絡(luò)模型的研究工作,并得到了不錯(cuò)的成果。由于神經(jīng)網(wǎng)絡(luò)模型含有大量的參數(shù),而大量冗余的參數(shù)占用了很多計(jì)算資源和存儲(chǔ)空間[6],因此,首要任務(wù)是減少網(wǎng)絡(luò)參數(shù)從而降低計(jì)算與存儲(chǔ)消耗,如LeCun等[7]和Hassibi等[8]率先提出OBD(Optimal Brain Damage)和OBS(Optimal Brain Surgeon)的參數(shù)裁剪方法。該方法利用二階泰勒展開選擇裁剪參數(shù),使網(wǎng)絡(luò)輕量化的同時(shí)促進(jìn)了網(wǎng)絡(luò)的泛化,但是需要額外的內(nèi)存和計(jì)算資源來計(jì)算黑塞矩陣(Hessian Matrix)。Molchanov等[9]則用一階泰勒展開方法對卷積神經(jīng)網(wǎng)絡(luò)中冗余的特征圖進(jìn)行裁剪,但該方法僅適用于在小型數(shù)據(jù)集上作遷移學(xué)習(xí)的網(wǎng)絡(luò)模型。Han等[10]則在裁剪的基礎(chǔ)上,對大型網(wǎng)絡(luò)模型用k均值(k-means)和哈夫曼樹的方法對網(wǎng)絡(luò)權(quán)重進(jìn)行量化壓縮,有效地降低了網(wǎng)絡(luò)中的冗余度。
嵌入式處理器,因處理器位寬及性能的限制,常規(guī)的計(jì)算需求在該環(huán)境下難以得到滿足。面對這種情況,在保證網(wǎng)絡(luò)模型精度的同時(shí)對網(wǎng)絡(luò)中的權(quán)重?cái)?shù)據(jù)進(jìn)行量化已成為一種趨勢。Vanhoucke等[11]采用8位整數(shù)定點(diǎn)表示的方法表示激活函數(shù);Hwang等[12]則提出用三元權(quán)重結(jié)合3位激活函數(shù)的定點(diǎn)的網(wǎng)絡(luò)優(yōu)化方法消除冗余;Gong等[13]提出一種損失精度的方法,使用向量量化來壓縮Convnet并且只降低了1%精確度;Chen等[14]的HashedNet是通過散列函數(shù)將連接權(quán)重隨機(jī)分組到哈希桶中,同一個(gè)哈希桶中的所有連接共享一個(gè)參數(shù)值來減小模型大小的技術(shù);Courbariaux等[15]使用了實(shí)值和二進(jìn)制的兩組權(quán)重,通過前向和后向傳播計(jì)算的梯度來更新權(quán)重的實(shí)值,并將實(shí)數(shù)權(quán)重量化為+1和-1的二進(jìn)制權(quán)重,有效減小網(wǎng)絡(luò)模型所需的位寬。
本文基于上述研究,提出的基于閾值的權(quán)重?cái)?shù)據(jù)裁剪和面向硬件平臺(tái)的動(dòng)態(tài)定點(diǎn)量化方法,實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)模型輕量化的效果,在減少網(wǎng)絡(luò)權(quán)重的位寬表示和數(shù)量的同時(shí),保證了精度的穩(wěn)定,在三者之間權(quán)衡,尋求最優(yōu)的平衡點(diǎn)。
在網(wǎng)絡(luò)結(jié)構(gòu)確定的前提下,在未知最優(yōu)網(wǎng)絡(luò)規(guī)模時(shí),大量的參數(shù)使網(wǎng)絡(luò)模型具有強(qiáng)大的分類能力,同時(shí)也容易導(dǎo)致網(wǎng)絡(luò)的過擬合;反之,網(wǎng)絡(luò)參數(shù)過少會(huì)限制網(wǎng)絡(luò)的學(xué)習(xí)能力。由于更多的參數(shù)意味著更多的存儲(chǔ)需求和計(jì)算操作,增加了在移動(dòng)平臺(tái)上應(yīng)用CNN的難度。
已有研究工作證實(shí),在網(wǎng)絡(luò)模型權(quán)重參數(shù)中,并不是每一個(gè)參數(shù)都具有同等的重要性[16],不同網(wǎng)絡(luò)層權(quán)值的概率分布也有很大差異。以CaffeNet[17]最后一層全連接層(Fc8)的權(quán)重分布為例,如圖1所示,其分布具有類似正態(tài)分布的特征;當(dāng)分別對權(quán)重絕對值較小和權(quán)重絕對值較大的連接進(jìn)行裁剪時(shí),得到網(wǎng)絡(luò)精度結(jié)果如圖2所示??梢姡翰粩嘣龃髮^對值較小的連接的裁剪比率時(shí),網(wǎng)絡(luò)精確率基本保持穩(wěn)定,當(dāng)裁剪率高于80%時(shí)精確率才出現(xiàn)緩慢下降;與之相反,裁剪權(quán)重較大的連接對網(wǎng)絡(luò)的精確率影響十分明顯。已有研究工作也證明,網(wǎng)絡(luò)模型中絕對值大的權(quán)重參數(shù)比絕對值小的權(quán)重對輸出的影響更大[16]。
圖1 CaffeNet中Fc8的權(quán)重分布
圖2 Fc8層不同權(quán)重裁剪結(jié)果
同樣,以CaffeNet為例,在保證精確率不變化的前提下,動(dòng)態(tài)調(diào)整每一層的裁剪閾值并進(jìn)行權(quán)重?cái)?shù)據(jù)的裁剪,每次最大限度地實(shí)現(xiàn)單層的裁剪并逐層遞進(jìn),最終通過fine-tune保持網(wǎng)絡(luò)執(zhí)行的精確率下降不超過1%,其結(jié)果如圖3所示。網(wǎng)絡(luò)模型中每一層都有相當(dāng)數(shù)量的權(quán)重參數(shù)被裁剪而不影響網(wǎng)絡(luò)輸出結(jié)果的精確率。
圖3 單層最大被裁剪率
(1)
以CaffeNet的Fc8層的權(quán)重為例。將32位的權(quán)重用9位定點(diǎn)表示,量化為一個(gè)離散的權(quán)重區(qū)間,可在滿足網(wǎng)絡(luò)輸出精度不變的情況下采用定點(diǎn)表示其數(shù)據(jù),如圖4所示。
圖4 定點(diǎn)量化后的權(quán)重分布
定點(diǎn)數(shù)據(jù)量化相比浮點(diǎn)數(shù)據(jù)獲得了更高的網(wǎng)絡(luò)精確率,明顯地降低了網(wǎng)絡(luò)計(jì)算的開銷,提高了性能并且降低了功耗。
在本章中,詳細(xì)描述本文所采用的算法。
通過對網(wǎng)絡(luò)中各層權(quán)重的數(shù)據(jù)分布和數(shù)值特點(diǎn)進(jìn)行分析,權(quán)重的絕對值越小對該連接所產(chǎn)生的全局影響越小。在保證精度的前提下,對重要性較低的網(wǎng)絡(luò)連接進(jìn)行權(quán)重?cái)?shù)據(jù)裁剪,減少網(wǎng)絡(luò)的非零參數(shù)數(shù)量,使網(wǎng)絡(luò)數(shù)據(jù)量降低。
網(wǎng)絡(luò)訓(xùn)練過程通過優(yōu)化權(quán)重W,以最小化損失函數(shù)E(D|f,W|),其中D為訓(xùn)練集。在裁剪網(wǎng)絡(luò)時(shí),選擇并優(yōu)化參數(shù)子集Wp,其中Wp為相對重要的權(quán)重連接并且Wp?W,同時(shí)保證網(wǎng)絡(luò)精確度E(D|f,Wp|)。因此,最小化裁剪導(dǎo)致的精確度的損失可表示為:
(2)
基于閾值的權(quán)重?cái)?shù)據(jù)裁剪操作主要包括三個(gè)步驟:
1)為保證網(wǎng)絡(luò)的重要連接得到充分的學(xué)習(xí),采用浮點(diǎn)型數(shù)據(jù)將網(wǎng)絡(luò)模型訓(xùn)練至收斂。統(tǒng)計(jì)該網(wǎng)絡(luò)模型各層l的權(quán)重分布Fl(wl),取一個(gè)較小且無精確度損失的裁剪率p0,使得Fl(tl0)=P{0<|tl0|}=p0,即網(wǎng)絡(luò)模型各層i的初始裁剪率為p0時(shí),其初始閾值分別設(shè)為tl0。同時(shí),將所有小于此閾值的權(quán)重連接重置為0。
2)再次訓(xùn)練網(wǎng)絡(luò),對重要的權(quán)重連接進(jìn)行微調(diào),恢復(fù)網(wǎng)絡(luò)的精確率。其中,已重置為0的權(quán)重不被更新,采用以下方法:
(3)
(4)
(5)
(6)
卷積神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)各層數(shù)值動(dòng)態(tài)范圍存在差異。例如在普遍采用ReLu[21]為激活函數(shù)的網(wǎng)絡(luò)模型中,當(dāng)該神經(jīng)元輸出大于0時(shí),該值等于上層的輸出與權(quán)重的點(diǎn)積,其輸出數(shù)據(jù)范圍遠(yuǎn)大于當(dāng)前層權(quán)重。定點(diǎn)表示的數(shù)值范圍有限,因此采用動(dòng)態(tài)定點(diǎn)(Dynamic fixed point)[20,22]來表示網(wǎng)絡(luò)的權(quán)重和激活函數(shù),即每個(gè)數(shù)值表示如下:
(7)
其中:bw表示位寬,s是符號(hào)位,fl為小數(shù)的長度,m表示尾數(shù)位。網(wǎng)絡(luò)中的各個(gè)值都可以在較小影響下,根據(jù)bw動(dòng)態(tài)分配相應(yīng)的fl。
對權(quán)重與激活函數(shù)的動(dòng)態(tài)定點(diǎn)量化按以下4個(gè)步驟進(jìn)行:
1)將經(jīng)過預(yù)訓(xùn)練的網(wǎng)絡(luò)模型的精確率作為網(wǎng)絡(luò)模型量化的基線Ab,同時(shí)設(shè)置正閾值σ。在動(dòng)態(tài)定點(diǎn)量化過程中,允許其量化后的精確率Aq相對于基線的降低范圍在閾值σ之內(nèi),Ab-Aq<σ。
2)分析權(quán)重和激活函數(shù)各自的動(dòng)態(tài)范圍,尋找與其相對應(yīng)整數(shù)部il所需的位寬,計(jì)算小數(shù)部分的位寬長度fl=bw-il-1。采用最鄰近舍入法從浮點(diǎn)轉(zhuǎn)化為定點(diǎn)數(shù)據(jù)。
測試量化后網(wǎng)絡(luò)精確率Aq,當(dāng)精確率的損失在σ范圍內(nèi),采用折半查找法,多次迭代量化分別尋找激活函數(shù)、卷積層與全連接層權(quán)重的最優(yōu)位寬。否則,將bw和fl部分設(shè)為上一次循環(huán)所得位寬長度。因?yàn)榫W(wǎng)絡(luò)模型三個(gè)部分的位寬相對獨(dú)立,因此每次只將卷積層或全連接層的權(quán)重或各層激活函數(shù)三部分的其中之一作動(dòng)態(tài)定點(diǎn)量化,其余保持浮點(diǎn)型數(shù)據(jù)。
3)找到當(dāng)前層動(dòng)態(tài)定點(diǎn)量化的位數(shù)與精確率之間的最優(yōu)平衡點(diǎn),對量化后的網(wǎng)絡(luò)進(jìn)行微調(diào)。為了使動(dòng)態(tài)定點(diǎn)量化不降低網(wǎng)絡(luò)的精確率,采取全精度的影子權(quán)重(full precision shadow weight)[15],對計(jì)算過程中的梯度進(jìn)行反向傳播。權(quán)重的梯度為Δw由全精度權(quán)重w計(jì)算得到,而離散的權(quán)重wq由w動(dòng)態(tài)定點(diǎn)量化而得,對權(quán)重進(jìn)行隨機(jī)舍入(stochastic rounding)[23]獲得,即:
(8)
(9)
(10)
(11)
其中:fl為神經(jīng)網(wǎng)絡(luò)的激活函數(shù),Q為動(dòng)態(tài)量化函數(shù)。為了得到更精準(zhǔn)的權(quán)重梯度,在微調(diào)階段將不對激活函數(shù)fl的量化結(jié)果進(jìn)行調(diào)整。
為了驗(yàn)證與分析上述方法,本文在Caffe 1.0版本[17]深度學(xué)習(xí)開發(fā)框架中,加入以上權(quán)重裁剪及量化功能,采用CaffeNet、VGG-19、SqueezeNet[24]、ResNet[25]等廣泛使用的典型卷積神經(jīng)網(wǎng)絡(luò)模型作為實(shí)驗(yàn)對象,將2012年ImageNet大規(guī)模視覺識(shí)別挑戰(zhàn)賽(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)的驗(yàn)證集作為實(shí)驗(yàn)的測試數(shù)據(jù)集。
CaffeNet網(wǎng)絡(luò)模型各層權(quán)重?cái)?shù)量、裁剪閾值及其裁剪率結(jié)果如表1所示。整體來看,經(jīng)閾值法裁剪后,CaffeNet網(wǎng)絡(luò)權(quán)重?cái)?shù)目從61×106減少為10.1×106,裁剪率為83.4%,并且,網(wǎng)絡(luò)模型精確率保持在55.2%。另外,網(wǎng)絡(luò)中不同的層所設(shè)置閾值的大小及裁剪率并不相同。相比權(quán)重共享的卷積層,全連接層的裁剪率都在63.72%以上,最高的裁剪率可到達(dá)88.1%;因此,全連接層比卷積層權(quán)重的冗余性更高。在卷積神經(jīng)網(wǎng)絡(luò)中,閾值的大小與層的類型及當(dāng)前層在網(wǎng)絡(luò)中所處位置相關(guān)[16]。同時(shí),在網(wǎng)絡(luò)模型中,上下層之間相互影響,單層閾值設(shè)置過大,會(huì)影響后面層的特征提取。表2中所示為上述四個(gè)卷積神經(jīng)網(wǎng)絡(luò)的裁剪結(jié)果。由表2可以看出,基于閾值的裁剪方法對CaffeNet、VGG-19等大型網(wǎng)絡(luò)均可達(dá)到80%以上的裁剪率。此外,不含全連接層的參數(shù)密集的網(wǎng)絡(luò)模型ResNet和SqueezeNet也能通過閾值法裁剪減少30%的參數(shù)數(shù)量。因此,基于閾值的裁剪方法能有效降低卷積神經(jīng)網(wǎng)絡(luò)中的非零權(quán)重?cái)?shù)量。
相比當(dāng)前的Dropout方法,閾值法裁剪則將權(quán)重連接永久刪除,而Dropout在訓(xùn)練時(shí)使每個(gè)神經(jīng)元都有一定的概率不參與訓(xùn)練但在網(wǎng)絡(luò)推理時(shí)參與回歸,因此Dropout并不降低非零權(quán)重?cái)?shù)量。隨著網(wǎng)絡(luò)連接的刪除,網(wǎng)絡(luò)模型將選擇最重要的連接進(jìn)行表達(dá),因此可以極大地降低神經(jīng)網(wǎng)絡(luò)本身所存在的冗余性[16]。
表1 基于閾值裁剪后CaffeNet各層權(quán)重變化
表2 不同網(wǎng)絡(luò)模型裁剪后結(jié)果對比
在本節(jié)中,使用動(dòng)態(tài)定點(diǎn)量化方法對上述4個(gè)網(wǎng)絡(luò)模型的權(quán)重與激活函數(shù)進(jìn)行處理,本節(jié)實(shí)驗(yàn)將各個(gè)網(wǎng)絡(luò)的原始精確率作為基線,并使得量化后的精確率不低于基線的3%。
表3所示為CaffeNet、VGG-19、ResNet和SqueezeNet動(dòng)態(tài)定點(diǎn)量化后網(wǎng)絡(luò)各個(gè)部分的位寬、初始基線和量化后的精確率及變化。表4為各個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型量化前后大小對比。表4中,最后一列數(shù)據(jù)所示為便于在嵌入式微處理器平臺(tái)進(jìn)行硬件加速,采用8(1 B)的倍數(shù)位定點(diǎn)量化網(wǎng)絡(luò)所得結(jié)果。實(shí)驗(yàn)結(jié)果顯示,將CaffeNet的卷積層和全連接層的權(quán)重及激活函數(shù)32位的位寬分別最大量化為8位、7位和12位時(shí),可不產(chǎn)生分類精確率損失;同時(shí),其網(wǎng)絡(luò)大小從232.6 MB縮減為51.2 MB,網(wǎng)絡(luò)模型大小減少了78%。此外,對于前處理器平臺(tái),CaffeNet也能被量化為58.1 MB。與CaffeNet類似,網(wǎng)絡(luò)層數(shù)更多的卷積神經(jīng)網(wǎng)絡(luò)ResNet經(jīng)過動(dòng)態(tài)定點(diǎn)量化后,各層數(shù)據(jù)均可采用較低位寬數(shù)據(jù)表示,網(wǎng)絡(luò)存儲(chǔ)所占空間可縮減到25.2 MB和45.0 MB。對于參數(shù)密集型網(wǎng)絡(luò)SqueezeNet,雖然網(wǎng)絡(luò)本身具有較高的權(quán)重共享能力,其模型大小也由4.7 MB縮減至1.2 MB。由此可知,網(wǎng)絡(luò)權(quán)重的量化,對于大規(guī)模神經(jīng)網(wǎng)絡(luò)在“邊緣”及低性能終端設(shè)備的部署具有顯著意義。
同時(shí),相比裁剪與量化方法,網(wǎng)絡(luò)精確率嚴(yán)格處于閾值所限定范圍內(nèi)。
表3 動(dòng)態(tài)定點(diǎn)量化對不同網(wǎng)絡(luò)處理的效果
表4 定點(diǎn)量化后各個(gè)網(wǎng)絡(luò)的大小
實(shí)際應(yīng)用中,網(wǎng)絡(luò)裁剪和網(wǎng)絡(luò)權(quán)重的量化均可單獨(dú)作為網(wǎng)絡(luò)模型壓縮的方法,為了對網(wǎng)絡(luò)模型進(jìn)行進(jìn)一步壓縮,本節(jié)實(shí)驗(yàn)將在4.1節(jié)及4.2節(jié)實(shí)驗(yàn)結(jié)果的基礎(chǔ)上,提出將網(wǎng)絡(luò)裁剪及網(wǎng)絡(luò)權(quán)重量化相結(jié)合的方法,并對其進(jìn)行嵌套迭代實(shí)現(xiàn)。其中,精確率閾值與基線的設(shè)置與以上章節(jié)相同。
表5中給出了網(wǎng)絡(luò)裁剪、量化及將其結(jié)合后對CaffeNet模型各層大小的影響。相比原始CaffeNet網(wǎng)絡(luò)的大小,將裁剪與量化結(jié)合后網(wǎng)絡(luò)規(guī)模有了明顯的降低,從232.6 MB壓縮為僅9.02 MB的大小,CaffeNet網(wǎng)絡(luò)模型減小了96.12%,極大地減少了網(wǎng)絡(luò)存儲(chǔ)空間。單獨(dú)的裁剪和量化則分別減少為41.13 MB和44.2 MB,只減少了81.5%。而網(wǎng)絡(luò)的精確率稍有降低,但仍處于前文所述閾值范圍內(nèi)。網(wǎng)絡(luò)裁剪與量化相結(jié)合后,對CaffeNet網(wǎng)絡(luò)的卷積層和全連接層的大小都能有效地進(jìn)行壓縮,說明方法結(jié)合后能更進(jìn)一步地對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行壓縮。
表5 CaffeNet網(wǎng)絡(luò)裁剪及量化后各層大小 MB
與此同時(shí),網(wǎng)絡(luò)精確率嚴(yán)格處于閾值所在范圍內(nèi)。如表6所示,本實(shí)驗(yàn)所采用的網(wǎng)絡(luò)模型都可以通過網(wǎng)絡(luò)裁剪和量化或其結(jié)合的方法,對網(wǎng)絡(luò)模型數(shù)據(jù)大小進(jìn)行壓縮。VGG-19從初始大小548 MB壓縮為25.2 MB而精確率僅降低0.3個(gè)百分點(diǎn),壓縮了95.4%;同時(shí),層數(shù)更多的卷積神經(jīng)網(wǎng)絡(luò)的ResNet和SqueezeNet也能壓縮為原始大小的18.7%以下。在精確率變化方面,在多個(gè)模型上的測試結(jié)果幾何平均后精度下降為1.46個(gè)百分點(diǎn),可見裁剪和量化對實(shí)現(xiàn)模型在嵌入式設(shè)備上的“邊緣”部署有非常大的優(yōu)勢。
表6 不同網(wǎng)絡(luò)裁剪及量化后結(jié)果對比
本文針對卷積神經(jīng)網(wǎng)絡(luò)對存儲(chǔ)空間及計(jì)算資源需求過大從而限制了其在嵌入式“邊緣”設(shè)備上部署的問題,提出了結(jié)合網(wǎng)絡(luò)權(quán)重裁剪及面向嵌入式硬件平臺(tái)數(shù)據(jù)類型的數(shù)據(jù)量化的卷積神經(jīng)網(wǎng)絡(luò)壓縮方法,降低網(wǎng)絡(luò)模型的冗余度和數(shù)據(jù)位寬需求。實(shí)驗(yàn)結(jié)果表明,該方法在保證網(wǎng)絡(luò)精確率的前提下能有效地對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行壓縮。未來工作中,還將對上述方法進(jìn)一步優(yōu)化,更深入研究網(wǎng)絡(luò)模型中權(quán)重連接之間的聯(lián)系;在定點(diǎn)量化方面,將用更少的位寬量化網(wǎng)絡(luò)的不同部分,從而在更大程度上降低網(wǎng)絡(luò)大小及其計(jì)算消耗。