公開課精華 | 無人駕駛中感知的挑戰與嘗試

深藍學院發表於2020-12-24

 

本文總結於深圳元戎啟行公司點雲感知方向技術負責人鄒曉藝,在深藍學院的關於無人駕駛中感知的挑戰與嘗試的公開課演講內容。

全文約3500字

 

主講人鄒曉藝來自深圳元戎啟行公司,曾在百度IDL和ADU部門工作過,是百度 apollo::lidar::cnnseg演算法的作者,也是CSDN相關領域的博主。

圖片

公開課大綱

1. 無人駕駛中感知的簡介

2. 無人駕駛中感知的挑戰

3. 基於Deep learning的感知演算法

4. 基於Physical的感知演算法

5. 一些思考和一些open problems

 

圖片

 

1. 無人駕駛中感知的簡介

下圖是一個無人駕駛系統的流程框圖。

圖片

Picture from: Chen S, Liu B, Feng C, et al. 3d point cloud processing and learning for autonomous driving[J]. arXiv preprint arXiv:2003.00601, 2020.MLA

前端sensor獲取環境中的資訊,送給感知模組和定位模組,感知模組將輸出資訊輸入到預測模組,進行軌跡速度等預測,然後進行決策和汽車控制。無人駕駛的感測器有多個sensor,如下圖是元戎啟行的汽車感測器(車頂部分),中間有一個主雷達,兩邊有兩個盲區雷達,然後四周也有RGB普通的攝像頭。

在汽車行駛過程中,從感測器中獲得的資料如下圖,下面的是鐳射雷達感測器的資料,上面是RGB攝像頭的資料。

無人駕駛中的感知部分功能有3D目標檢測、目標跟蹤、紅綠燈檢測、目標軌跡預測、車道線和車道線檢測等等模組。

 

2. 無人駕駛中感知的挑戰

下圖是2D圖片和3D點雲資料的不同點,2D圖片是有序規則的而3D點雲是無序不規則的。

Picture from: Cui Y , Chen R , Chu W , et al. Deep Learning for Image and Point Cloud Fusion in Autonomous Driving: A Review[J]. 2020.

接下來,主講人舉了一些例子,展示無人駕駛中感知的困難所在。

第一點,感知場景是複雜的。如下圖,感知不僅要識別出常見的車輛、擁擠的行人、自行車等,也要識別出一些標誌物、警示物、施工點和動物等等。

第二點,類內差異大。如下圖,雖然都是貨車和摩托車,但是外觀差異很大。

第三點是,類間差異小。如下圖是三種鐳射雷達得到的不同車尾的資料,由於缺少了紋理資訊,貨車、公交車等車在鐳射雷達中看到的區別很小。

第四點,未定義的類別。如下圖,感知過程中會有一些諸如倒下的單車、輪胎、玩具等未定義的物體出現。

Picture from:

http://www.robosense.cn/news/1574090713599

 第五點,惡劣天氣影響,如下圖所示,這些天氣對鐳射雷達和RGB攝像頭的成像都會有較大影響。

Picture from: Kenk M A, Hassaballah M. DAWN: Vehicle Detection in Adverse Weather Nature Dataset[J]. arXiv preprint arXiv:2008.05402,2020.

第六點,噪聲。如下圖,在汽車行駛的過程中,不僅有感測器的噪聲,也會有環境的噪聲,如路面濺起的水花,揚起的灰塵。

 

第七點,移動端實時性和功耗。無人駕駛的演算法複雜,感測器獲得的資料量多,但由於功耗限制,自動駕駛車載計算單元的算力是非常有限,同時無人駕駛需要滿足低延時的要求。所以要求感知模組需要在這有限算力的基礎上對這些資料進行實時的處理。

 

3. 基於Deep learning的感知演算法

接下來介紹基於Deep Learning的相關無人駕駛感知演算法。分為兩個部分,一個部分是基於點雲的3D目標檢測,另一個是基於影像和點雲的Fusion演算法。

首先是基於點雲的3D目標檢測。下圖是一幀點雲,任務目標就是用長方體框檢測出點雲中的目標(位置、大小、朝向和類別等等)。

鐳射雷達生成的點雲是稀疏的,不規則的,無序的且缺少顏色資訊。如下圖所示,左邊是汽車點雲,右側是行人點雲,可以發現距離越遠,點雲越稀疏,這種隨著距離變化的稀疏性,也會帶來很大的挑戰。

Picture from:

http://www.robosense.cn/news/1574090713599

同時,在點雲,同一個目標有可能是不完整的,如下圖所示。左圖中間靠前位置有一個貨車,點雲只顯示了車頭和車尾,中間是斷裂的,右圖雖然把中間的貨物掃描到了,但是整體依舊是斷裂成了3部分,這種斷裂會影響到障礙物的檢測,從而影響下游的跟蹤等任務。

現在的主流3D點雲檢測的方法分為兩種,一種是基於Deep Learning的方法,其對噪聲較為魯棒,分割效果較好,但是解釋性較差。另一種是基於Physical的方法,即非機器學習的方法,可解釋性較好,但是對噪聲敏感,容易出現過分割和欠分割的問題。這兩種的方法在工程實踐中可以互相補足。

圖片

Picture from: Yang G, Mentasti S, Bersani M, et al. LiDAR point-cloud processing based on projection methods: a comparison[J]. arXiv preprint arXiv:2008.00706, 2020.

主講者認為對於Deep Learning的方法,由於深度學習特點在於如何建立分層結構,從而獲得越來越大的感受野和更高階的語義特徵。而應用到點雲上,其實就在於如何去找到點雲中點與點中間的關係,從而從鄰域中建立起不同層級的感受野。

主講者以PointNet++的結構為例,採用這種層級的結構,以k近鄰或者球型領域的方法,提取鄰域感受野特徵。

點雲還可以轉換成不同輸入形式的資料,除了直接以點集(取樣後)的形式表示,還可以以圖(graph)的形式表示,或者體素化,或者投影到鳥瞰圖(Bird’s Eye View)、環檢視(Range View)、極座標圖。

其中點雲的體素化可以使用傳統卷積運算元(3D或者2D卷積)來處理,但是缺點是有一定的量化誤差,丟失了原始點雲準確的幾何結構。不過體素化有另一個優點是可以比較容易做多尺度,即每個體素格子的大小,決定了尺度的大小,而且點雲特徵和體素特徵也可以通過操作進行相互轉化,如下圖所示》

圖片

接下來主講人介紹了幾個3D點雲檢測的工作。

OpenPCDet:這是一個商湯科技開源的3D點雲檢測庫,整合了多種3D點雲檢測方法,基於PyTorch實現。

Apollo::lidar::cnnseg:這是主講人在百度的工作,網路採用類U-NET網路結構,將點雲投影到俯檢視,進行特徵提取來做檢測和例項分割。

PointPillar:提出了一種新穎的點雲編碼器,將點雲提取特徵得到Pillar(柱子)形式的稀疏偽2D影像,然後使用2D的卷積運算元進行處理,使用2D的檢測方法(如SSD)做目標檢測。

HVNet:提出了一種新的基於點雲的三維物體檢測的統一網路:混合體素網路(HVNet),通過在點級別上混合尺度體素特徵編碼器(VFE)得到更好的體素特徵編碼方法,從而在速度和精度上得到提升。

PV-RCNN:提出了結合體素化和點雲兩種特徵的新型網路結構,採用multi-scale的方法獲得由voxel_based方法得到的高質量的proposals,然後再利用Point_based的方法獲得精細的區域性資訊,該方法在很多的benchmark上的表現都很不錯。

AFDet:提出了首個Anchor free、NMS free的3D點雲目標檢測演算法,在嵌入式系統上有著較好的應用價值。

Range Conditioned Dilated Convolutions:提出一個新的卷積層,這個卷積層有一個可以根據距離來調整dilation rate,適應不同的尺度,可以較好地解決距離遠近帶來的點雲稀疏性不一致的問題。

對以上的方法做總結:點雲特徵、投影檢視特徵、體素特徵是可以互相補足的;特徵的增強可以通過multi structure、multi scale、multi frames等方法來實現。

上述的演算法都是基於點雲的,接下來介紹一些基於影像和點雲的Fusion演算法。

由於點雲僅能得到物體的shape資訊,但是物體的顏色和紋理特徵也很重要,此時就需要去融合影像的演算法。一個有趣的地方是點雲可以通過標定,投射到關聯的影像上,如下圖所示。當然,這種投射不是一對一的,因此是需要做插值的,如雙線性插值。

圖片

影像和點雲的Fusion有兩種方式,一種是Result-level fusion,一種是Feature-level fusion。

前者是每個sensor自己處理自己的資料,在結果上做fusion,好處是其中一個sensor出故障了,不會導致整個系統掛掉,比較好做感測器冗餘,缺點是不能很好融合不同sensor的特徵,效能受限於單個感測器的效能上限。

後者是直接在特徵上做融合,能提供互補的資訊,值得注意的是,這種方法需要做的一點是如何融合各個sensor的優勢特徵,去除每個sensor的劣勢特徵(如影像容易受光照影響,點雲容易受雨霧天氣影響)。

接下來主講人介紹了幾個影像和點雲的Fusion的工作。

MV3D:提出了一個多視角(Multi-View)的3D物體識別網路(MV3D),採用多模態的資料作為輸入和預測3D空間的目標。從點雲裡面提特徵出proposal,再在每個view上的特徵提取關於proposal的特徵,做檢測。

sensor fusion for join 3d object detection and semantic segmentation:將點雲特徵和影像特徵,在特徵級別拼接到一起,然後使用LaserNet做檢測和分割。

PointPainting:將影像的語義分割資訊通過lidar資訊和image資訊的變換矩陣融合到點雲上,再做檢測。

SemanticVoxels:同樣是將影像的語義資訊融合到點雲裡,在通過融合pillar和voxel的特徵做檢測。

EPNet:網路分為點雲特徵分支和影像特徵分支,在兩個分支的不同的level上,做了二者的特徵融合,融合的過程中新增了attention模組。

MVAF-Net:在不同的view的特徵上,做attention,並且在attention模組也新增監督資訊。

總結以上方法:fusion方法雖然很重要,但是在benchmark上提升並不明顯;還有一個問題是,目前似乎比較少研發去探索,某個sensor丟失資訊了,是否會導致融合的模型出現意想不到的結果。

 

4. 基於Physical的感知演算法

雖然基於非深度學習的方法有很多問題(對噪聲敏感等),但是為什麼還要繼續使用它呢?

比如在實際路測中,總會遇到深度學習演算法中沒有定義的物體,或者資料量很少(長尾分佈)的物體;或者有的物體並不適合用bbox來描述從而不適用於檢測任務,在這些情況,傳統方法更合適。

傳統方法怎麼做呢?簡單來說就是“你看到啥就是啥,別撞上就行”,就是認為點雲有的東西,實際物理世界中是存在的,不能碰撞的。方法就是去除地面,進行聚類。關鍵在於如何讓演算法更穩定和更高效。

然而基於Physical的感知演算法,也有一些問題。同一個物體在不同幀間的聚類是不穩定的,也因此不容易預測物體的運動速度;有的物體,例如揚起的灰塵,並不會影響駕駛,但是容易被識別成障礙物,因此需要增加一些去噪(灰塵等)的方法。

主講人還提到使用全景分割的方法,將整個感知系統,置於一個網路中,採用multi-task的方法去做檢測。同時也需要融合更多的時序上的資訊來做檢測。

 

5. 一些思考和一些open problems

主講人講了自己的一些關於無人駕駛的思考和一些open problems。

1. 學術界和工業界是有一定的鴻溝的。在benchmark上的效果有時候並不一定能反應路測的效果。

例如有綠化帶隔離的對向車道的物體在路測中並不需要特別高的精度,但是在benchmark上是一視同仁的,在benchmark上提升了好幾個點的演算法,在路測中對接管率而言也許並沒有帶來多大的效果提升。

還有就是有些非常影響駕駛的障礙物,不一定能在benchmark的幾個點的提升中反應出來。這些鴻溝激勵著我們去思考如何制定一個更符合現實無人駕駛場景的評價準則,包括檢測、跟蹤、速度預測、推理速度等評價準則。

2. 演算法模型的泛化性很重要,因為現實資料是無法窮舉,遇到一些檢測失敗的例子,也不容易分析和去做修正,畢竟模型是不易解釋的,只能不斷增加資料。

但越到後面,幾個點的效能提升需要的資料可能是指數級的,這是需要大量成本的,但似乎人的學習是沒這麼低效的,人往往從少量的樣本就可以學習非常高層的語義,從而具有非常大的泛化性。

這也是整個機器學習鄰域需要研究的點。另外,不可解釋性也會使得模型更容易受到攻擊。而且增加資料訓練是否修復了當下cases,但也影響了之前的cases。

3. 軌跡預測的groud truth有一些是不確定的,如在離轉彎口還有一定距離的時候,真實場景中,人類也不知道前車是否轉彎等等這種情況,拿這些groud truth去訓練網路,網路也會很困惑。

無人駕駛是一項很有挑戰性很有趣的工作,希望有更多的朋友加入這個行業,共同推動這個行業的發展。

 

相關文章