萬思宇
(上海交通大學電子信息與電氣工程學院,上海 200240)
3D車輛檢測是自動駕駛系統(tǒng)的重要組成部分。自動駕駛汽車需要在三維坐標系中對障礙物進行精確檢測和定位,以避免車禍的發(fā)生。現(xiàn)代自動駕駛汽車普遍配備高精度攝像頭與深度傳感器,如測距激光雷達,來提供車輛前方的準確圖像以及車輛前方物體的深度信息,這些信息的具體數(shù)據(jù)形式如圖1所示。
已有的車輛檢測研究主要分為2類,1類是基于攝像機圖像的檢測,另1類是基于激光雷達的點云信息的檢測。基于圖像的檢測算法通過提取圖像特征,獲得前方障礙物在圖像上的位置,但由于缺乏深度信息,在三維空間中無法定位物體。基于激光雷達的點云包含每1個點的空間信息,檢測算法通過提取每1個點的空間特征,再將所有點的空間特征進行回歸,可以得到前方障礙物的位置與深度信息。但是,由于點云距離車輛越遠越稀疏,對于較遠位置的物體,檢測結(jié)果的準確率有所降低。

Figure 1 Example of image and pointcloud圖1 圖像與點云示例
傳統(tǒng)的基于激光雷達的點云信息的檢測算法,首先通過卷積神經(jīng)網(wǎng)絡對點云中的每1個點提取特征,再通過最大池化層從所有點的特征中選出最顯著的特征,最后分別通過分類與回歸網(wǎng)絡確定前方障礙物的類別與位置。在這個過程中,所有點的重要程度是一致的,但在實際檢測時,這些點的重要程度可能有一定的不同。針對以上缺點,本文引入注意力機制,首先通過已有的3D車輛檢測算法回歸一個車輛的初始位置;然后分別計算每個點與初始中心點位置的距離,再將這些距離值送入注意力網(wǎng)絡,通過注意力網(wǎng)絡回歸得到每個點的權(quán)重;最后將注意力網(wǎng)絡得到的權(quán)重與每個點的特征相乘,送入最大池化層進行最大池化操作。在此過程中,通過給予車輛點較高的權(quán)重,非車輛點較低的權(quán)重,使得車輛點的特征更容易通過最大池化層得到保留。
在KITTI數(shù)據(jù)集[1]上對本文算法進行了評估,并與現(xiàn)有的算法進行了比較,在保證實時檢測的情況下,本文算法較現(xiàn)有方法具有更高的準確度。
車輛檢測是一個廣泛研究的課題。根據(jù)數(shù)據(jù)類型不同,車輛檢測算法可分為2類:基于圖像的2D車輛檢測和基于點云的3D車輛檢測。
2D車輛檢測算法的本質(zhì)是基于圖像目標檢測。常用的圖像檢測框架分為2類,分為提取候選框與回歸檢測結(jié)果的兩個步驟的神經(jīng)網(wǎng)絡算法,以及不提取候選框直接回歸檢測結(jié)果的一個步驟的神經(jīng)網(wǎng)絡算法。文獻[2]提出的FasterR-CNN是二階段(Two-stage)圖像檢測算法中廣泛應用的框架。使用文獻[3]提出的VGG16網(wǎng)絡來獲取整幅圖像的特征圖,然后通過在整張?zhí)卣鲌D滑窗回歸得到候選框。然后,該算法將候選框的特征送入分類網(wǎng)絡與回歸網(wǎng)絡中,從而得到圖像中目標的類別與位置。基于Faster-RCNN,文獻[4]提出了多尺度深度卷積神經(jīng)網(wǎng)絡MSCNN(Multi-Scale deep Convolutional Neural Network),它在VGG16網(wǎng)絡中不同的卷積層上提取得到多尺度的特征信息,并通過這些多尺度特征信息得到更加準確的候選框,從而在多尺度上具有較好的性能。此外,在一步圖像檢測算法中,出現(xiàn)了SSD[5]與YOLO[6]等多種檢測算法,一步圖像檢測算法使用默認的候選框代替生成的候選框,去除了生成候選框這一步驟,直接在默認的候選框中進行目標檢測,從而具有更快的速度。
3D車輛檢測算法分為基于點云的檢測算法和基于立體圖像的檢測算法。在基于立體圖像的檢測算法中,文獻[7]提出的3DOP算法從立體圖像中提取每個點的深度信息,然后通過平面圖像和深度信息生成用于檢測的3D候選框。而在基于點云的檢測方法中,文獻[8]提出的Voxelnet算法通過在三維空間中進行三維空間滑窗從而得到三維空間中的候選體元,再將這些體元的特征送入三維分類器網(wǎng)絡和回歸網(wǎng)絡得到最后的檢測結(jié)果。而MV3D算法[9]使用前視圖和鳥瞰圖代替點云視圖,從而減少了尺寸和計算量。文獻[10]提出的另一種3D車輛檢測算法則是利用了車輛的CAD模型,首先通過圖像檢測算法找到車輛的二維圖像,再通過算法獲得車輛的關(guān)鍵點位置,最后將車輛的關(guān)鍵點與CAD模型匹配進而得到車輛的空間位置。除了這些檢測算法,文獻[11]提出一種基于點云的端到端的3D車輛檢測算法--Pointnet,得到了廣泛的應用。
Pointnet與之前的基于點云的3D車輛檢測算法不同,它是一種專門針對點云的檢測算法。Pointnet的輸入是包含點云中所有點的位置信息的數(shù)組,輸出為待檢測目標的分類和位置。它是一個高效的基于點云的3D目標檢測算法。基于Pointnet算法,文獻[12]提出了Pointnet++算法,在關(guān)注全局特征的同時針對局部特征進行了優(yōu)化,從而得到了更好的檢測效果。
隨著智能駕駛在國內(nèi)外的飛速發(fā)展,國內(nèi)的車輛檢測研究也在不斷發(fā)展。由文獻[13]可知,百度提出了Apollo智能駕駛解決方案,建立了國內(nèi)最大的道路車輛駕駛數(shù)據(jù)集,同時為客戶提供智能駕駛解決方案。由文獻[14]可知,阿里的人工智能實驗室也在智能駕駛領(lǐng)域做出了不少貢獻,阿里推動“ET城市大腦”的實驗,與各地政府建立“智慧城市”,幫助城市進入智能交通新時代。

Figure 2 Framework of 3D vehicle detection based on attention mechanism圖2 基于注意力機制的3D車輛檢測框架

Figure 3 Structure of Pointnet圖3 Pointnet網(wǎng)絡結(jié)構(gòu)圖


(1)
za=a⊙z
(2)
Pointnet的提出推動3D車輛檢測算法的飛速發(fā)展。在Pointnet的基礎(chǔ)上,本文引入了注意力機制。圖2給出了基于注意力機制的3D車輛檢測算法的基本框架。其中,點云輸入為{Pi|i=1,2,3,…,n},Pi是1個三維數(shù)組(xi,yi,zi),代表點i在三維空間中的坐標位置,n代表點云中點的數(shù)量。對應每1組點云輸出為(x,y,z,w,h,l,α),其中(x,y,z)代表待檢測車輛的中心點在三維空間中的位置,(w,h,l)代表待檢測車輛的車型尺寸,α代表車輛在三維空間中圍繞y軸的方向。該算法分為4個部分:
(1)采用基于Pointnet網(wǎng)絡結(jié)構(gòu)對三維點云進行分割并通過回歸得到車輛的初始中心點位置(x′,y′,z′);
(2)計算點云中每個點到初始中心點距離di:
di=Pi-(x′,y′,z′)
(3)
之后將di送入注意力網(wǎng)絡中,得到每個點對應的權(quán)重wi。
(3)將di送入基于Pointnet的網(wǎng)絡結(jié)構(gòu)并提取每個點對應的特征fdi,之后對每個點的特征fdi進行加權(quán):
f′di=fdi⊙wi
(4)


(5)
本文采用一種簡化的Pointnet網(wǎng)絡結(jié)構(gòu)來提取3D點云特征。簡化的Pointnet網(wǎng)絡結(jié)構(gòu)如圖3所示。
輸入的點云數(shù)據(jù)形式為n×3的數(shù)組,n為輸入點的個數(shù),對于每個點i(1≤i≤n),輸入(x,y,z)即為該點在空間中的坐標位置。算法首先通過多層卷積神經(jīng)網(wǎng)絡,提取每個點單獨的特征,將(x,y,z)維度擴展為1 024。然后通過1個最大池化層,對n×1024維的特征向量在n維上進行最大池化,找出最為顯著的特征,池化得到的1×1024維向量作為該點云的全局向量。最后將全局向量送入分類與回歸網(wǎng)絡就可以得到前方障礙物的種類與位置。
通過前面的Pointnet網(wǎng)絡,可以從每個點中提取得到1 024維特征,從而得到n×1024維的特征向量Vl,用平均池化得到的平均值Vavg來代替該點的特征。將每個點的特征送入注意力網(wǎng)絡可得到對應的權(quán)重β1,具體計算公式如下(如圖4所示):
b=tanh((WC?Vavg+bc)⊕Whcht-1)
(6)
β1=softmax(W′ib+b′i)
(7)
其中,Vavg為輸入特征的平均值,WC,Whc與W′i是變換矩陣,bc與b′i是偏差項。

Figure 4 Structure of attention mechanism圖4 注意力網(wǎng)絡結(jié)構(gòu)
為了驗證基于注意力機制的車輛檢測算法的有效性,本文在12 GB顯存,CPU型號為Intel?CoreTMi7-6700K的臺式計算機上進行實驗。使用基于Python的tensorflow框架對數(shù)據(jù)集進行處理,數(shù)據(jù)源為1個專門進行智能駕駛檢測的真實數(shù)據(jù)集KITTI。KITTI數(shù)據(jù)集由德國卡爾斯魯厄理工學院和豐田美國技術(shù)研究院聯(lián)合提供,是目前國際上最大的自動駕駛場景下的計算機視覺算法評測數(shù)據(jù)集。該數(shù)據(jù)集用于評測立體圖像、光流、視覺測距、3D物體檢測和3D跟蹤等計算機視覺技術(shù)在車載環(huán)境下的性能。KITTI包含市區(qū)、鄉(xiāng)村和高速公路等場景采集的真實圖像數(shù)據(jù),每幅圖像中最多達15輛車和30個行人,還有各種程度的遮擋與截斷。整個數(shù)據(jù)集由389對立體圖像和光流圖,39.2 km視覺測距序列以及超過200k 3D標注物體的圖像組成[1]。
KITTI使用同樣用于二維目標檢測的Pascal標準評估三維目標檢測性能。因此,KITTI數(shù)據(jù)集將根據(jù)圖像平面中的邊界框高度對遠距離對象進行過濾。因為只有在圖像平面上出現(xiàn)的對象才會被標記,所以不在圖像平面中的對象不會算作誤報。對于汽車圖像,KITTI要求檢測結(jié)果與標簽有70%以上的三維邊界框重疊方可認為檢測正確。KITTI將待檢測目標分為3個難度:(1)簡單。最小邊界框高度:40像素,最大遮擋級別:完全可見,最大截斷:15%。(2)中等。最小邊界框高度:25像素,最大遮擋級別:部分遮擋,最大截斷:30%。(3)困難。最小邊界框高度:25 像素,最大遮擋級別:難以看到,最大截斷:50%。
本文從KITTI訓練集中選取3 712幅2D圖像與對應的點云數(shù)據(jù)集進行訓練,從驗證集中選取3 769幅2D圖像與對應的點云數(shù)據(jù)集進行測試,最后選取Pointnet的離線測試集進行了結(jié)果測試。在KITTI上得到的最終測試結(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 基于注意力機制車輛檢測算法的精度-召回率曲線
通過與Pointnet算法的對比可以看出,對于簡單難度的待檢測目標,基于注意力機制的車輛檢測算法有著與Pointnet較為相似的結(jié)果,而對于中等難度和困難難度的待檢測目標,本文算法有著優(yōu)于Pointnet算法的檢測結(jié)果。綜合所有結(jié)果來看,本文提出的基于注意力機制的車輛檢測算法的準確度相對更高,有一個較明顯的提升。

Table 1 Accuracy comparison of vehicle detection algorithms表1 車輛檢測算法準確度對比(離線測試集) %
從實驗結(jié)果中可以發(fā)現(xiàn),引入注意力機制可以較好地改善中等難度與困難難度的車輛檢測結(jié)果。相比Pointnet算法,本文通過引入權(quán)重使得在將特征送入最大池化層時,一些重要的特征被保留下來。對于簡單難度(較近距離)的車輛,由于其空間信息較豐富,Pointnet算法的準確度較高,基于注意力機制的檢測結(jié)果沒有顯著的提升。對于中等難度的車輛,本文算法可以通過給予關(guān)鍵點權(quán)重,獲得更加準確的結(jié)果。而對于困難難度(較遠距離)的車輛,由于其車輛距離較遠,點云過于稀疏,導致其點云數(shù)據(jù)本身不多,故引入權(quán)重的效果不佳。
本文基于注意力機制理論提出了一個基于注意力機制的3D車輛檢測算法。該算法首先預估了車輛可能的中心點,然后將點云中每個點到預估中心點的距離送入注意力網(wǎng)絡,從而得到每個點不同的權(quán)重。再將每個點的特征進行加權(quán)后送入分類與回歸網(wǎng)絡處理。該算法彌補了現(xiàn)有算法對于點云內(nèi)所有點一視同仁的不足,通過提高部分重要點的權(quán)重得到更加準確的檢測結(jié)果。本文僅在Pointnet上嘗試引入了注意力機制,未來可在一些更加前沿的算法上嘗試引入注意力機制,同時將研究不同的注意力機制對于檢測結(jié)果的影響。