單志勇,宮加輝
(東華大學(xué),上海201600)
隨著城市化進程的不斷加快,交通管理系統(tǒng)是當(dāng)前交通領(lǐng)域需要研究的熱點問題。車輛目標(biāo)檢測是交通管理系統(tǒng)的重要組成部分之一,廣泛應(yīng)用在智能監(jiān)控系統(tǒng)和智能停車系統(tǒng)等領(lǐng)域中。車輛目標(biāo)檢測應(yīng)用在智能交通監(jiān)控系統(tǒng)中可以加快救援速度和分析馬路擁堵情況,極大的緩解了交通壓力。車輛目標(biāo)檢測應(yīng)用在智能停車系統(tǒng)中,通過對停車場內(nèi)的停車情況進行分析,可以緩解停車難的問題。可見,車輛目標(biāo)檢測在交通管理系統(tǒng)中的應(yīng)用極大地提高了交通管理的效率。所以,優(yōu)化車輛目標(biāo)檢測問題對增強交通管理系統(tǒng)具有重要意義和應(yīng)用價值。
傳統(tǒng)的目標(biāo)檢測算法流程圖如圖1所示。首先輸入需要檢測的圖片,采用滑動窗口的方式進行候選框的選取,其次,采用基于人工設(shè)計特征提取[1]的算法,如HOG(Histogram of Oriented Gradient)[2]對候選框進行特征提取;然后使用分類器,如SVM[3]等進行判定,在經(jīng)過分類器判定后獲得的候選框會有一部分重疊,因此,需要在經(jīng)過NMS[4]將重疊的部分篩選合并找到目標(biāo)物體的最佳位置,得到最終的檢測結(jié)果。

圖1 傳統(tǒng)目標(biāo)檢測算法流程圖
傳統(tǒng)目標(biāo)檢測的不足主要體現(xiàn)在候選框和特征提取部分。選取候選框采用的是滑動窗口的方式,若滑動窗口的大小和步長的變化不合理,則會產(chǎn)生大量冗余的候選框,降低了目標(biāo)檢測的速度;特征提取的方法是基于人工設(shè)計的,特征提取過程中極易受到個人主觀性的影響,降低了目標(biāo)檢測的準(zhǔn)確率。
2014年,Ross Girshick等人提出了R-CNN[5]算法,這一算法明顯提高了目標(biāo)檢測的速度。R-CNN算法在傳統(tǒng)算法模型的基礎(chǔ)上進行兩個方面的調(diào)整:一是采用選擇性搜索(Selective Search)[6]代替滑動窗口的方式進行候選框的選取,大約選取1000~2000個候選框,減少了計算量;其二是采用CNN代替人工設(shè)計特征提取特征圖,有效避免了人為主觀性的影響。
2015年Ross Girshick提出了Fast R-CNN[7],彌補了R-CNN算法中輸入圖像需固定尺寸的不足。Fast R-CNN算法的輸入圖像的尺寸是任意的,并且是直接對整張圖像卷積,減少了重復(fù)計算;采用ROI Pooling層固定特征的尺寸,以便讓特征圖以合適的尺寸輸入到全連接層;采用Softmax層輸出目標(biāo)的類別。Fast R-CNN算法只需單個模型即可完成目標(biāo)檢測,極大地提高了檢測效率。
2016年Ross Girshick在R-CNN和Fast R-CNN的基礎(chǔ)上提出了Faster R-CNN[8]。Faster R-CNN算法采用RPN(Region Proposal Network)代替選擇性搜索法提取候選框,并把提取候選框,選取特征圖和判定目標(biāo)類別和位置放置在同一個網(wǎng)絡(luò),解決了模型結(jié)合慢的問題,檢測效率和準(zhǔn)確率都滿足了目標(biāo)檢測的要求,極大地提高了目標(biāo)檢測的綜合性能。
本文主要內(nèi)容就是研究改進的Faster R-CNN算法在實際車輛目標(biāo)檢測的場景中應(yīng)用,主干網(wǎng)絡(luò)選取了VGG16[9]預(yù)訓(xùn)練模型,訓(xùn)練和測試的樣本集來自UA-DETRAC數(shù)據(jù)集,使用訓(xùn)練集訓(xùn)練目標(biāo)檢測模型,使用測試的樣本集對得到的模型進行測試。實驗結(jié)果表明使用改進的Faster R-CNN算法進行車輛目標(biāo)檢測具有較高的泛化能力,同時也提高了車輛目標(biāo)檢測的準(zhǔn)確度和效率。
Faster R-CNN網(wǎng)絡(luò)主要由以下四個內(nèi)容組成:卷積層、RPN層、RoI Pooling層和坐標(biāo)回歸層。其網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示。卷積層采用VGG16預(yù)訓(xùn)練模型來提取特征,其網(wǎng)絡(luò)結(jié)構(gòu)由13個Conv層、13個ReLU層和4個Pooling層組成。在整個VGG16模型中,每經(jīng)過一次Pooling層的輸出都是輸入的1/2。生成的feature map被共享于RPN層和RoI Pooling層;PRN層利用Softmax和bounding box判斷anchors所屬類別和修正anchors的邊框,以便獲得更準(zhǔn)確的區(qū)域建議框;ROI Pooling層的輸入來自卷積層生成的feature map和RPN層的區(qū)域建議框,該層的作用就是將輸入固定到統(tǒng)一大小并輸出至坐標(biāo)回歸層的全連接層;坐標(biāo)回歸層則是用來判斷目標(biāo)的類別和坐標(biāo)位置。

圖2 Faster R-CNN的網(wǎng)絡(luò)結(jié)構(gòu)圖
Faster R-CNN模型進行訓(xùn)練時采用的訓(xùn)練圖片的尺寸是恒定的,這在一定程度上降低了目標(biāo)檢測的效率。本文提出了多尺度訓(xùn)練,在960×540、900×500、800×480三種不同尺寸的訓(xùn)練圖片中隨機選取進行訓(xùn)練,能有效提高車輛目標(biāo)檢測的魯棒性。
Anchor是RPN網(wǎng)絡(luò)中的一個重要概念,它與滑窗法設(shè)置的窗口大小類似,都是預(yù)設(shè)圖像的參照框。原始Faster R-CNN網(wǎng)絡(luò)中Anchor是在RPN網(wǎng)絡(luò)的3×3卷積層生成的,每個錨點對應(yīng)三種尺度縮放比和三種寬高比分別為[128,256,512]、[1:2,1:1,2:1]的9種Anchor。改進后的RPN增加了1:3、3:1兩種候選區(qū)域的比例。改進前后的對比圖如圖3所示。

圖3 改進前后對比圖
RPN是Faster R-CNN網(wǎng)絡(luò)的核心部分,是一個完整的卷積神經(jīng)網(wǎng)絡(luò)。RPN作用在特征提取網(wǎng)絡(luò)輸出的特征圖像上,首先是經(jīng)過一個卷積層選取錨點,生成anchor;然后分成兩路,一路輸入分類層利用Softmax判斷anchor的類別,在進行Softmax的前后都對輸出做了Reshape,以便Softmax進行二分類和減少計算的復(fù)雜度;一路輸入邊框回歸層用來判斷anchors的邊框位置,計算anchor的位置與真實框位置的偏移量并進行調(diào)整獲取位置更準(zhǔn)確的anchor;分類層和邊框回歸層的輸出共同輸入Proposal,Proposal根據(jù)Img_info提供的信息和NMS算法篩選大約2000個更準(zhǔn)確的anchor。
RoI Pooling使得原始圖片的大小可以是任意的,減少了原始圖片在縮放成固定大小時帶來的信息損失;RoI Pooling可以將不同尺寸的圖片生成的特征圖轉(zhuǎn)換為固定尺寸的特征圖,幫助全連接層以及分類層更好地吸收。
RoI利用Max Pooling將寬和高為(w×h)的RoI窗口用(W×H)的子窗口進行分割,得到約等于個子窗口。利用Max Pooling計算每個子窗口的最大像素點,形成一個W×H的Feature map。
Faster R-CNN中的損失分為回歸損失和分類損失兩大類,分類損失是Softmax,回歸損失是Smooth L1造成的損失。其總的損失函數(shù)表達式如下:

RPN和ROI的分類損失表達式相同,均是交叉熵損失。但RPN損失是二分類交叉熵損失,ROI損失是多分類交叉熵損失。其表達式如公式(2)所示。

其中,Ncls為總的anchor的數(shù)量;在RPN分類損失函數(shù)中,pi為第i個anchor的預(yù)測分類概率;p*i為標(biāo)簽,當(dāng)anchor為positive時,p*i=1,當(dāng)anchor為negative時,是二分類交叉熵損失函數(shù),其表達式如公式(3)所示。

RPN和ROI的回歸損失函數(shù)均是由Smooth L1 Loss計算的,Smooth L1 Loss解決了在預(yù)測值和真實值很接近的時候發(fā)生梯度爆炸以及函數(shù)在0點不可導(dǎo)影響收斂的問題。Smooth L1 Loss的表達式如公式(4)所示,函數(shù)圖像如圖4所示。回歸損失函數(shù)的表達式如公式(5)所示。是第i個anchor的真實框的參數(shù)化坐標(biāo)。


圖4 Smooth L1函數(shù)圖像
隨著車輛目標(biāo)檢測受到了國內(nèi)外學(xué)者的深入研究,如今可供選擇的車輛檢測數(shù)據(jù)集也很多,主要包括KITTI、N-CARS、CompCars和UA-DETRAC等。KITTI數(shù)據(jù)集采主要是行駛在卡爾斯魯厄的鄉(xiāng)村公路和高速公路上的車輛,數(shù)據(jù)采集場景在國外,而本實驗研究的車輛目標(biāo)檢測的應(yīng)用場景主要是在國內(nèi)的街道上,與本實驗的實際場景存在偏差。N-CARS和CompCars數(shù)據(jù)集主要應(yīng)用在汽車分類,缺少本實驗中需要的在道路擁堵、光照太強等不同條件下的稀有數(shù)據(jù)集。UA-DETRAC數(shù)據(jù)集既是在國內(nèi)24座城市拍攝的,也具有道路擁堵、光照強度不同的稀有數(shù)據(jù)集,與本實驗所需實際場景基本相符。
因此,本實驗所用數(shù)據(jù)集均截取至UA-DETRAC數(shù)據(jù)集。其中訓(xùn)練集有10572張,測試集有6705張圖片。部分圖像如圖5所示。本實驗所選取的10572張訓(xùn)練集和6705張測試集均有相應(yīng)的標(biāo)注文件。

圖5 UA-DETRAC數(shù)據(jù)集
本實驗中訓(xùn)練所用的硬件配置如下:采用NVIDIA GeForce GTX 1080 TI GPU加速,搭建運行環(huán)境PyTorch 1.6.0、CUDA 10.1以及cuDNN 7,編程語言選擇了Python,用Python 3.6.9運行程序。由于所用程序數(shù)據(jù)集標(biāo)注格式采用的是VOC2007數(shù)據(jù)集所用標(biāo)注格式,因此,在訓(xùn)練之前本實驗先將所用數(shù)據(jù)集標(biāo)注文件的格式改為了VOC2007數(shù)據(jù)集標(biāo)注文件的格式。訓(xùn)練過程中采用VGG16預(yù)訓(xùn)練模型,預(yù)訓(xùn)練模型的參數(shù)權(quán)重是VGG16在ImageNet[10]下訓(xùn)練好的,初始學(xué)習(xí)率設(shè)置為0.001,當(dāng)?shù)螖?shù)達到9之后,就將學(xué)習(xí)率設(shè)置為原來的0.1,即0.0001;本實驗在GPU加速下訓(xùn)練迭代14次,得到車輛目標(biāo)檢測的模型。
本實驗的檢測結(jié)果均是在Visdom下的可視化窗口呈現(xiàn)的,圖6是原始圖片的標(biāo)簽圖、圖7是原始圖片的預(yù)測圖、圖8是算法改進后的5種loss、圖9是Faster R-CNN算法改進前后的評估指標(biāo)mAP的對比圖。由圖7可以看出車輛檢測的概率均在0.9以上,但存在漏檢的情況。該情況可能是受到天氣條件、遮擋以及光照變化等因素的影響導(dǎo)致的,也可能是數(shù)據(jù)集在進行預(yù)處理時導(dǎo)致的原始圖片的信息損失以至于無法識別出來車輛,還有可能是因為原始圖片是在監(jiān)控視頻中截取出來的虛化嚴重?zé)o法清晰識別出車輛。由圖8可知,roi_loc_loss的損失最大,rpn_cls_loss的損失最小,總損失函數(shù)最終控制在0.176左右,圖8表明了適當(dāng)?shù)脑黾訕颖緮?shù)據(jù)集有利于降低車輛目標(biāo)檢測的損失和提高車輛目標(biāo)檢測的準(zhǔn)確率。由圖9可知,基于改進后的Faster R-CNN算法的車輛目標(biāo)檢測的map最終穩(wěn)定在90.56%,而基于Faster R-CNN算法的車輛目標(biāo)檢測的map最終穩(wěn)定在90.50%,mAP提高了0.06%。

圖6 標(biāo)簽圖

圖7 檢測效果圖

圖8 5種損失函數(shù)

圖9 mAP對比圖
本文利用了公開UA-DETRAC數(shù)據(jù)集,基于改進的Faster R-CNN算法完成了對實際場景中的車輛目標(biāo)檢測,有效避免了傳統(tǒng)目標(biāo)檢測中出現(xiàn)的過于依賴人工特征提取的問題,有效地提高了車輛目標(biāo)檢測的準(zhǔn)確率和速度,為車輛目標(biāo)檢測在智能監(jiān)控和無人駕駛等領(lǐng)域的應(yīng)用奠定了基礎(chǔ)。雖然檢測的準(zhǔn)確率和速度已經(jīng)有了很大的提高,但仍然存在錯檢、漏檢以及無法做到實時檢測的情況。因此,未來車輛目標(biāo)檢測的難點就在于如何盡可能減小光照、天氣等外部因素的干擾,以及如何做到實時檢測。