王 瑋, 朱力強
(1.北京交通大學機械與電子控制工程學院,北京 100044;2.北京交通大學載運工具先進制造與測控技術教育部重點實驗室,北京 100044)
侵入鐵路周界的異物是嚴重威脅鐵路安全的重要因素之一。我國高速鐵路線路都建有綜合視頻監控系統,并具備初步的視頻分析和自動識別異物入侵能力[1-2]。但由于受到鐵路場景中光線和天氣等環境因素的影響,現有基于圖像背景差分原理[3]的異物檢測算法普遍存在誤報率高的問題,無法滿足現場實際需求。隨著深度學習在圖像分類、目標檢測和圖像分割等領域取得的進步,將深度學習中的卷積神經網絡CNN(Convolutional Neural Network)應用于鐵路異物入侵檢測成為一個新的研究方向[4]。由于GPU等并行計算平臺的快速提升,CNN已經發展成為計算密集型和存儲密集型的算法,從最初LECUN等[5]設計的只含有3個卷積層的LeNet-5,到 5個卷積層的AlexNet[6],以及更深層的VGGNet[7],GoogLeNet[8]和ResNet[9]等網絡。這些擁有數十甚至上百層的深度神經網絡難以部署到硬件資源有限的系統中。對于高速鐵路,為了實現線路周界入侵檢測,需要每隔100~200 m就安裝一臺監控攝像機,因此周界入侵檢測系統需要面臨海量視頻的實時處理,而大型CNN網絡模型存在計算量大和占用內存多等問題,導致基于CNN的異物檢測系統存在實時性和經濟性缺陷。因此,有必要研究網絡模型壓縮方法,在保證檢測準確度的條件下,降低網絡模型規模和計算量。
現有深度神經網絡模型壓縮技術主要有低秩分解、知識精煉、遷移與壓縮卷積濾波器以及參數修剪與共享等方法[10]。文獻[11-12]采用低秩分解方法來分解張量并估計卷積層中的有效信息參數,需借助非線性優化算法逐層壓縮,計算量較大,同時無法保證收斂到最優解。文獻[13-14]采用知識精煉的方法能夠將深度和寬度的網絡模型壓縮為淺層模型,通過遵循學生-教師的框架進行模型壓縮減少深度網絡的訓練量和計算成本,這種方法對于采用Softmax分類層的網絡具有一定效果。文獻[15]采用遷移卷積層的方法,將變換矩陣應用于卷積層中對網絡模型進行壓縮,但準確率較低,在某些數據集上的結果不穩定。依照減少冗余信息的技術方式,參數修剪和共享可以分為三類:結構化矩陣、二進制化與量化、裁剪與共享[10]。文獻[16-17]使用結構化矩陣,降低內存消耗并加快訓練速度,缺點是這種結構約束會導致精度損失,并且如何找到一種適當的結構矩陣比較困難。文獻[18]對權重進行二進制化操作,可以降低參數量,但對準確率的影響較大。文獻[19]采用計算特征圖中的APoZ值(Average Percentage of Zeros)來判斷特征圖稀疏程度,將稀疏的特征圖對應卷積核進行裁剪。這種方法主要對CNN中APoZ值較高的高層卷積層和全連接層有效,難以針對整個網絡進行有效的壓縮和加速計算。文獻[20]計算各層卷積核L1范數值,逐層將L1范數值較小的卷積核裁剪并重新訓練。文獻[21]采用裁剪、權值共享和哈夫曼編碼三步進行網絡模型壓縮,裁剪準則以設定權重L1閾值進行裁剪,為進一步壓縮網絡采用對權值聚類的方法,使每一類的權值共享,并采用Huffman編碼來降低冗余。但在裁剪過程中將卷積核L1范數值作為裁剪準則,由于卷積核L1范數值小,無法代表卷積核的重要程度,導致刪除了某些重要卷積核而損失精度。
本文提出一種通用有效的遞歸裁剪方法,以每個卷積核輸出的特征圖L1范數值作為裁剪準則,對L1范數值較小的特征圖所對應的卷積核進行裁剪,并對裁剪后的卷積網絡重新進行微調訓練,這種裁剪準則普遍適用于任何存在卷積計算的網絡結構。本文主要以VGG16、AlexNet、LeNet-5網絡為例,通過遞歸裁剪實現模型壓縮和加速,基于ImageNet、MNIST和鐵路場景數據庫的實驗結果表明,本文提出的方法可以壓縮網絡規模,同時保持較高的檢測準確率。
卷積神經網絡通常由多個卷積層堆疊而成,而每個卷積層又包含多個卷積核。假設某個卷積核的權值張量為K,則其基本卷積運算可以表示為
( 1 )
式中:x為卷積神經網絡的輸入,在其沿網絡前向傳播過程中,在卷積核K處形成輸入特征圖X,輸出特征圖Fx。
任意一個卷積核K可以看做是一個特征模板,卷積運算就是掃描輸入圖像,計算其不同位置與特征模板的匹配程度。卷積核的數目越多,卷積神經網絡能夠表達的模式就越多,學習能力也越強。因此,在實際應用中,針對一個特定任務,訓練一個包含更多卷積核的網絡結構通常會更容易達到訓練目標,但這樣往往會造成網絡中實際存在很多冗余或者無用的卷積核。為了識別這些不必要的卷積核,目前普遍的方法是在訓練完成后,計算每個卷積核的L1范數‖K‖1。L1范數大的卷積核被認為是重要的,而L1范數小的卷積核被認為是不重要的,可以從網絡中去除,達到減少計算量、避免過訓練等目的。
然而由卷積運算的特性可知,每個卷積核實際代表某個抽象層級上的某個特征模板。例如,在圖像識別應用中,第一層的卷積核通常是不同方向上的邊緣檢測模板。因此,卷積核元素的幅值大小,并不一定能準確反映某個卷積核所代表的特征是否對于目標問題有用。換句話說,卷積核L1范數‖K‖1的大小,只代表該特征的幅值大小,并不能反映該卷積核的重要程度。
以上討論的是針對某個數據集獨立學習后去除多余卷積核的情況。在實際應用中另外一種常見的情況是,為了節省訓練時間和降低對數據集規模的要求,可以直接使用在開源數據庫已經訓練好的卷積神經元網絡,然后針對實際應用數據集,利用遷移學習進行再訓練,微調網絡參數。此時,原本在開源數據庫中L1范數大的卷積核所代表的模式,可能在新數據集中是沒有的,因此對應用是無用的,但現有方法也無法識別其有效性。
為此,本文提出以每個卷積核輸出特征圖F的L1范數作為評價卷積核重要程度的依據,計算一個卷積層中每個卷積核輸出的特征圖L1范數在目標訓練樣本集下的均值,按其大小對卷積核進行排序,去除后面一定數量的卷積核,達到識別與裁剪的目的。本方法對于獨立學習或遷移學習的應用場景都有效。在實際操作中,為了減少計算量,可從全部訓練樣本集中挑選出能夠代表整個樣本分布情況的N張圖片,分別輸入到網絡中,估計出各通道特征圖的L1范數均值為
( 2 )

假設在裁剪前,第M層卷積層的卷積核個數為D1,第M+1層的卷積核個數為D2,且第M層的輸入特征圖有D個,即第M-1層有D個卷積核。裁剪后的卷積神經網絡結構見圖1,其中M層裁剪了d1個卷積核,M+1層裁剪了d2個卷積核。對于具有全連接層的網絡,如VGGNet,可以對全連接層中小于預設閾值的連接進行剪裁。一次裁剪完成后,需要對整個網絡的權值進行微調訓練。這個裁剪-微調步驟可以不斷重復,遞歸壓縮網絡結構,提升計算速度。另外,還可以通過使用全局平均池化層GAP(Global Average Pooling)[22]代替全連接層,達到同時壓縮網絡計算量和參數存儲量的目的。

圖1 裁剪后卷積網絡結構示意
完整的卷積神經網絡模型裁剪流程總結如下:
Step1由訓練樣本庫中隨機選取N個樣本。


Step4對裁剪后的整個網絡權值進行微調訓練。訓練分為兩個階段:在第一階段,固定卷積層的網絡連接權值,只訓練卷積層后面的全連接層/輸出層,直至網絡輸出準確率不再上升;在第二階段,對全網絡連接權值進行訓練,直至收斂。
Step5如果網絡輸出準確率仍然滿足要求,可以重復Step2~Step4進行再次壓縮。重復此過程,直至準確率無法滿足要求為止。
本文提出的算法適用于任何存在卷積運算的神經網絡結構,這里以VGG16、AlexNet和LeNet-5作為實驗驗證對象,分別針對ImageNet和MNIST數據庫,遞歸裁剪網絡模型中的全部卷積層,驗證壓縮算法對于不同卷積模型和數據類型的效果。
VGG16是一種具有16層單路的卷積神經網絡,共有13個卷積層和3個全連接層。為了研究裁剪過程對網絡性能的影響,本文采用如表1所示的策略對VGG16進行遞歸裁剪,其中,裁剪次數為0的一列是原始VGG16各個卷積層的卷積核個數,其他列是每次裁剪后剩余的卷積核個數,最后一列是網絡壓縮后的最終結構。在實際應用中,每層最終保留的卷積核數量可以根據應用的期望計算量來確定。例如,在現有硬件平臺下,表1的最終網絡結構可實現6 ms/幀的處理速度,基本滿足高鐵周界入侵檢測系統對實時性和經濟性的要求。需要指出的是,對每層卷積核的裁剪不可以一次性完成,應該采用每次只裁剪少量卷積核的策略,逐步壓縮網絡。對于VGG16網絡,考慮到conv1-1至3-3卷積核數目較少,采用等差數列形式進行裁剪;而conv4-1至5-3卷積核數目較多,為達到同樣的壓縮速度,采用等比數列形式進行裁剪。另外,考慮到全連接fc6與fc7層參數占整個網絡模型參數的近90%,因此在裁剪前用GAP層代替fc6與fc7層,這樣能夠極大降低模型所占內存,實驗結果表明這種替代網絡結構對模型準確性的影響很小。
在驗證實驗中,首先從ImageNet數據集中選取10類典型圖像,組成一個新的10分類數據集,典型圖像見圖2。在將ImageNet圖像輸入網絡訓練時,將圖像短邊按比例縮放至256,然后隨機偏移裁剪出224×224的圖像區域作為輸入數據。如果直接采用文獻[7]的預訓練VGG16網絡(基于ImageNet全部1 000類圖像數據訓練),對于新的10分類任務,網絡模型的評測誤差為0.2%,此網絡在Intel Xeon E5-2667 v3 CPU+Tesla K80 GPU平臺上執行一次前向傳播運算的時間為26.6 ms。

表1 VGG16遞歸裁剪結構
注:“*”表示網絡中包含該層結構;“—”表示網絡中沒有使用該層結構。

圖2 基于ImageNet選取10類圖像
為了對預訓練VGG16模型進行裁剪,首先從10類數據集中隨機挑選出1 000張圖片用于估計特征圖L1范數。按照本文提出的裁剪原理,經過9次裁剪后,模型的內存變化趨勢和單次前向傳播耗時分別見圖3、圖4。由表2可知,對于10分類問題,裁剪后的網絡計算耗時降低77.4%,網絡模型所占內存壓縮約660倍,同時評測準確率仍然能夠達到98.6%的較高水平。

圖3 每次裁剪后的內存變化圖4 每次剪裁后單次前向傳播計算耗時

表2 采用本文提出的裁剪算法后的各參數比較


按照表1中的遞歸裁剪結構,分別以兩種準則進行實驗準確度對比,結果見圖6。可以看出,隨著裁剪次數的增加,驗證集準確率和評測集準確率整體呈緩慢下降趨勢,但依照本文提出的裁剪算法每次剪裁后的準確度下降幅度較小。不同裁剪策略的評測誤差見表3。在加速不同倍數的條件下,本文提出的剪裁策略有更高的準確率。因此,基于特征圖的L1剪裁準則與傳統的卷積核L1準則[20]相比,可以更為準確地辨識冗余卷積核。

(a) 驗證準確率

(b)評測準確率圖6 ImageNet上兩種裁剪準則下的準確率曲線

裁減次數運算加速/倍卷積核L1準則誤差/%特征圖L1準則誤差/%21.60.60.231.90.80.242.11.00.462.82.01.294.43.01.4
與VGG16的單組卷積結構不同,AlexNet采用了雙組卷積結構。基于AlexNet對ImageNet數據集的分類實驗中,利用本文算法可以將AlexNet模型從232.5 MB壓縮至1.6 MB,網絡模型所占內存壓縮約145倍,計算耗時降低69.1%,而損失準確率只有1.1%。MNIST數據集是手寫體數字數據集,圖像分辨率為28×28,遠小于ImageNet數據集。基于LeNet-5對MNIST數據集的分類實驗中,利用本文算法可以將LeNet-5模型從1 680 KB壓縮至109.5 KB,網絡模型所占內存壓縮約15倍,而損失的準確率只有0.2%。由此可見,本文算法對不同的卷積網絡結構和應用場景都有較好的適應性。
高鐵周界入侵的監控視頻圖像與ImageNet數據集中的圖像相比質量相差很多,主要體現在光線和天氣條件的劇烈變化。為了訓練深度神經網絡,我們采集了高鐵正線上9個不同場景像機的監控圖像,其原始分辨率為1 920×1 080。為降低運算量,在圖像輸入網絡時,將短邊按比例縮放至256,然后隨機偏移裁剪出224×224的圖像區域作為輸入數據。整個數據集涵蓋各個時間段及多種天氣情況,分為訓練集28 000張,驗證集4 000張,評測集2 000張,并為每張圖片人工標注了3類標簽:空場景、運營列車、異物侵入,典型照片見圖7。

圖7 鐵路沿線場景上的3類事件
如果直接采用VGG16網絡結構,且所有網絡連接的權值以隨機初始化方式進行訓練,3分類的準確率可以達到99.8%,但模型參數所占內存和運算量都過大(如表2所示)。如果直接采用表1最后一列的精簡網絡結構,并以隨機初始化方式進行訓練,3分類的準確率較低,誤報率約為10.25%。由此可以看出,對于一個特定計算任務,神經網絡的寬度越大,可調節的網絡參數越多,網絡就越容易訓練,計算精度也越高,但同時網絡冗余度也較高,所占內存和計算量大,不適合實時性應用場景。
按照本文提出的剪裁原理對訓練好的VGG16進行遞歸裁剪,遞歸策略見表1。每次裁剪后的權值作為下一次網絡訓練的初始化參數,訓練過程中仍采用2階段的訓練方式。在裁剪中,分別以特征圖L1準則和卷積核L1準則兩種不同裁剪方法進行多次裁剪,并測試每次裁剪后的網絡準確率,實驗對比結果見圖8。
可以看出,依照本文提出的特征圖L1準則裁剪算法,隨著裁剪次數的增加,驗證準確率和評測準確率整體穩定,經過9次裁剪后的準確率幾乎不變。在相同壓縮和加速效果下,相比于卷積核L1范數準則,本文提出的裁剪算法準確度更高。

(a)驗證準確率

(b)評測準確率圖8 鐵路場景上兩種裁剪準則下每次裁剪后的準確率曲線

壓縮策略訓練誤差評測誤差隨機初始化9.4810.25卷積核L1準則1.261.50特征圖L1準則0.350.45
采用不同壓縮策略的準確率比較見表4。由表4可見,針對該鐵路場景數據庫,相比隨機初始化策略和卷積核L1值剪裁準則,采用本文提出的裁剪算法測試誤差最低為0.45%;在損失0.25%的精度下實現將模型壓縮約660倍并且提升計算速度4.4倍,能夠取得較好的壓縮和加速效果,易于存儲和實時計算,能夠有效解決實時監控處理多路視頻場景異物入侵的情況。
本文提出一種通用的遞歸裁剪卷積核的網絡模型裁剪算法,實現對卷積神經網絡模型的壓縮和計算加速。在壓縮過程中,使用GAP層代替內存占比最大的全連接層,通過采用特征圖L1范數值為準則對卷積層進行遞歸裁剪,在保證準確率穩定的條件下逐步降低模型計算量和存儲空間。在高速鐵路周界入侵檢測的應用中,本文提出的裁剪算法可以實現將VGG16網絡模型壓縮約660倍,計算加速4.4倍,而精度損失只有0.25%,完全能夠滿足對多路鐵路視頻場景進行實時有效的異物入侵檢測需求。