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