激光雷达目标检测 (上)
激光雷達(dá)目標(biāo)檢測(cè) (上)
**---- 轉(zhuǎn)載自美團(tuán)無(wú)人專送團(tuán)隊(duì)**簡(jiǎn)介
安全性是自動(dòng)駕駛中人們最關(guān)注的問(wèn)題之一。
在算法層面,無(wú)人車對(duì)周圍環(huán)境的準(zhǔn)確感知是保證安全的基礎(chǔ),因此感知算法的精度十分重要?,F(xiàn)有感知算法的思路一般通過(guò)某種數(shù)學(xué)模型對(duì)現(xiàn)實(shí)世界的某個(gè)子集進(jìn)行擬合。
當(dāng)情況足夠簡(jiǎn)單的時(shí)候,算法可以得到較高的精度。例如現(xiàn)在很多無(wú)人駕駛公司有在限定的時(shí)間段和限定的場(chǎng)地內(nèi),用單一傳感器的算法就可以得到非常高的精度。
但是自動(dòng)駕駛中的實(shí)際問(wèn)題非常復(fù)雜,各種天氣、路況和障礙物的組合非常多,基于單一傳感器的算法很難解決所有情況。例如在進(jìn)隧道和出隧道時(shí)因?yàn)楣饩€的突然變化攝像頭會(huì)有欠曝光和過(guò)曝光問(wèn)題,此時(shí)拍到的圖片幾乎全黑或全白,僅基于攝像頭的感知算法很難在這種情況給出高精度的結(jié)果。
為了解決這種開放環(huán)境中的自動(dòng)駕駛問(wèn)題,很多自動(dòng)駕駛公司提出了多傳感器方案,希望通過(guò)取長(zhǎng)補(bǔ)短來(lái)提高自動(dòng)駕駛系統(tǒng)處理復(fù)雜環(huán)境的能力。現(xiàn)在最普遍使用的傳感器是攝像頭,除此之外還有激光雷達(dá)、毫米波雷達(dá)、GPS/IMU等。
激光雷達(dá)作為自動(dòng)駕駛領(lǐng)域中最重要的傳感器之一,常用于物體檢測(cè)、道路分割和高精度地圖構(gòu)建。
本文主要討論基于激光雷達(dá)的物體檢測(cè)算法。在討論具體的算法之前,首先要了解激光雷達(dá)數(shù)據(jù)的特點(diǎn)。
激光雷達(dá)原理和數(shù)據(jù)特點(diǎn)
現(xiàn)在自動(dòng)駕駛中常用的激光雷達(dá)為機(jī)械式激光雷達(dá),其由若干組可以旋轉(zhuǎn)的激光發(fā)射器和接收器組成。每個(gè)發(fā)射器發(fā)射的一條激光束俗稱“線“,主要有單線、4線、16線、32線、64線和128線雷達(dá)。
常見機(jī)械式激光雷達(dá)中激光束是波長(zhǎng)在900nm左右的近紅外光(NIR),可以根據(jù)激光直接獲得周圍一圈的準(zhǔn)確的三維空間信息。
這種雷達(dá)的成像原理比較簡(jiǎn)單:發(fā)射器和接收器連接在一個(gè)可以旋轉(zhuǎn)的機(jī)械結(jié)構(gòu)上,某時(shí)刻發(fā)射器將激光發(fā)射出去,之后接收器接收返回的激光并計(jì)算激光與物體碰撞點(diǎn)到雷達(dá)原點(diǎn)的距離。
由于每次發(fā)射/接收的角度是預(yù)先設(shè)定的,因此根據(jù)距離、水平角度和垂直角度就能求出碰撞點(diǎn)相對(duì)于激光雷達(dá)中心的坐標(biāo)。每條線每次發(fā)射激光得到的數(shù)據(jù)由一個(gè)四元組(x,y,z,i)表示,其中(x,y,z)是三維坐標(biāo),i表示反射強(qiáng)度。
圖1:一個(gè)32線激光雷達(dá)的成像原理示意圖以某款32線激光雷達(dá)為例,32根線從上到下排列覆蓋15.0°到-24.9°。
工作狀態(tài)時(shí)這32根線在水平平面旋轉(zhuǎn)可以采集一周360°的數(shù)據(jù)。雷達(dá)的旋轉(zhuǎn)速度和角分辨率是可以調(diào)節(jié)的,常用速度為10hz(100ms轉(zhuǎn)一圈)對(duì)應(yīng)每0.2°采集一次數(shù)據(jù),即角分辨率為360/0.2=1800。
由于光速非??焖栽?800中任何一個(gè)位置進(jìn)行一次發(fā)射和接收動(dòng)作可以看作是瞬時(shí)完成的。受到硬件能力的限制,一般轉(zhuǎn)速越快則發(fā)射和接收激光的次數(shù)越少,即角分辨率越小。常用雷達(dá)采集到的數(shù)據(jù)點(diǎn)距離雷達(dá)中心一般不會(huì)超過(guò)150米。
通常采集到的360°的數(shù)據(jù)被稱為一幀,上面的例子中一幀數(shù)據(jù)在理論上最多包含32*(360/0.2)=57600個(gè)點(diǎn)。
在實(shí)際情況中如果雷達(dá)被放置在車的上方大約距地面1.9米的位置,則在比較空曠的場(chǎng)景中大約獲得40000個(gè)點(diǎn),一部分激光點(diǎn)因?yàn)楸话l(fā)射向天空或被吸收等并沒(méi)有返回到接收器,也就無(wú)法得到對(duì)應(yīng)的點(diǎn)。下圖是典型的一幀數(shù)據(jù)的可視化圖。
圖2:一個(gè)32線激光雷達(dá)的一幀數(shù)據(jù)的三維可視化圖激光雷達(dá)具有不受光照影響和直接獲得準(zhǔn)確三維信息的特點(diǎn),因此常被用于彌補(bǔ)攝像頭傳感器的不足。激光雷達(dá)采集到的三維數(shù)據(jù)通常被稱為點(diǎn)云,激光點(diǎn)云數(shù)據(jù)有很多獨(dú)特的地方:
距離中心點(diǎn)越遠(yuǎn)的地方越稀疏;
機(jī)械激光雷達(dá)的幀率比較低,一般可選5hz、10hz和20hz,但是因?yàn)楦邘蕦?duì)應(yīng)低角分辨率,所以在權(quán)衡了采樣頻率和角分辨率之后常用10hz;
點(diǎn)與點(diǎn)之間根據(jù)成像原理有內(nèi)在聯(lián)系,比如平坦地面上的一圈點(diǎn)是由同一個(gè)發(fā)射器旋轉(zhuǎn)一周生成的;
激光雷達(dá)生成的數(shù)據(jù)中只保證點(diǎn)云與激光原點(diǎn)之間沒(méi)有障礙物以及每個(gè)點(diǎn)云的位置有障礙物,除此之外的區(qū)域不確定是否存在障礙物;
由于自然中激光比較少見所以激光雷達(dá)生成的數(shù)據(jù)一般不會(huì)出現(xiàn)噪聲點(diǎn),但是其他激光雷達(dá)可能會(huì)對(duì)其造成影響,另外落葉、雨雪、沙塵、霧霾也會(huì)產(chǎn)生噪聲點(diǎn);
與激光雷達(dá)有相對(duì)運(yùn)動(dòng)的物體的點(diǎn)云會(huì)出現(xiàn)偏移,例如采集一圈激光點(diǎn)云的耗時(shí)為100ms,在這一段時(shí)間如果物體相對(duì)激光有運(yùn)動(dòng),則采集到的物體上的點(diǎn)會(huì)被壓縮或拉伸。
激光雷達(dá)物體檢測(cè)算法
圖3:本節(jié)的敘事結(jié)構(gòu)在深度學(xué)習(xí)流行之前主要用傳統(tǒng)的機(jī)器學(xué)習(xí)方法對(duì)點(diǎn)云進(jìn)行分類和檢測(cè)。
在這個(gè)領(lǐng)域?qū)τ谶@些學(xué)習(xí)方法本身的研究并不多,研究者更傾向于直接把理論上較為成熟的方法應(yīng)用到激光點(diǎn)云數(shù)據(jù)中。研究者將研究重點(diǎn)主要放在對(duì)數(shù)據(jù)本身特性的理解上,從而設(shè)計(jì)出適合點(diǎn)云的算法流程。
上一節(jié)點(diǎn)云圖中最明顯的規(guī)律是地面上的“環(huán)”,根據(jù)點(diǎn)云的成像原理當(dāng)激光雷達(dá)平放在地面上方時(shí),與地面夾角為負(fù)角度的“線”在地面上會(huì)形成一圈一圈的環(huán)狀結(jié)構(gòu)。
因?yàn)檫@種結(jié)構(gòu)有很強(qiáng)的規(guī)律性所以很多物體檢測(cè)算法的思路是先做地面分割然后做聚類,最后將聚類得到的物體進(jìn)行識(shí)別。為了提高算法的速度,很多算法并不直接作用于三維點(diǎn)云數(shù)據(jù),而是先將點(diǎn)云數(shù)據(jù)映射到二維平面中然后再處理。常見的二維數(shù)據(jù)形式的有Range Image和Elevation Image。
從2014年開始深度學(xué)習(xí)廣泛地被應(yīng)用在各個(gè)領(lǐng)域,隨著圖片物體檢測(cè)算法的發(fā)展,點(diǎn)云物體檢測(cè)也逐步轉(zhuǎn)向了深度學(xué)習(xí)。
現(xiàn)在自動(dòng)駕駛中一般關(guān)注鳥瞰圖中物體檢測(cè)的效果,主要原因是直接在三維中做物體檢測(cè)的精確度不夠高,而且目前來(lái)說(shuō)路徑規(guī)劃和車輛控制一般也只考慮在二維平面中車體的運(yùn)動(dòng)。
現(xiàn)在在鳥瞰圖中的目標(biāo)檢測(cè)方法以圖片目標(biāo)檢測(cè)的方法為主,主要在鳥瞰圖結(jié)構(gòu)的建立、物體的空間位置的估計(jì)以及物體在二維平面內(nèi)的旋轉(zhuǎn)角度的估計(jì)方面有所不同。
從檢測(cè)結(jié)果來(lái)看這類算法比在三維空間中的物體檢測(cè)要好。直接作用在三維空間中的物體檢測(cè)方法在近年來(lái)也有所突破,其通過(guò)某種算子提取三維點(diǎn)云中具有點(diǎn)云順序不變性的特征,然后通過(guò)特殊設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)在三維點(diǎn)云上直接做分類或分割。
這類方法的優(yōu)點(diǎn)是能對(duì)整個(gè)三維空間任何方向任何位置的物體進(jìn)行無(wú)差別的檢測(cè),其思路新穎但是受限于算法本身的能力、硬件設(shè)備的能力以及實(shí)際應(yīng)用的場(chǎng)景,現(xiàn)在還不能在實(shí)際中廣泛地使用。
自動(dòng)駕駛對(duì)于檢測(cè)算法有著比較特殊的要求:首先為了安全性考慮召回率要高,即不能漏檢;其次因?yàn)闄z測(cè)到的物體是下游路徑規(guī)劃和運(yùn)動(dòng)決策算法的輸入,這要求檢測(cè)到的目標(biāo)在連續(xù)幀中具有較好的穩(wěn)定性,具體而言即在連續(xù)幀中檢測(cè)到的同一個(gè)物體的類別、尺寸、位置和方向不能有劇烈的變化。與此同時(shí)因?yàn)榧す恻c(diǎn)云的稀疏性,現(xiàn)有算法單用一幀點(diǎn)云數(shù)據(jù)無(wú)法在小物體、遠(yuǎn)處物體和被遮擋物體的檢測(cè)上得到令人滿意的結(jié)果。
因此近幾年人們開始考慮結(jié)合多種傳感器數(shù)據(jù)的方法、結(jié)合多個(gè)激光雷達(dá)的方法以及結(jié)合連續(xù)多幀的方法。
雖然在學(xué)術(shù)界的排行榜中現(xiàn)在最好的方法是基于深度學(xué)習(xí)的算法,但是在實(shí)際問(wèn)題中數(shù)據(jù)的預(yù)處理、后處理等對(duì)最終結(jié)果有著至關(guān)重要的影響,而這些部分的算法往往需要根據(jù)數(shù)據(jù)和使用場(chǎng)景有針對(duì)性的設(shè)計(jì)。
所以本節(jié)首先會(huì)介紹一些單幀目標(biāo)檢測(cè)中的非深度學(xué)習(xí)算法中對(duì)于激光數(shù)據(jù)的處理方式,然后會(huì)在下集介紹深度學(xué)習(xí)算法以及多幀目標(biāo)檢測(cè)算法中介紹幾個(gè)具有代表性的方法。
非深度學(xué)習(xí)算法
2015年之前應(yīng)用在激光雷達(dá)領(lǐng)域的檢測(cè)和分類模型以線性模型、SVM和決策樹為主。這些模型的泛化能力和復(fù)雜程度無(wú)法在實(shí)際場(chǎng)景中滿足人們的需求,因此研究者將注意力更多的放在了對(duì)于點(diǎn)云數(shù)據(jù)特性的挖掘上。常見的算法流程為:
將三維點(diǎn)云映射為某種結(jié)構(gòu),例如Graph和Range Image;
提取每個(gè)節(jié)點(diǎn)或像素的特征;
將節(jié)點(diǎn)或像素聚類;
通過(guò)一定規(guī)則或分類器將一個(gè)或多個(gè)聚類確定為地面;
結(jié)合地面信息,通過(guò)分類器對(duì)其他聚類進(jìn)行物體級(jí)別的識(shí)別;
把所有的檢測(cè)、識(shí)別的結(jié)果映射回三維點(diǎn)云中。
從檢測(cè)和分類的效果來(lái)說(shuō),這類方法遠(yuǎn)沒(méi)有基于深度學(xué)習(xí)的方法好。
但無(wú)論是基于Graph或是基于Range Image的結(jié)構(gòu)都比單純的點(diǎn)云蘊(yùn)涵了更多的信息。在這些結(jié)構(gòu)中有時(shí)使用簡(jiǎn)單的基于規(guī)則的方法就可以得到比較好的結(jié)果,這一點(diǎn)在實(shí)際應(yīng)用中非常重要。例如在物體檢測(cè)任務(wù)中出現(xiàn)了訓(xùn)練集合中未出現(xiàn)過(guò)的物體,基于學(xué)習(xí)的方法一般無(wú)法正確地將其檢測(cè)出來(lái)。但是基于簡(jiǎn)單規(guī)則的方法卻可以正常給出檢測(cè)結(jié)果,雖然此時(shí)分類結(jié)果往往是未知。
在自動(dòng)駕駛中檢測(cè)算法的漏檢問(wèn)題遠(yuǎn)比錯(cuò)分類問(wèn)題嚴(yán)重很多,從這個(gè)角度說(shuō)基于簡(jiǎn)單規(guī)則的方法是保證安全的一把鎖。從實(shí)時(shí)數(shù)據(jù)預(yù)處理的效率來(lái)說(shuō),在實(shí)際環(huán)境中為了提高檢測(cè)精度需要將離散的噪聲點(diǎn)和不在檢測(cè)范圍內(nèi)的物體過(guò)濾掉。在Graph和Range Image中進(jìn)行噪聲數(shù)據(jù)的過(guò)濾有時(shí)比直接在點(diǎn)云上做效率高。
1 基于Graph的方法
基于Graph的建模方法指直接根據(jù)三維點(diǎn)云直接建立無(wú)向圖G = {N, E},N表示圖中的節(jié)點(diǎn)E表示節(jié)點(diǎn)之間的邊。常用的建圖方式是將三維點(diǎn)云中每個(gè)點(diǎn)的坐標(biāo)(x,y,z)作為一個(gè)節(jié)點(diǎn)。找到每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的雷達(dá)的線數(shù)l和水平方向的旋轉(zhuǎn)角度θ,當(dāng)兩個(gè)節(jié)點(diǎn)i和j滿足下面任何一個(gè)條件時(shí)為這兩個(gè)節(jié)點(diǎn)建立一條邊。即如果兩個(gè)點(diǎn)由相鄰線在同一時(shí)刻產(chǎn)生,或由同一根線在相鄰時(shí)刻產(chǎn)生,則為兩個(gè)點(diǎn)建立一條邊。數(shù)學(xué)描述如下:
|l_i - l_j| = 1 and θ_i = θ_j
l_i = l_j and (θ_i - θ_j) mod 360 = r
這里r表示水平方向的最小旋轉(zhuǎn)角,上節(jié)例子中r=0.2。實(shí)際在建圖時(shí)會(huì)增加其他約束,比如兩個(gè)節(jié)點(diǎn)的距離不能太遠(yuǎn)或兩個(gè)節(jié)點(diǎn)的高度差不能太大等。上節(jié)中點(diǎn)云的建圖結(jié)果可視化如下圖,深藍(lán)色表示滿足第一個(gè)條件的邊,淺藍(lán)色表示滿足第二個(gè)條件的邊。
圖4:在激光點(diǎn)云中直接根據(jù)三維點(diǎn)云信息建立Graph的可視化結(jié)果,其中深藍(lán)色的是縱向的邊,淺藍(lán)色的是橫向的邊。右側(cè)的圖是左側(cè)的局部放大版本。建圖的目的是在空間中離散的三維點(diǎn)之間建立某種聯(lián)系,從而為后續(xù)的聚類和分割做準(zhǔn)備。一般這種建圖的方法不設(shè)定邊的權(quán)重,依靠節(jié)點(diǎn)的特征進(jìn)行聚類和分割。
Moosmann提出了一種使用法向量作為節(jié)點(diǎn)特征的方法【1】。其思路是將點(diǎn)云看成連續(xù)曲面上的離散采樣。所謂法向量是指曲面在每個(gè)節(jié)點(diǎn)處的法向量,如果兩個(gè)相鄰的節(jié)點(diǎn)的法向量相似則說(shuō)明這兩個(gè)節(jié)點(diǎn)所在局部平面比較光滑,那么這兩個(gè)節(jié)點(diǎn)應(yīng)當(dāng)屬于一個(gè)同一個(gè)物體。論文中使用一種簡(jiǎn)單快速的方法對(duì)于每個(gè)節(jié)點(diǎn)位置的法向量進(jìn)行估計(jì),即首先計(jì)算所有相鄰平面的法向量(如下圖藍(lán)色箭頭),然后求法向量的幾何平均值并進(jìn)行歸一化(下圖紅色箭頭),最后所有節(jié)點(diǎn)的法向量再根據(jù)所有相鄰節(jié)點(diǎn)進(jìn)行均值濾波。
圖5:節(jié)點(diǎn)法向量的可視化例子。紅色和藍(lán)色的圓形是節(jié)點(diǎn),藍(lán)色的箭頭描述了每三個(gè)相鄰點(diǎn)組成的平面的法向量,紅色的箭頭描述了最終得到的法向量。得到特征之后就可以根據(jù)相鄰節(jié)點(diǎn)之間的特征相似性進(jìn)行聚類,聚類的首要目的一般是求出屬于地面的節(jié)點(diǎn)即地面分割。
Douillard為不同的數(shù)據(jù)類型提出了不同的地面分割方法【2】。其基于Graph結(jié)構(gòu)的地面分割算法的核心思想是:首先確定屬于地面的種子節(jié)點(diǎn)然后由內(nèi)向外進(jìn)行區(qū)域增長(zhǎng)。
論文中提出的算法為了在處理各種邊緣情況的同時(shí)盡可能的增加地面節(jié)點(diǎn)的召回率,手工設(shè)定了一系列復(fù)雜的約束條件。這樣做確實(shí)在實(shí)驗(yàn)指標(biāo)上看起來(lái)好一些,但是在實(shí)際的應(yīng)用中關(guān)注更多的并不是地面節(jié)點(diǎn)的召回,而是地面節(jié)點(diǎn)在所有可行駛區(qū)域內(nèi)的分布是否均勻。一般來(lái)說(shuō)根據(jù)這個(gè)目標(biāo)在實(shí)際場(chǎng)景中只用很簡(jiǎn)單的決策樹,就可以建立出滿足應(yīng)用要求的約束模型。Douillard在得到地面之后通過(guò)聚類算法找到其他類別的物體如下圖。
圖6:基于傳統(tǒng)方法的物體檢測(cè)的可視化結(jié)果上面介紹的建圖的方法只能作用在低速單幀的數(shù)據(jù)中。因?yàn)樵诟咚偾闆r由于多普勒效應(yīng)很難準(zhǔn)確為每一個(gè)三維點(diǎn)找到其對(duì)應(yīng)的雷達(dá)線數(shù)和水平旋轉(zhuǎn)角度,多幀的情況也類似。而更通用的建模方法是為每個(gè)節(jié)點(diǎn)尋找最鄰近的k的節(jié)點(diǎn)建立邊。這種方法雖然可以建立八叉樹等數(shù)據(jù)結(jié)構(gòu)進(jìn)行加速,但是沒(méi)有在Range Image中建圖的效率高。
2 基于Range Image的方法
Range Image是指距離圖,即一種類似圖片的數(shù)據(jù)結(jié)構(gòu)。以上節(jié)32線激光雷達(dá)的數(shù)據(jù)為例子,對(duì)應(yīng)的Range Image寬360/0.2=1800像素,高32像素。每個(gè)像素值表示對(duì)應(yīng)點(diǎn)到原點(diǎn)的距離。上節(jié)中的點(diǎn)云對(duì)應(yīng)的Range Image的的可視化如下圖,因?yàn)檫@個(gè)圖非常細(xì)長(zhǎng)所以只截取了一小段。黑色的部分缺少對(duì)應(yīng)的點(diǎn)云信息,其他的不同顏色代表不同距離。
圖7:一個(gè)Range Image的例子。Zhu提出了一種在Range Image中建立無(wú)向圖G = {N, E}的方法【3】。即在圖中每一個(gè)像素代表一個(gè)節(jié)點(diǎn),以每一個(gè)節(jié)點(diǎn)為中心在二維平面上以一定距離搜索其他節(jié)點(diǎn),如果兩個(gè)節(jié)點(diǎn)在三維空間中滿足某些條件則建立一條邊,邊的權(quán)重是兩個(gè)點(diǎn)在三維空間中的距離。建圖之后使用基于圖的分割算法(例如【4】)即可得到聚類結(jié)果。
這種方法建圖的速度非???#xff0c;在實(shí)際使用過(guò)程中還需要處理多個(gè)點(diǎn)映射到同一個(gè)像素的情況,其建圖的結(jié)果和直接在三維點(diǎn)云中建圖相比非常接近。Range Image不僅僅能為計(jì)算進(jìn)行提速,還可以做到一些不方便在點(diǎn)云上直接處理的事情,因?yàn)槠浔赛c(diǎn)云包含了更多的信息。
Biasutti提出了一種對(duì)點(diǎn)云中被遮擋的部分進(jìn)行還原的方法【5】。其思路是:首先將點(diǎn)云生成Range Image結(jié)構(gòu)并在其中進(jìn)行聚類,然后選擇某個(gè)物體所代表的類并在圖中抹掉,之后根據(jù)周圍像素將抹掉的部分復(fù)原出來(lái),最后將Range Image映射回點(diǎn)云。下圖是論文中的算法的結(jié)果,可以看出白色的行人被抹掉了,而地面上的空洞被漂亮的填充了。
圖8:被遮擋點(diǎn)云和還原被遮擋點(diǎn)云的對(duì)比圖,左圖是原始點(diǎn)云,右側(cè)是將人去掉后的點(diǎn)云。總結(jié)
以上是生活随笔為你收集整理的激光雷达目标检测 (上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【mysql】只使用数据库DB如何实现-
- 下一篇: 目标检测 YOLOv5网络v6 0版本总