喬延婷,陳萬培,張 濤
(揚州大學 信息工程學院,江蘇 揚州 225009)
隨著現(xiàn)代社會的快速發(fā)展,車輛已成為主要的交通工具[1]。每年成千上萬的交通事故給世界經(jīng)濟帶來損失,威脅著人們的生命安全?;谟嬎銠C視覺的車輛檢測方法通過圖像處理技術確定目標車輛的位置,能夠有效地避免交通事故的發(fā)生,受到學術界和工業(yè)界的廣泛關注[2-3]。
傳統(tǒng)上,一些學者將Haar-like[4]或方向梯度直方圖(HOG)特征[5]應用于車輛檢測,但由于存在誤檢測和幀丟失等問題,這些算法無法滿足復雜的交通場景。隨著計算機視覺技術的不斷發(fā)展,基于卷積神經(jīng)網(wǎng)絡的目標檢測算法的性能與傳統(tǒng)算法相比有了很大的提高,如R-CNN[6]、Fast R-CNN[7]、Faster RCNN[8]、YOLO[9]、YOLOv2[10]和SSD[11]等。
雖然檢測結果得到了改善,但由于卷積神經(jīng)網(wǎng)絡的計算強度很高且有較大的內(nèi)存需求,面臨著在嵌入式平臺和低延遲需求場景下難以應用的問題[12]。因此,在幾乎不降低檢測準確率的前提下對深度卷積神經(jīng)網(wǎng)絡進行壓縮和加速成了研究重點。近年來,該領域取得了重大突破。Vanhoucke等[13]提出了8 bit參數(shù)量化的方法,該方法可以在準確率損失極小的同時實現(xiàn)大幅加速。Han等[14]將參數(shù)修剪、量化和編碼結合應用到模型壓縮中,實現(xiàn)了最大程度的網(wǎng)絡壓縮,但參數(shù)修剪形成了稀疏矩陣,需要專門的硬件支持。Hu等[15]通過計算每個濾波器的參數(shù)為零的百分比作為其重要性得分,修剪不重要的神經(jīng)元。Li[16]通過計算過濾器的絕對值和來評估過濾器的重要性,當絕對值過低時,則修剪掉該過濾器。
本文采用SSD算法檢測車輛,但SSD算法沒有全連接層,上述網(wǎng)絡壓縮方法無法在該網(wǎng)絡上取得較好的效果?;诖?,結合網(wǎng)絡剪枝和參數(shù)量化的方法,提出基于SSD的輕量級車輛檢測網(wǎng)絡,在不損失檢測準確率的同時,縮小網(wǎng)絡體積,提高檢測速度。
SSD是由Wei Liu等人提出的單個網(wǎng)絡目標檢測算法。本文采用SSD算法檢測車輛,將車輛檢測看作一個回歸問題,網(wǎng)絡結構如圖1所示。SSD網(wǎng)絡以VGG網(wǎng)絡為基礎網(wǎng)絡,將VGG網(wǎng)絡中全連接層轉換為卷積層,并添加了額外的卷積層,融合多個卷積層的輸出做預測。預測采用2個3×3的卷積核,一個用來分類,另一個用來回歸位置。
圖1 SSD的網(wǎng)絡結構Fig.1 Network architecture of SSD
該算法的主要檢測步驟如下:
① 輸入RGB(紅、綠、藍)圖像,調整圖像尺寸,將其看作一個300×300×3的三維矩陣。
② 按照網(wǎng)絡結構的順序依次提取圖像的特征,提取特征時,不同特征圖的每個特征點上都對應了一組默認邊界框,預測的時候計算默認邊界框的位置偏移和置信度。
③ 融合卷積Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2的預測結果做輸出,得到多個目標檢測框。通過非極大值抑制的方法剔除相同車輛的多余窗口,獲得最終的檢測結果。最終在圖像中框出車輛的目標。
POEMS綜合征的臨床特征及診療分析 …………………………………………… 葛義俊,戴映,高建國 107
首先,根據(jù)后一層的輸出結果指導裁剪上一層的過濾器,該方法考慮了當前層過濾器對后一層輸出的影響,能夠保證在不影響精度的情況下大大壓縮網(wǎng)絡;接著,在修剪結束以后,采用K-means[17]算法量化參數(shù),使多個參數(shù)共享一個有效權值。網(wǎng)絡剪枝與參數(shù)量化結合的方法在準確度幾乎沒有損失的情況下,達到了15.7%的壓縮率,并且檢測速度提高了近3倍。
網(wǎng)絡剪枝是最有效的去除網(wǎng)絡冗余參數(shù)的方法[18]。剪枝技術最先被用于解決決策樹過擬合的問題,后被用于去除深度神經(jīng)網(wǎng)絡不太重要的參數(shù)。通過剪枝的方法壓縮深度學習卷積神經(jīng)網(wǎng)絡的基本步驟如圖2所示。首先,需要預訓練一個基于SSD算法的車輛檢測網(wǎng)絡模型;接著,評估過濾器的重要性,裁剪掉不太重要的過濾器;然后,微調裁剪后的網(wǎng)絡模型使網(wǎng)絡模型具有較好的性能;最后循環(huán)修剪網(wǎng)絡和微調網(wǎng)絡參數(shù),直到取得網(wǎng)絡模型壓縮率和檢測正確率二者間的平衡。
圖2 網(wǎng)絡剪枝示意Fig.2 Flow diagram of network pruning
本文通過ThiNet[19]的方法衡量過濾器的重要性原理,利用第i+1層的輸出指導修剪第i層的過濾器,修剪后的網(wǎng)絡結果不變,但具有較少的過濾器和特征圖。網(wǎng)絡剪枝示意如圖3所示,輸入特征圖Xi和第i層的K×K大小的過濾器卷積產(chǎn)生第i+1層的特征圖,特征圖Xi+1又將作為下一個卷積層的輸入,當移除Fi中的一個過濾器Fi,j,與它對應的特征圖Xi+1,j(藍色部分)被裁剪掉,下一卷積層過濾器中對應的核(藍色部分)也被移除。所以,當可以使用第i+1層輸入的一個子集來近似計算第i+1層的輸出時,則該子集外的其他通道可以安全地從第i+1層的輸入中移除,那么第i層中對應的過濾器也可以移除。
圖3 網(wǎng)絡剪枝示意Fig.3 Schematic diagram of network pruning
(1)
式中,C表示特征圖的通道數(shù);K表示卷積核的大小。進一步定義:
(2)
則式(1)可簡化為:
(3)
(4)
(5)
式中,|S|表示子集S中的元素個數(shù);r表示事先定義的壓縮率(即保留多少個信道)。然后采用貪婪策略求解子集S,每次向S添加一個元素,并在當前迭代中求得最小目標值。
采用參數(shù)量化的方法進一步壓縮網(wǎng)絡模型,首先利用K-means算法求解有效權值,然后多個參數(shù)共享同一個有效權值來減少需要存儲的比特數(shù)。
參數(shù)量化和質心微調如圖4所示。假設某層有4個神經(jīng)元輸入和4個神經(jīng)元輸出,權值參數(shù)和梯度參數(shù)都是一個4×4的矩陣。通過K-Means聚類算法將權值參數(shù)分為4個簇,每一個簇內(nèi)的參數(shù)共享一個有效權值,然后用4×4簇索引矩陣表示權值參數(shù)矩陣。每一個梯度參數(shù)對應一個權值參數(shù),所以梯度參數(shù)也可按照權值參數(shù)聚類的結果分為4類。在更新過程中,所有的梯度參數(shù)按顏色分組并求和乘以學習率,從上次迭代的共享質心中減去來微調質心。
圖4 參數(shù)量化和質心微調Fig.4 Parameter quantification and centroid fine-tuning
假定設置k個簇,則最終只需要lbk位的簇索引矩陣和k個b位有效權值表示權值參數(shù)矩陣,b表示原來權值參數(shù)的位數(shù)。所以,對于具有n個權值參數(shù)且每個權值參數(shù)用b位表示的網(wǎng)絡,將其權值參數(shù)限制為只有k個共享權值的壓縮率為:
(6)
基于Caffe深度學習框架在NVIDIA GeForce GTX 1080平臺對SSD車輛檢測模型進行相關實驗。訓練參數(shù)的具體設置如下:訓練數(shù)量批尺寸(batch_size)為16,初始學習率(base_lr)為10-4,學習策略(lr_policy)為多步衰減(multistep),gamma為0.1,采用隨機梯度下降法(SGD)進行優(yōu)化,網(wǎng)絡訓練迭代次數(shù)為80 000次,權值衰減(weightdecay)設置為5e-4,沖量(momentum)設置為0.9。微調是恢復剪枝后網(wǎng)絡的泛化能力必不可少的步驟,通過在修剪一層之后微調一個epoch來節(jié)省時間。當所有層都修剪結束后,再微調整個網(wǎng)絡得到一個精確的模型。在KITTI數(shù)據(jù)集上進行了實驗,以驗證所提出算法的有效性。KITTI數(shù)據(jù)集[20]由德國卡爾斯魯厄理工學院和豐田美國技術研究院聯(lián)合創(chuàng)辦,是目前國際上最大的自動駕駛場景下的計算機視覺算法評測數(shù)據(jù)集,主要包含市區(qū)、鄉(xiāng)村和高速公路等場景下采集的真實圖像數(shù)據(jù)。每張圖像中最多達15輛車,還有各種程度的遮擋與截斷。KITTI數(shù)據(jù)集共分為8個類別:Car,Cyclist,Pedestrian,Van,Truck,Tram,Person(sitting),Misc。本文僅采用其中的車輛樣本數(shù)據(jù):Car,Van,Truck和Tram。本文數(shù)據(jù)集格式為VOC數(shù)據(jù)集格式,并將每個數(shù)據(jù)集按照8∶1∶1的比例劃分為訓練集、測試集和驗證集。
第1組實驗的目的是比較基于SSD的車輛檢測時間與本文提出基于SSD的輕量級的車輛檢測網(wǎng)絡的檢測時間。本組實驗統(tǒng)計了1 min檢測的圖像幀數(shù),求每幀圖像的平均耗時,單幀圖像檢測所需要的平均時間如表1所示。
表1 車輛檢測時間比較
從該組實驗可以得出,利用基于SSD的輕量級的車輛檢測網(wǎng)絡的檢測速度遠高于原算法的檢測速度,是原算法檢測速度的3倍左右。主要是去除了網(wǎng)絡中的冗余連接,減少了參數(shù)計算,從而節(jié)約了時間。本文所提算法的最大優(yōu)勢在于大大降低了算法的檢測時間,對于實時性要求較高的車輛檢測任務,其性能比基于SSD的車輛檢測算法好。
第2組實驗分析了不同壓縮方法對SSD網(wǎng)絡的檢測準確率(mAP)損失。分別對比了只網(wǎng)絡修剪、只參數(shù)量化和網(wǎng)絡修剪與參數(shù)量化結合的方法,實驗結果如圖5所示。從圖5可以看到,這3種壓縮方法在壓縮率較高的情況下,平均mAP基本沒有損失,而壓縮率低到一定程度時,網(wǎng)絡模型的mAP會驟然下降。參數(shù)量化和網(wǎng)絡修剪的方法在不影響檢測準確率的情況下,最多都只能壓縮30%左右,但二者結合的方法可以達到15%左右的壓縮率。每一種方法在保證模型檢測正確率[21]的情況下都對應一個最小的壓縮率,稱之為最優(yōu)壓縮率。對于剪枝后的車輛檢測網(wǎng)絡,本文能夠量化到每個卷積層8位(256個共享權值),而不損失任何精度。實驗發(fā)現(xiàn),在檢測準確率幾乎不損失的情況下,結合過濾器剪枝和參數(shù)量化結合的方法則可以達到15.7%的壓縮率。最終,網(wǎng)絡整體壓縮6倍多,可以移植到嵌入式平臺。
圖5 不同壓縮率下的mAP損失Fig.5 mAP loss at different compression rates
為了探究壓縮后的網(wǎng)絡對車輛檢測準確率的影響,在KITTI數(shù)據(jù)集進行了實驗,輸入圖像尺寸為300 pixel×300 pixel,實驗結果如圖6和表2所示,Ours表示輕量級的車輛檢測網(wǎng)絡,壓縮后的模型的mAP有輕微的下降,但仍然保持較高的檢測結果。相較于其他車型的AP,Car的AP受網(wǎng)絡壓縮影響大一點,其他類型車輛的AP只有輕微下降。所以,該輕量級的車輛檢測網(wǎng)絡可以在達到15.7%的同時,基本上保持原網(wǎng)絡的檢測效果。
圖6 基于SSD的輕量級車輛檢測網(wǎng)絡實驗結果Fig.6 Experimental results of a lightweight vehicle detection network based on SSD
表2 各網(wǎng)絡的性能對比Tab.2 Performance comparison of each network
通過研究基于SSD算法的車輛檢測網(wǎng)絡,發(fā)現(xiàn)網(wǎng)絡存在較大的冗余參數(shù),所以采用網(wǎng)絡剪枝和參數(shù)量化結合的網(wǎng)絡壓縮方法,提出基于SSD的輕量級車輛檢測網(wǎng)絡。該網(wǎng)絡能夠在車輛檢測準確度損失較低的情況下達到15.7%的壓縮率,且車輛檢測速度提高了近3倍,達到嵌入式平臺實時檢測的應用需求。但是,在實驗過程中,發(fā)現(xiàn)該輕量級的車輛檢測網(wǎng)絡對小目標車輛的檢測準確率較低。所以,如何在壓縮網(wǎng)絡和提高車輛檢測速度的情況下保證小目標車輛的檢測準確率有待進一步的研究。