劉 哲 朱東弼
(延邊大學(xué),吉林 延吉 133002)
隨著科學(xué)技術(shù)的日益更新,家家戶戶的生活水平直線上升,私家車數(shù)量在不斷增加,因此智能交通系統(tǒng)的概念被提出。車輛檢測(cè)是智能交通系統(tǒng)的關(guān)鍵部分,對(duì)減少交通擁堵,減少交通事故的發(fā)生以及輔助駕駛應(yīng)用都有著重要的意義。
車輛檢測(cè)方法一般可分為傳統(tǒng)的車輛檢測(cè)算法和基于深度學(xué)習(xí)的車輛檢測(cè)算法。傳統(tǒng)的目標(biāo)檢測(cè)算法大多需要人工設(shè)計(jì)特征,精度差、模型魯棒性不強(qiáng)。近年來(lái),計(jì)算機(jī)視覺(jué)領(lǐng)域主要采用的是深度學(xué)習(xí)理論,現(xiàn)有的目標(biāo)檢測(cè)算法比較經(jīng)典的主要分成兩類:一類是Two Stage算法,如R-CNN、Fast R-CNN、Faster R-CNN;另一類的目標(biāo)檢測(cè)算法是One Stage,如YOLO系列,SSD算法。本文將對(duì)三種有代表性的車輛檢測(cè)算法Faster R-CNN算法、YOLOv3算法、SSD算法的特點(diǎn)進(jìn)行分析。
2015年Faster R-CNN算法問(wèn)世,該算法檢測(cè)框的生成使用了區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN),新的RPN會(huì)更快更有效地生成ROI[1],讓目標(biāo)檢測(cè)又向前邁進(jìn)了一大步。Faster R-CNN由四部分組成,分別是特征提取網(wǎng)絡(luò)、RPN網(wǎng)絡(luò)、ROIpooling(池化)層、分類與回歸。特征提取網(wǎng)絡(luò)由卷積層、池化層、激活層構(gòu)成,首先將車輛圖片輸入,會(huì)經(jīng)過(guò)13個(gè)卷積層和激活層,使用的激活函數(shù)是Relu,同時(shí)會(huì)經(jīng)過(guò)4個(gè)池化層,每一個(gè)池化層會(huì)把圖片變成原來(lái)的1/2,最后圖片就變成了原圖的1/16,這樣就提取出了車輛圖片的feature maps(特征),常用的特征提取網(wǎng)絡(luò)有ResNet、VGG等。這些feature maps分為兩個(gè)走向:第一個(gè)是直接映射至ROIpooling層,另一個(gè)則是通過(guò)RPN來(lái)生成候選區(qū)域。特征圖輸入至RPN中,為了集中特征信息首先進(jìn)行3*3卷積。接下來(lái)同樣有兩個(gè)分支,一個(gè)分支我們手動(dòng)定義一個(gè)base_anchor則會(huì)生成9個(gè)Anchor box,即特征圖上的每個(gè)像素點(diǎn)會(huì)有9個(gè)Anchor box,使用softmax對(duì)其篩選出含有車輛目標(biāo)的[2]。去掉超過(guò)原圖邊界線上的Anchor box,設(shè)置合適的IOU閾值,對(duì)于范圍外的Anchor box也去掉,對(duì)剩下的檢測(cè)框進(jìn)行標(biāo)記。另一個(gè)分支,我們可以得到每個(gè)anchor的四個(gè)坐標(biāo)信息:中心位置(x,y)、寬w、高h(yuǎn),將計(jì)算得出的anchor box與ground truth的坐標(biāo)信息偏移量訓(xùn)練學(xué)習(xí),使用邊框回歸 (bounding box regression)方法對(duì)這四個(gè)坐標(biāo)信息變化量進(jìn)行回歸,可以從fg anchors得出proposal大致位置。接下來(lái)在Proposal層再次生成anchors,并對(duì)其使用bbox回歸,從而得到更加準(zhǔn)確的proposals。ROIpooling層的輸入是之前得到的特征圖和proposals,將region proposal映射至特征圖中,在將這個(gè)區(qū)域劃分為7*7份,從而會(huì)有許多個(gè)固定長(zhǎng)度的7*7feature map,這些固定長(zhǎng)度的feature map是全連接層的輸入。最終利用全連接層和softmax對(duì)車輛種類識(shí)別,并回歸出準(zhǔn)確的預(yù)測(cè)框得到位置。
Faster R-CNN檢測(cè)精度較高,魯棒性強(qiáng),代碼開(kāi)源,方便使用。但是網(wǎng)絡(luò)容易丟失原始圖像的空間結(jié)構(gòu)信息,而且兩階段網(wǎng)絡(luò)的速度較慢,無(wú)法達(dá)到實(shí)時(shí)性的要求。
YOLOv3算法就是將一張車輛圖片分成s*s個(gè)網(wǎng)格,如果物體的中心點(diǎn)落在網(wǎng)格上,那么該網(wǎng)格就負(fù)責(zé)預(yù)測(cè)這個(gè)物體的bounding box,每次預(yù)測(cè)時(shí)會(huì)有坐標(biāo)參數(shù)(x,y,w,h)和置信度[3],置信度可以用IOU計(jì)算,我們選擇IOU最大的作為車輛檢測(cè)輸出。YOLOv3使用Darknet53作為主干特征提取網(wǎng)絡(luò),Darknet53里面含有殘差網(wǎng)絡(luò)Residual,容易優(yōu)化,可以通過(guò)增加網(wǎng)絡(luò)深度來(lái)提高準(zhǔn)確率。首先把圖片轉(zhuǎn)換成416*416尺寸,為了防止圖片失真可以加入灰度條,經(jīng)過(guò)一個(gè)卷積層(卷積層都是正常的卷積、標(biāo)準(zhǔn)化、激活函數(shù)),然后通過(guò)五個(gè)殘差塊,殘差塊均由一個(gè)1*1卷積、一個(gè)3*3卷積、一個(gè)shortcut path組成,有效緩解了梯度消失問(wèn)題,這五個(gè)殘差塊重復(fù)次數(shù)分別是1,2,8,8,4,使用殘差網(wǎng)絡(luò)來(lái)提取特征。在這五次下采樣過(guò)程中,圖片的寬高不斷被壓縮,通道數(shù)擴(kuò)張,這樣就獲得了一堆的特征層。我們使用后三個(gè)特征層構(gòu)建FPN特征金字塔來(lái)加強(qiáng)特征提取,后三個(gè)特征層分別是52*52(預(yù)測(cè)小物體)、26*26(預(yù)測(cè)中物體)、13*13(預(yù)測(cè)大物體)。將這三個(gè)特征層結(jié)果分別進(jìn)行五次卷積,卷積出來(lái)的結(jié)果一個(gè)分支用來(lái)做分類回歸,另一個(gè)分支將結(jié)果卷積再進(jìn)行上采樣與前一個(gè)特征層堆疊,再重復(fù)的進(jìn)行五次卷積,接下來(lái)重復(fù)兩次上述步驟,我們就可以得到三個(gè)加強(qiáng)特征層。最后利用YoloHead對(duì)三個(gè)有效特征層進(jìn)行預(yù)測(cè),Yolo Head本質(zhì)上是一次3*3卷積用來(lái)特征融合加上一次1*1卷積調(diào)整通道數(shù)。
YOLOv3算法將圖片端到端目標(biāo)檢測(cè),喪失了部分精度,難以檢測(cè)小目標(biāo),但是速度快,漏檢率低,對(duì)全局信息有較好表現(xiàn)。
SSD(Single-Shot MultiBox Detector)在2016年算法問(wèn)世,不僅提升了識(shí)別速度,還提高了mAP值[4]。首先將車輛圖片統(tǒng)一成300*300輸入,SSD采用VGG16作為基礎(chǔ)網(wǎng)絡(luò),并對(duì)VGG16做出了一些改進(jìn):全連接層(Fully Connected Layer)的6、7層分別轉(zhuǎn)換成3*3卷積層和1*1卷積層,同時(shí)采用Atrous Algorithm方法指數(shù)級(jí)增加感受野;去除全連接層8和Dropout層;池化層5由2*2-s2變成3*3-s1;增加4個(gè)卷積層。顯而易見(jiàn),SSD算法網(wǎng)絡(luò)結(jié)構(gòu)中應(yīng)用多個(gè)卷積層,每一個(gè)卷積層都可以提取feature map,那么我們?cè)谶@個(gè)過(guò)程中獲得多個(gè)不同大小的特征圖,即SSD可以多尺度地檢測(cè)車輛。在特征圖中選擇原卷積層Conv4_3,和新增卷積層7、8_2、9_2、10_2、11_2作為有效特征圖,尺寸分 別 為:(38,38)、(19,19)、(10,10)、(5,5)、(3,3)、(1,1)。但是設(shè)置先驗(yàn)框(prior box)數(shù)目時(shí)這六個(gè)特征圖是不同的,先驗(yàn)框是實(shí)際選用的默認(rèn)框,prior box的設(shè)置包括尺度和長(zhǎng)寬比的選擇,式(1)是生成默認(rèn)框(default boxes)的公式。
其中,m:特征圖個(gè)數(shù);sk,prior box大小相對(duì)于圖片的比例;smin和smax,比例的最小值與最大值每個(gè)特征圖有6個(gè)先驗(yàn)框{1,2,3,1/2,1/3,1'},但Conv4_3、Conv10_2、Conv11_2層只用{1,2,1/2,1'}這4個(gè)prior box。SSD算法不需要全連接層,直接使用這些不同的特征圖來(lái)進(jìn)行檢測(cè),會(huì)同時(shí)有兩個(gè)3*3卷積,第一個(gè)用來(lái)檢測(cè)車輛類別,以及先驗(yàn)框是否含有物體,第二個(gè)用來(lái)回歸預(yù)測(cè)框的坐標(biāo)信息(中心位置、寬、高)。SSD算法一共可以預(yù)測(cè)8 732個(gè)邊界框,可以說(shuō)是非常密集,不過(guò)計(jì)算量也變得極其龐大,因此采用非極大值抑制(NMS)方法設(shè)置合適的閾值,來(lái)去除掉一些重疊的Default boxes,最后對(duì)剩下的prior box檢測(cè),即可通過(guò)他們得出車輛類別和位置信息。
SSD算法在特征圖上進(jìn)行了大量采樣,有效避免了漏檢,提高車輛檢測(cè)精度,分類回歸同時(shí)進(jìn)行,大大提高了速度,但是需要設(shè)計(jì)者手工依靠經(jīng)驗(yàn)來(lái)設(shè)置default boxes的初始值,增加了工作量,而且不能很好識(shí)別檢測(cè)出小目標(biāo),對(duì)大目標(biāo)檢測(cè)效果較好。
隨著深度學(xué)習(xí)算法的不斷發(fā)展,深度學(xué)習(xí)在智能交通系統(tǒng)領(lǐng)域有著越來(lái)越廣泛的應(yīng)用。通過(guò)上述分析可知基于深度學(xué)習(xí)的三種經(jīng)典的車輛檢測(cè)算法——Faster R-CNN算法、YOLOv3算法、SSD算法,各有千秋,在選擇網(wǎng)絡(luò)的時(shí)候可以根據(jù)不同的應(yīng)用場(chǎng)景和實(shí)際需求來(lái)實(shí)現(xiàn)。