激光雷达目标检测(下)
基于深度學(xué)習(xí)的算法
現(xiàn)在在激光雷達(dá)數(shù)據(jù)目標(biāo)檢測中最常用的算法是基于深度學(xué)習(xí)的算法,其效果與傳統(tǒng)學(xué)習(xí)算法相比要好很多,其中很多算法都采用了與圖片目標(biāo)檢測相似的算法框架。
早期的激光點(diǎn)云上的目標(biāo)檢測和圖片上的目標(biāo)檢測算法并不一樣,圖片數(shù)據(jù)上常見的HOG、LBP和ACF【10,11,12】等算法并沒有應(yīng)用到點(diǎn)云數(shù)據(jù)中。
這是因?yàn)榧す恻c(diǎn)云數(shù)據(jù)與圖片具有不同的特點(diǎn),例如圖片中存在遮擋和近大遠(yuǎn)小的問題而點(diǎn)云上則沒有這些問題,反過來圖片中也并不存在上節(jié)中討論的點(diǎn)云的很多特點(diǎn)。
從2014年開始隨著RCNN、Fast RCNN、Faster RCNN、YOLO和SSD【1,2,3,4,5,6,7】等圖片目標(biāo)檢測算法的進(jìn)步,研究者對于檢測算法的理解也在不斷深入。
研究者發(fā)現(xiàn)雖然點(diǎn)云數(shù)據(jù)與圖片數(shù)據(jù)有很多不一樣的特點(diǎn),但是在鳥瞰圖中這兩種不同的數(shù)據(jù)在目標(biāo)檢測的框架下具有相通之處,因此基于鳥瞰圖的激光點(diǎn)云的目標(biāo)檢測算法幾乎都沿用了圖片目標(biāo)檢測算法的思路。
2016年P(guān)ointNet【8】提出了另外的一種算法框架,其提出了一種在三維空間中與點(diǎn)云順序無關(guān)的算子并結(jié)合CNN也在目標(biāo)分割和識別上得到了很好的效果。
這個方法為三維點(diǎn)云中的目標(biāo)檢測提供了新的思路,即有可能存在一種比基于鳥瞰圖算法通用的三維目標(biāo)檢測方法。
如前文所述激光點(diǎn)云數(shù)據(jù)有一些無法克服的問題,其中最主要的就是稀疏性。提高雷達(dá)的線數(shù)是一個解決問題的途徑,但是現(xiàn)有高線數(shù)雷達(dá)的成本過高很難真正落地,并且高線數(shù)也無法從根本上解決遠(yuǎn)距離的稀疏問題。
為了解決這個問題一些研究者提出了激光數(shù)據(jù)和圖片數(shù)據(jù)相融合的方法,這種方法尤其對小物體和遠(yuǎn)處的物體有很好的效果。
激光點(diǎn)云中目標(biāo)檢測的結(jié)果的穩(wěn)定性也十分重要,傳統(tǒng)的檢測算法并不特別關(guān)注這個問題,其中一個原因是在后續(xù)的跟蹤和關(guān)聯(lián)算法中可以對檢測到的目標(biāo)的大小、尺寸進(jìn)行濾波,從而得到穩(wěn)定的結(jié)果。
近幾年一些研究者嘗試將“穩(wěn)定算法輸出”的任務(wù)交給深度神經(jīng)網(wǎng)絡(luò),嘗試根據(jù)連續(xù)的多幀數(shù)據(jù)對當(dāng)前幀進(jìn)行檢測,這種方法可以增加算法輸出結(jié)果的穩(wěn)定性,減少后續(xù)跟蹤算法的復(fù)雜程度,提高整個系統(tǒng)的魯棒性。
接下來會介紹一些在基于單幀激光數(shù)據(jù)、圖片和激光融合以及基于連續(xù)多幀激光數(shù)據(jù)這三個方面具有代表性的算法。
1 基于單幀激光雷達(dá)數(shù)據(jù)的方法
Zhou提出的VoxelNet是一個在激光點(diǎn)云數(shù)據(jù)中利用圖片深度學(xué)習(xí)檢測框架的很好的例子【13】。其先將三維點(diǎn)云轉(zhuǎn)化成voxel結(jié)構(gòu),然后以鳥瞰圖的方式來處理這個結(jié)構(gòu)。這里voxel結(jié)構(gòu)是用相同尺寸的立方體劃分三維空間,這里每個立方體被稱為voxel即體素。舉一個空間劃分的例子,如果點(diǎn)云中的點(diǎn)在三維空間滿足
(x,y,z) ∈ [-100,100] x [-100,100] x [-1,3]
當(dāng)設(shè)定voxel的尺寸為(1,1,1)時(shí)可以將空間劃分為2002004 = 160000個voxel。很多論文中稱這種結(jié)構(gòu)的維度為2.5維,如果把每個格子都看成一個像素那么這是一種類似二維圖片的數(shù)據(jù)結(jié)構(gòu),而每個voxel的內(nèi)部是三維空間結(jié)構(gòu)。
圖1:VoxelNet的算法流程圖VoxelNet有兩個主要的過程,第一個被稱為VFE(Voxel Feature Extraction)是voxel的特征提取過程,第二個是類似YOLO的目標(biāo)檢測過程。在VEF過程中所有voxel共享同一組參數(shù),這組參數(shù)描述了生成voxel的特征的方法。論文中VFE的過程由一系列CNN層組成如下圖。
圖2:VoxelNet算法中VFE部分的流程圖VFE過程的結(jié)果是每個voxel都得到了長度相同的特征,將這些特征按照voxel的空間排列方式堆疊在一起形成了一個4維的特征圖,以上面的例子來說特征圖的尺寸為(200,200,4, l),這里l是voxel的特征長度。
在目標(biāo)檢測過程中其首先將voxel特征通過三維卷積壓縮成3維的形式(200,200,l’),然后對得到的特征圖進(jìn)行目標(biāo)檢測。和二維圖片檢測相比VoxelNet不僅要給出物體中心的二維坐標(biāo)和包圍盒的長寬,還需要給出物體中心在Z軸的位置、物體的高度和物體在XY平面上的朝向。
VoxelNet在實(shí)際使用中有兩個問題:首先在VFE過程中因?yàn)樗械膙oxel都共享同樣的參數(shù)和同樣的層,當(dāng)voxel數(shù)量很大時(shí)在計(jì)算上會引入錯誤或效率問題,一些神經(jīng)網(wǎng)絡(luò)的框架例如Caffe在bn和scale層的實(shí)現(xiàn)時(shí)沒有考慮到這點(diǎn),需要使用者自己去做調(diào)整;其次三維卷積操作的復(fù)雜度太高使得這個算法很難在自動駕駛車輛上實(shí)際使用的硬件設(shè)備上滿足實(shí)時(shí)性要求。
Yang提出的PixorNet算法可以在一定程度上解決上述問題【14】,首先其沒有VFE的過程,而是用手工設(shè)計(jì)的0-1的布爾變量和像素的反射強(qiáng)度表示每一個voxel,即每個voxel由兩個數(shù)值表示。其次PixorNet從4維到2維做的簡單的線性映射,即按照某種固定順序?qū)?200,200,4, l)整理成(200,200,4*l)的結(jié)構(gòu)。
與VoxelNet相比PixorNet可以節(jié)約非常多的計(jì)算量,從而達(dá)到實(shí)時(shí)性的要求,但是因?yàn)槠涫止ぴO(shè)計(jì)的特征過于簡單檢測效果不是特別好。
上述方法主要在鳥瞰圖上進(jìn)行目標(biāo)檢測,Qi提出了PointNet和PointNet++可以在三維空間中直接做分割和識別任務(wù)【8,9】。
PointNet首先為點(diǎn)云中每一個點(diǎn)計(jì)算特征(下圖中1024維),然后通過一個點(diǎn)云順序無關(guān)的操作(下圖max pool)將這些特征組合起來得到屬于全體點(diǎn)云的特征,這個特征可以直接用于識別任務(wù)。而將全局特征與每個點(diǎn)的特征組合到一起形成的新特征可以用于點(diǎn)云分割任務(wù)中。
圖3:PointNet的算法流程圖PointNet在計(jì)算點(diǎn)的特征時(shí)共享一組參數(shù),這一點(diǎn)和VoxelNet很類似因此也有與之相同的問題。另外PointNet主要提取了所有點(diǎn)云組成的集合的全局特征,而沒有提取描述點(diǎn)與點(diǎn)之間關(guān)系的特征。將PointNet的方法類比到二維圖片中,可以看出其與傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的區(qū)別,即PointNet中沒有類似卷積的操作。
PointNet++主要解決的就是這個問題,其嘗試通過使用聚類的方法建立點(diǎn)與點(diǎn)之間的拓?fù)浣Y(jié)構(gòu),并在不同粒度的聚類中心進(jìn)行特征的學(xué)習(xí)。
圖4:PointNet++的算法流程圖這種方法確實(shí)比PointNet在分割算法中有所提高,但是將其直接用于檢測算法卻不能得到較好的結(jié)果。主要原因是在PointNet的結(jié)構(gòu)中很難設(shè)計(jì)anchor。現(xiàn)在圖片中的檢測算法一般需要先在稠密的二維空間中提取anchor,然后再對anchor不斷過濾、回歸和分類。但是在PointNet++中處理的是稀疏的點(diǎn)云,在點(diǎn)云中很難確根據(jù)一個點(diǎn)確定物體的中心位置。
2 基于圖片和激光雷達(dá)數(shù)據(jù)的方法
從融合的時(shí)間點(diǎn)來看,多特征融合方法大致可以分為兩類:前融合和后融合。前融合首先將不同來源的數(shù)據(jù)的特征進(jìn)行融合,然后對融合后的特征進(jìn)行處理得到檢測的結(jié)果。后融合中不同特征分別經(jīng)過獨(dú)立的過程得到檢測結(jié)果,然后再將這些結(jié)果融合到一起。
兩種方法各有優(yōu)劣,前融合能夠更好的挖掘不同特征之間的聯(lián)系從而得到更好的檢測結(jié)果,而后融合從宏觀來看具有更強(qiáng)的系統(tǒng)穩(wěn)定性,當(dāng)部分感知設(shè)備出現(xiàn)故障時(shí)只要還有一個設(shè)備在工作,那么就不會讓整個感知系統(tǒng)崩潰。
本節(jié)主要介紹一些前融合的相關(guān)算法。
近幾年出現(xiàn)了很多圖片和激光雷達(dá)數(shù)據(jù)融合的方法。Chen提出了MV3D的方法,其首先在不同數(shù)據(jù)上提取特征圖,然后在點(diǎn)云的鳥瞰圖中做三維物體檢測,之后將檢測的結(jié)果分別映射到鳥瞰圖、Range Image和圖片中,通過roi-pooling分別在三種特征圖中進(jìn)行特征提取,最后將提取到的特征融合在一起再做后續(xù)的處理【16】。這個方法中檢測過程只在鳥瞰圖中進(jìn)行,融合了鳥瞰圖、Range Image和圖片這三類數(shù)據(jù)源的特征。
圖5:MV3D的算法流程圖Qi提出的FPointNet方法也使用了類似的思路,首先在圖片上做物體檢測,然后找到對應(yīng)的物體的點(diǎn)云【18】。得到每個物體的點(diǎn)云之后,采用了類似PointNet的思路對物體的點(diǎn)云進(jìn)行特征提取。
圖6:FPointNet的算法流程圖這兩個方法具有一定的共通之處:都具有似于FasterRCNN的兩段式(two-stage)檢測方法的串行過程,即先在某一種數(shù)據(jù)的特征圖上進(jìn)行物體的檢測(這個過程也稱為proposal),然后根據(jù)檢測到的結(jié)果再在其他的數(shù)據(jù)中提取特征。這類方法的問題在于第一步proposal的過程并沒有引入其他的特征。上面討論過對于自動駕駛的檢測任務(wù)來說,召回率是非常重要的指標(biāo),而這類算法的召回率的上限直接與某一種數(shù)據(jù)類型綁定,并沒有很好地達(dá)到自動駕駛目標(biāo)檢測中特征融合的目的。
Liang提出了一種將圖片特征融合到鳥瞰圖中的方法【19】。其核心思路是:對于鳥瞰圖中每個位置首先在三維空間中尋找臨近的點(diǎn),然后把將這些點(diǎn)根據(jù)激光雷達(dá)和攝像機(jī)標(biāo)定信息投影到圖片特征圖上,最后將對應(yīng)的圖片特征和點(diǎn)的三維信息融合到鳥瞰圖對應(yīng)的位置中。融合后的結(jié)果是得到了一個具有更多信息量的鳥瞰圖的特征圖。
這個特征圖中除了包含自帶的點(diǎn)云信息還包含了相關(guān)的圖片信息。后續(xù)的分割和檢測任務(wù)都基于這個特征圖。這個方法中雖然還是在鳥瞰圖中對物體進(jìn)行檢測,但是由于此時(shí)特征圖中還包含了圖像信息,因此從理論上來說可以得到更高的召回率。
圖7:圖片特征與點(diǎn)云特征融合的算法流程圖3 基于多幀激光雷達(dá)數(shù)據(jù)的方法
為了得到較穩(wěn)定的檢測結(jié)果,可以在后處理中增加約束、也可以在跟蹤算法中進(jìn)行濾波。這些方法可以看作通過手工設(shè)計(jì)一些操作以減少各項(xiàng)檢測結(jié)果的方差,從現(xiàn)有的理論上來看,通過學(xué)習(xí)類算法自動設(shè)計(jì)相關(guān)操作應(yīng)該有更好的效果。Luo利用深度神經(jīng)網(wǎng)絡(luò)在鳥瞰圖中通過連續(xù)幀的數(shù)據(jù)進(jìn)行目標(biāo)檢測【20】。
其建立了一個“多入多出”的結(jié)構(gòu),即算法的輸入是過去連續(xù)幀的鳥瞰圖,而算法的輸出是當(dāng)前時(shí)刻和未來連續(xù)時(shí)刻的物體位置。Luo希望通過這種結(jié)構(gòu)讓網(wǎng)絡(luò)不僅僅學(xué)習(xí)到物體在鳥瞰圖中的形狀,還可以學(xué)習(xí)到物體的速度、加速度信息。其步驟如下:
設(shè)當(dāng)前幀為i并設(shè)定時(shí)間窗口k,選取第i-k+1幀到第i幀的點(diǎn)云,并將這些點(diǎn)云根據(jù)GPS/IMU的信息映射到第i幀的坐標(biāo)系下;
分別提取這k幀點(diǎn)云的特征;
融合這些特征;
輸出第i幀和未來若干幀物體的信息,并建立軌跡。
這個方法可以在減少物體檢測的噪聲、增加召回率同時(shí)增加檢測結(jié)果的穩(wěn)定性。例如當(dāng)?shù)缆飞夏齿v車突然被其他其他的車輛遮擋,由于前面若干幀中是存在這個車的點(diǎn)云的,所以此時(shí)是可以通過網(wǎng)絡(luò)猜測到其當(dāng)前真實(shí)的位置。
當(dāng)被遮擋的車輛逐漸脫離遮擋區(qū)域時(shí),雖然歷史時(shí)刻中沒有其對應(yīng)的點(diǎn)云信息,但是當(dāng)前時(shí)刻存在其點(diǎn)云,所以同樣也可以檢測到其位置。
這篇文章從一定程度上證明了這樣做的可行性,但是還有一些方面值得繼續(xù)挖掘:更好的特征融合的方式、每次不重復(fù)提取幀的特征以及更好的處理軌跡的方法等。
總結(jié)
本文介紹了自動駕駛中常用的激光雷達(dá)的成像原理及其生成數(shù)據(jù)的特點(diǎn),并簡單描述了相關(guān)的目標(biāo)檢測的數(shù)據(jù)結(jié)構(gòu)和算法。基于激光雷達(dá)數(shù)據(jù)的目標(biāo)檢測不是一個很新的領(lǐng)域,但是隨著在深度學(xué)習(xí)的廣泛運(yùn)用以及自動駕駛的興起,這個領(lǐng)域在這幾年不斷出現(xiàn)更好的方法。下表是對本文中提到的方法的簡單的總結(jié)。表中感知范圍一欄表示約束算法檢測范圍的最主要的傳感器。
在實(shí)際中設(shè)計(jì)相關(guān)算法時(shí)一般不是完整地應(yīng)用其中某一個方法,而是首先采用某個方法的工作流程作為主體框架,然后根據(jù)在實(shí)際情況中遇到的問題再不斷地對其進(jìn)行修改。
從長遠(yuǎn)來看,激光雷達(dá)未必是自動駕駛系統(tǒng)中必須的設(shè)備,因?yàn)槎嘟嵌葦z像頭的圖片結(jié)果理論上可以做到周圍空間的三維感知。但是就現(xiàn)階段來說,激光雷達(dá)還是一種非常可靠的感知手段。
隨著工藝的進(jìn)步,激光雷達(dá)的線數(shù)和可視范圍會逐漸增加。對于目標(biāo)檢測算法來說,高線數(shù)激光雷達(dá)的數(shù)據(jù)一定比低線數(shù)雷達(dá)的要好,但是高線數(shù)也對算法的速度有著更高的要求,所以相關(guān)算法的效率的提高可能會是一個研究的方向。
由于激光雷達(dá)的本身的特性,小物體、遠(yuǎn)處物體和被遮擋物體的點(diǎn)云相對稀疏,提高這種情況下算法的效果可能會是相關(guān)研究的另一個方向。實(shí)際應(yīng)用中激光雷達(dá)目標(biāo)檢測可能面臨的問題更多,包括但不僅限于高效的數(shù)據(jù)標(biāo)注、處理不平坦的地面、不同天氣的影響、不同物體材質(zhì)的區(qū)分、算法效果與復(fù)雜度的權(quán)衡、算法效果的評估等等。
希望這些問題可以隨著技術(shù)的發(fā)展逐步得到解決,未來可以真正實(shí)現(xiàn)安全便捷的自動駕駛。
總結(jié)
以上是生活随笔為你收集整理的激光雷达目标检测(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot手机短信验证码登录
- 下一篇: 激光雷达目标检测 (上)