曹富奎,白 天,許曉瓏
1(中國科學(xué)技術(shù)大學(xué) 軟件學(xué)院,合肥 230027)
2(福建省 廈門市公路局 信息處,廈門 361008)
中國經(jīng)濟高速發(fā)展帶來機動車數(shù)目的急劇增加,造成道路交通中堵車和交通事故現(xiàn)象呈上漲形勢,改善交通治理策略逐漸提上日程.隨著科技的進步,誕生了智能交通理念,即通過分析道路交通信息得出科學(xué)的治理策略,車輛檢測作為智能交通工作的基礎(chǔ)成為了研究的熱點.最早有幀差法[1]和光流法[2]進行車輛檢測,這兩種方法原理簡潔,運算快速,但是在應(yīng)對復(fù)雜的道路狀況時會出現(xiàn)檢測偏差.后來出現(xiàn)了基于統(tǒng)計的模型方法,運用最多的是基于多態(tài)高斯分布的背景模型法[3],該方法能夠很好的應(yīng)對各種變化,能在復(fù)雜的道路場景里提取出運動車輛的圖片.隨著現(xiàn)代深度學(xué)習(xí)理論的產(chǎn)生和成熟,圍繞著目標(biāo)檢測問題誕生了很多檢測算法,主要有:RCNN 算法[4]、Mask-RCNN算法[5]、Fast-RCNN 算法[6]、SPP-Net 算法[7]、Faster-RCNN 算法[8]、R-FCN 算法[9],Singh[10]改進了R-FCN算法,實現(xiàn)了多類別的檢測,Hu 等[11]創(chuàng)建的的關(guān)系網(wǎng)絡(luò)刷新了檢測的精確度,Cai 等[12]創(chuàng)建了級聯(lián)RCNN將其擴展到多段.深度學(xué)習(xí)技術(shù)在目標(biāo)檢測中獲得了不俗的成績,但是卻太依賴于高性能硬件,訓(xùn)練模型也需要花費大量時間,因此本文在車輛檢測階段不采用深度學(xué)習(xí)的方法,選擇高斯混合模型法來進行車輛檢測,傳統(tǒng)的高斯混合模型法由于初始化模型速度慢、計算量大在實時性上表現(xiàn)不佳,本文對高斯混合模型法做了改進,降低了模型計算量,提高了檢測實時性.
車輛分類屬于目標(biāo)識別問題.目標(biāo)識別問題解決方案主要有兩種,一種是采用手動設(shè)計圖像特征,如HOG特征[13],然后使用分類器做分類.另外一種是使用深度學(xué)習(xí)技術(shù)做分類,主要是運用卷積神經(jīng)網(wǎng)絡(luò)(CNN)做目標(biāo)識別.2012年AlexNet 網(wǎng)絡(luò)[14]模型在圖像識別的應(yīng)用中取得了巨大成功,使得CNN 成為了目標(biāo)識別的主流方法,因此本文采用深度學(xué)習(xí)技術(shù),使用GoogLeNet[15]分類網(wǎng)絡(luò)對車輛進行分類.
在實際的道路場景里有很多不可控的變量會導(dǎo)致場景背景發(fā)生改變,給背景模型的建立和維護增加了難度.目前主要有以下3 個方面引起背景發(fā)生變化:
(1)光照突然變化.例如突然轉(zhuǎn)換光源,場景背景像素發(fā)生劇烈變化,導(dǎo)致檢測結(jié)果出現(xiàn)差錯.
(2)物體陰影.運動物體由于光線投影產(chǎn)生陰影,陰影屬于背景但是卻始終伴隨著運動目標(biāo),導(dǎo)致背景和目標(biāo)的界限變得模糊,增加了檢測的難度.
(3)動態(tài)的背景.現(xiàn)實場景中的背景區(qū)域存在運動變化的現(xiàn)象,可能是周期性的運動,也可能是不規(guī)則的運動,比如樹葉的不規(guī)則晃動,信號燈的規(guī)律閃爍.
為解決上述3 方面帶來的背景變化問題,Stauffer等[16]首次利用高斯混合模型進行視頻監(jiān)控的前景檢測,取得了較好的效果.此后,高斯混合模型經(jīng)過不斷發(fā)展和完善,成為目標(biāo)檢測領(lǐng)域的經(jīng)典模型.
在真實的監(jiān)控環(huán)境下,道路兩側(cè)攝像頭拍攝到的視頻影像中會夾雜很多的噪聲,一般我們認(rèn)為從監(jiān)控設(shè)備引入的噪聲服從正態(tài)分布,對于輸入的每一視頻幀,按照式(1)進行預(yù)處理.
用k個高斯分布組合表示每個背景像素,假設(shè)t時刻的背景像素為xt,由k個高斯分布如式(2)表示:
其中,ui,t是第i個高斯分布在t時刻的均值向量.將像素值xt與組合分布中的k個高斯分布做比較,當(dāng)xt和ui,t滿足式(3)時,認(rèn)為xt屬于其中一個高斯分布.
δ通常取3.若xt屬于其中的一個高斯分布,則將該高斯分布的參數(shù)按式(4)更改,剩下k–1 個高斯分布的參數(shù)則按式(5)衰減,其中 α表示模型的學(xué)習(xí)率.與xt相符的高斯分布的ui,t和σi,t2按照式(6)和式(7)更新,其他k–1 個高斯分布則保持不變,ρ=α/wi,t表示參數(shù)的學(xué)習(xí)率.
p=wi,t/σi,t,我們將k個高斯分布按P值排序,選擇前B個分布作為背景模型,如式(8)所示:
式中,V通常取0.75.
建立好了背景模型,當(dāng)新的視頻幀輸入系統(tǒng),將像素值xt與背景模型中的B個高斯分布進行比較,如果xt屬于其中的一個分布則認(rèn)為其是背景,反之則認(rèn)為是運動目標(biāo).
高斯混合模型法初始化背景模型時最常用的方法是用視頻開始的幀圖像作為背景來初始化模型的參數(shù)值,當(dāng)視頻的開始部分只有背景時,該方法能很好的進行下去,但如果視頻一開始就出現(xiàn)了運動目標(biāo),該方法會把運動目標(biāo)設(shè)置為背景,故本文提出新的初始化方法,使用視頻前4,9,16,···,(K+1)2幀圖像,K是高斯混合模型中包含的高斯分布的個數(shù),將(K+1)2幀圖像的像素值作為第K個高斯分布的平均值,再初始化方差和相同的權(quán)值.具體步驟如下:
(1)將視頻輸入系統(tǒng),并提取前4,9,16,···,(K+1)2幀圖像,做預(yù)處理降低圖像中的噪聲,記作:f1,f2,f3,···,fk;
(2)將fi的像素值作為第i個高斯分布的均值,初始化一個方差,并賦權(quán)值為1/N;
(3)輸入下一幀圖像,用建好的背景模型檢測車輛.
試驗分析:圖1是用傳統(tǒng)高斯混合模型初始化的背景模型圖像,可以看出使用傳統(tǒng)方法得到的背景模型圖像模糊難辨,與真實的場景背景有著十分大的差別,基于這樣的背景模型檢測車輛,檢測結(jié)果往往會不準(zhǔn)確.圖2是改進方法的初始化的背景模型圖像,相比于圖1,這幅背景模型圖像顯的十分清晰,能夠正確的表現(xiàn)場景的背景,由于初始化的背景模型的圖像是由多個高斯分布的權(quán)重和均值之積組合得到的,造成了圖像中出現(xiàn)車輛重影的現(xiàn)象,不影響車輛的檢測.
圖1 傳統(tǒng)高斯混合模型背景圖像
圖2 改進的高斯混合模型背景圖像
通過實際觀察可以看出,在視頻幀中運動車輛只占了圖像的小部分區(qū)域,圖像的大部分區(qū)域都是沒有發(fā)生變化的背景區(qū)域,為這些背景區(qū)域的像素建立模型是不必要的,由此帶來的計算過程也是浪費計算資源,故本文提出新的建模方法,通過對視頻幀的初提取,先把包含汽車的區(qū)域提取出來,然后使用高斯混合模型法在提取到的圖像上進行建模,縮小了建模區(qū)域,減少了建立背景模型過程耗費的時間,提高了車輛檢測的實時性.
對視頻幀進行初提取得到包含車輛的區(qū)域,初提取的精度影響著后續(xù)檢測結(jié)果的精度,當(dāng)初提取出現(xiàn)漏檢時,后續(xù)的檢測也一定會漏檢,因此初提取要能正確提取出包含車輛的區(qū)域,同時初提取的速度要快,不能耗費過多時間,因此選擇幀差法做車輛的初提取.常用的幀差法有兩種,分別是兩幀差法和三幀差法,但兩幀差法會出現(xiàn)“重影”和“空洞”現(xiàn)象,在實際應(yīng)用中面對復(fù)雜場景無法正確檢測出目標(biāo),三幀差法可以消除“重影”,但是依然存在“空洞”現(xiàn)象和部分物體輪廓不連續(xù).
通過對本文采集的視頻的研究,發(fā)現(xiàn)在大部分情況下,車輛從在視頻里出現(xiàn)到占據(jù)視頻的中心,大多是經(jīng)過5 幀,因此本文在發(fā)現(xiàn)這種現(xiàn)象后,提出用相鄰5 幀圖像進行運動車輛的初提取.工作流程如下:
第1 步.假設(shè)當(dāng)前幀為ft,將ft與ft+2按像素點逐一相減,得到二值圖像B1.
第2 步.將ft+2與ft+4按像素點逐一相減,得到二值圖像B2.
第3 步.對B1 和B2 取并集,在經(jīng)過形態(tài)學(xué)處理和填充,得到車輛區(qū)域B3.
分別使用兩幀差法、三幀差法和本文提的五幀差法對拍攝的視頻進行前景提取,如圖3所示.
通過實驗結(jié)果可以直觀的看出,本文的方法相較于傳統(tǒng)的兩幀差法和三幀差法,在前景提取精度上有了很大的提升,并且檢測速度快,非常適合應(yīng)用于對前景的初提取.
使用五幀差法得到提取好的車輛區(qū)域圖像,在初提取的車輛圖像上運用高斯混合模型法獲得最終的車輛圖像.改進后的結(jié)合五幀差法的高斯混合模型的車輛檢測算法的工作流程如圖4.
圖3 差分法仿真圖
圖4 改進的高斯混合模型算法
改進后的基于高斯混合模型的檢測方法步驟如下:
(1)使用五幀差法對輸入的視頻進行前景區(qū)域初提取,得到前景的二值圖像,通過形態(tài)學(xué)操作得到前景區(qū)域.
(2)使用改進的背景模型初始化方法,對前景區(qū)域的像素建立背景模型.
(3)建立完背景模型,用當(dāng)前幀減去背景圖片得到目標(biāo)的二值圖像,并更新模型相關(guān)參數(shù).
(4)對得到目標(biāo)二值圖像進行形態(tài)學(xué)操作,得出最終的目標(biāo)區(qū)域.
(5)對下一幀重復(fù)上述步驟,直至算法完結(jié).
谷歌公司2014年提出來GoogLeNet 分類網(wǎng)絡(luò),并在當(dāng)年的圖像分類競賽中取得了第一名,刷新了圖像識別的最好成績.GoogLeNet 網(wǎng)絡(luò)運用了模塊化設(shè)計,提出了新的網(wǎng)絡(luò)單元結(jié)構(gòu)Inception,網(wǎng)絡(luò)整體是由多個網(wǎng)絡(luò)單元結(jié)構(gòu)按照一定次序組合而成,圖5是Inception模塊的設(shè)計圖.
圖5 Inception 模塊
不同的卷積神經(jīng)網(wǎng)絡(luò)會選擇不同大小的卷積核構(gòu)建卷積層,每一卷積層會使用同一大小卷積核來對特征圖進行卷積計算,Inception 模塊最大的創(chuàng)新是在一個卷積層中采用了多個卷積核,不同卷積核會提取不同的圖像特征,在模塊最后將這些特征有機融合形成下一層的特征圖,這樣融合多特征的設(shè)計延深了網(wǎng)絡(luò)寬度,提高了對圖像識別的精度,但計算復(fù)雜度也隨之增加,降低了識別速度.為了解決計算成本高的問題,在模塊的設(shè)計上做了創(chuàng)新,圖6是改進后的模塊.新模塊最大的特點是對1×1 卷積核的巧妙運用,在進行卷積計算和池化操作之前先用1×1 卷積核來降低特征圖維度,這樣在下一層的卷積計算中運算次數(shù)會降低一個量級,從而有效的降低了計算成本.經(jīng)過模塊有序組合而成的GoogLeNet 網(wǎng)絡(luò)層數(shù)達到22 層,相比于之前的網(wǎng)絡(luò)模型有大幅度的提升.
本文所提的車輛檢測和車型分類方法基于OpenCV和TensorFlow 實現(xiàn),試驗所用的視頻包含了不同天氣和光照的復(fù)雜場景,實驗環(huán)境的信息如表1.
根據(jù)交通視頻把車輛型號分成4 類分別為:car、bus、motor 和truck,系統(tǒng)要實現(xiàn)的就是檢測到交通視頻里的車輛然后識別出車輛是上述4 種類型中的哪一種,為了實現(xiàn)這一功能,我們設(shè)計的系統(tǒng)工作流程為:先通過系統(tǒng)的運動車輛檢測模塊將視頻里的運動車輛檢測出來,然后人工標(biāo)注好圖片的類別,訓(xùn)練目標(biāo)分類模塊,使用該模塊執(zhí)行分類任務(wù),系統(tǒng)架構(gòu)如圖7.
圖6 改進的Inception 模塊
表1 實驗環(huán)境信息
圖7 系統(tǒng)架構(gòu)圖
本文以廈門市各路段攝像頭拍攝的監(jiān)控視頻為系統(tǒng)實驗數(shù)據(jù),所有的視頻均為現(xiàn)實場景下的真實監(jiān)控視頻,通過車輛檢測模塊總共截取了50 000 張不同類型的車輛圖片.其中各種車型對應(yīng)的數(shù)量見表2.
表2 車輛檢測模塊檢測結(jié)果
將得到的全部圖片按照1:1 劃分為測試集和訓(xùn)練試集,訓(xùn)練集中car 10 000 張,bus 8000 張,motor 2000 張,truck 5000 張.由表2可知,由于motor 數(shù)量比其他車型的數(shù)量少了很多,如果直接用原始的數(shù)據(jù)集訓(xùn)練分類模型得到的模型分類準(zhǔn)確性會有很大的偏差,所以要進行數(shù)據(jù)集擴充,將2000 張motor 圖片使用圖像處理技術(shù)增加到10 000 張,對其他3 種車的圖片執(zhí)行相同的操作.擴充后的數(shù)據(jù)集如表3所示.4 類車型樣本圖片如圖8所示.
表3 運動目標(biāo)分類模塊數(shù)據(jù)集
圖8 4 種車型樣本
針對基于監(jiān)控視頻的車輛檢測和分類的問題,本文改進了高斯混合模型算法,并用GoogLeNet 網(wǎng)絡(luò)做車輛分類,在實驗中設(shè)計實現(xiàn)了算法.由于實驗效果需要對比,在車輛檢測階段,本文使用Faster R-CNN 和YOLO 對相同的視頻做了實驗[17],實驗結(jié)果對比如表4所示.
表4 車輛檢測結(jié)果對比
表4給出了檢測階段的數(shù)據(jù),結(jié)果表明相比于深度學(xué)習(xí)的方法,本文所提方法在檢測準(zhǔn)確率和檢測速度上都更加優(yōu)秀.
在車型分類階段,本文訓(xùn)練了GoogLeNet 模型進行分類,同時也訓(xùn)練了經(jīng)典的AlexNet 模型用作對比[18].在實驗中我們對原始數(shù)據(jù)集進行了擴充,但得到的訓(xùn)練集也只有40000 張圖片,數(shù)據(jù)集過小會導(dǎo)致模型過擬合現(xiàn)象,因此在實驗中采用了遷移學(xué)習(xí)[19]技術(shù),將經(jīng)典模型卷積層的參數(shù)直接遷移到試驗?zāi)P蜕献鳛槟P统跏蓟瘏?shù).使用ImageNet 數(shù)據(jù)集訓(xùn)練好的GoogLeNet模型和AlexNet 模型能夠很好的提取圖像的特征,因此在實驗中用訓(xùn)練好的模型的參數(shù)作為試驗?zāi)P偷某跏蓟瘏?shù),然后使用自采集的訓(xùn)練集finetune[16]試驗?zāi)P?圖9為4 種車型的分類結(jié)果,從置信度上可以看出分類的準(zhǔn)確性非常高.
圖9 車型分類結(jié)果
表5展示了GoogLeNet 模型和AlexNet 模型在分類準(zhǔn)確率上的對比,可以看出GoogLeNet 不僅在分類準(zhǔn)確率上比AlexNet 稍高一些,而且在運算時間上比AlexNet 降低了22%.試驗證明,GoogLeNet 分類網(wǎng)絡(luò)在基于監(jiān)控視頻的車型分類上具有很好的實用性.
表5 車型分類結(jié)果對比
本文針對公路交通監(jiān)控視頻中車輛檢測和車型分類的具體應(yīng)用場景,改進了高斯混合模型建立背景模型的方法,提升了系統(tǒng)的實時性,并和GoogLeNet 分類網(wǎng)絡(luò)結(jié)合起來.通過建立背景模型和背景相減法得到運動車輛,然后使用訓(xùn)練好的分類模型對車輛進行分類.在具體場景的實驗中,該算法取得了較快的檢測速度和分類準(zhǔn)確率,比現(xiàn)有方法更加適合公路監(jiān)控視頻這一應(yīng)用場景,具有很高的實用價值.