隨著激光雷達的上車數量的不斷攀升,如何用好激光雷達成為了重中之重,而用好激光雷達的關鍵點之一就在于處理好點云數據。
激光點云指的是由三維激光雷達設備掃描得到的空間點的數據集,每一個點云都包含了三維坐標(XYZ)和激光反射強度(Intensity),其中強度信息會與目標物表面材質與粗糙度、激光入射角度、激光波長以及激光雷達的能量密度有關。
為了更進一步解釋清楚點云,筆者梳理了點云的相關參數和特點。
表:激光雷達點云的相關參數
表:點云的特點
從點云的采集原理來看,以ToF路線的激光雷達為例,激光點云是由車載激光掃描系統向周圍發射激光信號,然后收集反射回來的激光信號得來的,并通過光速、激光從發射到返回的時間等信息來測得目標物的距離信息,再結合IMU、里程計、GNSS等信息計算出前方目標物的三維坐標信息和距離信息。
此外,在點云的采集和分析過程中,感知算法人員需要根據車載激光雷達的特點與工作原理,并結合激光雷達的角分辨率、視場角等相關參數,才能更好地利用點云。
那么,激光雷達點云在車端的處理環節中,具體有哪些處理過程和方法?又如何優化?
此后,為了驗證這些問題,筆者先后訪談了圖達通算法負責人許建博士和系統及應用負責人Leon、上汽高級經理殷瑋、縱目科技感知算法工程師湯強、禾賽科技的專家等。在此,筆者感謝各路專家給予的支持,并整理出如下系列的文章,以供讀者參閱。
以下為激光點云處理系列文章的第一篇內容。
激光雷達點云處理的具體流程
聊完何謂點云及其特征后,下文將繼續分析激光雷達點云在自動駕駛中的處理流程。在此之前,有兩點需要說明。
其一,激光雷達點云被用于感知和定位時,點云會先完成預處理,然后按照不同用途進行不同的處理,并在點云的應用細節上也會不同。
湯強說:“激光雷達用于定位的話,算法模型會要求點云的數據量盡可能多,并且區別于感知,定位還需要道路數據。如車道線或地標,它們對于激光的反射率和普通路面的反射率是不同的,激光雷達通過這種方式來獲取路面信息的數據。激光雷達用于感知的話,它會有一個預處理的過程,會確定一個ROI范圍,隨后用這一區域的點云數據來完成后續的檢測?!?/p>
其二,每家企業在點云的具體應用過程中,還會根據各自技術方案與應用場景不同,會存在些許處理流程上的差異,但大部分處理流程皆相同。
為了更詳細地闡述點云的處理流程,筆者結合專家訪談的內容與公開信息,梳理出激光雷達點云在自動駕駛應用中的普遍流程。
圖:激光點云的處理流程
01 點云預處理層面
1.1原始點云數據的接收與解析
(1)點云數據的接收
激光雷達的原始點云數據都會被存放在一個數據包里(pcap),此時數據包里面的數據都是一連串的字節符號,無法直接使用。
以Velodyne的16線激光雷達為例,原始點云數據的接收主要是通過UDP(用戶數據報協議)的形式向網絡發送數據。具體來說,在激光雷達的web端進行設置或通過命令行進行設置后,技術人員會在接收端匹配激光雷達的IP地址與自身的UDP端口號,從而即可接收原始點云數據。
從數據的內容來看,該型號的激光雷達在垂直方向上(-15°到+15°)有16線的激光束,其每幀的數據長度固定為1248字節,這些字節包括前42字節的前數據包標識、12組數據包、4字節時間戳和最后兩字節雷達型號參數。
圖:Velodyne-16激光雷達每一幀的點云數據情況
(數據來源:《Velodyne VLP-16激光雷達數據格式解析》)
每個數據包中的數據都包含了激光光束的旋轉角度、距離值、反射強度的信息。例如,“B6 07”代表了激光雷達的探測距離,“2A”代表了激光的反射強度,但這些信息都是以兩字節表示,需要進一步解析這些數據。
圖:Velodyne-16激光雷達數據包的一部分數據
(數據來源:《Velodyne VLP-16激光雷達數據格式解析》)
(2)點云數據(pcd)的解析
數據包(pcap)中的原始數據需要進一步轉換為可被感知技術人員使用的pcd格式的數據集。
點云數據的pcd格式文件是激光點云的一種存儲格式,pcd文件主要是由笛卡爾坐標(x,y,z)和強度值i組成的列表,即每個點云都會附帶獨有的三維坐標系和能量反射強度。
在這個坐標系中,x軸指向汽車的前部,y軸指向汽車的左側。由于這個坐標系采用右手定則,坐標系z軸指向汽車上方。
圖:點云pcd坐標
(數據來源:《學習筆記:點云庫PCL介紹》)
為了闡述點云數據的解析過程,筆者還是以上文Velodyne-16激光雷達的某幀點云數據包為例,并根據公開信息梳理如下。
第一步,計算激光線的旋轉角度值。
例如,上圖數據包前一部分的第一行的旋轉角度為0xE0、0x63。
a)反轉兩個字節變成十六進制63 E0
b)把63 E0變成無符號的十進制為25568
c)再把25568除以100得到255.68,那么得到的值255.68就是當前的旋轉角度值
第二步,計算16線激光分別測得的距離。
例如,上圖數據包前一部分的第一個激光線的距離,其值為“B6 07 2A”,其中“ B6 07”為距離“2A”為反射強度。
a)反轉兩個距離字節“B6 07”,將其變成“07 B6”
b)把“07 B6”變成無符號的十進制為1974
c)由于該型號激光雷達的分辨率為2.0mm,所以激光束測得的目標物距離為1974*2=3948mm
d)將3948mm轉化為米計量的單位,即3.948m
第三步,獲得該幀的時間戳和激光雷達型號參數。
例如,上圖數據包后一部分的最后六個字節的數據“6D 69 94 0F 37 22”。
a)前四個字節的數據“6D 69 94 0F”為該幀的時間戳,然后反轉順序“0F 94 69 6D”
b)將“0F 94 69 6D”轉換為十進制的值261384557微秒(μs)
c)把261384557除以1000000可獲得當前的時間,即261.384557秒(s)
d)后兩個字節“37 22”表示雷達的型號和參數
第四步,把角度和距離信息轉化為三維坐標XYZ值。
三維坐標XYZ值可通過旋轉角度α(已在第一步中求得)、垂直角度ω(每束激光線對應的固定值)和距離值R(已在第二步中求得)來綜合求出,具體的坐標換算如下圖所示。
圖:目標物點云的三維坐標計算
(數據來源:《Velodyne VLP-16激光雷達數據格式解析》)
1.2運動畸變補償
運動畸變是指在一幀時間內,激光雷達或者其載體在發生運動后,產生的點云位置不一樣的問題。
要理解運動畸變補償,我們首先要知道自動駕駛車端的激光雷達點云為什么會產生運動畸變。
其實,激光雷達發射的一幀激光點云會由多個激光點組成,而這些激光點云是由掃描器件經過一次掃描后才形成的。在靜止的場景中時,車輛處于靜止狀態且場景中的目標物也處于相對靜止狀態,那么采集到的一幀點云是沒有畸變的,每條激光線束最終會形成一個閉合的圓形。
圖:靜止狀態下的車輛點云不產生畸變
在運動場景下,如車輛高速行駛或者轉彎時,一幀點云中的起始點云和終止點云只能在不同坐標系下獲得測量結果,這便導致了三維環境信息產生了畸變。如下圖所示,當車輛在運動過程中,車端上的激光雷達在掃描完一圈后,在最后一束激光照射到目標物時,跟第一束激光照射到目標時相比,目標物的空間位置已發生了相對位移——該物體在兩個不同時刻的點云,顯示在坐標系中的信息是不同的。
?圖:目標物在不同時刻被激光照射到的情況
運動畸變補償就是為了解決上述問題——把激光在采集過程中的運動軌跡計算出來,并在對應的激光點云上補償這部分運動位移帶來的變化,將同一幀的點云統一到同一時刻的坐標系下。
為了進一步解釋運動畸變補償,某主機廠感知算法工程師舉例說:“比如,若車端配有IMU或者輪式里程計,感知算法人員就可以通過IMU和輪式里程計(或者直接用IMU)的方式,推算出0.1秒內車是怎么運動的,然后利用運動模型來做運動畸變補償。”
常見的運動畸變補償的方法:
純估計方法(ICP/VICP)
迭代最近點(ICP)方法是采用ICP算法來匹配兩個點云,通過不斷地算法迭代后,將點云之間的誤差縮至最小。
VICP方法是ICP算法的變種形式,模型假設車輛是在勻速運動,在進行匹配點云的同時估計車輛的自身速度。
迭代最近點(ICP)和VICP被統稱為“純估計方法”。
傳感器輔助方法(IMU/ODOM)
慣性測量單元(IMU)方法是在IMU隊列中查找相鄰兩幀IMU的數據,然后通過球面線性插值的方式計算掃描點所在時刻的激光雷達位姿,并應用齊次坐標系變化將兩個點云坐標變換至同一坐標系下。
輪式里程計(ODOM)方法是通過求解當前幀激光雷達數據中每個點云對應的坐標系下的里程計位姿后,再根據求得的位姿把每個點云坐標都轉化到同一坐標系下(需要轉化兩次),最后重新封裝該幀點云數據。
慣性測量單元(IMU)和輪式里程計(ODOM)被統稱為傳感器輔助方法。
融合的方法
該方法是同時使用里程計和ICP的融合方案,會先利用里程計方法進行矯正,去除大部分的運動畸變,再通過ICP方法進行匹配,得到里程計的誤差值,再把誤差值均攤到每個點云上,并重新對點云位置進行修正。最后,再利用ICP方法進行迭代,直至誤差收斂為止。
1.3 點云組幀
感知算法人員在完成點云的運動畸變補償后,會發現一個問題:激光雷達發送的點云數據包中的點云數量其實非常少,完全無法用來進行后續感知和定位層面的處理工作。
此時,感知算法人員就需要對這些數據包進行點云組幀的處理。
關于點云組幀,某L4解決方案商的感知算法工程師說:“以單激光雷達為例,感知算法人員會把多個點云數據包疊加到同一幀上,讓這一幀上的點云數據能包含上萬個點云,以便后續感知和定位流程的處理。若車端有多個激光雷達,感知算法人員會分別解析這幾個激光雷達的點云數據包,然后把解析后的點云數據集合在同一時刻上,讓其變成一個大的數據包。例如,技術人員會把車端多個激光雷達在t時刻的點云都匯集在一起,作為一幀點云數據來處理。”
1.4 外參變化
點云數據通過解析得到的點云坐標系屬于激光雷達坐標系,而在實際的自動駕駛技術應用中,仍需要將激光雷達的坐標系轉化為車輛的坐標系,這個建立聯系的過程稱之為點云的外參變化。
由于激光雷達與車體是剛性連接,所以在車輛運動過程中,兩者之間的相對姿態和位移是固定不變的,只需要建立兩者相對坐標系之間的位置關系,通過旋轉或者平移的方式,就能將這兩個三維坐標系統一到一個三維坐標系下(也稱為全局坐標系或世界坐標系)。
1.5 濾波處理
在激光雷達獲取點云數據的過程中,由于受到產品自身系統、待測物體表面及掃描環境等因素的影響,點云數據中會不可避免地夾雜著一些噪點(離群點),需要將其直接剔除或者以平滑的方式進行處理。這些噪點(離群點)會在后續的點云處理環節中(如點云分割、特征提取、點云配準等)讓模型結果產生一定的誤差。因此,在實際的點云處理流程中,感知人員會對點云進行濾波處理。
噪點是指對模型處理無用的點云數據。
離群點是指遠離主觀測區域的點云數據。
在與專家的訪談交流中,筆者了解到,在自動駕駛行業內,噪點一般包含了離群點。所以,后續的文章中,筆者將以噪點來統稱。
下表為筆者梳理的自動駕駛行業內常見的濾波算法。
表:自動駕駛行業內常見的濾波算法
02 感知功能層面的處理
在整個點云預處理工作完成后,感知算法人員會將點云數據分別進行感知和定位層面的處理。
在感知層面的流程中,點云數據主要是用于3D目標檢測,即自動駕駛系統需要識別檢測出車輛感知區域內的障礙物,從而采取避障等措施。
在點云預處理工作完成后,感知層面的處理會有兩個分支:一個是應用傳統的3D目標檢測方法,包括點云分割、目標物的聚類分析等;另一個是直接應用深度學習模型來完成3D目標檢測。
下文將分別拆解基于兩種不同方法下的點云3D目標檢測流程。
2.1 基于傳統方法的感知數據處理
(1)地面點云分割
在進行目標檢測后,點云數據中會有很大一部分點云屬于地面點數據,并呈現出一定的紋理狀,這會對后續目標物的點云處理流程產生影響。
一方面,若不將這些地面點云數據進行分割及去除,這些無效的點云數據就會對位于地面上的物體點云數據造成干擾,會降低目標障礙物分割算法的準確性和魯棒性;另一方面,由于點云數據量過大,這就會增加模型對計算量的需求。
所以,在進行后續工作前,感知算法人員需要先對地面點云進行過濾處理。
由于卷積神經網絡模型一般會以滑窗的方式對每一塊局部區域提取特征,然后做分類回歸,所以深度學習的方法往往不需要預先分割出地面點云。在自動駕駛領域,考慮到硬件性能的占用、開發周期、模型成熟度等因素,感知算法人員一般會采用傳統算法來進行地面點云分割。
筆者梳理了幾種常用的地面點分割方法:
平面柵格法
主要思路:平面柵格法通常是根據設定好的尺寸建立平面網格(也可以做多層網格或者三維體素),然后將原始點云投影到各自的網格中,對每個網格中的點云集合提取特征,比如平均高度、最大高度、高度差、密度等等。
技術亮點:不考慮矢量特征,讓后續規劃控制能更易于實現。
存在的問題:當激光雷達線束比較少的時候,比如16線激光雷達在采集道路數據時,車輛前方20米以外的地面上,能夠打到的激光點已經比較少了,而且打到障礙物上的激光線束一般也只有一條。如果在柵格中采用高度特征進行地面過濾,低矮的障礙物很容易會被當成地面點過濾掉。
點云法向量
主要思路:點云的法向量是指通過設置點云的角度閾值來分割地面的點云,一般地面點云的法向量是垂直方向,只需要通過模型來求解點云法向量與地面法向量的夾角,并與設定好的閾值來作對比和分類。該方法需要其鄰域點做支持,而鄰域的大小一般由鄰域半徑值或臨近點個數來表示。過大的鄰域會抹平三維結構細節使得法向量過于粗糙,而過小的鄰域由于包含了太少的點受噪聲干擾程度較強。
技術亮點:該方法可以較好地提取出道路兩旁法向量突變的點云集合構成路沿,從而配合柵格化將道路區域、非道路區域、障礙物進行劃分。
存在的問題:
1)根據法向量方法的假設,該方法一定要先對點云進行校正,如果不進行校正,那么很可能出現某一幀沒有地面點被分割出來的極端情況(激光雷達傾斜角度過大)。
2)法向量方法對于平臺類型障礙物(如路沿邊上的長方形花壇)生成的點無法有效區分。
模型擬合法-平面擬合(RANSAC)
主要思路:RANSAC平面擬合是指通過隨機選區的三個點云來建立平面方程,并將點云數據依次代入平面方程內,然后根據設置好的距離閾值來判定,該點是否為平面內的點。例如,閾值范圍內的點為內點,而閾值外的點為外點。迭代次數最多的平面方程即為地面方程,而方程內的內點為地面點集,反之為障礙物的點云集。
技術亮點:當數據中有大量的異常數據時,該方法也能高精度地估計模型參數——能從大規模點云數據中,更容易地估計出地面點云集。
存在的問題:
1)考慮到排水的因素,交通道路通常是中間凸起、兩邊低洼,類似于拱橋形狀。雖然曲率不大,但是通過隨機采樣的一致性算法計算地平面,可能會得到傾斜于一側的平面作為地面方程。
2)在上下坡的時候,由于地面非絕對平面,該方法計算出的地面方程,會出現把前方地面點集作為障礙物點的情況。
3)由于RANSAC是在點云空間隨機地取三個點構建平面,如果場景中存在大塊墻面時,會出現將墻面作為地面方程的情況。
面元網格法
主要思路:基于面元的分割可以分為局部類型或者表面類型,常采用區域增長的方式進行地面分割。其核心是基于點法線之間角度的比較,將滿足平滑約束的相鄰點合并在一起,以一簇點集的形式輸出,每簇點集被認為是屬于相同平面。
技術亮點:該方法能夠較好地應對地面存在曲率的情況,對于比較平緩的曲面或者平面能夠達到較好的分割效果。
存在的問題:
1)實際道路中的噪聲點太多,直接使用區域增長的方式分割地面,會出現較多零星的地面點被當成障礙物點云集合地情況。
2)區域增長算法的時耗較大,對于實時性要求較高的感知算法模塊,需要進一步優化。比如將平面的區域增長降為到邊緣,或者劃分區域,在小范圍內進行分割等等。
(2)目標物的點云分割
在去除掉地面點云后,接下來感知算法人員就需要將目標物點云進行有效地分割、分塊,從而便于對目標物進行單獨處理,即點云分割。目標障礙物的點云分割是根據空間、幾何和紋理等特征對點云進行劃分。
筆者梳理了幾個常用的點云分割方法:
基于邊緣的方法
主要思路:基于邊緣的方法是指由物體的形狀是尤其邊緣來描述的,所以通過定位目標物邊緣點云快速變化的點,來尋找靠近目標物邊緣區域的點并進行分割。
技術亮點:該方法采用了可重構多環網絡的算法優化機制,提高了算法運行的效率。
存在的問題:
1)該方法較適用簡單場景(如低噪聲、均勻密度),不適用于擁有大量三維點云的數據集。
2)面對存在不連續邊緣的目標物點云數據,若不采用點云填充,就不能直接用于識別檢測。
基于區域增長的方法
主要思路:基于區域增長的方法是指通過使用鄰域信息來將具有相似屬性的附近點歸類,以獲得到分割區域,并區分出不同區域之間的差異性。該方法主要分為兩類:種子區域方法和非種子區域方法。其中,種子區域方法是通過選擇多個種子點來開始做分割,以這些種子點為起始點,通過添加種子的鄰域點的方式逐漸形成點云區域;非種子區域方法是將所有點都分為一個區域,然后將其劃分為更小的區域。
技術亮點:相比于邊緣的方法,該方法的分割準確度會更高。
存在的問題:方法依賴于選取的起始種子點或者區域細分位置,若選取的不恰當,就會導致分割過度或不足等問題。
基于屬性的方法
主要思路:基于屬性的方法是先計算目標物點云的屬性,例如距離、密度、水平或垂直方向的點云分布等,并以此來定義測量點之間的領域,然后將每個方向上的法向量的斜率和點鄰域的數據之差作為聚類的屬性。
技術亮點:相比于前兩個方法,基于屬性的方法可以消除異常值和噪點的影響。
存在的問題:該方法依賴于點之間鄰域的定義和點云數據的點密度,在處理大量輸入點的多維屬性時,會導致模型對計算量的需求過大。
(3)目標物聚類分析
在目標物點云分割完后,感知算法人員就需要將點云圖中各個已分割的點云聚類成若干個整體,即把具有相似程度較高的點云組成一組,以便降低后續模型的計算量——這個過程就被稱為點云聚類。
常見的點云聚類方法如下:
K-means
主要思路:K-means 聚類算法是指將整個點云數據集分為 k 個具有某種統一特征的點云簇。首先,從每個點云簇中隨機選擇k個點作為點云簇的中心點。然后,對每個點云簇分別計算每個點云簇與上述k個點之間的實際距離,依據距離值最小的原則將其聚類到該點云簇。之后再對聚類的點云簇計算形心坐標,并更新點云簇中心點。最后,模型會重復上述步驟,直到點云簇中心點不再變化。
技術亮點:準確定性高、可處理較大數據量、運算速度快。
存在的問題:該方法需要預先設定K值和初始聚類中心,實時性差。
DBSCAN
主要思路:DBSCAN通過引入密度的概念,即要求聚類空間中的一定區域內所包含對象的數據量不小于某一給定閾值。該方法能夠在具有噪聲的空間數據庫中發現任意形狀的簇,可將密度足夠大的相鄰區域連接,能夠有效地處理異常數據,主要用于對空間數據的聚類。
技術亮點:
1)可以聚類任意形狀點云
2)可以有效去除噪聲點
存在的問題:
1)對內存資源消耗大
2)對處理器的要求高
3)需要預先設定聚類區域的半徑和觸發的閾值
歐式聚類
主要思路:歐式聚類(也稱為歐幾里得聚類)是指基于歐式距離聚類的方法,在激光雷達的點云數據中,同一個物體的點云簇中兩點之間的距離小于一定的值,而不同物體之間的點云簇之間的距離大于一定的值。歐式聚類算法就是根據此種原理,將歐幾里德距離小于設定距離閾值的點合并成一類,從而完成聚類過程。
技術亮點:該方法運算速度快,且具有良好通用性。
存在的問題:該方法需要預設固定距離的閾值,這會導致近處的目標物聚類效果會較好,而遠處的聚類會出現欠分割或者截斷的問題。
(4)匹配與跟蹤
在做完前面的部分后,感知算法人員基本上已經可以從已處理完的數據上獲知這些點云具體代表了什么目標物,而接下來需要做的就是對目標物的匹配和跟蹤,即預測下一時刻,目標物出現在哪個區域。在障礙物檢測中,匹配的精確度是后續多傳感器融合的基礎。
通常來說,匹配和跟蹤的算法流程是先將目標預測的結果與測量的點云數據計算關聯矩陣,然后利用匈牙利算法(其核心原理是尋找增廣路徑,從而達成最大匹配)進行匹配關系的確定,最后將點云數據分為匹配上的目標和未匹配上的目標兩類,將其分別保存,并為跟蹤做準備。
2.2 基于深度學習的感知數據處理
在自動駕駛領域中,隨著點云的數據量越來越大,傳統的目標檢測算法已經無法滿足實際需求。筆者在與各個專家的交談后獲知,當前點云3D目標檢測主要采用了深度學習模型。
某主機廠感知算法工程師說:“在感知層面的目標檢測中,點云在預處理完成后,就直接放入深度學習模型中,或者是先降采樣后再放入深度學習模型。”
常用的基于深度學習的目標檢測方法:
PointNet
主要思路:PointNet首先為點云中的每一個點計算特征,然后通過一個與點云順序無關的操作將這些特征組合起來,得到屬于全體點云的特征,這個特征可以直接用于任務識別。
技術亮點:
1)直接將點云數據輸入網絡,而不是將其規范化;
2)對旋轉不變性和置換不變性的利用。
√旋轉不變性:所有的點做相同的變換(旋轉平移),不影響對形狀的表達。
√置換不變性:任意交換各點的位置,不影響對形狀的表達。
存在的問題:無法獲得局部特征,這使得PointNet方法很難對復雜場景進行分析。
圖:PointNet的網絡結構
PointNet++
主要思路:PointNet++是基于PointNet方法得出,主要借鑒了CNN的多層感受野的思想。CNN通過分層不斷地使用卷積核掃描圖像上的像素并做內積,使得越到后面的特征圖感受野越大,同時每個像素包含的信息也越多。PointNet++就是仿照了這樣的結構,先通過在整個點云的局部采樣并劃一個范圍,將里面的點作為局部的特征,用PointNet進行一次特征提取。
技術亮點:
1)沒有量化帶來的信息損失,也無需調節量化超參數。
2)忽略空白區域,避免了無效的計算。
存在的問題:
1)無法利用成熟的基于空間卷積的2D物體檢測算法。
2)雖然避免了無效計算,但是GPU對于點云的處理效率遠低于對網格數據的處理效率。
圖:PointNet(左側部分)與PointNet++(中間部分)的分割效果對比
圖:PointNet++的網絡結構
VoxelNet
主要思路:VoxelNet主要是講三維點云轉化為voxel結構,然后以鳥瞰圖的方式來處理這個結構。此處的voxel結構就是利用相同尺寸的立方體來劃分三維空間,其中每個立方體稱為voxel(體素)。
VoxelNet有兩個主要過程,第一個被稱為VFE(Voxel Feature Extraction)是voxel的特征提取過程,第二個是類似YOLO的目標檢測過程。
技術亮點:
1)可以直接在稀疏的點云數據上進行任務檢測,并避免了人工特征工程帶來的信息瓶頸。
2)可以更有效地利用GPU的并行運算優勢。
存在的問題:VoxelNet對于數據表示(為適應模型運算而重建的一種新數據結構)比較低效,并且中間層的3D卷積對計算量的需求太大,導致其運行速度只有大約2FPS(Frame Per Second),遠低于實時性的要求。
?圖:VoxelNet的網絡結構
SECOND
主要思路:SECOND是一種基于VoxelNet方法優化后的點云檢測方法,其網絡的整體結構和實現大部分與原先的VoxelNet相近,同時在VoxelNet的基礎上改進了中間層的3D卷積,采用稀疏卷積來完成,提高了訓練的效率和網絡推理的速度。同時,SECOND還提出了一個新的損失函數與點云數據增強策略。SECOND網絡結構主要由三部分組成:VFE特征提取階段,稀疏卷積層,RPN網絡。
技術亮點:利用稀疏卷積提高了模型的推理速度。
存在的問題:雖然SECOND相比VoxelNet來說,其速度有所提升,但仍然保留了3D卷積。
?圖:SECOND的網絡結構
PointPillar
主要思路:PointPillar把落到每個網格內的點直接疊放在一起,形象地稱其為柱子(Pillar),然后利用與PointNet相似的方式來學習特征,最后再把學到的特征向量映射回網格坐標上,得到與圖像類似的數據。
技術亮點:
1)通過學習特征而不是依賴固定的編碼器,PointPillars可以利用點云表示的全部信息。
2)通過對柱而不是體素進行操作,不需要手動調整垂直方向的裝箱。
3)網絡中只使用2D卷積,不使用3D卷積,對計算量的需求小、運行高效。
4)無需手動調整即可使用不同的點云配置。
存在的問題:點特征的學習被限制在網格內,無法有效地提取相鄰區域的信息。
?圖:PointPillar的網絡結構
PCT
主要思路:PCT主要是利用Transformer固有的順序不變性,避免定義點云數據的順序,并通過注意力機制進行特征學習。網絡結構整體分為三部分:輸入嵌入、注意力層和點云的分類與分割。
技術亮點:
1)PCT具有固有的置換不變性,更適合點云學習。
2)相比于主流的PointNet網絡,PCT的分割邊緣更加清晰。
圖:PointNet(左側部分)與PCT(中間部分)的分割效果對比
存在的問題:PCT是一種有效的全局特征提取網絡,然而它忽略了點云深度學習中同樣重要的局部鄰域信息。
?圖:PCT網絡結構
雖然當前深度學習已經在自動駕駛行業內被廣泛應用,但是深度學習在點云數據處理中也會遇到一些挑戰。
一方面,點云作為場景中點的位置具有稀疏和非結構化的性質,因此它們的密度和數量都隨著場景中對象的變化而變化。另一方面,由于自動駕駛汽車行駛時需要非??焖俚刈龀龇磻?,因此必須實時執行物體檢測,而這意味著檢測網絡必須在兩次掃描之間的時間間隔內提供計算結果。
所以,深度學習雖然可用、好用,但不可盡用。
許建說:“深度學習等AI算法目前還做不到100%的精準識別和檢測,容易導致目標漏檢。AI算法是3D點云感知的非常重要的手段,但是不能只靠AI。通過綜合應用AI算法和傳統算法,可以解決數據樣本空間的不完備性問題,從而避免目標漏檢情況。”
03 定位功能層面的處理
3.1 特征提取
自動駕駛車輛在路上行駛時,其實車輛是不知道自己在哪的,所以用點云數據做定位的第一步就是先要讓自動駕駛車輛知道“我在哪里”。
此時,感知算法人員就需要先提取周邊場景的目標物特征,并通過這些特征和所獲取到的相對距離信息來建立一個小地圖,知道車輛的相對初始位置。
點云特征提取往往是實時的,這會導致點云的數據量會非常大,而現有量產車的硬件性能有限。所以,為了減少點云數據的計算量,點云數據在被提取特征時,一般會被優先提取一些較為明顯的特征,比如物體的輪廓信息。
某主機廠感知算法工程師說:“激光雷達不會像視覺一樣,視覺會有深度的語義信息,而激光雷達為了減少計算量,只會提取目標物的特征,主要是提取目標物的“線面角”特征。比如,電線桿就是線的特征,路面就是面的特征,建筑物的角點就是角的特征?!?/p>
3.2 地圖匹配
在提取完周圍目標物的特征后,感知算法人員就需要根據這些特征來進行點云地圖匹配,來獲取各個點云之間的相對位姿。點云地圖匹配一般可分為幀間匹配和高精地圖匹配。
幀間匹配,也叫子圖匹配,指將前后幀上有相同特征的點云做匹配,最后得到一張局部小地圖。
高精地圖匹配,指將優化后的點云與高精地圖做匹配。
在自動駕駛行業內,自動駕駛方案商或者主機廠都會應用這兩種不同方案,但常用的匹配方案還是以幀間匹配為主。
某主機廠感知算法工程師說:“只有L4的無人駕駛項目或許是基于高精地圖定位方案的地圖匹配,而主機廠主要做的是幀間匹配,因為量產車的定位方案不可能都基于高精地圖。另外,高精地圖匹配的計算量很大,在應用時必須先做降采樣的工作?!?/p>
3.3 位姿優化
上文也提到,點云數據在做完匹配后,可以獲取各點云間的相對位姿,而相對位姿的準確性會影響構建地圖的準確性,所以需要對點云的相對位姿做一定的優化。
通常來說,相對位姿的不準確主要是由于一些不可控因素造成的,如點云被物體遮擋或者激光雷達視場角的限制。點云的位姿優化通過一定的點云坐標系的剛體變化(旋轉或平移)來得到最優相對位姿。
審核編輯:劉清
-
GNSS
+關注
關注
9文章
767瀏覽量
47900 -
激光雷達
+關注
關注
968文章
3967瀏覽量
189825 -
TOF
+關注
關注
9文章
482瀏覽量
36331 -
IMU
+關注
關注
6文章
306瀏覽量
45727
原文標題:激光點云系列之一:詳解激光雷達點云數據的處理過程
文章出處:【微信號:阿寶1990,微信公眾號:阿寶1990】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論