馬佳峰,陳凌珊
(上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院,上海 201620)
在智能網(wǎng)聯(lián)汽車和無(wú)人駕駛快速發(fā)展的環(huán)境下,基于深度學(xué)習(xí)的目標(biāo)識(shí)別作為其中的關(guān)鍵技術(shù)顯得愈加重要,而公路環(huán)境中的騎車人作為目標(biāo)識(shí)別當(dāng)中一個(gè)種類,自然也被考慮并加以研究。騎車人作為公路環(huán)境中易受傷的人,在公路上的行車可能不規(guī)范,或者汽車駕駛員的駕駛不規(guī)范,加上日漸復(fù)雜的公路交通場(chǎng)景,多種因素疊加,騎車人群體的自身安全受到了嚴(yán)重的威脅,由此引發(fā)的問題不容小覷,該群體的安全應(yīng)當(dāng)受到重視?,F(xiàn)今智能網(wǎng)聯(lián)汽車的目標(biāo)識(shí)別檢測(cè)技術(shù)在大力發(fā)展但并沒有完善,有關(guān)公路環(huán)境下騎車人識(shí)別的研究相對(duì)于其它目標(biāo)研究來(lái)說(shuō)較少,提高騎車人的安全十分有必要,因此對(duì)公路環(huán)境下騎車人識(shí)別技術(shù)的研究具有重要意義[1]。
當(dāng)下目標(biāo)識(shí)別的技術(shù)主要是基于機(jī)器視覺技術(shù),分為傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)兩種方式。傳統(tǒng)的機(jī)器學(xué)習(xí)對(duì)于目前的實(shí)際應(yīng)用場(chǎng)景來(lái)說(shuō),其檢測(cè)速度并不符合實(shí)際需求,目前無(wú)人駕駛中的主要目標(biāo)識(shí)別技術(shù)為深度學(xué)習(xí)[2]。智能網(wǎng)聯(lián)汽車和無(wú)人駕駛成為大趨勢(shì),安全行作為其中一個(gè)重要考量指標(biāo),如何降低公路安全事故發(fā)生的概率成為越來(lái)越熱的話題,對(duì)公路騎車人的識(shí)別研究也被廣泛討論[3]。深度學(xué)習(xí)算法分One-stage類和Two-stage類算法,目前主流采用的是One-Stage類,該類算法檢測(cè)速度較快,具有重要代表性的直接基于回歸算法為SSD算法,該算法在精度上和速度上都有較好的檢測(cè)效果,其汲取Two-stage算法中的特點(diǎn),借鑒了RPN多窗口技術(shù),在此基礎(chǔ)之上在幾個(gè)不一樣的尺度上的特征圖上都采用了框的坐標(biāo)回歸和多種尺度的檢測(cè),使SSD 算法既達(dá)到了對(duì)小目標(biāo)檢測(cè)效果,同時(shí)還能保證檢測(cè)的速度。本文采用深度學(xué)習(xí)算法對(duì)其進(jìn)行研究,采用的算法是SSD算法,并對(duì)其進(jìn)行嘗試性的改進(jìn)。
從網(wǎng)絡(luò)結(jié)構(gòu)上:其主干網(wǎng)絡(luò)是VGG-16,并對(duì)其進(jìn)行了相應(yīng)的改善。VGG-16網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示。
圖1 VGG-16網(wǎng)絡(luò)結(jié)構(gòu)
引用和參考Alexnet,對(duì)網(wǎng)絡(luò)的深度進(jìn)行了提高,能夠更好的描述目標(biāo)特征,表達(dá)能力更強(qiáng),在復(fù)雜場(chǎng)景的應(yīng)用上效果更好,總的來(lái)說(shuō)VGG-16用于特征提取效果不錯(cuò),適用于目標(biāo)檢測(cè)和識(shí)別領(lǐng)域。
SSD算法的網(wǎng)絡(luò)模型,在使用VGG-16網(wǎng)絡(luò)模型的基礎(chǔ)上結(jié)合了YOLO算法的跨層連接思想和FasterRCNN算法思想[4],使整體的檢測(cè)效果有了極大的加強(qiáng),其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
從圖2可知,SSD算法在主干網(wǎng)絡(luò)VGG-16的改進(jìn)為:加入了一定數(shù)目的卷積層,VGG16包含5個(gè)卷積塊,一般命名從conv1~conv5,改進(jìn)后的VGG-16網(wǎng)絡(luò),不含conv5卷積塊,用的是前4卷積塊。SSD算法輸入端為300×300×3的圖片,靠VGG-16提取特征后,得出尺寸為38×38×512的特征層,每一個(gè)卷積特征層是靠每單次的下采樣得出的,經(jīng)過(guò)上述步驟再對(duì)得出的卷積特征層采取目標(biāo)檢測(cè)步驟,通過(guò)下采樣5次,得出尺寸為1×1×256的卷積特征層,得出5個(gè)尺寸不一的卷積特征層,和VGG網(wǎng)絡(luò)的特征層加在一起,最終有6個(gè)卷積層。一般采用一組的卷積濾波器對(duì)每單個(gè)卷積特征層實(shí)行檢測(cè)。在大小為M×N且包含P通道的特征層,以3×3×p的卷積核為檢測(cè)的基本單元,生成單個(gè)類別的邊框坐標(biāo)還有置信度。
圖2 SSD算法的網(wǎng)絡(luò)結(jié)構(gòu)圖
SSD問世以來(lái)就廣受研究人員的喜愛,用Python語(yǔ)言編寫的開源算法,使用方便,故而對(duì)于SSD算法的改進(jìn)和優(yōu)化絡(luò)繹不絕[5]。SSD 算法檢測(cè)小目標(biāo)效果較差,平靜檢測(cè)精度也有些偏低,針對(duì)這些問題,本文對(duì)該算法進(jìn)行了研究,并對(duì)其進(jìn)行優(yōu)化,用以解決上述問題,提升該算法的檢測(cè)效果。針對(duì)SSD算法存在的缺陷,分析其原理上可能造成此結(jié)果的原因,該算法將多個(gè)不同特征層沒有跨層連接起來(lái),只是檢測(cè)多種不一樣尺度的特征圖,高層網(wǎng)絡(luò)的語(yǔ)義信息并沒有被底層網(wǎng)絡(luò)更多的學(xué)習(xí)到。
YOLO系列算法中引用了FPN思想,參考這些理念,對(duì)SSD算法進(jìn)行改進(jìn),在其網(wǎng)絡(luò)結(jié)構(gòu)上加入FPN網(wǎng)絡(luò)[6],從而得出一種網(wǎng)絡(luò)摻入了跨層連接理念(cross layer connection),命名為SSD-CLC網(wǎng)絡(luò)。
常態(tài)下,網(wǎng)絡(luò)結(jié)構(gòu)中,位于底層的特征圖其分辨率高于其目標(biāo)的位置精確,不過(guò)蘊(yùn)有較少的特征語(yǔ)義信息,另一方面在高層方面,其包含的語(yǔ)義信息多,目標(biāo)的位置卻不怎么精確。特征金字塔的核心理念就在于跨層連接多種尺寸大小的卷積層,這樣連接的卷積層兼并了低層網(wǎng)絡(luò)的特征還有高層網(wǎng)絡(luò)的特征,讓網(wǎng)絡(luò)對(duì)更多的特征進(jìn)行學(xué)習(xí),嵌入FPN網(wǎng)絡(luò),能讓SSD算法的檢測(cè)效果更進(jìn)一步。
引入跨層連接思想能夠讓被改進(jìn)的網(wǎng)絡(luò)多個(gè)特征層的語(yǔ)義信息被更多的學(xué)習(xí)到,SSD算法里采取相似的跨層連接于多種不同尺度的卷積層,也能實(shí)現(xiàn)相近的結(jié)果。把FPN嵌入到SSD算法的結(jié)構(gòu)中,其網(wǎng)絡(luò)模型SSD-CLC如圖3所示。
從圖3可知,SSD-CLC 網(wǎng)絡(luò)結(jié)構(gòu)中19×19規(guī)格的特征圖是由10×10規(guī)格的特征圖經(jīng)過(guò)上采樣后得出的;將上采樣得出的結(jié)果和原來(lái)的19×19規(guī)格的相疊加,得到合成后的19×19特征圖;最終將新得到的2個(gè)特征圖加上原有的4個(gè)特征圖實(shí)行目標(biāo)檢測(cè)流程。采樣方法一般有雙線性插值、均值插值、中值插值、最鄰近插值等,這里選取的是最鄰近插值,這種方法對(duì)運(yùn)算量要求不高,把圖片中所有點(diǎn)的像素值賦成原圖片里和其最挨著的點(diǎn)的像素值。
圖3 SSD-CLC網(wǎng)絡(luò)模型
本文實(shí)驗(yàn)環(huán)境為:惠普暗影精靈5Plus筆記本 win10 操作系統(tǒng),模型使用Pytorch搭建,采用GPU加速訓(xùn)練,顯卡型號(hào)為NVIDIA 2080Ti,最終對(duì)實(shí)驗(yàn)結(jié)果用3個(gè)參數(shù)做為評(píng)價(jià)指標(biāo):AP(平均檢測(cè)精度)、Recall(召回率)和檢測(cè)速度DR(Detection Rate)。
數(shù)據(jù)集在網(wǎng)絡(luò)模型訓(xùn)練中起著重要的作用,數(shù)據(jù)集的質(zhì)量對(duì)模型訓(xùn)練的結(jié)果起著至關(guān)重要的作用,本文識(shí)別的對(duì)象為騎車人,目前針對(duì)于騎車人識(shí)別研究的數(shù)據(jù)集較少,經(jīng)過(guò)篩選,本文選用的數(shù)據(jù)集為TDCB數(shù)據(jù)集,該數(shù)據(jù)集由清華大學(xué)Li的團(tuán)隊(duì)和戴姆勒司合作制作而成[7],經(jīng)過(guò)圖像的采集和標(biāo)注后制作而成。
該數(shù)據(jù)集主要包含訓(xùn)練集和測(cè)試集,比例約3∶1,訓(xùn)練集包含9 741張圖片且只標(biāo)注騎車人,測(cè)試集共有2 914張圖片,內(nèi)含6種標(biāo)注目標(biāo),分別為:騎車人、行人、騎摩托人、輪椅騎手、騎電瓶車人和騎三輪車人。目前主流數(shù)據(jù)集標(biāo)注文件格式為VOC數(shù)據(jù)集標(biāo)注文件格式和COCO數(shù)據(jù)集標(biāo)注文件格式,VOC數(shù)據(jù)集標(biāo)注文件格式為xml格式,由于數(shù)據(jù)集標(biāo)注文件為json格式,故TDCB數(shù)據(jù)集并不能被直接使用,編寫相應(yīng)的標(biāo)注文件格式更改程序,將其轉(zhuǎn)化為xml格式,使其能夠被直接使用。
SSD-CLC算法在上述的TDCB數(shù)據(jù)集進(jìn)行訓(xùn)練后,損失函數(shù)曲線如圖4所示。
圖4 訓(xùn)練完成后的損失函數(shù)曲線
通過(guò)仿真實(shí)驗(yàn)可以看出,在SSD算法引入了跨層連接,識(shí)別效果有一定程度的提高,如圖5所示。圖5(a)和圖5(c)是SSD引入跨層連接前的識(shí)別效果,其誤把夾在人群間的行人識(shí)別成了騎車人,引入之后,誤檢消除,如5(b)所示。圖5(c)為SSD的識(shí)別效果,其把遠(yuǎn)處的一個(gè)行人誤識(shí)別成了騎車人,引入跨層連接后同樣消除了誤識(shí)別,結(jié)果為圖5(d)。從圖5(b)和圖5(d)結(jié)果還可以看出,在消除了誤檢的同時(shí),還一定程度的提高了檢測(cè)精度。
圖5 SSD-CLC識(shí)別效果
SSD和SSD-CLC在TDCB數(shù)據(jù)集上對(duì)所有測(cè)試樣本進(jìn)行試驗(yàn)后,得出PR曲線如圖6所示。
圖6 SSD和SSD-CLC實(shí)驗(yàn)的PR曲線
由圖6可以看出,相對(duì)于SSD算法,改進(jìn)的SSD-CLC算法在平均精度上有所提高,其識(shí)別精度在召回率低的時(shí)候也有所提高,通過(guò)此結(jié)果可以看出,網(wǎng)絡(luò)結(jié)構(gòu)引入跨層鏈接后,能學(xué)習(xí)到更多的特征,識(shí)別的結(jié)果統(tǒng)計(jì)見表1。
表1 SSD與SSD-CLC識(shí)別結(jié)果對(duì)比
實(shí)驗(yàn)結(jié)果表明,對(duì)SSD算法改進(jìn)后,在檢測(cè)小目標(biāo)上效果更進(jìn)一步,減少了誤檢的情況,其平均檢測(cè)精度提高了2.2%左右,平均檢測(cè)時(shí)間增加了大約0.02 s,從總的時(shí)間占比角度來(lái)看,影響較低,在總體上沒有改變檢測(cè)速度的情況下,提高了檢測(cè)精度,嘗試性優(yōu)化后得出的SSD-CLC在檢測(cè)效果有所提升,對(duì)提高公路騎車人安全方面有著重要意義。
本文采用SSD算法對(duì)公路場(chǎng)景下騎車人識(shí)別技術(shù)進(jìn)行研究,之后針對(duì)SSD算法檢測(cè)小目標(biāo)時(shí)效果不太理想和平均檢測(cè)精度偏低的問題,對(duì)SSD算法進(jìn)行嘗試性的改進(jìn),借鑒YOLOv3的跨層連接思想,對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),將特征金字塔嵌入到網(wǎng)絡(luò)中,以提高小目標(biāo)檢測(cè)效果和檢測(cè)精度;通過(guò)在數(shù)據(jù)集TDCB上進(jìn)行仿真實(shí)驗(yàn)證明,經(jīng)過(guò)優(yōu)化得出的SSD-CLC算法的平均檢測(cè)精度提高了2.2%,同時(shí)也提高了對(duì)小目標(biāo)的檢測(cè)效果,雖在一定程度上減緩檢測(cè)速度,但檢測(cè)速度仍舊符合實(shí)時(shí)檢測(cè)要求,實(shí)驗(yàn)結(jié)果證明,嘗試性的改進(jìn)提高了SSD算法對(duì)騎車人識(shí)別的檢測(cè)效果,這對(duì)提高公路環(huán)境下騎車人的安全性有著重要意義,有利于減少交通事故的發(fā)生。