申彩英,朱思瑤,黃興馳
(遼寧工業大學 汽車與交通工程學院,遼寧 錦州 121001)
無人駕駛汽車主要由3大系統構成:環境感知系統、路徑規劃系統和運動控制系統。環境感知是路徑規劃和運動控制的前提,也是無人駕駛汽車最亟待解決和優化的關鍵技術難題,正確識別車輛周身環境是無人駕駛汽車運行的基礎。
相機和雷達是環境感知的重要傳感器,由此衍生出3類基本檢測算法。基于純圖像算法、基于純點云算法、基于兩者融合算法。三者各有優劣:基于圖像視覺常見的算法有:一階段算法其典型代表有SSD[1]、YOLOv3[2]系列;二階段算法其典型代表有R-CNN[3]、Faster R-CNN[4],此類算法由于可見光相機信息密度高,提供了細致的紋理和顏色信息,可提取更多特征,從而提高檢測精度。但夜間工作能力差且無法提供深度信息。
基于激光雷達的算法有:基于點云的PointNet[5]算法和基于體素的VoxelNet算法[6],以及相關的改進算法SECOND算法[7],PointRCNN算法[8]。此類算法可在夜間工作并提供了非常準確的深度信息,但存在遠處點云數據稀疏,對小目標檢測效果差的問題。
基于兩者融合的算法,能夠很好地利用兩者優點,典型的融合算法有:MV3D算法[9],其算法融合RGB圖像和雷達點云作為模型輸入的一種三維目標檢測,用多視圖對3D點云進行編碼。AVOD算法[10],引入FPN結構以適應不同尺寸的圖片數據,增加了三維檢測框的參數。AVOD相較于MV3D,提高了小目標的召回率。Qi等提出F-PointNets檢測算法[11],使用了串聯的方式先融合圖像與深度信息,減小了需處理的數據量,提高了算法運行效率,但此算法較為依賴RGB圖像數據,對光線變化敏感,算法魯棒性不佳。Xu等提PointFusion算法[12],結合了AVOD和F-PointNets的優勢,由殘差模塊提取物體顏色和幾何特征,由PointNets提取點云空間分布特征,算法的泛性和魯棒性較好。類似的還有MVX-Net[13]等算法。但此類框架都比較復雜,且運行緩慢和繁瑣。
本文中算法基于PointPainting[14]算法框架:每個激光雷達點被投影到經過圖像語義分割網絡的輸出圖像中,這樣就將語義信息增添到點云上了。繪制好的激光雷達點就能夠用在任何激光雷達檢測算法上,通用性極強。利用條形池化運算模塊改進語義分割DeepLab算法[15],提出DeepLabvs算法,使之對長條形目標更加敏感,從而繪制出更好的點云。再采用PointPillars[16]基線算法進行目標檢測,形成PointPainting+算法。融合后的算法在遠距離小目標檢測精度上有較大提高。
本算法參考文獻[14]將圖像經DeepLabvs語義算法得到的語義信息投影到點云上以增強點云,再使用PointPillars算法提取點云特征,從而達到提高目標檢測準確率的目的,其總體結構如圖1所示。
融合算法使用點云和圖像信息作為輸入,檢測目標并生成對應3D檢測框,它包括以下3個階段:① 基于圖像的語義分割,計算逐像素分割分數;② 用語義分割分數繪制激光雷達點云;③ 利用繪制好的點云數據通過卷積神經網絡進行3D目標檢測。
數據直接使用kitti數據集,作為訓練樣本,利用KITTI數據集訓練。KITTI Object Detection Evaluation 2012數據集包含7 481張道路交通采集圖像和7 481份對應的點云文件,將數據集劃分為訓練集70%,測試集30%。
DeepLab語義分割方法是經典的語義分割算法,它在捕獲高層語義信息方面已經取得了一些成效,但是這個方法仍有一些缺陷,此方法主要是堆砌了一些局部的卷積和池化操作,因此,感受野是有局限性的,對于復雜場景的解析仍有不足。
為了增大感受野,現在主要有以下幾種方法:一是利用自注意力機制來建立長距離的依賴關系,但是這種改進方法需要耗費較大的內存來進行復雜的矩陣運算;二是利用全局池化或是金字塔池化來增加全局線索。但這些方法的局限在于,運用在輪廓較為方正的目標上效果較好,但對于很多長條形的目標(如行人,騎行者)效果并不佳,為改善此問題,將條形池化引入語義分割,提出改進算法DeepLabvs。
標準空間平均池化能應用于收集遠程上下文信息。然而,當處理的對象不是規則的形狀時,它會帶有很多無關的區域,條形池化可以緩解上述問題,條形池化使用帶狀窗口沿水平或垂直維度執行池化。在數學上,給定二維張量x∈RH×W,在條形池化中,池化的空間范圍(H,1)或(1,W)是必需的。相比于二維平均池化,條形池化對一行或一列中的所有特征值進行平均運算,所以可得水平條形池化后的輸出yh∈RH為:

(1)

(2)
條形池化模塊如圖2所示。

圖2 條形池化模塊示意圖
令x∈RC×H×W為輸入張量,其中C表示通道數。首先將x送入2個平行路徑,每個路徑包含一個水平或垂直條形池化層,然后是一個內核大小為3的一維卷積層,用于調制當前位置與其相鄰像素特征。再令yh∈RC×H、yv∈RC×W,為了獲得包含更有用的全局先驗的輸出z∈RC×H×W,首先將yh和yv組合到一起產生y∈RC×H×W,然后有:
(3)
輸出z可用如下公式計算:
z=Scale(x,σ(f(y)))
(4)
式中:Scale( )指逐元素乘法;σ是Sigmoid函數;f是1×1卷積。
改進后的DeepLabvs算法結構如圖3所示,整個網絡模型分為編碼器和解碼器2個部分,編碼器部分通過多次卷積生成感受野大小不同的特征圖,再對特征圖進行空洞卷積和條形池化操作;金字塔結構的特征圖會分別輸入解碼器部分進行張量拼接和上采樣。損失函數采用交叉熵損失,最終輸出語義分割結果。

圖3 DeepLabvs算法結構框圖
DeepLabvs算法能夠有效地在道路交通的復雜環境中分割人、車等要素,其效果如圖4所示。

圖4 語義分割效果圖
圖像語義分割網絡將輸入圖像按像素進行分類,輸出對應的像素的類別分數。用語義分割有個優點,語義分割是一項比3D目標檢測更簡單的任務,分割只需要按像素進行局部分類,而3D目標檢測需要對目標進行定位和分類,執行語義分割的算法網絡更容易訓練并且執行速度上也更具優勢[17]。
本算法的關鍵之處在于如何讓語義分割結果與激光雷達點云產生關聯,在進行融合之前,有必要定義幾個關鍵參數。輸入參數有:激光雷達點云L∈RN,D,N為點數,D為維度數;語義分割像素分數S∈RW,H,E,W、H為特征圖的寬和高,E為類別數;齊次變換矩陣T∈R4,4;相機矩陣M∈R3,4。輸出參數有:重繪后的激光雷達點云P∈RN,D+E。激光雷達點云中的每個點的維度信息分別是(x,y,z,r)或(x,y,z,r,t),這里(x,y,z)是每個激光雷達點的空間坐標位置,r是反射率,t是激光雷達點的相對時間戳。激光雷達點通過齊次變換進行轉換,然后投影到圖像中,轉換過程是:
T=T(camera←ego)T(egotc←egot1)T(ego←lidar)
(5)
首先將激光雷達坐標變換到自車坐標;其次將t1時刻激光雷達捕獲數據時的自車坐標變換到tc時刻可見光相機捕獲數據時的自車坐標;最后將自車坐標再變換到相機坐標,相機矩陣將點投影到圖像中。語義分割網絡的輸出是每個像素點的E類分數,對于本算法來說E=4(汽車、行人、騎行者、背景)。一旦將圖像投影到激光雷達點云中,相關像素的分割分數也將附加到激光雷達點云上。這樣使數據有更多維度的信息,將有利于網絡提高檢測的精度。
在上節得到處理后的帶有分割分數的點云數據后,再基于點云進行目標檢測。PointPillars算法在文獻[7]基礎上,將體素方塊改為長方體柱,使得點云可以運用于二維卷積,大大提高了模型運行速度,基于點云的卷積神經網絡算法有了實時檢測的可能。經編碼處理后的點云數據可以被卷積神經網絡處理,從而將深度學習方法用于點云目標檢測之中,其總體結構如圖5所示。

圖5 基于點云的目標檢測總體結構框圖
1.5.1點云編碼框架
點云編碼框架如圖6所示。

圖6 點云編碼框架示意圖
實驗采用Velodyne VLP-16激光雷達的最遠感應距離100 m,編碼點云的取值范圍是:橫向X軸正、負半軸各39.68 m,縱向Y軸正半軸69.12 m,豎向以雷達中心為Z軸原點,向上取1 m,向下取2 m。要對點云進行編碼,首先在點云X-Y平面中劃分一個個固定大小的格子(如圖7所示),每個格子的邊長是0.16 m,格子沿Z軸縱向延伸就成了點云柱,每個點云柱中包含若干個點。

圖7 點云柱格子劃分示意圖
點云中每個激光點有8個維度(D)的信息:(x,y,z,r,s0,s1,s2,s3),(x,y,z)表示點的3維坐標,r表示激光點照射到物體表面的反射強度。s0,s1,s2,s3分別表示為4個類別(汽車、行人、騎行者、背景)的語義分數。再將點云的信息維度擴充至13維:(x,y,z,r,xc,yc,zc,xp,yp,s0,s1,s2,s3),(xc,yc,zc)表示當前點相對于點云柱內所有點平均值的偏差,(xp,yp)表示當前點相對于點云柱中心的距離,有關偏差可由以下公式計算。

(6)

(7)
式中:N表示點云柱內點的數量,最大值設為100,不足100的點云柱補0,超過100的點云柱隨機采樣100個點。再設P為當前幀點云X-Y平面所能劃分的點云柱數,即將點云信息從(x,y,z,r,s0,s1,s2,s3)變為了(D,P,N)形式的張量,此時D=13;然后通過全連接運算將D升至64維,再經過最大池化,將每個點云柱內的點數壓縮成1,最大池化只取具有代表性的點,點云數據變為(C,P)形式的張量,C為通道數。之后將所有點云柱尺寸相加得到當前幀點云數據的總尺寸(H,W),經上述變換之后,每個H×W大小的空間內存放著一幀內所有點云柱的某一個特征維度的數據,總共有64個特征維度,因此點云數據形式變為(C,H,W),至此,點云數據被編碼為可直接輸入卷積神經網絡的張量。
1.5.2主干網絡
主干網絡采用與文獻[5]類似的結構,如圖8所示。

圖8 主干網絡結構示意圖
1.5.3檢測頭
使用SSD網絡作為整個算法模型的檢測頭,檢測頭共輸出3種數據:分類檢測、檢測框回歸、方向預測。分類檢測每個區域有6個anchors,每個anchor的類別概率是一個3維度的數據,共有18維;檢測框回歸的每個檢測框都具有7個維度的值,分別為(x,y,z,w,l,h,θ),(x,y,z)為檢測框中心坐標,(w,l,h)為檢測框寬、長、高,θ為檢測框朝向角;方向預測使用Softmax函數預測離散的旋轉角(朝向)類別。ground truth和 anchor之間的定位回歸殘差定義為

(8)

損失函數參考文獻[7],檢測框定位回歸損失函數采用SmoothL1函數,其可以有效防止梯度爆炸。
(9)

(10)
式中:Δb為定位回歸殘差。式(10)中:β為系數,通常取1。分類損失采用在交叉熵損失函數基礎上改進的focal損失函數,能夠降低負樣本的權重。
Lcls=-αa(1-pa)γlogpa
(11)
式中:pa為anchor的類別概率;α和γ為常系數,分別取0.25和2。因為定位損失無法區分檢測框完全正向和完全逆向,因此使用交叉熵損失Ldir預測檢測框的方向,總損失函數為
(12)
式中:Npos為真陽性anchor的數量;β為系數,βloc取2,βcls取1,βdir取0.2。
為了優化損失函數,使用初始學習率為2×10-4的Adam優化器,每15個epochs將學習率衰減0.8倍,并訓練30個epochs。
由于激光雷達和可見光相機安裝位置不同,所采集數據的中心坐標也不同,為使二者能夠統一融合處理,需要對激光雷達和可見光相機進行聯合標定。實驗使用Autoware軟件中的標定工具Calibration Toolkit進行聯合標定。
在ROS中分別啟動激光雷達和可見光相機,將棋盤格標定板置于傳感器前方,并變換方位與角度,采集好雷達和相機標定用數據。打開Calibration Toolkit標定工具,界面如圖9所示,選定與棋盤格靶標對應的點云,選定若干組后進行標定計算得到相機內參,畸變參數,相機到雷達外參。

圖9 Calibration Toolkit聯合標定界面
以一輛中華V3轎車進行改裝作為實驗平臺,如圖10所示。采用Velodyne VLP-16作為激光雷達傳感器,視覺傳感器采用維視無人駕駛MV-EM130C工業相機。

圖10 實驗汽車實物圖
計算機硬件配置為:CPU Intel Xeon E5-2678 v3,GPU NVIDIA GeForce RTX 2080 Ti,RAM 62 GB。模型部署計算機硬件配置為:CPU Intel i5 8300H,GPU NVIDIA GeForce GTX 1060,RAM 16 GB。計算機需要搭載的軟件及其版本如表1所示。

表1 計算機軟件版本
機器對目標的預測判斷有表2所示4種情況:

表2 預測結果分類
精確率(Precision)是衡量機器識別真陽性樣本準確程度的指標,其計算公式為:
(13)
召回率(Recall)衡量機器對目標檢測的全面程度,反應樣本中有效目標被檢測出來的概率,其計算公式為:
(14)
單一的精確率無法反映漏檢的情況,單一查全率無法反映誤檢的情況。綜合考慮模型的準確性和全面性,故本算法以AP(Average Precision)值(平均精度)來綜合衡量算法性能,具體為:以Recall為橫軸,Precision為縱軸繪出曲線,對曲線積分即得到AP值。其值越大,代表算法性能越好。
用上節所示實驗平臺在學校內采集道路數據樣本對算法進行驗證,效果如圖所示。由圖11、12可見,本算法能夠在同一幀數據中識別汽車、行人等多個目標,并在點云中用3D檢測框標識出目標的位置和基本朝向。

圖12 實驗測試結果
在KITTI數據集對本融合算法進訓練,并對結果進行評估,AP(平均精度)為評價指標,值越大越好。其結果對比如表3所示。

表3 各算法在KITTI測試數據集AP的性能對比 %
相比于僅依賴點云信息的PointPillars基線算法,本融合算法在簡單汽車樣本檢測方面并無優勢,但在小目標樣本如(騎行者、行人)檢測時優勢較大。騎行者檢測平均性能提高了9.14%,尤其在困難騎行者樣本中領先幅度高達10.66%。行人檢測方面,平均性能提高了9.71%。相對AVOD-FPN經典融合算法,本算法在速度上也有較好的表現,檢測速度達到43 fps,能滿足實時性要求。而相對于依賴圖像的算法對光線十分敏感,融合算法的環境適應性和魯棒性更強。
1) 在原語義分割算法中加入條形池化模塊,提高了算法對行人等細長型目標的敏感度。
2) 對比使用純點云的檢測方法,本算法對行人、騎行者等遠距離小目標有更好的檢測精度。
3) 交通參與者這類目標檢測研究,對于無人駕駛汽車而言有重要意義。
4) 本文中的實驗環境均為良好光照條件,如何提升惡劣天氣下的準確檢測率是進一步研究的方向。