王 瑋, 朱力強
(1.北京交通大學(xué)機械與電子控制工程學(xué)院,北京 100044;2.北京交通大學(xué)載運工具先進(jìn)制造與測控技術(shù)教育部重點實驗室,北京 100044)
侵入鐵路周界的異物是嚴(yán)重威脅鐵路安全的重要因素之一。我國高速鐵路線路都建有綜合視頻監(jiān)控系統(tǒng),并具備初步的視頻分析和自動識別異物入侵能力[1-2]。但由于受到鐵路場景中光線和天氣等環(huán)境因素的影響,現(xiàn)有基于圖像背景差分原理[3]的異物檢測算法普遍存在誤報率高的問題,無法滿足現(xiàn)場實際需求。隨著深度學(xué)習(xí)在圖像分類、目標(biāo)檢測和圖像分割等領(lǐng)域取得的進(jìn)步,將深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)應(yīng)用于鐵路異物入侵檢測成為一個新的研究方向[4]。由于GPU等并行計算平臺的快速提升,CNN已經(jīng)發(fā)展成為計算密集型和存儲密集型的算法,從最初LECUN等[5]設(shè)計的只含有3個卷積層的LeNet-5,到 5個卷積層的AlexNet[6],以及更深層的VGGNet[7],GoogLeNet[8]和ResNet[9]等網(wǎng)絡(luò)。這些擁有數(shù)十甚至上百層的深度神經(jīng)網(wǎng)絡(luò)難以部署到硬件資源有限的系統(tǒng)中。對于高速鐵路,為了實現(xiàn)線路周界入侵檢測,需要每隔100~200 m就安裝一臺監(jiān)控攝像機,因此周界入侵檢測系統(tǒng)需要面臨海量視頻的實時處理,而大型CNN網(wǎng)絡(luò)模型存在計算量大和占用內(nèi)存多等問題,導(dǎo)致基于CNN的異物檢測系統(tǒng)存在實時性和經(jīng)濟性缺陷。因此,有必要研究網(wǎng)絡(luò)模型壓縮方法,在保證檢測準(zhǔn)確度的條件下,降低網(wǎng)絡(luò)模型規(guī)模和計算量。
現(xiàn)有深度神經(jīng)網(wǎng)絡(luò)模型壓縮技術(shù)主要有低秩分解、知識精煉、遷移與壓縮卷積濾波器以及參數(shù)修剪與共享等方法[10]。文獻(xiàn)[11-12]采用低秩分解方法來分解張量并估計卷積層中的有效信息參數(shù),需借助非線性優(yōu)化算法逐層壓縮,計算量較大,同時無法保證收斂到最優(yōu)解。文獻(xiàn)[13-14]采用知識精煉的方法能夠?qū)⑸疃群蛯挾鹊木W(wǎng)絡(luò)模型壓縮為淺層模型,通過遵循學(xué)生-教師的框架進(jìn)行模型壓縮減少深度網(wǎng)絡(luò)的訓(xùn)練量和計算成本,這種方法對于采用Softmax分類層的網(wǎng)絡(luò)具有一定效果。文獻(xiàn)[15]采用遷移卷積層的方法,將變換矩陣應(yīng)用于卷積層中對網(wǎng)絡(luò)模型進(jìn)行壓縮,但準(zhǔn)確率較低,在某些數(shù)據(jù)集上的結(jié)果不穩(wěn)定。依照減少冗余信息的技術(shù)方式,參數(shù)修剪和共享可以分為三類:結(jié)構(gòu)化矩陣、二進(jìn)制化與量化、裁剪與共享[10]。文獻(xiàn)[16-17]使用結(jié)構(gòu)化矩陣,降低內(nèi)存消耗并加快訓(xùn)練速度,缺點是這種結(jié)構(gòu)約束會導(dǎo)致精度損失,并且如何找到一種適當(dāng)?shù)慕Y(jié)構(gòu)矩陣比較困難。文獻(xiàn)[18]對權(quán)重進(jìn)行二進(jìn)制化操作,可以降低參數(shù)量,但對準(zhǔn)確率的影響較大。文獻(xiàn)[19]采用計算特征圖中的APoZ值(Average Percentage of Zeros)來判斷特征圖稀疏程度,將稀疏的特征圖對應(yīng)卷積核進(jìn)行裁剪。這種方法主要對CNN中APoZ值較高的高層卷積層和全連接層有效,難以針對整個網(wǎng)絡(luò)進(jìn)行有效的壓縮和加速計算。文獻(xiàn)[20]計算各層卷積核L1范數(shù)值,逐層將L1范數(shù)值較小的卷積核裁剪并重新訓(xùn)練。文獻(xiàn)[21]采用裁剪、權(quán)值共享和哈夫曼編碼三步進(jìn)行網(wǎng)絡(luò)模型壓縮,裁剪準(zhǔn)則以設(shè)定權(quán)重L1閾值進(jìn)行裁剪,為進(jìn)一步壓縮網(wǎng)絡(luò)采用對權(quán)值聚類的方法,使每一類的權(quán)值共享,并采用Huffman編碼來降低冗余。但在裁剪過程中將卷積核L1范數(shù)值作為裁剪準(zhǔn)則,由于卷積核L1范數(shù)值小,無法代表卷積核的重要程度,導(dǎo)致刪除了某些重要卷積核而損失精度。
本文提出一種通用有效的遞歸裁剪方法,以每個卷積核輸出的特征圖L1范數(shù)值作為裁剪準(zhǔn)則,對L1范數(shù)值較小的特征圖所對應(yīng)的卷積核進(jìn)行裁剪,并對裁剪后的卷積網(wǎng)絡(luò)重新進(jìn)行微調(diào)訓(xùn)練,這種裁剪準(zhǔn)則普遍適用于任何存在卷積計算的網(wǎng)絡(luò)結(jié)構(gòu)。本文主要以VGG16、AlexNet、LeNet-5網(wǎng)絡(luò)為例,通過遞歸裁剪實現(xiàn)模型壓縮和加速,基于ImageNet、MNIST和鐵路場景數(shù)據(jù)庫的實驗結(jié)果表明,本文提出的方法可以壓縮網(wǎng)絡(luò)規(guī)模,同時保持較高的檢測準(zhǔn)確率。
卷積神經(jīng)網(wǎng)絡(luò)通常由多個卷積層堆疊而成,而每個卷積層又包含多個卷積核。假設(shè)某個卷積核的權(quán)值張量為K,則其基本卷積運算可以表示為
( 1 )
式中:x為卷積神經(jīng)網(wǎng)絡(luò)的輸入,在其沿網(wǎng)絡(luò)前向傳播過程中,在卷積核K處形成輸入特征圖X,輸出特征圖Fx。
任意一個卷積核K可以看做是一個特征模板,卷積運算就是掃描輸入圖像,計算其不同位置與特征模板的匹配程度。卷積核的數(shù)目越多,卷積神經(jīng)網(wǎng)絡(luò)能夠表達(dá)的模式就越多,學(xué)習(xí)能力也越強。因此,在實際應(yīng)用中,針對一個特定任務(wù),訓(xùn)練一個包含更多卷積核的網(wǎng)絡(luò)結(jié)構(gòu)通常會更容易達(dá)到訓(xùn)練目標(biāo),但這樣往往會造成網(wǎng)絡(luò)中實際存在很多冗余或者無用的卷積核。為了識別這些不必要的卷積核,目前普遍的方法是在訓(xùn)練完成后,計算每個卷積核的L1范數(shù)‖K‖1。L1范數(shù)大的卷積核被認(rèn)為是重要的,而L1范數(shù)小的卷積核被認(rèn)為是不重要的,可以從網(wǎng)絡(luò)中去除,達(dá)到減少計算量、避免過訓(xùn)練等目的。
然而由卷積運算的特性可知,每個卷積核實際代表某個抽象層級上的某個特征模板。例如,在圖像識別應(yīng)用中,第一層的卷積核通常是不同方向上的邊緣檢測模板。因此,卷積核元素的幅值大小,并不一定能準(zhǔn)確反映某個卷積核所代表的特征是否對于目標(biāo)問題有用。換句話說,卷積核L1范數(shù)‖K‖1的大小,只代表該特征的幅值大小,并不能反映該卷積核的重要程度。
以上討論的是針對某個數(shù)據(jù)集獨立學(xué)習(xí)后去除多余卷積核的情況。在實際應(yīng)用中另外一種常見的情況是,為了節(jié)省訓(xùn)練時間和降低對數(shù)據(jù)集規(guī)模的要求,可以直接使用在開源數(shù)據(jù)庫已經(jīng)訓(xùn)練好的卷積神經(jīng)元網(wǎng)絡(luò),然后針對實際應(yīng)用數(shù)據(jù)集,利用遷移學(xué)習(xí)進(jìn)行再訓(xùn)練,微調(diào)網(wǎng)絡(luò)參數(shù)。此時,原本在開源數(shù)據(jù)庫中L1范數(shù)大的卷積核所代表的模式,可能在新數(shù)據(jù)集中是沒有的,因此對應(yīng)用是無用的,但現(xiàn)有方法也無法識別其有效性。
為此,本文提出以每個卷積核輸出特征圖F的L1范數(shù)作為評價卷積核重要程度的依據(jù),計算一個卷積層中每個卷積核輸出的特征圖L1范數(shù)在目標(biāo)訓(xùn)練樣本集下的均值,按其大小對卷積核進(jìn)行排序,去除后面一定數(shù)量的卷積核,達(dá)到識別與裁剪的目的。本方法對于獨立學(xué)習(xí)或遷移學(xué)習(xí)的應(yīng)用場景都有效。在實際操作中,為了減少計算量,可從全部訓(xùn)練樣本集中挑選出能夠代表整個樣本分布情況的N張圖片,分別輸入到網(wǎng)絡(luò)中,估計出各通道特征圖的L1范數(shù)均值為
( 2 )
假設(shè)在裁剪前,第M層卷積層的卷積核個數(shù)為D1,第M+1層的卷積核個數(shù)為D2,且第M層的輸入特征圖有D個,即第M-1層有D個卷積核。裁剪后的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)見圖1,其中M層裁剪了d1個卷積核,M+1層裁剪了d2個卷積核。對于具有全連接層的網(wǎng)絡(luò),如VGGNet,可以對全連接層中小于預(yù)設(shè)閾值的連接進(jìn)行剪裁。一次裁剪完成后,需要對整個網(wǎng)絡(luò)的權(quán)值進(jìn)行微調(diào)訓(xùn)練。這個裁剪-微調(diào)步驟可以不斷重復(fù),遞歸壓縮網(wǎng)絡(luò)結(jié)構(gòu),提升計算速度。另外,還可以通過使用全局平均池化層GAP(Global Average Pooling)[22]代替全連接層,達(dá)到同時壓縮網(wǎng)絡(luò)計算量和參數(shù)存儲量的目的。
圖1 裁剪后卷積網(wǎng)絡(luò)結(jié)構(gòu)示意
完整的卷積神經(jīng)網(wǎng)絡(luò)模型裁剪流程總結(jié)如下:
Step1由訓(xùn)練樣本庫中隨機選取N個樣本。
Step4對裁剪后的整個網(wǎng)絡(luò)權(quán)值進(jìn)行微調(diào)訓(xùn)練。訓(xùn)練分為兩個階段:在第一階段,固定卷積層的網(wǎng)絡(luò)連接權(quán)值,只訓(xùn)練卷積層后面的全連接層/輸出層,直至網(wǎng)絡(luò)輸出準(zhǔn)確率不再上升;在第二階段,對全網(wǎng)絡(luò)連接權(quán)值進(jìn)行訓(xùn)練,直至收斂。
Step5如果網(wǎng)絡(luò)輸出準(zhǔn)確率仍然滿足要求,可以重復(fù)Step2~Step4進(jìn)行再次壓縮。重復(fù)此過程,直至準(zhǔn)確率無法滿足要求為止。
本文提出的算法適用于任何存在卷積運算的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),這里以VGG16、AlexNet和LeNet-5作為實驗驗證對象,分別針對ImageNet和MNIST數(shù)據(jù)庫,遞歸裁剪網(wǎng)絡(luò)模型中的全部卷積層,驗證壓縮算法對于不同卷積模型和數(shù)據(jù)類型的效果。
VGG16是一種具有16層單路的卷積神經(jīng)網(wǎng)絡(luò),共有13個卷積層和3個全連接層。為了研究裁剪過程對網(wǎng)絡(luò)性能的影響,本文采用如表1所示的策略對VGG16進(jìn)行遞歸裁剪,其中,裁剪次數(shù)為0的一列是原始VGG16各個卷積層的卷積核個數(shù),其他列是每次裁剪后剩余的卷積核個數(shù),最后一列是網(wǎng)絡(luò)壓縮后的最終結(jié)構(gòu)。在實際應(yīng)用中,每層最終保留的卷積核數(shù)量可以根據(jù)應(yīng)用的期望計算量來確定。例如,在現(xiàn)有硬件平臺下,表1的最終網(wǎng)絡(luò)結(jié)構(gòu)可實現(xiàn)6 ms/幀的處理速度,基本滿足高鐵周界入侵檢測系統(tǒng)對實時性和經(jīng)濟性的要求。需要指出的是,對每層卷積核的裁剪不可以一次性完成,應(yīng)該采用每次只裁剪少量卷積核的策略,逐步壓縮網(wǎng)絡(luò)。對于VGG16網(wǎng)絡(luò),考慮到conv1-1至3-3卷積核數(shù)目較少,采用等差數(shù)列形式進(jìn)行裁剪;而conv4-1至5-3卷積核數(shù)目較多,為達(dá)到同樣的壓縮速度,采用等比數(shù)列形式進(jìn)行裁剪。另外,考慮到全連接fc6與fc7層參數(shù)占整個網(wǎng)絡(luò)模型參數(shù)的近90%,因此在裁剪前用GAP層代替fc6與fc7層,這樣能夠極大降低模型所占內(nèi)存,實驗結(jié)果表明這種替代網(wǎng)絡(luò)結(jié)構(gòu)對模型準(zhǔn)確性的影響很小。
在驗證實驗中,首先從ImageNet數(shù)據(jù)集中選取10類典型圖像,組成一個新的10分類數(shù)據(jù)集,典型圖像見圖2。在將ImageNet圖像輸入網(wǎng)絡(luò)訓(xùn)練時,將圖像短邊按比例縮放至256,然后隨機偏移裁剪出224×224的圖像區(qū)域作為輸入數(shù)據(jù)。如果直接采用文獻(xiàn)[7]的預(yù)訓(xùn)練VGG16網(wǎng)絡(luò)(基于ImageNet全部1 000類圖像數(shù)據(jù)訓(xùn)練),對于新的10分類任務(wù),網(wǎng)絡(luò)模型的評測誤差為0.2%,此網(wǎng)絡(luò)在Intel Xeon E5-2667 v3 CPU+Tesla K80 GPU平臺上執(zhí)行一次前向傳播運算的時間為26.6 ms。
表1 VGG16遞歸裁剪結(jié)構(gòu)
注:“*”表示網(wǎng)絡(luò)中包含該層結(jié)構(gòu);“—”表示網(wǎng)絡(luò)中沒有使用該層結(jié)構(gòu)。
圖2 基于ImageNet選取10類圖像
為了對預(yù)訓(xùn)練VGG16模型進(jìn)行裁剪,首先從10類數(shù)據(jù)集中隨機挑選出1 000張圖片用于估計特征圖L1范數(shù)。按照本文提出的裁剪原理,經(jīng)過9次裁剪后,模型的內(nèi)存變化趨勢和單次前向傳播耗時分別見圖3、圖4。由表2可知,對于10分類問題,裁剪后的網(wǎng)絡(luò)計算耗時降低77.4%,網(wǎng)絡(luò)模型所占內(nèi)存壓縮約660倍,同時評測準(zhǔn)確率仍然能夠達(dá)到98.6%的較高水平。
圖3 每次裁剪后的內(nèi)存變化圖4 每次剪裁后單次前向傳播計算耗時
表2 采用本文提出的裁剪算法后的各參數(shù)比較
按照表1中的遞歸裁剪結(jié)構(gòu),分別以兩種準(zhǔn)則進(jìn)行實驗準(zhǔn)確度對比,結(jié)果見圖6。可以看出,隨著裁剪次數(shù)的增加,驗證集準(zhǔn)確率和評測集準(zhǔn)確率整體呈緩慢下降趨勢,但依照本文提出的裁剪算法每次剪裁后的準(zhǔn)確度下降幅度較小。不同裁剪策略的評測誤差見表3。在加速不同倍數(shù)的條件下,本文提出的剪裁策略有更高的準(zhǔn)確率。因此,基于特征圖的L1剪裁準(zhǔn)則與傳統(tǒng)的卷積核L1準(zhǔn)則[20]相比,可以更為準(zhǔn)確地辨識冗余卷積核。
(a) 驗證準(zhǔn)確率
(b)評測準(zhǔn)確率圖6 ImageNet上兩種裁剪準(zhǔn)則下的準(zhǔn)確率曲線
裁減次數(shù)運算加速/倍卷積核L1準(zhǔn)則誤差/%特征圖L1準(zhǔn)則誤差/%21.60.60.231.90.80.242.11.00.462.82.01.294.43.01.4
與VGG16的單組卷積結(jié)構(gòu)不同,AlexNet采用了雙組卷積結(jié)構(gòu)?;贏lexNet對ImageNet數(shù)據(jù)集的分類實驗中,利用本文算法可以將AlexNet模型從232.5 MB壓縮至1.6 MB,網(wǎng)絡(luò)模型所占內(nèi)存壓縮約145倍,計算耗時降低69.1%,而損失準(zhǔn)確率只有1.1%。MNIST數(shù)據(jù)集是手寫體數(shù)字?jǐn)?shù)據(jù)集,圖像分辨率為28×28,遠(yuǎn)小于ImageNet數(shù)據(jù)集?;贚eNet-5對MNIST數(shù)據(jù)集的分類實驗中,利用本文算法可以將LeNet-5模型從1 680 KB壓縮至109.5 KB,網(wǎng)絡(luò)模型所占內(nèi)存壓縮約15倍,而損失的準(zhǔn)確率只有0.2%。由此可見,本文算法對不同的卷積網(wǎng)絡(luò)結(jié)構(gòu)和應(yīng)用場景都有較好的適應(yīng)性。
高鐵周界入侵的監(jiān)控視頻圖像與ImageNet數(shù)據(jù)集中的圖像相比質(zhì)量相差很多,主要體現(xiàn)在光線和天氣條件的劇烈變化。為了訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),我們采集了高鐵正線上9個不同場景像機的監(jiān)控圖像,其原始分辨率為1 920×1 080。為降低運算量,在圖像輸入網(wǎng)絡(luò)時,將短邊按比例縮放至256,然后隨機偏移裁剪出224×224的圖像區(qū)域作為輸入數(shù)據(jù)。整個數(shù)據(jù)集涵蓋各個時間段及多種天氣情況,分為訓(xùn)練集28 000張,驗證集4 000張,評測集2 000張,并為每張圖片人工標(biāo)注了3類標(biāo)簽:空場景、運營列車、異物侵入,典型照片見圖7。
圖7 鐵路沿線場景上的3類事件
如果直接采用VGG16網(wǎng)絡(luò)結(jié)構(gòu),且所有網(wǎng)絡(luò)連接的權(quán)值以隨機初始化方式進(jìn)行訓(xùn)練,3分類的準(zhǔn)確率可以達(dá)到99.8%,但模型參數(shù)所占內(nèi)存和運算量都過大(如表2所示)。如果直接采用表1最后一列的精簡網(wǎng)絡(luò)結(jié)構(gòu),并以隨機初始化方式進(jìn)行訓(xùn)練,3分類的準(zhǔn)確率較低,誤報率約為10.25%。由此可以看出,對于一個特定計算任務(wù),神經(jīng)網(wǎng)絡(luò)的寬度越大,可調(diào)節(jié)的網(wǎng)絡(luò)參數(shù)越多,網(wǎng)絡(luò)就越容易訓(xùn)練,計算精度也越高,但同時網(wǎng)絡(luò)冗余度也較高,所占內(nèi)存和計算量大,不適合實時性應(yīng)用場景。
按照本文提出的剪裁原理對訓(xùn)練好的VGG16進(jìn)行遞歸裁剪,遞歸策略見表1。每次裁剪后的權(quán)值作為下一次網(wǎng)絡(luò)訓(xùn)練的初始化參數(shù),訓(xùn)練過程中仍采用2階段的訓(xùn)練方式。在裁剪中,分別以特征圖L1準(zhǔn)則和卷積核L1準(zhǔn)則兩種不同裁剪方法進(jìn)行多次裁剪,并測試每次裁剪后的網(wǎng)絡(luò)準(zhǔn)確率,實驗對比結(jié)果見圖8。
可以看出,依照本文提出的特征圖L1準(zhǔn)則裁剪算法,隨著裁剪次數(shù)的增加,驗證準(zhǔn)確率和評測準(zhǔn)確率整體穩(wěn)定,經(jīng)過9次裁剪后的準(zhǔn)確率幾乎不變。在相同壓縮和加速效果下,相比于卷積核L1范數(shù)準(zhǔn)則,本文提出的裁剪算法準(zhǔn)確度更高。
(a)驗證準(zhǔn)確率
(b)評測準(zhǔn)確率圖8 鐵路場景上兩種裁剪準(zhǔn)則下每次裁剪后的準(zhǔn)確率曲線
壓縮策略訓(xùn)練誤差評測誤差隨機初始化9.4810.25卷積核L1準(zhǔn)則1.261.50特征圖L1準(zhǔn)則0.350.45
采用不同壓縮策略的準(zhǔn)確率比較見表4。由表4可見,針對該鐵路場景數(shù)據(jù)庫,相比隨機初始化策略和卷積核L1值剪裁準(zhǔn)則,采用本文提出的裁剪算法測試誤差最低為0.45%;在損失0.25%的精度下實現(xiàn)將模型壓縮約660倍并且提升計算速度4.4倍,能夠取得較好的壓縮和加速效果,易于存儲和實時計算,能夠有效解決實時監(jiān)控處理多路視頻場景異物入侵的情況。
本文提出一種通用的遞歸裁剪卷積核的網(wǎng)絡(luò)模型裁剪算法,實現(xiàn)對卷積神經(jīng)網(wǎng)絡(luò)模型的壓縮和計算加速。在壓縮過程中,使用GAP層代替內(nèi)存占比最大的全連接層,通過采用特征圖L1范數(shù)值為準(zhǔn)則對卷積層進(jìn)行遞歸裁剪,在保證準(zhǔn)確率穩(wěn)定的條件下逐步降低模型計算量和存儲空間。在高速鐵路周界入侵檢測的應(yīng)用中,本文提出的裁剪算法可以實現(xiàn)將VGG16網(wǎng)絡(luò)模型壓縮約660倍,計算加速4.4倍,而精度損失只有0.25%,完全能夠滿足對多路鐵路視頻場景進(jìn)行實時有效的異物入侵檢測需求。