楊艷紅,鐘寶江2,徐云龍
(1.蘇州大學(xué)應(yīng)用技術(shù)學(xué)院 工學(xué)院,江蘇 蘇州 215325;2.蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)
隨著當(dāng)今城市人口和車輛越來(lái)越多,交通堵塞、交通安全等問題也日益嚴(yán)重,給城市發(fā)展帶來(lái)了很大影響。為了解決交通問題,我國(guó)各城市智慧交通發(fā)展如火如荼,人工智能、機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺、深度學(xué)習(xí)等均在智慧交通發(fā)展中起到了重要作用。
在智能交通管理中,通過準(zhǔn)確檢測(cè)交通工具可以實(shí)現(xiàn)目標(biāo)車輛監(jiān)控、車流量統(tǒng)計(jì)、違法車輛追蹤等,因此如何正確識(shí)別并檢測(cè)交通工具具有非常重要的意義。目標(biāo)檢測(cè)的任務(wù)是找出圖像中感興趣的目標(biāo),并確定它們的位置與類別。近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征為目標(biāo)檢測(cè)等帶來(lái)很大的提升,并且很多學(xué)者將其應(yīng)用在各種領(lǐng)域[1-6]。目前很多學(xué)者提出了基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法,主要分為基于候選框的目標(biāo)檢測(cè)算法和基于端對(duì)端學(xué)習(xí)的目標(biāo)檢測(cè)兩類。前者檢測(cè)精度好,但是檢測(cè)效率較慢,如R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9]等算法。后者將圖像數(shù)據(jù)輸入網(wǎng)絡(luò),不再單獨(dú)提取候選框,直接對(duì)全圖進(jìn)行卷積和池化處理后提取有效特征層后回歸出目標(biāo)類別及目標(biāo)區(qū)域,真正實(shí)現(xiàn)了端到端的訓(xùn)練。此類算法檢測(cè)精度低于基于候選框的目標(biāo)檢測(cè)算法,但其檢測(cè)效率高,如SSD(Single Shot MultiBox Detector)[10]、YOLO(You Only Look Once)[11]等算法。
SSD目標(biāo)檢測(cè)算法在當(dāng)前主流算法中檢測(cè)效率和準(zhǔn)確率均較為優(yōu)異,因此很多學(xué)者選擇SSD目標(biāo)檢測(cè)算法。本文在其他學(xué)者研究的基礎(chǔ)上參考金字塔網(wǎng)絡(luò)對(duì)SSD算法的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),可以更準(zhǔn)確地實(shí)現(xiàn)交通工具目標(biāo)檢測(cè)。主要改進(jìn)有:一是對(duì)SSD網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行調(diào)整,將有效特征層block4、block7、block8、block9、block10、block11相鄰層進(jìn)行融合,同時(shí)減少卷積深度,提升了目標(biāo)檢測(cè)的準(zhǔn)確率及計(jì)算效率;二是對(duì)有效特征層增加批處理,再進(jìn)行目標(biāo)分類預(yù)測(cè),使模型能夠更好地學(xué)習(xí)適應(yīng)不同的數(shù)據(jù)分布,提高泛化能力;三是先驗(yàn)框由原來(lái)的8 732個(gè)改進(jìn)為8 728個(gè),略微提高了計(jì)算效率。
SSD算法在圖片的不同位置進(jìn)行密集抽樣,再利用卷積神經(jīng)網(wǎng)絡(luò)提取特征后進(jìn)行目標(biāo)檢測(cè)。由于目標(biāo)檢測(cè)過程只需要一步,因此該算法速度快,并且在準(zhǔn)確率上比YOLO等算法高很多。SSD目標(biāo)檢測(cè)算法成為了近幾年比較流行的目標(biāo)檢測(cè)算法之一,它的基礎(chǔ)模型是VGG16,在VGG16的基礎(chǔ)上又增加了新的卷積層來(lái)獲取更多的特征圖用來(lái)檢測(cè)。SSD目標(biāo)檢測(cè)算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 SSD目標(biāo)檢測(cè)算法網(wǎng)絡(luò)結(jié)構(gòu)圖
SSD網(wǎng)絡(luò)結(jié)構(gòu)圖中,Conv1_1~Pool5為VGG16模型,Conv6~Conv12_2為SSD新增加的卷積層。SSD算法選取VGG16卷積層中的Conv4_3以及SSD新增卷積層Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2作為檢測(cè)所用的特征圖,它們的大小分別為(38,38)、(19,19)、(10,10)、(5,5)、(3,3)、(1,1),其中Conv7、Conv10_2、Conv11_2對(duì)應(yīng)4個(gè)先驗(yàn)框,其余特征圖對(duì)應(yīng)6個(gè)先驗(yàn)框,因此共需要預(yù)測(cè)8 732個(gè)先驗(yàn)框,其工程量相當(dāng)龐大。
SSD目標(biāo)檢測(cè)算法有以下優(yōu)點(diǎn):一是不再使用全連接層,計(jì)算效率提高;二是對(duì)輸入圖片的大小沒有要求,圖片輸入后再統(tǒng)一修改尺寸,更加靈活;三是不再先提取候選框后對(duì)候選框預(yù)測(cè),直接利用卷積一步計(jì)算出候選框和預(yù)測(cè)分類,簡(jiǎn)化流程。但是,SSD算法也存在一些缺點(diǎn),主要是對(duì)小目標(biāo)檢測(cè)不夠準(zhǔn)確,并且在block7預(yù)測(cè)時(shí)深度較大。
特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)[12]在小目標(biāo)檢測(cè)上優(yōu)于SSD目標(biāo)檢測(cè)算法,它主要解決物體檢測(cè)中的圖片不同尺度的問題。FPN分為自底向上卷積和自頂向下連接兩部分,將高層特征圖通過上采樣變?yōu)楹偷鸵粚拥奶卣鲌D一樣大小,然后和低一層的特征圖連接,再進(jìn)行預(yù)測(cè)。
FPN網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,左側(cè)最底層為原圖,經(jīng)過卷積后依次得到高層,右側(cè)對(duì)左側(cè)相應(yīng)層做2倍上采樣后與左面下一層相連接,依次得到右邊3層然后分別預(yù)測(cè)。FPN算法能將高層特征的語(yǔ)義信息和低層特征高分辨率相融合,通過融合后的特征進(jìn)行預(yù)測(cè)。
圖2 FPN網(wǎng)絡(luò)結(jié)構(gòu)圖
由于交通狀況復(fù)雜,交通工具的檢測(cè)準(zhǔn)確率受到一定影響。為了提高目標(biāo)檢測(cè)的準(zhǔn)確率,本文對(duì)含有豐富語(yǔ)義信息的高層特征圖和含有豐富位置信息的低層特征圖進(jìn)行有效融合,從而適當(dāng)彌補(bǔ)高層特征圖位置信息表達(dá)能力不足的缺點(diǎn)。其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,虛線框內(nèi)為5個(gè)有效特征層及其預(yù)測(cè)。
圖3 改進(jìn)的SSD目標(biāo)檢測(cè)算法網(wǎng)絡(luò)結(jié)構(gòu)
改進(jìn)的SSD目標(biāo)檢測(cè)算法借鑒FPN金字塔網(wǎng)絡(luò)結(jié)構(gòu)的思想,對(duì)高層信息采用雙線性插值法進(jìn)行上采樣,與相鄰底層信息進(jìn)行特征融合。上采樣是利用已知圖像矩陣中的點(diǎn)來(lái)確定未知的點(diǎn),從而擴(kuò)大圖像尺寸,文中采用雙線性插值法[13-14]實(shí)現(xiàn)上采樣。雙線性插值利用原圖像目標(biāo)點(diǎn)四周四個(gè)真實(shí)存在的值來(lái)共同確定目標(biāo)圖像矩陣中的一個(gè)未知的值,如圖4所示,Q11(x1,y1)、Q12(x1,y2)、Q21(x2,y1)、Q22(x2,y2)為原圖像矩陣中的四個(gè)點(diǎn),P為需要求的未知點(diǎn)。
圖4 雙線性插值算法圖示
在圖4中,x方向的插值是在Q11、Q21之間插入點(diǎn)R1,在Q12、Q22之間插入點(diǎn)R2,根據(jù)式(1)、(2)可求解R1、R2:
(1)
(2)
通過計(jì)算出來(lái)的R1、R2可以求y方向的線性插值,從而計(jì)算得到P點(diǎn),如式(3):
(3)
改進(jìn)的SSD網(wǎng)絡(luò)結(jié)構(gòu)低層依舊使用VGG16,圖像輸入大小為300×300。為了提高計(jì)算效率將Conv7由圖1中的[None,19,19,1 024]修改為[None,19,19,512],通道變?yōu)樵瓉?lái)的一半。Conv4_3~Conv11_2參考FPN金字塔網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),將相鄰兩層進(jìn)行融合運(yùn)算,如SSD中原來(lái)的block11對(duì)應(yīng)的Conv11_2采取雙線性插值向上采樣由原來(lái)的維度[None,1,1,256]變?yōu)閇None,3,3,256],與Conv10_2進(jìn)行融合變?yōu)閎lock10,依次求block9維度為[None,5,5,256],block8維度為[None,10,10,256],block7維度為[None,19,19,512],block4維度為[None,38,38,512]。
一種交通工具一般情況下不會(huì)超過圖片的50%,因此改進(jìn)的SSD算法選擇38×38、19×19、10×10、5×5、3×3共5個(gè)尺度的特征圖進(jìn)行目標(biāo)檢測(cè),丟棄了原SSD算法中Conv11_2對(duì)應(yīng)的1×1特征圖。在后續(xù)實(shí)驗(yàn)中證明去掉1×1特征圖對(duì)檢測(cè)效果并無(wú)明顯變化,因此不再使用原SSD算法中最大的先驗(yàn)框,即特征圖為1×1的Conv11_2層。
與SSD算法相比較,改進(jìn)的SSD算法block7最后一維度變小,并且不再計(jì)算SSD中block11,因此在計(jì)算效率上有所提高。
卷積神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)過程中是為了學(xué)習(xí)數(shù)據(jù)分布,訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)分布不同會(huì)使網(wǎng)絡(luò)泛化能力大大降低。針對(duì)每批次數(shù)據(jù)的分布不同,網(wǎng)絡(luò)需要在每次迭代后去學(xué)習(xí)適應(yīng)不同的分布也會(huì)降低網(wǎng)絡(luò)訓(xùn)練速度,因此對(duì)有效特征層的信息做歸一化處理后再進(jìn)行預(yù)測(cè)。傳統(tǒng)的SSD只對(duì)conv4_3做L2范數(shù),此種方法只是在單張圖片的channel上做歸一化,并未涉及到多張圖片之間的問題。本文借鑒FSSD[15]對(duì)改進(jìn)的SSD做BN(Batch Normalization)[16]歸一化之后再進(jìn)行預(yù)測(cè)。后文中提到的改進(jìn)的SSD算法均指對(duì)SSD實(shí)現(xiàn)兩層融合并增加BN后的算法。BN是網(wǎng)絡(luò)的一層,對(duì)特征層的信息進(jìn)行批量標(biāo)準(zhǔn)化。在卷積神經(jīng)網(wǎng)絡(luò)中,Batch就是訓(xùn)練模型時(shí)設(shè)定的圖片數(shù)量即batch_size。BN歸一化過程如下:
輸入:B={x1,2,…,m},γ,β。
輸出:{yi=BNγ,β(xi)}。
求均值:
求標(biāo)準(zhǔn)差:
歸一化:
線性變換:
增加BN后的網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
圖5 增加BN后改進(jìn)的SSD網(wǎng)絡(luò)結(jié)構(gòu)圖
改進(jìn)的SSD網(wǎng)絡(luò)結(jié)構(gòu)中,對(duì)有效特征層block4、block7、block8、block9、block10進(jìn)行BN歸一化處理后再進(jìn)行位置與類型預(yù)測(cè)。
目標(biāo)檢測(cè)損失函數(shù)由位置誤差Lloc和類別置信度誤差Lconf兩部分組成,如式(4)所示:
(4)
式中:x為當(dāng)前預(yù)測(cè)框的類別信息;c為預(yù)測(cè)框信息的置信度;l為預(yù)測(cè)框的位置;g為真實(shí)框的位置;N為先驗(yàn)框的正樣本數(shù),即與真實(shí)目標(biāo)框相匹配的先驗(yàn)框;α為權(quán)重系數(shù);Llocf(x,c)為類別置信度誤差,采用交叉熵?fù)p失函數(shù);Lloc(x,l,g)為位置誤差,采用smoothL1損失函數(shù)。
類別置信度誤差Lconf(x,c)是Softmax多類別損失函數(shù),如式(5)~(6)所示:
(5)
(6)
位置誤差Lloc(x,l,g)是預(yù)測(cè)框與真實(shí)框之間的smoothL1損失,如式(7)所示:
(7)
本次實(shí)驗(yàn)在Win10 64位操作系統(tǒng)下,使用TensorFlow框架構(gòu)建改進(jìn)的SSD神經(jīng)網(wǎng)絡(luò)。硬件配置:CPU為Intel(R) Core(TM)i7-9700K CPU @ 3.60 GHz;內(nèi)存為16 GB;GPU為NVIDIA GeForce RTX 2060 SUPER。
實(shí)驗(yàn)所用訓(xùn)練數(shù)據(jù)集為Pascal VOC2012和VOC2007的訓(xùn)練數(shù)據(jù)集,測(cè)試集為Pascal VOC2007的測(cè)試數(shù)據(jù)集。Pascal VOC2012在目標(biāo)檢測(cè)、圖像分割網(wǎng)絡(luò)對(duì)比實(shí)驗(yàn)與模型效果評(píng)估中被廣泛使用,該數(shù)據(jù)集共有21類共17 125張圖片。實(shí)驗(yàn)需要對(duì)交通工具進(jìn)行目標(biāo)檢測(cè),因此在Pascal VOC2012和VOC2007中選取出bicycle、motorbike、bus、car 4種交通工具的圖片及其標(biāo)注信息,實(shí)驗(yàn)中將此部分圖片作為訓(xùn)練數(shù)據(jù)集。
圖像輸入尺寸為300 pixel×300 pixel,在同樣參數(shù)配置的情況下對(duì)改進(jìn)的SSD和標(biāo)準(zhǔn)的SSD模型進(jìn)行實(shí)驗(yàn)比較。本文提出的改進(jìn)的SSD模型在訓(xùn)練迭代幾萬(wàn)次后損失值在0~20之間波動(dòng)。圖6所示為改進(jìn)的SSD與標(biāo)準(zhǔn)的SSD訓(xùn)練12萬(wàn)次的收斂曲線,可以看出SSD損失值穩(wěn)定在0~40之間,而且穩(wěn)定性沒有改進(jìn)的SSD好,損失值相對(duì)也比較高。
(a)改進(jìn)的SSD模型
SSD與改進(jìn)的SSD模型在相同參數(shù)及配置下訓(xùn)練12萬(wàn)步后進(jìn)行比較,如圖7所示,在第一張圖片中,改進(jìn)的SSD優(yōu)于原始的SSD,可以檢測(cè)出全部小汽車和公共汽車,第二張街道圖片中均存在漏檢的情況,第三張騎行比賽的圖片中均能正確檢測(cè)出自行車。在檢測(cè)目標(biāo)密集并且有遮擋物時(shí)兩種模型均存在漏檢,但是改進(jìn)的SSD漏檢較少。
圖7 模型識(shí)別效果
單張圖片具有特殊性,因此本文選取VOC2007測(cè)試集中的4種類別的車輛采用平均檢測(cè)精度(Mean Average Precision,mAP)對(duì)改進(jìn)后的算法與原算法進(jìn)行比較。mAP計(jì)算方式不唯一,在VOC數(shù)據(jù)集中,精確度(precision)、召回率(recall)、單類別平均精確度(Average Precision,AP)、mAP分別如式(8)~(11)所示:
(8)
(9)
(10)
(11)
式中:TP為真的正樣本數(shù),F(xiàn)P為假的正樣本數(shù),F(xiàn)N為假的負(fù)樣本數(shù),n為檢測(cè)的類別。
對(duì)于不同的參數(shù)得到的結(jié)果會(huì)有差別,在同樣參數(shù)下對(duì)改進(jìn)的SSD、SSD、未加入BN時(shí)改進(jìn)的SSD算法進(jìn)行比較,4種交通工具的AP值如表1所示。單類別平均精確度數(shù)值越高則單類別檢測(cè)準(zhǔn)確度越高。由表1可以看出,不同車輛的檢測(cè)準(zhǔn)確度存在一定差距,三種算法在檢測(cè)公共汽車時(shí)準(zhǔn)確度都比較高,在檢測(cè)自行車、小汽車、摩托車三種較小的目標(biāo)及目標(biāo)密集并且有遮擋物時(shí),SSD算法、未加入BN的SSD算法、改進(jìn)的SSD算法均存在目標(biāo)漏檢的情況,但是改進(jìn)的SSD算法整體效果優(yōu)于其他兩種算法。
表1 改進(jìn)的SSD與SSD的 AP比較
本文需要檢測(cè)并識(shí)別4類交通工具,選擇用mAP作為評(píng)價(jià)指標(biāo)。表2為三種算法在訓(xùn)練5萬(wàn)步和10萬(wàn)步時(shí),每批次檢測(cè)圖像所用時(shí)間和四種類別交通工具的平均精確度,每批次用時(shí)越短則效率越高,mAP值越高四種類別交通工具的平均檢測(cè)準(zhǔn)確度越高。從表2中可以看出,改進(jìn)的SSD算法均優(yōu)于SSD算法和未加入BN時(shí)改進(jìn)的SSD算法。在訓(xùn)練10萬(wàn)步時(shí),改進(jìn)的SSD算法在準(zhǔn)確率上高于標(biāo)準(zhǔn)的SSD算法10.9%,提高了15.59%,用時(shí)增加1.28%。
表2 改進(jìn)的SSD與SSD效率和準(zhǔn)確率比較
本文提出了基于深度卷積神經(jīng)網(wǎng)絡(luò)改進(jìn)的SSD目標(biāo)檢測(cè)算法實(shí)現(xiàn)智慧交通中交通工具的分類及定位檢測(cè),可以對(duì)圖片、已保存的視頻、攝像頭實(shí)時(shí)監(jiān)控視頻進(jìn)行交通工具的檢測(cè),準(zhǔn)確率達(dá)到80.8%,運(yùn)行速度約每秒識(shí)別13幀。改進(jìn)的SSD目標(biāo)檢測(cè)算法可以應(yīng)用于智慧交通管理系統(tǒng),幫助交通管理人員進(jìn)行車輛監(jiān)控、統(tǒng)計(jì)車流量、違法車輛追蹤等。但是,本文改進(jìn)的目標(biāo)檢測(cè)算法在復(fù)雜環(huán)境下均存在漏檢現(xiàn)象,今后將圍繞如何在復(fù)雜環(huán)境下提高檢測(cè)準(zhǔn)確率做進(jìn)一步研究。