萬(wàn)思宇
(上海交通大學(xué)電子信息與電氣工程學(xué)院,上海 200240)
3D車輛檢測(cè)是自動(dòng)駕駛系統(tǒng)的重要組成部分。自動(dòng)駕駛汽車需要在三維坐標(biāo)系中對(duì)障礙物進(jìn)行精確檢測(cè)和定位,以避免車禍的發(fā)生?,F(xiàn)代自動(dòng)駕駛汽車普遍配備高精度攝像頭與深度傳感器,如測(cè)距激光雷達(dá),來(lái)提供車輛前方的準(zhǔn)確圖像以及車輛前方物體的深度信息,這些信息的具體數(shù)據(jù)形式如圖1所示。
已有的車輛檢測(cè)研究主要分為2類,1類是基于攝像機(jī)圖像的檢測(cè),另1類是基于激光雷達(dá)的點(diǎn)云信息的檢測(cè)?;趫D像的檢測(cè)算法通過(guò)提取圖像特征,獲得前方障礙物在圖像上的位置,但由于缺乏深度信息,在三維空間中無(wú)法定位物體?;诩す饫走_(dá)的點(diǎn)云包含每1個(gè)點(diǎn)的空間信息,檢測(cè)算法通過(guò)提取每1個(gè)點(diǎn)的空間特征,再將所有點(diǎn)的空間特征進(jìn)行回歸,可以得到前方障礙物的位置與深度信息。但是,由于點(diǎn)云距離車輛越遠(yuǎn)越稀疏,對(duì)于較遠(yuǎn)位置的物體,檢測(cè)結(jié)果的準(zhǔn)確率有所降低。
Figure 1 Example of image and pointcloud圖1 圖像與點(diǎn)云示例
傳統(tǒng)的基于激光雷達(dá)的點(diǎn)云信息的檢測(cè)算法,首先通過(guò)卷積神經(jīng)網(wǎng)絡(luò)對(duì)點(diǎn)云中的每1個(gè)點(diǎn)提取特征,再通過(guò)最大池化層從所有點(diǎn)的特征中選出最顯著的特征,最后分別通過(guò)分類與回歸網(wǎng)絡(luò)確定前方障礙物的類別與位置。在這個(gè)過(guò)程中,所有點(diǎn)的重要程度是一致的,但在實(shí)際檢測(cè)時(shí),這些點(diǎn)的重要程度可能有一定的不同。針對(duì)以上缺點(diǎn),本文引入注意力機(jī)制,首先通過(guò)已有的3D車輛檢測(cè)算法回歸一個(gè)車輛的初始位置;然后分別計(jì)算每個(gè)點(diǎn)與初始中心點(diǎn)位置的距離,再將這些距離值送入注意力網(wǎng)絡(luò),通過(guò)注意力網(wǎng)絡(luò)回歸得到每個(gè)點(diǎn)的權(quán)重;最后將注意力網(wǎng)絡(luò)得到的權(quán)重與每個(gè)點(diǎn)的特征相乘,送入最大池化層進(jìn)行最大池化操作。在此過(guò)程中,通過(guò)給予車輛點(diǎn)較高的權(quán)重,非車輛點(diǎn)較低的權(quán)重,使得車輛點(diǎn)的特征更容易通過(guò)最大池化層得到保留。
在KITTI數(shù)據(jù)集[1]上對(duì)本文算法進(jìn)行了評(píng)估,并與現(xiàn)有的算法進(jìn)行了比較,在保證實(shí)時(shí)檢測(cè)的情況下,本文算法較現(xiàn)有方法具有更高的準(zhǔn)確度。
車輛檢測(cè)是一個(gè)廣泛研究的課題。根據(jù)數(shù)據(jù)類型不同,車輛檢測(cè)算法可分為2類:基于圖像的2D車輛檢測(cè)和基于點(diǎn)云的3D車輛檢測(cè)。
2D車輛檢測(cè)算法的本質(zhì)是基于圖像目標(biāo)檢測(cè)。常用的圖像檢測(cè)框架分為2類,分為提取候選框與回歸檢測(cè)結(jié)果的兩個(gè)步驟的神經(jīng)網(wǎng)絡(luò)算法,以及不提取候選框直接回歸檢測(cè)結(jié)果的一個(gè)步驟的神經(jīng)網(wǎng)絡(luò)算法。文獻(xiàn)[2]提出的FasterR-CNN是二階段(Two-stage)圖像檢測(cè)算法中廣泛應(yīng)用的框架。使用文獻(xiàn)[3]提出的VGG16網(wǎng)絡(luò)來(lái)獲取整幅圖像的特征圖,然后通過(guò)在整張?zhí)卣鲌D滑窗回歸得到候選框。然后,該算法將候選框的特征送入分類網(wǎng)絡(luò)與回歸網(wǎng)絡(luò)中,從而得到圖像中目標(biāo)的類別與位置?;贔aster-RCNN,文獻(xiàn)[4]提出了多尺度深度卷積神經(jīng)網(wǎng)絡(luò)MSCNN(Multi-Scale deep Convolutional Neural Network),它在VGG16網(wǎng)絡(luò)中不同的卷積層上提取得到多尺度的特征信息,并通過(guò)這些多尺度特征信息得到更加準(zhǔn)確的候選框,從而在多尺度上具有較好的性能。此外,在一步圖像檢測(cè)算法中,出現(xiàn)了SSD[5]與YOLO[6]等多種檢測(cè)算法,一步圖像檢測(cè)算法使用默認(rèn)的候選框代替生成的候選框,去除了生成候選框這一步驟,直接在默認(rèn)的候選框中進(jìn)行目標(biāo)檢測(cè),從而具有更快的速度。
3D車輛檢測(cè)算法分為基于點(diǎn)云的檢測(cè)算法和基于立體圖像的檢測(cè)算法。在基于立體圖像的檢測(cè)算法中,文獻(xiàn)[7]提出的3DOP算法從立體圖像中提取每個(gè)點(diǎn)的深度信息,然后通過(guò)平面圖像和深度信息生成用于檢測(cè)的3D候選框。而在基于點(diǎn)云的檢測(cè)方法中,文獻(xiàn)[8]提出的Voxelnet算法通過(guò)在三維空間中進(jìn)行三維空間滑窗從而得到三維空間中的候選體元,再將這些體元的特征送入三維分類器網(wǎng)絡(luò)和回歸網(wǎng)絡(luò)得到最后的檢測(cè)結(jié)果。而MV3D算法[9]使用前視圖和鳥瞰圖代替點(diǎn)云視圖,從而減少了尺寸和計(jì)算量。文獻(xiàn)[10]提出的另一種3D車輛檢測(cè)算法則是利用了車輛的CAD模型,首先通過(guò)圖像檢測(cè)算法找到車輛的二維圖像,再通過(guò)算法獲得車輛的關(guān)鍵點(diǎn)位置,最后將車輛的關(guān)鍵點(diǎn)與CAD模型匹配進(jìn)而得到車輛的空間位置。除了這些檢測(cè)算法,文獻(xiàn)[11]提出一種基于點(diǎn)云的端到端的3D車輛檢測(cè)算法--Pointnet,得到了廣泛的應(yīng)用。
Pointnet與之前的基于點(diǎn)云的3D車輛檢測(cè)算法不同,它是一種專門針對(duì)點(diǎn)云的檢測(cè)算法。Pointnet的輸入是包含點(diǎn)云中所有點(diǎn)的位置信息的數(shù)組,輸出為待檢測(cè)目標(biāo)的分類和位置。它是一個(gè)高效的基于點(diǎn)云的3D目標(biāo)檢測(cè)算法?;赑ointnet算法,文獻(xiàn)[12]提出了Pointnet++算法,在關(guān)注全局特征的同時(shí)針對(duì)局部特征進(jìn)行了優(yōu)化,從而得到了更好的檢測(cè)效果。
隨著智能駕駛在國(guó)內(nèi)外的飛速發(fā)展,國(guó)內(nèi)的車輛檢測(cè)研究也在不斷發(fā)展。由文獻(xiàn)[13]可知,百度提出了Apollo智能駕駛解決方案,建立了國(guó)內(nèi)最大的道路車輛駕駛數(shù)據(jù)集,同時(shí)為客戶提供智能駕駛解決方案。由文獻(xiàn)[14]可知,阿里的人工智能實(shí)驗(yàn)室也在智能駕駛領(lǐng)域做出了不少貢獻(xiàn),阿里推動(dòng)“ET城市大腦”的實(shí)驗(yàn),與各地政府建立“智慧城市”,幫助城市進(jìn)入智能交通新時(shí)代。
Figure 2 Framework of 3D vehicle detection based on attention mechanism圖2 基于注意力機(jī)制的3D車輛檢測(cè)框架
Figure 3 Structure of Pointnet圖3 Pointnet網(wǎng)絡(luò)結(jié)構(gòu)圖
(1)
za=a⊙z
(2)
Pointnet的提出推動(dòng)3D車輛檢測(cè)算法的飛速發(fā)展。在Pointnet的基礎(chǔ)上,本文引入了注意力機(jī)制。圖2給出了基于注意力機(jī)制的3D車輛檢測(cè)算法的基本框架。其中,點(diǎn)云輸入為{Pi|i=1,2,3,…,n},Pi是1個(gè)三維數(shù)組(xi,yi,zi),代表點(diǎn)i在三維空間中的坐標(biāo)位置,n代表點(diǎn)云中點(diǎn)的數(shù)量。對(duì)應(yīng)每1組點(diǎn)云輸出為(x,y,z,w,h,l,α),其中(x,y,z)代表待檢測(cè)車輛的中心點(diǎn)在三維空間中的位置,(w,h,l)代表待檢測(cè)車輛的車型尺寸,α代表車輛在三維空間中圍繞y軸的方向。該算法分為4個(gè)部分:
(1)采用基于Pointnet網(wǎng)絡(luò)結(jié)構(gòu)對(duì)三維點(diǎn)云進(jìn)行分割并通過(guò)回歸得到車輛的初始中心點(diǎn)位置(x′,y′,z′);
(2)計(jì)算點(diǎn)云中每個(gè)點(diǎn)到初始中心點(diǎn)距離di:
di=Pi-(x′,y′,z′)
(3)
之后將di送入注意力網(wǎng)絡(luò)中,得到每個(gè)點(diǎn)對(duì)應(yīng)的權(quán)重wi。
(3)將di送入基于Pointnet的網(wǎng)絡(luò)結(jié)構(gòu)并提取每個(gè)點(diǎn)對(duì)應(yīng)的特征fdi,之后對(duì)每個(gè)點(diǎn)的特征fdi進(jìn)行加權(quán):
f′di=fdi⊙wi
(4)
(5)
本文采用一種簡(jiǎn)化的Pointnet網(wǎng)絡(luò)結(jié)構(gòu)來(lái)提取3D點(diǎn)云特征。簡(jiǎn)化的Pointnet網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
輸入的點(diǎn)云數(shù)據(jù)形式為n×3的數(shù)組,n為輸入點(diǎn)的個(gè)數(shù),對(duì)于每個(gè)點(diǎn)i(1≤i≤n),輸入(x,y,z)即為該點(diǎn)在空間中的坐標(biāo)位置。算法首先通過(guò)多層卷積神經(jīng)網(wǎng)絡(luò),提取每個(gè)點(diǎn)單獨(dú)的特征,將(x,y,z)維度擴(kuò)展為1 024。然后通過(guò)1個(gè)最大池化層,對(duì)n×1024維的特征向量在n維上進(jìn)行最大池化,找出最為顯著的特征,池化得到的1×1024維向量作為該點(diǎn)云的全局向量。最后將全局向量送入分類與回歸網(wǎng)絡(luò)就可以得到前方障礙物的種類與位置。
通過(guò)前面的Pointnet網(wǎng)絡(luò),可以從每個(gè)點(diǎn)中提取得到1 024維特征,從而得到n×1024維的特征向量Vl,用平均池化得到的平均值Vavg來(lái)代替該點(diǎn)的特征。將每個(gè)點(diǎn)的特征送入注意力網(wǎng)絡(luò)可得到對(duì)應(yīng)的權(quán)重β1,具體計(jì)算公式如下(如圖4所示):
b=tanh((WC?Vavg+bc)⊕Whcht-1)
(6)
β1=softmax(W′ib+b′i)
(7)
其中,Vavg為輸入特征的平均值,WC,Whc與W′i是變換矩陣,bc與b′i是偏差項(xiàng)。
Figure 4 Structure of attention mechanism圖4 注意力網(wǎng)絡(luò)結(jié)構(gòu)
為了驗(yàn)證基于注意力機(jī)制的車輛檢測(cè)算法的有效性,本文在12 GB顯存,CPU型號(hào)為Intel?CoreTMi7-6700K的臺(tái)式計(jì)算機(jī)上進(jìn)行實(shí)驗(yàn)。使用基于Python的tensorflow框架對(duì)數(shù)據(jù)集進(jìn)行處理,數(shù)據(jù)源為1個(gè)專門進(jìn)行智能駕駛檢測(cè)的真實(shí)數(shù)據(jù)集KITTI。KITTI數(shù)據(jù)集由德國(guó)卡爾斯魯厄理工學(xué)院和豐田美國(guó)技術(shù)研究院聯(lián)合提供,是目前國(guó)際上最大的自動(dòng)駕駛場(chǎng)景下的計(jì)算機(jī)視覺(jué)算法評(píng)測(cè)數(shù)據(jù)集。該數(shù)據(jù)集用于評(píng)測(cè)立體圖像、光流、視覺(jué)測(cè)距、3D物體檢測(cè)和3D跟蹤等計(jì)算機(jī)視覺(jué)技術(shù)在車載環(huán)境下的性能。KITTI包含市區(qū)、鄉(xiāng)村和高速公路等場(chǎng)景采集的真實(shí)圖像數(shù)據(jù),每幅圖像中最多達(dá)15輛車和30個(gè)行人,還有各種程度的遮擋與截?cái)?。整個(gè)數(shù)據(jù)集由389對(duì)立體圖像和光流圖,39.2 km視覺(jué)測(cè)距序列以及超過(guò)200k 3D標(biāo)注物體的圖像組成[1]。
KITTI使用同樣用于二維目標(biāo)檢測(cè)的Pascal標(biāo)準(zhǔn)評(píng)估三維目標(biāo)檢測(cè)性能。因此,KITTI數(shù)據(jù)集將根據(jù)圖像平面中的邊界框高度對(duì)遠(yuǎn)距離對(duì)象進(jìn)行過(guò)濾。因?yàn)橹挥性趫D像平面上出現(xiàn)的對(duì)象才會(huì)被標(biāo)記,所以不在圖像平面中的對(duì)象不會(huì)算作誤報(bào)。對(duì)于汽車圖像,KITTI要求檢測(cè)結(jié)果與標(biāo)簽有70%以上的三維邊界框重疊方可認(rèn)為檢測(cè)正確。KITTI將待檢測(cè)目標(biāo)分為3個(gè)難度:(1)簡(jiǎn)單。最小邊界框高度:40像素,最大遮擋級(jí)別:完全可見(jiàn),最大截?cái)啵?5%。(2)中等。最小邊界框高度:25像素,最大遮擋級(jí)別:部分遮擋,最大截?cái)啵?0%。(3)困難。最小邊界框高度:25 像素,最大遮擋級(jí)別:難以看到,最大截?cái)啵?0%。
本文從KITTI訓(xùn)練集中選取3 712幅2D圖像與對(duì)應(yīng)的點(diǎn)云數(shù)據(jù)集進(jìn)行訓(xùn)練,從驗(yàn)證集中選取3 769幅2D圖像與對(duì)應(yīng)的點(diǎn)云數(shù)據(jù)集進(jìn)行測(cè)試,最后選取Pointnet的離線測(cè)試集進(jìn)行了結(jié)果測(cè)試。在KITTI上得到的最終測(cè)試結(jié)果如圖5、圖6和表1所示。
Figure 5 Curves of precision-recall of Pointnet圖5 Pointnet的精度-召回率曲線
Figure 6 Curves of precision-recall of vehicle detection algorithm based on attention mechanism圖6 基于注意力機(jī)制車輛檢測(cè)算法的精度-召回率曲線
通過(guò)與Pointnet算法的對(duì)比可以看出,對(duì)于簡(jiǎn)單難度的待檢測(cè)目標(biāo),基于注意力機(jī)制的車輛檢測(cè)算法有著與Pointnet較為相似的結(jié)果,而對(duì)于中等難度和困難難度的待檢測(cè)目標(biāo),本文算法有著優(yōu)于Pointnet算法的檢測(cè)結(jié)果。綜合所有結(jié)果來(lái)看,本文提出的基于注意力機(jī)制的車輛檢測(cè)算法的準(zhǔn)確度相對(duì)更高,有一個(gè)較明顯的提升。
Table 1 Accuracy comparison of vehicle detection algorithms表1 車輛檢測(cè)算法準(zhǔn)確度對(duì)比(離線測(cè)試集) %
從實(shí)驗(yàn)結(jié)果中可以發(fā)現(xiàn),引入注意力機(jī)制可以較好地改善中等難度與困難難度的車輛檢測(cè)結(jié)果。相比Pointnet算法,本文通過(guò)引入權(quán)重使得在將特征送入最大池化層時(shí),一些重要的特征被保留下來(lái)。對(duì)于簡(jiǎn)單難度(較近距離)的車輛,由于其空間信息較豐富,Pointnet算法的準(zhǔn)確度較高,基于注意力機(jī)制的檢測(cè)結(jié)果沒(méi)有顯著的提升。對(duì)于中等難度的車輛,本文算法可以通過(guò)給予關(guān)鍵點(diǎn)權(quán)重,獲得更加準(zhǔn)確的結(jié)果。而對(duì)于困難難度(較遠(yuǎn)距離)的車輛,由于其車輛距離較遠(yuǎn),點(diǎn)云過(guò)于稀疏,導(dǎo)致其點(diǎn)云數(shù)據(jù)本身不多,故引入權(quán)重的效果不佳。
本文基于注意力機(jī)制理論提出了一個(gè)基于注意力機(jī)制的3D車輛檢測(cè)算法。該算法首先預(yù)估了車輛可能的中心點(diǎn),然后將點(diǎn)云中每個(gè)點(diǎn)到預(yù)估中心點(diǎn)的距離送入注意力網(wǎng)絡(luò),從而得到每個(gè)點(diǎn)不同的權(quán)重。再將每個(gè)點(diǎn)的特征進(jìn)行加權(quán)后送入分類與回歸網(wǎng)絡(luò)處理。該算法彌補(bǔ)了現(xiàn)有算法對(duì)于點(diǎn)云內(nèi)所有點(diǎn)一視同仁的不足,通過(guò)提高部分重要點(diǎn)的權(quán)重得到更加準(zhǔn)確的檢測(cè)結(jié)果。本文僅在Pointnet上嘗試引入了注意力機(jī)制,未來(lái)可在一些更加前沿的算法上嘗試引入注意力機(jī)制,同時(shí)將研究不同的注意力機(jī)制對(duì)于檢測(cè)結(jié)果的影響。