自動駕駛中的激光雷達(dá)點云如何做特征表達(dá),將基于Lidar的目標(biāo)檢測方法分成了4類,即:基于BEV的目標(biāo)檢測方法,基于camera/range view的目標(biāo)檢測方法,基于point-wise feature的目標(biāo)檢測方法,基于融合特征的目標(biāo)檢測方法。本文對這4類方法講解并總結(jié),希望能幫助大家在實際使用中做出快速選擇。基于lidar的目標(biāo)檢測方法可以分成3個部分:lidar representation,network backbone,detection head,如下圖所示。
根據(jù)lidar不同的特征表達(dá)方式,可以將目標(biāo)檢測方法分成以下4種:基于BEV(bird’s eye view)的目標(biāo)檢測方法,基于camera view的目標(biāo)檢測方法,基于point-wise feature的目標(biāo)檢測方法,基于融合特征的目標(biāo)檢測方法。如下圖所示。
圖1基于lidar目標(biāo)檢測方法分類
基于BEV的目標(biāo)檢測方法
基于bev的目標(biāo)檢測方法顧名思義是使用bev作為點云特征的表達(dá),其檢測流程如下圖所示,包括3個部分:bev generator,network backbone, detection head。下面詳細(xì)介紹一下這3個部分如何在基于bev的目標(biāo)檢測方法中發(fā)揮作用。
1. bevgenerator BEV圖由激光雷達(dá)點云在XY坐標(biāo)平面離散化后投影得到,其中需要人為規(guī)定離散化時的分辨率,即點云空間多大的長方體范圍(Δl*Δw*Δh)對應(yīng)離散化后的圖像的一個像素點(或一組特征向量),如點云20cm*20cm*Δh的長方體空間,對應(yīng)離散化后的圖像的一個像素點。 在bev generator中,需要根據(jù)Δl*Δw*Δh來生成最后L*W*H大小的bev特征圖,該特征圖是network backbone特征提取網(wǎng)絡(luò)的輸入,因此該特征圖的大小對整個網(wǎng)絡(luò)的效率影響很大,如pointpillar通過對voxelnet中bev generator的優(yōu)化,整個網(wǎng)絡(luò)效率提高了7ms。 2. network backbone 網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計需要兼顧性能和效果,一般都是在現(xiàn)有比較大且性能比較好的網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上進(jìn)行修改。以voxelnet和pointpillar為例,pointpillar以voxelnet為原型,不改變原流程的基礎(chǔ)上,對voxelnet設(shè)計做了以下一些修改,使網(wǎng)絡(luò)效率提高了10多倍,具體如下:簡化bev中的網(wǎng)絡(luò)結(jié)構(gòu)voxelnet使用stacked vfe layer,在代碼中使用了2個vfe layer,如下圖所示。
pointpillars簡化了voxel表達(dá)形式,變成pillar,提高了數(shù)據(jù)生成效率,并且只使用了一個vfe layer,減少了2ms,如下圖所示。
簡化主網(wǎng)絡(luò)結(jié)構(gòu)
不使用3D卷積
輸入特征圖的channel數(shù)從128減少為64,網(wǎng)絡(luò)耗時減少2.5ms
網(wǎng)絡(luò)主結(jié)構(gòu)所有層channel數(shù)減半,網(wǎng)絡(luò)耗時減少4.5ms
Upsampling的channel數(shù)從256減少到128,減輕detection head,網(wǎng)絡(luò)耗時減少3.9ms
Tensor RT加速,提速45.5%
Pointpillar[2]在保證網(wǎng)絡(luò)性能提升的前提下,逐步提高網(wǎng)絡(luò)效率,從不同角度優(yōu)化網(wǎng)絡(luò)流程,最后使網(wǎng)絡(luò)效率提高10倍有余。 3.detection head detection head包括兩個任務(wù),即:目標(biāo)分類與目標(biāo)定位,由于bev將點云用圖像的形式呈現(xiàn),同時保留了障礙物在三維世界的空間關(guān)系,因此基于bev的目標(biāo)檢測方法可以和圖像目標(biāo)檢測方法類比:目標(biāo)分類任務(wù)與圖像目標(biāo)檢測方法中目標(biāo)分類任務(wù)沒有差別;而目標(biāo)定位任務(wù)可以直接回歸目標(biāo)的真實信息,但與圖像目標(biāo)檢測方法中目標(biāo)定位任務(wù)不同,該任務(wù)需要給出旋轉(zhuǎn)框。與圖像目標(biāo)檢測方法相同,基于bev的目標(biāo)檢測方法的detection head也分成anchor base的方法和anchor free的方法。 anchor base方法以voxelnet為例,需要人為設(shè)定anchor的大小,由于bev可以直接回歸真實的目標(biāo)大小,因此anchor也可以根據(jù)真實目標(biāo)大小設(shè)定,如:以下單位為米,l、w、h分別表示anchor的長、寬、高,對于車來說anchor大小可以設(shè)定為la = 3.9,wa = 1.6,ha = 1.56,對于人la = 0.8,wa = 0.6,ha = 1.73,對于騎行者la =1.76,wa = 0.6,ha = 1.73,且對于每種anchor,設(shè)置了θa=0°和90°兩種角度。由于目標(biāo)有各種角度,因此為了得到更準(zhǔn)確的角度回歸,anchor的角度設(shè)置可以在[0°,180°)進(jìn)行等間隔采樣,獲得更多不同角度的anchor,提高回歸精度。回歸誤差的計算如下圖所示。
anchor free方法典型代表是pixor,對于bbox的回歸,如下圖所示,對于正樣本的紅點p(x,y),需要回歸如下信息:{cos(θ), sin(θ), dx, dy, w, l},其中θ為障礙物偏角,dx、dy分別為p點相對障礙物中心點的偏移,w、l是障礙物大小的表達(dá)。沒有anchor,對目標(biāo)的回歸是不是簡單了很多。
以上為基于bev的目標(biāo)檢測方法的簡單介紹,該方法在目前的自動駕駛的3D目標(biāo)檢測方案中應(yīng)用較廣。
基于camera/range view的目標(biāo)檢測方法
基于cameraview的目標(biāo)檢測方法顧名思義是使用camera view作為點云特征的表達(dá),檢測流程如下圖所示,下面詳細(xì)介紹一下這3個部分如何在基于camera view的目標(biāo)檢測方法中發(fā)揮作用。
1. camera view generator camera view圖是將每圈激光線拉成直線再按行累積而成,因此也稱為range view,其中投影圖的高為激光線數(shù),寬為lidar掃描一圈的點數(shù),如: 64線激光雷達(dá),水平角分辨率為0.2°,生成的camera view的圖大小為64*1800。camera view相對bev圖小很多,因此基于camera view的方法效率都較高。camera view效果如下圖。
2. networkbackbone 網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計要依據(jù)任務(wù)需求,基于camera view的目標(biāo)檢測方法,多是以分割任務(wù)為主,因此網(wǎng)絡(luò)結(jié)構(gòu)大都是encode+decode結(jié)構(gòu),如下圖1所示。因此有關(guān)提高分割效果的網(wǎng)絡(luò) 設(shè)計思想都可以在此使用,如圖2中使用不同大小的dilation rate的卷積獲得不同感受野的特征表達(dá),如圖3使用global attention增加上下文信息。更多分割增強(qiáng)模塊,在后面會專門寫一篇文章介紹。
圖1ecode+decode
圖2 不同dilate rate卷積
圖3 global attention 3. detection head 基于camera view的目標(biāo)檢測方法有兩種輸出方式表達(dá),一種是純分割區(qū)域,另一種是分割與檢測框。純分割區(qū)域表達(dá)純分割的輸出是基于camera view的模型最直接、最好的一種輸出。在原始3D點云中,尤其是遠(yuǎn)處的點,點與點之間的距離都較遠(yuǎn),如bev投影圖,造成點特征提取時很難融入上下文信息。而camera view投影圖將點云中的點聚攏,每個點都可以很方便的獲得更大范圍的上下文信息,這種投影方式更適合分割任務(wù)。如在SqueezeSeg和PointSeg兩篇文章中,都直接將分割作為最終任務(wù)目標(biāo),但是為了得到更好的聯(lián)通區(qū)域,需要增加較多的后處理。如在SqueezeSeg,在模型輸出后又增加了crf提高分割效果。在PointSeg中,使用RANSAC將異常點剔除,如下圖,第一行為模型輸入,第二行為模型直接的預(yù)測輸出,第三行為將模型輸出的camera view圖反投影得到的點云圖,第四行為經(jīng)過ransac后再反投影得到的點云圖,對比第三行和第四行對應(yīng)的圖可以看出,ransac有效的抑制很多離目標(biāo)較遠(yuǎn)的點。
分割與檢測表達(dá)分割任務(wù)對于基于camera view的模型相對簡單,但是檢測框的回歸并不容易。camera view投影圖增加了點云中點的上下文信息,但也將原本在3D空間分離的目標(biāo)拉近,引入了遮擋與目標(biāo)尺度變化,然而點云投影圖又不像真實的圖像那樣有很豐富的紋理信息,造成了camera view圖像很難做實例分割與目標(biāo)框回歸,因此,檢測框的回歸需要增加一些額外操作來實現(xiàn)。
在lasernet中,對于目標(biāo)框中的點(x,y)需要回歸6個信息,如上圖所示,Box Parameters為6,包括:該點相對中心點的偏移(dx,dy), 相對旋轉(zhuǎn)角度 (ωx,ωy) = (cosω,sinω),以及框大小 (l,w),從而可以通過下述公式計算得到真正的目標(biāo)框中心點bc以及旋轉(zhuǎn)角φ,其中θ為該點在點云中的方位角,Rθ為以θ為旋轉(zhuǎn)角的旋轉(zhuǎn)矩陣。
另外,由于對每個點的預(yù)測存在噪聲,而后又在bev投影圖中使用mean shift聚類方法得到更準(zhǔn)確的目標(biāo)框。 4. 小結(jié) 由于3D點云在做camera view投影的時候丟失了原來的3D結(jié)構(gòu)信息,引入了圖像中的尺度變化和遮擋兩個問題,因此少有方法直接在這種模式下作3D目標(biāo)檢測,一般需要在網(wǎng)絡(luò)輸出基礎(chǔ)上做比較多的后處理。但是camera view的表達(dá)模式,極大的增加了遠(yuǎn)處點云的上下文信息,也是一種極好的提高點云特征表達(dá)能力的方式。
基于point-wise feature的目標(biāo)檢測方法 我們從如下圖所示的3個部分(lidar representation,network backbone,detection head),來介紹一下point-wise方法。其中l(wèi)idar represention部分是直接使用點云做輸入,即n*4的點集,不做單獨介紹,下面重點介紹一下其他兩個部分。
1. network backbone 提取點特征一般有兩種方式:基于pointnet/pointnet++的點特征、voxel特征。如圖1:在STD中,組合了兩種方式。如圖2,在PointRcnn中,僅使用了pointnet++提取點特征
圖1 STD特征提取方式
圖2 PointRcnn中特征提取方式 在使用pointnet++[11]提取特征時,包含兩個重要模塊,即set abstraction(即,SA)和feature propagation(即,F(xiàn)P),如下圖3所示其中SA是特征encoder過程,通過點云篩選與特征提取逐步減少點云點數(shù),提高特征表達(dá)能力與感受,F(xiàn)P是特征decoder過程,通過點云上采樣,獲得稠密的點云表達(dá),并級聯(lián)SA過程的特征,提高最終的點云特征表達(dá)能力。
圖3pointnet++特征表達(dá) 在3DSSD中,為了提高模型效率,去掉了耗時比較嚴(yán)重的FP模塊,由于SA過程只篩選了一部分點做特征表達(dá),對目標(biāo)檢測的召回影響很大,尤其對點云比較稀疏的遠(yuǎn)處的目標(biāo),影響更大,因此3DSSD在D-FPS的基礎(chǔ)上,提出了F-FPS,即通過點的語義信息來做點的篩選,保留更多的正樣本的點,保證最終的目標(biāo)召回率。 2. detection head detection head除了完成目標(biāo)分類與目標(biāo)定位的任務(wù),在two-stage detector中,還需要實現(xiàn)roi pooling,為第二階段提供實例級別的特征,點云的特征表達(dá)還是有些差別的。 對于目標(biāo)定位的任務(wù),同樣有anchor-base方法和anchor-free方法。在STD中,為應(yīng)對有旋轉(zhuǎn)角的box回歸,提出了球形anchor,由于anchor沒有角度的變化,直接將anchor數(shù)量減少50%,提高了計算效率。其他方法大都是anchor-free的方法,關(guān)于anchor-free的方法,推薦讀一下kaiming大神的voteNet,比較好理解。 關(guān)于roi pooling,一般是針對單個目標(biāo),再次提取更豐富、更具表達(dá)能力的特征,因此在不同論文中,根據(jù)實例提取特征方式的不同,提出了不同的roi pooling方法,如在STD中,提出了PointsPool,在Part aware and aggregation中,提出了Roiaware Point Cloud Pooling,在pv-rcnn中提出了Roi grid Pooling。下面分別介紹一下。 PointsPool如下圖4所示,分成三個步驟
圖4 PointsPool
特征提取:在proposal中隨機(jī)篩選N個點,1)獲得第一階段的點特征;2)獲得N個點的坐標(biāo),并用如下圖5所示的canonical transformation得到與原坐標(biāo)系無關(guān)的坐標(biāo)特征。兩種特征聯(lián)合在一起,作為proposal中點的特征表達(dá)
Voxel表達(dá):將不同大小的proposal,通過voxel統(tǒng)一化到相同大小:dl = 6,dw = 6,dh = 6
使用VFE layer提取最終特征
圖5canonical transformation Roi aware Point Cloud Pooling整體流程如下圖6所示,與STD中的pooling方法類似,首先將proposal分割成固定大小的voxel,如14×14×14,然后再提取voxel特征表達(dá):
RoIAwareMaxPool:使用的是第一階段輸出的point-wise semantic part feature,在voxel中計算max pooling
RoIAwareAvgPool:使用的是proposal中經(jīng)過canonical transformation點坐標(biāo)特征和segmentation score,在voxel中計算avg pooling
最后將兩組特征聯(lián)合作為proposal的pooling特征。
圖6Roi aware Point Cloud Pooling Roi grid pooling與上面兩種pooling方法不同的是,并沒有將proposal通過voxel得到固定大小的特征圖,而是根據(jù)pv-rcnn中提出的key point信息,將proposal用6*6*6=216個grid points表達(dá),grid points是從proposal中的key points均勻采樣獲得,且RoI-grid point features提取過程和key point feature提取過程是相似的。簡單來說就是以grid point為中心,r為半徑的區(qū)域內(nèi)提取不同尺度、不同感受野的特征,最后在使用2層的MLP網(wǎng)絡(luò)獲得最終的特征表達(dá),如圖7所示。
圖7Roi grid point feature extraction3.小結(jié)與展望 目前基于point-wise feature的目標(biāo)檢測方法還處于研究階段,效率無法保證,精度還未在真實自動駕駛車上測試,但由于該方法直接從點云提取特征,極大的保留了點云的原始信息,比較有潛力得到更好的效果。
基于融合特征的目標(biāo)檢測方法 Waymo在2020年初的文章“End-to-End Multi-View Fusionfor 3D Object Detection in LiDAR Point Clouds”使用了融合特征的方式,得到了不錯的結(jié)果。下面詳細(xì)介紹一下。
圖1 目標(biāo)檢測流程 我們從如圖1所示的3個部分(lidar representation,network backbone,detection head),來介紹一下融合特征的目標(biāo)檢測方法。文中主要和pointpillar做了對比,為了證明融合特征的有效性,在network backbone和detection head兩部分的設(shè)計上保持了與pointpillars的一致性,這里不做單獨介紹,下面重點介紹lidar representation,即如何獲得融合特征。 1. lidar representation
圖2multi-view featurefusion的流程
圖3dynamicvoxelization計算流程 如圖2所示為multi-view feature fusion的流程,融合了3部分特征:bev feature(如圖中綠色部分)、camera/range view feature(如圖中黃色部分)、point-wise feature(如圖中藍(lán)色部分)。具體流程如下:
對于原始點云,使用一個全連接層,獲得point-wise feature。
在point-wise feature的基礎(chǔ)上,提取bev feature。提出了使用動態(tài)voxel(dynamic voxelization,DV)的方式獲得bev圖,計算過程如圖3所示,相對傳統(tǒng)的voxel(Hard voxelization,HV),有3個好處,1)DV保留了voxel中的所有點,HV使用隨機(jī)采樣的方法選取固定的點數(shù),有可能會丟失重要信息,如圖3中v1的計算;2)HV中每個voxel中選擇固定的點數(shù),且對整個點云選擇固定的voxel數(shù)量,因此會隨機(jī)丟棄點甚至整個voxel,這種方式可能導(dǎo)致不穩(wěn)定的檢測結(jié)果,如圖3中v2在HV中被丟棄;3)HV對于點數(shù)少于固定值的voxel使用0填充,這樣會造成額外的計算,如圖3中v2~v4。最后對于點云的每一個點,使用公式(1)獲得點與voxel的投影關(guān)系,其中pi表示點云坐標(biāo),vj表示voxel,F(xiàn)V表示點到voxel的投影關(guān)系。
對于camera view,同樣可以使用公式(1)計算得到,而camera view的投影計算
bev圖和camera view圖經(jīng)過一個cnn后,獲得相應(yīng)的bev feature與camera view feature,再使用公式(2)(其中,F(xiàn)P表示voxel feature到點云的投影關(guān)系,是FV的逆)逆投影獲得不同view的點特征的表達(dá),最后與point-wise feature融合得到最終的點特征表達(dá)。
(1)
(2) 2. 結(jié)果與小結(jié) 在實驗中,作者為了證明融合特征較強(qiáng)的表達(dá)能力,network backbone與detection head使用了與pointpillar相同的參數(shù),并在waymo公開的數(shù)據(jù)庫與kitti上做了實驗。僅分析一下waymo公開數(shù)據(jù)庫的結(jié)果,如圖4中的table1和table 2。從結(jié)果可以看出,使用DV替換HV,使整體結(jié)果提高2個多點,再增加point-wise feature后,車輛檢測結(jié)果再提高3個多點,行人檢測結(jié)果再提高4個點,說明voxel中的每個點對voxel特征表達(dá)都重要,不能隨機(jī)丟棄,更不能隨機(jī)丟棄整個voxel,更精細(xì)的特征對小尺度的目標(biāo)表達(dá)有幫助。耗時方面,由于mvf使用了與兩種方法相同的網(wǎng)絡(luò)配置,而又增加了新的特征表達(dá),整體耗時高了20多ms,如果再對網(wǎng)絡(luò)做一些優(yōu)化,這種融合的方法對結(jié)果的提升意義很大。
圖4 waymo數(shù)據(jù)集結(jié)果
總結(jié)與展望 通過對整個檢測流程的分析,將目標(biāo)檢測流程分成如下3個部分,如圖2所示。并針對不同的目標(biāo)檢測方法,從這3個部分進(jìn)行了詳細(xì)的分析。
lidar representation:激光雷達(dá)點云的特征表達(dá),包括bev圖、camera/range view圖、point-wise feature、融合特征。
network backbone:用于特征提取的主體結(jié)構(gòu),可以為resnet,vgg等,也包括增強(qiáng)特征的方式,如fpn
detection head:檢測網(wǎng)絡(luò)輸出,包括目標(biāo)的類別、位置、大小和姿態(tài),以及速度預(yù)測等,對于two-stage detector來說,roi pooling也是很重要的一個環(huán)節(jié)。
圖2 目標(biāo)檢測流程 其實,在實際應(yīng)用中,無論對于哪一種基于lidar的目標(biāo)檢測方法來說,我們評價其好壞,需要看精度與耗時之間的平衡。根據(jù)不同算法在kitti的bird’s eye view任務(wù)下公布的結(jié)果,將部分基于lidar的目標(biāo)檢測方法的moderate精度和latency總結(jié)如表1,并根據(jù)方法所屬的不同類別畫出分布圖,如圖3所示,橫坐標(biāo)表示算法耗時,單位ms,縱坐標(biāo)表示算法在車輛檢測任務(wù)中moderate精度,其中藍(lán)點表示基于point-wise feature的目標(biāo)檢測方法,橙點表示基于BEV的目標(biāo)檢測方法,灰點表示基于camera view的目標(biāo)檢測方法。 表1不同算法檢測效果
圖3不同算法效果分布圖 從圖3,我們可以看出基于point-wise feature的目標(biāo)檢測方法精度最高,而且耗時有逐步減小的趨勢,但是整體耗時依舊比其他兩種方法高,其中耗時最低的是基于camera-view的目標(biāo)檢測方法,即LaserNet,僅有12ms,但是精度相對較最低;基于bev的目標(biāo)檢測方法在精度與耗時之間做了比較好的平衡,因此,在實際自動駕駛應(yīng)用中,基于bev的目標(biāo)檢測方法應(yīng)用最多。 之前在介紹基于point-wise feature的目標(biāo)檢測方法中說過,該方法潛力較大,其實從圖3中也可以看出。如果從效率上可以優(yōu)化一下,在實際應(yīng)用的可能性也會變大。這個圖僅是不同方法在車輛檢測子任務(wù)上的效果,其實,相同的方法在自行車和人的檢測任務(wù)中精度排名差別很大,如PV-RCNN在車輛檢測中排名第2,在行人和自行車檢測任務(wù)中分別滑到第6和第4;STD在車輛檢測中排名第5,在行人和自行車檢測任務(wù)中分別滑到第20和第13,如果基于point-wise feature的目標(biāo)檢測方法可以在不同任務(wù)間依然能保持精度優(yōu)勢,那么其落地的可能性又會增大很多。總之,我們需要從耗時、不同任務(wù)間精度平衡來評估算法的落地難易程度,但是對于有潛力的算法,我們更需要持續(xù)的投入,以期待解決未來更復(fù)雜的實際問題。
原文標(biāo)題:一文覽盡LiDAR點云目標(biāo)檢測方法
文章出處:【微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
激光雷達(dá)
+關(guān)注
關(guān)注
967文章
3940瀏覽量
189601 -
自動駕駛
+關(guān)注
關(guān)注
783文章
13685瀏覽量
166150 -
LIDAR
+關(guān)注
關(guān)注
10文章
323瀏覽量
29358
原文標(biāo)題:一文覽盡LiDAR點云目標(biāo)檢測方法
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論