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