鄒 凱,郭云鵬,陳升東,袁 峰
(廣州中科院軟件應用技術研究所,廣州 511466)
近年來,自動駕駛引起了研究者的廣泛關注,自動駕駛技術包括感知與理解、定位定向、自主規劃、決策控制等部分[1],感知與理解是自動駕駛中關鍵技術之一,算法通過傳感器對障礙物進行檢測,按照傳感器所處環境不同分為車載感知算法與路側感知算法,路側傳感器部署在道路側邊燈桿等設施上,通過汽車到基礎設施(Vehicle-to-Infrastructure,V2I)融合車載感知算法結果完成超視距感知[2].路側感知算法使用的傳感器有激光雷達、攝像頭等,激光雷達因其不受光照條件影響,直接獲取物體三維信息等特點,使得基于激光雷達的感知算法成為主要的方向之一[3–5].
深度學習近年來在計算機視覺任務上獲得了一系列的成果[6–8],基于深度學習的感知算法同樣也吸引了廣泛的關注.基于激光雷達的深度學習感知算法需要對激光雷達點云進行標注,而由于點云數據是三維數據且具有稀疏性,相對于二維圖像更難標注,標注工作需要耗費大量的人力物力成本[9],且現行的主流感知算法都是基于車載激光雷達[10],而路側激光雷達由于所處環境、放置方式不同,使得車載感知算法泛化到路側感知算法上魯棒性較差,所以如何構建性能良好的基于深度學習的路側感知算法,并減少對點云標注的需求,使得算法能在實際應用中快速部署,是目前路側感知算法的重點與難點.
面對該問題,本文提出了一種基于柵格(grid)聚類的路側感知算法,并通過LGSVL 仿真平臺(LGSVL Simulator)模擬路側激光雷達獲得點云,研究模擬點云在算法訓練中的應用.基于柵格聚類的路側感知算法首先將點云進行柵格化,并將柵格內點云轉化為統計特征,再構建全卷積網絡對柵格特征進行多任務學習,訓練后的網絡獲得柵格的分類、聚類、高度等初級語義信息,最后采用聚類算法將初級語義信息進行聚類,完成端到端感知輸出.模擬點云是為了能在路側感知算法訓練中替代真實點云,減少點云標注數量,所以本文設計多組應用模擬點云的實驗,驗證在網絡訓練中模擬點云對算法的幫助.
實驗結果表明,本文提出的路側感知算法兼具實時性與準確性,能有效的識別障礙物,并已部署在路側邊緣計算設備實地使用,模擬點云的不同方案實驗結果也證明模擬點云有助于路側感知算法的訓練,減少了真實數據的標注依賴,節約了算法實際應用中的標注成本.
本文主要的貢獻體現在以下3 個方面:
(1)提出一種基于柵格聚類的路側感知算法,以路側激光雷達點云為輸入,對點云進行柵格特征表示,構建深度學習網絡進行多任務學習,通過柵格聚類完成端到端感知.實驗結果表明該算法具有較好的實時性與準確性,且已實際應用于路側感知平臺.
(2)利用仿真平臺模擬路側激光雷達環境并獲取模擬點云,通過不同的實驗研究模擬點云在感知算法上的應用.實驗結果表明,模擬點云通過混合數據集、預訓練模型可以增強感知算法的魯棒性,減少對真實標注點云的依賴.
(3)通過已部署的路側激光雷達采集點云數據,并通過人工標注的方式進行標注,構建了路側激光雷達點云數據集并開源,有效解決了路側激光雷達點云數據集的缺失.
點云數據是在歐式空間下的點的一個子集,點云數據具有無序性、點與點的連接性、旋轉不變性3 個特征[3],所以根據點云特征的表征方式可將感知算法模型分為:基于體素模型(voxel-based models)方法、基于原始點云模型(points clouds based models)方法、基于圖模型(graph-based models)方法、基于投影柵格模型(view grids based models).
基于體素模型的方法是將三維點云劃分到體素(voxel)中,文獻[3]中提出VoxNet 網絡,對體素進行隨機采樣歸一化,利用三維卷積模型學習全局特征張量.基于原始點云模型的方法是將原始點云作為特征,文獻[4]提出PointNet 網絡,模型通過多層感知機獲取每個點云的空間特征,再通過空間轉化網絡(spatical transform network)級聯為局部特征.基于圖模型的方法是將點云轉化為圖結構數據,以點作為圖中的節點(node),以點之間的關系作為圖中的邊(graph),文獻[11]提出EdgeConv模型,利用動態圖卷積學習局部特征.基于投影柵格模型是將點云進行鳥瞰視角(Bird’s Eye View,BEV)投影或前視圖(Fornd View,FV)投影再柵格化進行特征表示,文獻[12]提出了一種PIOXR 網絡,利用一步檢測器對BEV 投影的柵格進行學習.
基于體素模型的方法運算速度較快,但是會損失體素內點的信息[13];基于原始點云模型的方法保留了點的幾何特征,但是運算效率較低;基于圖模型的方法增加了點之間的相互信息,但是運算效率較低.本文采用基于體素模型,具有較好的運算精度與效率,同時針對點云柵格化損失部分信息,本文提出一種柵格統計特征表示,即兼具了該方法的運算效率也保留了柵格幾何信息.
深度學習中使用模擬數據的應用也越來越多,文獻[14]利用域隨機化模擬真實圖像,并在真實圖像上進行fine-tune 實驗.文獻[15]通過增強現實技術,將虛擬引擎中的物體放置到真實環境圖像中,并利用混合數據進行對比實驗.文獻[16]通過pointNet 模型將真實點云的前景與背景分離,再將模擬物體的點云設置到真實點云的背景中生成模擬點云,通過感知算法結果對比了兩種點云的相似性.本文采用LGSVL 仿真平臺構建路側激光雷達并獲取雷達點云,并通過實驗探索模擬點云在感知算法上的應用.
本文提出的路側感知算法對交通參與者進行檢測,輸入路側激光雷達點云,輸出交通參與者的三維邊界框(bounding boxes),實現端到端的交通參與者目標分類與檢測.算法流程如圖1所示,本節將介紹如何進行點云特征表示,網絡結構,聚類,以及在模型訓練與驗證中的細節.

圖1 基于柵格聚類感知算法示意圖
路側激光雷達獲取到的點云是三維、非機構化數據,而標準卷積需要結構化數據,所以本文采用將三維點云柵格化,再結合每個柵格的物理特性,通過統計來獲得每個柵格的特征.激光雷達根據回波時間(Time Of Flight,TOF)原理掃描檢測范圍內的所有物體,而路側感知算法主要關注道路及交通參與者,所以限定每幀點云以雷達為原點范圍L×W×H為檢測區域,檢測區域離散化為柵格,每個柵格的分辨率為dL×dW×dH,即將點云轉化為一個L/dL×W/dW×H/dH的張量.可視化結果見圖2.

圖2 Offset 向量在柵格內的可視化
點云被離散到柵格中,每個柵格所含的點云數目與點云的空間分布相關,根據感知算法對點云物理特性需求,本文將每個柵格轉化為一個8 通道的特征向量.特征向量各通道含義分別為:最高點高度、平均高度、柵格朝向、柵格距離、最大反射強度、平均反射強度、點云數量、非空柵格標志.最高點高度表示柵格內最高點云的高度,平均高度表示柵格內所有點云的高度平均值,這兩個特征表征了點云高度信息,由于等交通參與者在高度上具有區分性,高度特征可以排除樹木、樓棟等干擾也可以區分交通參與者類別.柵格朝向表示柵格中心在雷達坐標系中的角度,柵格距離表示柵格中心距離雷達距離,這兩個特征表征了激光雷達掃描時近密遠疏的特性,柵格與雷達的幾何關系.最大反射強度表示指柵格內最大反射強度,平均反射強度表示柵格內平均反射強度,這兩個特征表征了點云反射強度信息,不同材質的物體反射強度不同,反射強度信息有助于物體的分類.點云數據表示柵格內點云的總數,非空柵格標志表示標識該柵格是否有點云的標識,這兩個特征表示了點云內點的分布情況,由于點云具有稀疏性,所以具有沒有點云的空柵格,空柵格與有點柵格的排布表征了點云在空間中的排布情況.經以上柵格化與統計特征表示后,每幀點云可以轉化為維度為L/dL×W/dW×H/dH×8的特征張量.
路側感知算法構建基于全卷積的網絡進行多任務學習,對每個柵格進行分割,獲取物體檢測的初級語義信息.如圖1所示,輸入柵格特征,深度學習網絡通過下采樣(down sample)對柵格特征進行卷積,4 次下采樣后分辨率分別為原始柵格特征的1/2、1/4、1/8、1/16、1/32,網絡無需采用待選框(proposal),再通過轉置卷積[17]上采樣(up sample)對特征的分辨率進行還原,最終學習到一個8 通道的熱圖(heat map).
如圖3所示為深度學習網絡結構示意圖,其中輸入即為2.1 節中的點云8 通道特征,圖中{C1,C2,C3,C4,C5}表示下采樣中的各特征層,以特征圖的分辨率可以分為5 層,{D1,D2,D3,D4,D5}表示上采樣部分,中間橫向箭頭表示跳層連接.

圖3 深度學習網絡結構示意圖
下采樣的網絡參數如表1所示,表中input size與output size 分別表示輸入與輸出該特征層的張量大小,8×N×M即為8 通道的點云特征,layer 列中大括號表示了該特征層中還有的卷積層,每層卷積由4 個數字表示,分別表示卷積核大小、卷積步長、填充、卷積核通道數,例如C1 特征層中的第一個“1×1,1,0,24”分別表示該層卷積的卷積核為1×1 大小,卷積時的步長為1,填充(padding)為0,卷積核的通道為24.特征圖經過下采樣后,獲得的輸出為192×N/2×M/2 的高語義低分辨率的特征圖.每一層卷積后都采用ReLU 非線性激活函數.

表1 下采樣網絡各層參數表
如圖3所示,上采樣的階段,使用轉置卷積對高語義特征進行轉置,再通過跳層連接將下采樣中同一分辨率的特征圖進行拼接,如表2所示上采樣中各層的參數,其中TConv 表示為轉置卷積.

表2 上采樣網絡各層參數表
網絡輸出熱圖8通道分別表示為:x軸偏移量(offset)熱圖、y軸偏移量熱圖、背景點熱圖、地面點熱圖、交通參與者點熱圖、高度熱圖、x軸朝向(heading)熱圖、y軸朝向熱圖.x軸熱圖偏移量、y軸偏移量熱圖分別表示柵格在x、y軸上距物體重心的距離,將兩個熱圖中的值以箭頭的形式表示在原始點云上,在雷達坐標上x、y軸的偏移量表示為一個向量,其值顯示了朝向物體中心點聚集的趨勢.背景點熱圖表示該柵格是否是背景點云柵格,點云柵格中還有樹木等背景點云,背景點熱圖用于背景柵格過濾.地面點熱圖表示該柵格是否是地面點柵格,地面點熱圖用于過濾地面點柵格對檢測的干擾.交通參與者熱圖表示柵格為交通參與者的標志,交通參與者為大車、小車、非機動車、行人,交通參與者熱圖用于物體分類.高度熱圖表示柵格的高度,用于異常高度柵格的過濾.x軸朝向熱圖x、y軸朝向熱圖分別表示柵格在x、y軸的朝向,用于聚類中向量的計算.
感知算法網絡對分類、檢測進行多任務學習,在網絡訓練時采用多任務損失函數(multi-task loss)[18]對類別、高度、朝向、偏移量進行學習.本文采用Focal loss[19]對類別進行分類,SmoothL1 loss 對高度、朝向進行回歸,對數比率損失函數對offset 進行回歸.

網絡總損失函數由4 個函數加權求和,如式(1)所示,其中N表示多任務學習中損失函數的個數,本文中N=4,λ表示加權系數,加權系數與損失函數個數有關λ=1/N,L0到L4分別為分類損失函數Lcls、高度損失函數Lhei、朝向損失函數Lhead、偏移量損失函數Loffset:

由于點云柵格中有背景點干擾,且交通參與者中各類別出現的數目不一致,所以在分類任務中有類別不平衡問題,所以本文采用如式(2) 所示focal loss作為分類損失函數,其中P表示含有所有點云的柵格總數,α表示各種不同類別點云的權重,其中背景點柵格權重為0.1,地面點柵格權重為0.75,交通參與者柵格權重為0.9,pi表示網絡輸出該柵格的分類概率,γ為2.


高度值、朝向值回歸時,由于點云的稀疏性以及背景點的干擾,在回歸任務時候容易出現離群點,離群點會使得損失函數變大,反向傳播過程中梯度增大,從而影響其它任務的收斂,本文采用Smooth L1 損失函數如式(3)、式(4)所示,其中式(3)表示高度回歸損失函數,g表示預測的高度值,表示真實的高度值,P表示有點柵格的掩模(mask)矩陣,矩陣由布爾數值組成,有點云的柵格為1,沒點云的柵格為0.Smooth L1 函數如式(5)所示,其中 β默認設置為10.式(4)表示朝向回歸損失函數,h表示預測朝向,表示真實朝向.

Offset 的回歸損失函數如式(6)所示,由式(7)所示x軸的offset 回歸函數與式(8)所示y軸的offset回歸函數求和組成.
深度學習網絡通過多任務損失函數學習到每個柵格學習的類別、偏移量等信息,每個目標物體是由空間中的多個柵格組成,屬于同一物體的柵格具有相似的物理特性,所以本節通過均值漂移聚類算法將柵格聚類成物體.
如圖4所示為聚類初始點的計算,通過深度學習網絡學到了8 通道熱圖,遍歷柵格,先通過背景點熱圖過濾背景點柵格,剩下前景點柵格,深度學習網絡學習到的x、y軸偏移量熱圖表示的是該柵格對目標的偏移量,根據該信息構建該柵格的并查集,并將不相交集合進行合并,再通過高度熱圖對并查集過濾,過濾掉不符合高度的柵格,其剩下的即作為聚類的初始點.

圖4 聚類初始點選取
均值漂移公式,如式(9)為漂移向量計算公式,x為初始聚類原點,聚類原點的選取是根據網絡學習到的在該原點半徑為h的范圍內共有n個點云,遍歷每個點云xi與x的offset 向量距離并求和,其中ck,d/nhd表示單位密度,k為高斯核函數.

迭代式(9),每次使得式(9)獲得最大偏移向量,即將如式(10)其求導


mh,G(x)表示Meanshift 向量,新迭代的原點即為式(12)為零時候x的值.

通過漂移聚類,將一個物體的柵格聚類到一個范圍內,再對聚類中同一物體柵格類別進行統計,置信高的即為該物體的類別.再通過柵格高度回歸值對異常高度進行過濾,輸出端到端物體.
機械式激光雷達通過激光束的旋轉掃描物體,本文模擬16 線機械式激光雷達,水平測角為360°,垂直測角為–15°~15°,垂直測角分辨率為2°,垂直范圍內共16 線激光光束,激光雷達掃描結果以點云的形式儲存,點云反應了被掃描物體的距離與反射強度,距離值轉化為激光雷達為原點的x,y,z坐標,與反射強度共同構成點云的4 維信息.
本文采用LGSVL 仿真平臺[20]模擬路側激光雷達環境,并設置動態交通參與者生成模擬點云.LGSVL是一款開源的專注于自動駕駛的仿真平臺,基于Unity虛擬引擎,提供環境模擬與各種交通參與者的模型,同時可以在虛擬環境中模擬傳感器的收發.LGSVL 仿真平臺中的激光雷達可配置參數,LGSVL 仿真平臺構建路側激光雷達設置的部署,在路側端設置3.6 米高,雷達朝向道路來車方向,為了掃描道路中的物體,將雷達pitch 角度偏轉31.25 度,并設置雷達模型中測距參數為150 米.
如圖5所示模擬點云與真實點云對比圖,圖5(a)為經過LGSVL 模擬的模擬點云圖,圖5(b)為真實點云圖,圖中藍色框為大車,紅色框為小車,從圖中可以看出,經過LGSVL 仿真平臺模擬真實環境與路側雷達放置方式,在雷達近端呈現的點云與模擬的相似,只是在道路周邊建筑物,遠端點云的稀疏后的噪聲有所不同,但是作為路側激光雷達還是對道路上的機動車數據進行了大量的補充.

圖5 模擬點云與真實點云
文利用真實的路側激光雷達點云數據對感知算法進行訓練與驗證,通過端到端的交通參與者類別、位置的輸出來驗證算法的性能.通過LGSVL 仿真平臺模擬點云,利用感知算法在模擬點云與真實點的混合數據集上訓練,在模擬數據集上預訓練模型的結果來驗證模擬點云對路側感知算法的幫助.
用于自動駕駛上的點云數據大多數是自動駕駛汽車利用車載激光雷達采集,本文提出的路側激光雷達應用于路側激光雷達點云,所以本文利用部署在路側的激光雷達采集了1700 幀點云,其中1300 幀作為訓練集,400 幀作為驗證集.點云通過人工進行標注,所使用的雷達為速騰聚創16 線機械式激光雷達,雷達所處環境如圖6所示園區內主干道,激光雷達pitch 角傾斜31.25 度.LGSVL 仿真平臺構建如圖7所示的環境,并按照路側激光雷達一樣的參數設置仿真雷達,通過設置交通參與者進行點云的采集.本次模擬點云32 045 幀,其中27 304 幀為訓練集,4741 幀為驗證集.

圖6 路側激光雷達部署場景
本文的數據集分為模擬點云數據集與真實點云數據集,感知算法在真實點云上進行感知算法的訓練與測試.路側感知算法只需要檢測道路上交通參與者,所以訓練選擇點云范圍為,柵格分辨率為0.1875,使用平移、旋轉、旋轉對點云進行數據增強,offset 采用指向凸包重心的向量.
如表3所示,訓練數據集采用真實點云(Real),模擬點云(Sim),訓練后的模型分別在兩者驗證集上進行驗證.感知算法在真實點云上的實驗反應了感知算法的性能,其中感知算法端到端檢測precision為84.67%,recall為98.27%,結果證明該算法端到端檢測性能具有良好的性能,滿足路需求.在兩者數據集交叉實驗中,基于模擬點云數據訓練的算法泛化在真實點云數據上性能較差,證明模擬點云與真實點云還具有一定差異,不能直接在感知算法中代替真實點云進行訓練.

表3 感知算法單一數據集算法性能
如表4所示,采用真實點云與模擬點云混合數據集進行如表4所示,采用真實點云與模擬點云混合數據集進行測試.實驗結果證明,利用混合數據時precision高于2.46%,F1 高于1.13%,mAP 高于1.94%,證明了模擬數據增強了感知算法的準確性.

表4 感知算法混合數據集訓練算法性能
如表5所示,采用模擬點云的預訓練模型,在真實點云上進行訓練.實驗結果證明,當利用預訓練模型再利用所有真實數據訓練時,其各項評價指標相差不太,但是若用預訓練模型在20%真實點云上訓練時,precision提高1.49%,recall、F1、mAP 有所下降,但是減少了80%點云數據訓練,由此可以看出,在犧牲算法一定性能下該方法可以減少許多數據標注工作.

表5 感知算法在真實數據fine-tune 性能
如表6所示,將本文的算法分布部署在Nvidia GTX 1070與Nvidia Jestson AGX Xavier 顯卡上進行端到端模型評估時各部分所用時間,feature 列表示點云特征處理所用時間,inference 表示深度學習模型推理所用時間,cluster &box 表示聚類及畫物體框輸出所用時間.實驗中點云特征處理由C++編寫,利用PCL 庫對點云進行過濾.深度學習模型轉為onnx 格式,并利用TensorRT 進行加速.利用ros 畫物體的框并輸出,如圖7第2 行所示,輸出物體的類別信息,概率值,框體與距離雷達的距離等.本次實驗是通過實時測量雷達點云數據時所求得的平均值,從表4可知各部分的耗時,所使用16 線機械式激光雷達頻率為10 Hz,工程上要求算法處理每幀點云小于50 ms 即可,本文的算法在本地GPU 設備GTX 1070 上約為8 ms,在邊緣計算設備Jetson AGX 上約20 ms,均小于50 ms,符合實時性與工程性要求.

圖7 感知算法輸出

表6 感知算法計算效率
本文提出的一種適用于路側激光雷達的路側感知算法,對交通參與者進行分類與檢測,檢測性能良好,算法部署在邊緣計算設備上并達到每幀約20 ms 的實時性能.此外本文利用仿真平臺模擬路側激光雷達并采集點云,利用模擬點云在感知算法訓練上的應用,證明了模擬點云通過混合數據、預訓練模型上可以幫助感知算法訓練增強性能,在一定程度下可以減少算法對標注數據的依賴,減少標注工作量.
由于本文研究的路側感知算法應用于路側激光雷達,本文感知算法的泛化性、魯棒性還需要在更大樣本的實驗數據中進行進一步驗證和提升,在后續的研究中,關注實驗樣本庫的構建,進一步對算法性能進行改進.