陳偉星,白 天,許曉瓏
(1.中國科學(xué)技術(shù)大學(xué) 軟件學(xué)院,安徽 合肥 230027;2.福建省廈門市公路局 信息處,福建 廈門 361008)
隨著社會經(jīng)濟(jì)的迅速發(fā)展,道路交通問題也越來越影響人們的生活,智能交通系統(tǒng)(ITS)的研究和設(shè)計受到廣大學(xué)者們的重視。而車輛檢測是智能交通系統(tǒng)中最重要且最基礎(chǔ)的一環(huán)。基于視頻的運動車輛檢測常用的方法是基于高斯混合背景[1-2]的背景減除法,然而此方法本身存在很多缺點[3]:(1)高斯混合模型需要對每一個像素點在時序上建立多個高斯模型,因此存在計算量大、不利于實時處理等問題;(2)對目標(biāo)速度敏感,當(dāng)車輛速度較慢時無法正確檢測出車輛。當(dāng)目標(biāo)從靜止到運動時,可能會將顯露出來的背景區(qū)域視為“運動目標(biāo)”,檢測得到原目標(biāo)的“影子”。為了解決高斯模型存在的不足,許多學(xué)者提出了諸多改進(jìn)措施[4-7]。
目前車輛識別的方法主要有兩類,一種是通過提取圖像的特征,如Harr-like[8]特征,然后使用傳統(tǒng)機(jī)器學(xué)習(xí)分類器如Adaboost[9]進(jìn)行分類;另外一種使用深度學(xué)習(xí)進(jìn)行端到端的學(xué)習(xí),如YOLO。2015年,REDMON J提出了YOLO[10]檢測算法,與Fast R-CNN[11]和Faster R-CNN[12]不同的是,YOLO采用了端到端的思路:利用神經(jīng)網(wǎng)絡(luò)完成目標(biāo)檢測和類別概率預(yù)測,將目標(biāo)檢測問題轉(zhuǎn)化為回歸問題,大大提高了檢測速度。雖然YOLO大大提高了檢測速度,但由于采用7×7網(wǎng)格回歸,目標(biāo)定位誤差較大,檢測精度有限,無法檢測到小目標(biāo)。隨后REDMON J等提出了YOLO9000[13]算法,在原有YOLO算法上做了一些改進(jìn),提高了檢測的準(zhǔn)確率。
以上方法曾在VOC、MS COCO等通用數(shù)據(jù)集上取得不錯的檢測效果。然而針對復(fù)雜情況下的運動車輛目標(biāo)檢測任務(wù),直接移植上述算法的思路是不可行的。這是因為受視頻監(jiān)控設(shè)備以及環(huán)境的影響,公路監(jiān)控視頻特別是夜間監(jiān)控視頻混雜了大量的噪音,導(dǎo)致目標(biāo)對象比VOC等通用數(shù)據(jù)集上的絕大部分對象要模糊很多。同時由于監(jiān)控攝像頭距離攝像頭通常有幾十米,目標(biāo)尺寸也要比VOC等通用數(shù)據(jù)集上的目標(biāo)小得多。另外,VOC等數(shù)據(jù)集主要強(qiáng)調(diào)目標(biāo)檢測的精度,并沒有對目標(biāo)檢測的速度有硬性要求。
運動車輛檢測任務(wù)的特點和要求在于:在最大化目標(biāo)檢測速度的同時,必須保持一定的檢測精度。目前已知的檢測算法都無法同時滿足這兩點要求?;诖?,本文提出了結(jié)合高斯混合背景模型和AlexNet分類網(wǎng)絡(luò)的運動車輛檢測算法,主要步驟有:(1)對輸入的監(jiān)控視頻進(jìn)行降噪處理;(2)通過高斯混合背景建模的方法建立背景模型,采用背景相減法得到運動車輛的目標(biāo)區(qū)域;(3)建立自采數(shù)據(jù)集,采用數(shù)據(jù)擴(kuò)充策略豐富數(shù)據(jù)集,利用AlexNet對得到的目標(biāo)區(qū)域進(jìn)行分類。本文方法在公路監(jiān)控視頻上取得了較好的檢測效果,運動車輛檢測的精度和速度均優(yōu)于目前主流的檢測算法。
2012年,HINTON G E和他的學(xué)生KRIZHEVSKY A在ImageNet競賽中使用AlexNet[14]進(jìn)行圖像分類,刷新了圖像分類領(lǐng)域的記錄,為計算機(jī)視覺的深度學(xué)習(xí)奠定了基礎(chǔ)。AlexNet具有8層網(wǎng)絡(luò)結(jié)構(gòu),采用了5層卷積層和3層全連接層,如圖1所示。與神經(jīng)網(wǎng)絡(luò)的經(jīng)典模型LeNet相比,AlexNet增加了非線性激活函數(shù)ReLU,并使用Dropout和Data Augmentation來防止過度擬合。此外,AlexNet在第一個卷積層和第二個卷積層之后連接響應(yīng)標(biāo)準(zhǔn)化層(RLN)。在每個RLN和最后一個卷積層之后連接最大的池化層。
圖1 AlexNet結(jié)構(gòu)
背景建模是在視頻的圖像序列中建立并維護(hù)背景圖像,一般認(rèn)為背景就是視頻中靜止不動的物體,在檢測運動目標(biāo)的過程中,從當(dāng)前幀圖像中減去背景圖像,將獲得的結(jié)果稱為前景,即運動目標(biāo)。在現(xiàn)實環(huán)境下,真實背景并不是一直保持不變的,如果背景模型不能及時更新,則會導(dǎo)致運動目標(biāo)檢測的漏檢或誤檢。通常來說,背景的變化分為以下3方面:
(1)背景擾動:背景局部變化,如樹葉隨風(fēng)輕微的晃動。
(2)由光照引起的變化:光照強(qiáng)度的緩慢或突然變化,如照明燈突然開啟或關(guān)閉引起的像素值劇變、太陽落山引起的像素值緩慢改變。
(3)由目標(biāo)引起的變化:車輛長時間停留在場景中被認(rèn)為背景的一部分,而后發(fā)生運動離開場景。
針對背景發(fā)生變化的這些問題,STAUFFER C[2]首次利用高斯混合模型(GMM)用于視頻監(jiān)控的前景檢測,該系統(tǒng)在戶外獨自運行了16多個月,具有較好的穩(wěn)定性和自主學(xué)習(xí)能力。之后KAEWTRAKULPONG P等人[4]將高斯混合模型分成了訓(xùn)練和權(quán)值更新兩個過程,取得了更好的檢測效果。ZIVKOVIC Z等[5]對高斯混合模型理論做了全面的論述,擴(kuò)展了GMM理論的使用領(lǐng)域,并且在該理論中加入了參數(shù)估計的先驗知識,取得了更好的穩(wěn)定性。
本文車輛檢測框架的應(yīng)用場景是:針對公路上攝像頭拍攝的長時間連續(xù)視頻,分別輸出運動車輛的定位框以及車輛類型識別的結(jié)果,為后續(xù)車輛流量檢測提供事實依據(jù)。受場景需求的影響,本框架需要分別完成運動車輛檢測和類型識別兩部分工作。與此同時,項目對目標(biāo)檢測的準(zhǔn)確率和實時性要求較高。
本文算法大致可分為目標(biāo)車輛檢測、車輛類型識別兩個階段。算法流程如圖2所示。
圖2 本文算法流程
2.2.1車輛檢測
檢測部分,本文采用基于高斯混合模型的背景相減法。目前基于卷積神經(jīng)網(wǎng)絡(luò)的檢測算法由于需要計算網(wǎng)絡(luò)中大量的參數(shù),對計算機(jī)的性能要求比較高。而高斯混合模型通過對每一個像素點進(jìn)行背景建模,然后將當(dāng)前幀圖像與背景模型相減,與卷積神經(jīng)網(wǎng)絡(luò)相比,沒有復(fù)雜的計算,因此具有較快的檢測速度。車輛檢測算法流程如圖3所示。
圖3 高斯混合模型算法流程
由于天氣、光照等外界因素的影響,通過公路監(jiān)控設(shè)備采集得到的視頻中混雜著噪聲點。本文假設(shè)從監(jiān)控設(shè)備所引入的噪聲服從正態(tài)分布,對于輸入的每一幀圖片,按式(1)進(jìn)行去噪處理。
(1)
其中,(x,y)是相對原點的坐標(biāo)。
通過統(tǒng)計像素點在時域上的像素值,對每一個像素值進(jìn)行高斯混合建模。
(2)
|Xi,t-μi,t,k|<δ×∑i,t,k
(3)
wi,t,k=(1-α)wi,t-1,k+αMi,t,k
(4)
μi,t=(1-ρ)μi,t-1+ρXi,t
(5)
σ2i,t=(1-ρ)σ2i,t-1+ρ(Xi,t-μi,t-1)T(Xi,t-μi,t-1)
(6)
如果Xi,t與高斯混合模型中所有分布都不匹配,則高斯混合模型中具有最小權(quán)重的分布將被替換為新分布。將新模型的平均值初始化為Xi,t,并且初始化較小的權(quán)重wi,t,k和較大的標(biāo)準(zhǔn)差σ0,按式(4)進(jìn)行更新權(quán)重,其中Mi,t,k=0。
計算wi,t,k/σi,t,k的值,按比值大小把每個像素點的k個高斯分布模型遞減排序。排在前面的高斯分布是背景的概率就越高。根據(jù)式(7),T一般取值為0.85,可認(rèn)為上述序列中前b個高斯分布作為背景模型,其余的分布視為前景模型。
(7)
將像素值Xi,t與它的前b個高斯分布進(jìn)行匹配,如果能匹配上則認(rèn)為該像點為背景,否則則認(rèn)為是前景,即運動目標(biāo)。
2.2.2分類網(wǎng)絡(luò)
在目標(biāo)分類任務(wù)中,有許多典型的分類網(wǎng)絡(luò):AlexNet、GoogleNet[15]、VGGNet[16]等。因為在識別過程中,輸入特征提取得越精細(xì),輸入圖像被識別的可能就越大,且識別精確也越高。因此在經(jīng)典Alex網(wǎng)絡(luò)的基礎(chǔ)之上,在其第5層后再添加2層卷積層,提高了網(wǎng)絡(luò)的識別精度。修改后的AlexNet如圖4所示。
圖4 修改后的AlexNet
為了盡可能避免過擬合,本文采取了兩個方案:數(shù)據(jù)擴(kuò)充策略和Dropout[17]。每個輸入圖像由固定倍數(shù)的數(shù)據(jù)擴(kuò)充,這可以有效地改善由收集的數(shù)據(jù)集太小引起的問題。
將Dropout添加到分類網(wǎng)絡(luò)的訓(xùn)練中,這樣每個隱藏的神經(jīng)元層都不會以概率p工作。在一次迭代中,不起作用的節(jié)點可以不被視為網(wǎng)絡(luò)的一部分,但可能在下一次迭代中再次起作用。如圖5所示,凡是不工作的神經(jīng)元都不參與向前運算和BP運算。與此同時,每次輸入的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)都不相同,從而增加了魯棒性,減少了過擬合。
圖5 Dropout
本文測試所采用的數(shù)據(jù)集來自城市交通監(jiān)控視頻,總共截取30 000張不同類型的車輛照片,分成4大類:car,truck,bus,motor。數(shù)據(jù)集中訓(xùn)練集和驗證集、測試集的比例為7:1.5:1.5。圖6展示了該框架檢測和分類模塊的輸出結(jié)果。
圖6 目標(biāo)檢測和識別結(jié)果
本文所提到的算法均使用C++實現(xiàn),其中本文檢測算法是基于OpenCV+Caffe實現(xiàn)的,F(xiàn)aster R-CNN是基于Caffe實現(xiàn)的,而YOLO的實現(xiàn)是基于darknet框架。使用準(zhǔn)確度和召回率來評估結(jié)果:
(8)
(9)
其中,TP、FP以及FN分別表示真正例、假正例和假反例。
表1給出了車輛檢測階段的實驗結(jié)果,表明本方法在檢測精準(zhǔn)率、檢測速度上都優(yōu)于其他兩種檢測方法。由于本文算法在運動車輛檢測任務(wù)中沒有大規(guī)模神經(jīng)網(wǎng)絡(luò)計算,而是采用混合高斯模型背景建模的方法對每一個像素點進(jìn)行建模,避免了復(fù)雜的計算,因此檢測速度比其他兩種方法更快。
表1 車輛檢測實驗結(jié)果
表2給出了車輛分類的結(jié)果,可以看出,car的識別效果最好,識別準(zhǔn)確率達(dá)到了99.1%,但是motor識別準(zhǔn)確率只有94.2%。這是因為在數(shù)據(jù)集中,car的圖片最多,而motor的圖片最少。通過增加訓(xùn)練集,可以有效提高分類的準(zhǔn)確性。
本文根據(jù)公路監(jiān)控視頻中車輛檢測和分類的具體場景,提出了結(jié)合高斯混合背景模型和AlexNet分類網(wǎng)絡(luò)的運動車輛檢測算法,該方法首先使用高斯混合背景模型檢測出視頻中的運動車輛,然后使用AlexNet對檢測出的運動車輛進(jìn)行識別。通過在自采數(shù)據(jù)集上開展實驗,算法取得了較高的檢測精準(zhǔn)率和檢測速度,優(yōu)于目前主流的檢測算法,基本滿足了視頻實時檢測的需求。
表2 車輛分類結(jié)果