孫端正,高 飛,葉周潤,2,吳言安,張樹峰,謝榮暉
(1.合肥工業(yè)大學(xué)土木與水利工程學(xué)院,安徽 合肥 230009; 2.中國科學(xué)院精密測量科學(xué)與技術(shù)創(chuàng)新研究院大地測量與地球動(dòng)力學(xué)國家重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430077; 3.安徽開源路橋有限責(zé)任公司,安徽 合肥 230093)
三維點(diǎn)云數(shù)據(jù)定位對于無人駕駛車輛而言是一項(xiàng)具有挑戰(zhàn)性的任務(wù),在動(dòng)態(tài)的道路、城市場景中,由于其通用性和長期穩(wěn)定性,桿狀物非常適合作為動(dòng)態(tài)場景下無人汽車定位的標(biāo)志,以實(shí)現(xiàn)準(zhǔn)確可靠的重新定位[1]。如何從三維點(diǎn)云數(shù)據(jù)準(zhǔn)確提取出桿狀物,是三維激光掃描技術(shù)用于自動(dòng)駕駛的難點(diǎn)之一。
傳統(tǒng)桿狀物提取主要采用基于模型驅(qū)動(dòng)及對象檢測的方法進(jìn)行[2-5]。傳統(tǒng)機(jī)器學(xué)習(xí)點(diǎn)云分類方法需要針對某一數(shù)據(jù)類型人工設(shè)計(jì)特征,難以應(yīng)用到非常廣泛的數(shù)據(jù)集中,限制了其在復(fù)雜場景多分類的應(yīng)用。隨著深度學(xué)習(xí)算法的研究不斷深入,眾多學(xué)者開始使用深度學(xué)習(xí)網(wǎng)絡(luò)處理點(diǎn)云數(shù)據(jù)。如,文獻(xiàn)[6—7]基于多視圖投影的點(diǎn)云深度學(xué)習(xí)網(wǎng)絡(luò)的核心思想是按照多個(gè)角度將三維點(diǎn)云投影為二維圖像,從而將不規(guī)則的點(diǎn)云數(shù)據(jù)表示為規(guī)則的圖像數(shù)據(jù),并以不同視角的二維圖像呈現(xiàn)三維形狀,再對多視圖像使用成熟的2D CNN 進(jìn)行信息提取和分類;文獻(xiàn)[8—10]基于三維格網(wǎng)化的點(diǎn)云深度學(xué)習(xí)網(wǎng)絡(luò)的核心思想,是將圖像上的二維卷積擴(kuò)展為三維卷積,在提取特征時(shí),將二維卷積核擴(kuò)展到三維空間上,用三維卷積核提取體素的有效特征,在解決點(diǎn)云無序性的同時(shí)保留了原始的三維信息。而這些間接基于點(diǎn)的方法未能充分利用點(diǎn)云屬性,損失了部分信息,直接基于點(diǎn)的PointNet++[11]相較于間接基于點(diǎn)的方法減少了信息損失,在點(diǎn)云分割任務(wù)中表現(xiàn)良好。
本文基于PointNet++網(wǎng)絡(luò)模型進(jìn)行改進(jìn),選取適合道路點(diǎn)云分割的參數(shù),采用焦點(diǎn)損失函數(shù)[12](Focal Loss)作為模型的損失函數(shù),并插入鄰域特征聚合模塊提取鄰域信息?;诟倪M(jìn)的PointNet++的道路點(diǎn)云語義分割模型,以期實(shí)現(xiàn)道路點(diǎn)云桿狀物的提取,并在自建數(shù)據(jù)集上進(jìn)行試驗(yàn),通過試驗(yàn)驗(yàn)證該方法的有效性。
PointNet[13]網(wǎng)絡(luò)模型作為第一個(gè)直接處理點(diǎn)云的深度學(xué)習(xí)框架,輸入是點(diǎn)云中各點(diǎn)在三維空間中的x、y、z坐標(biāo),原始數(shù)據(jù)通過包含一維卷積與全連接的空間變換矩陣預(yù)測網(wǎng)絡(luò)實(shí)現(xiàn)對齊,解決了點(diǎn)云的仿射不變性問題。處理后的數(shù)據(jù)再通過多層感知器(multilayer perceptron,MLP)提取點(diǎn)云特征。對提取出的點(diǎn)云特征,通過特征空間變換矩陣預(yù)測網(wǎng)絡(luò)處理,實(shí)現(xiàn)特征的對齊。最后在特征空間的維度上進(jìn)行最大池化(max pooling)整合點(diǎn)云信息,提取出點(diǎn)云的全局特征向量。
PointNet++在PointNet的基礎(chǔ)上提出了多層次特征提取結(jié)構(gòu),在輸入點(diǎn)集中采用最遠(yuǎn)點(diǎn)采樣(farthest point sampling, FPS)選取子集作為樣本點(diǎn),圍繞每個(gè)樣本點(diǎn)采用球查詢選擇周圍的點(diǎn)組成樣本區(qū)域,再將每個(gè)區(qū)域分別輸入PointNet網(wǎng)絡(luò),得到一組特征,以該特征作為對應(yīng)區(qū)域的特征。之后樣本點(diǎn)不變,擴(kuò)大樣本區(qū)域,重復(fù)提取特征的操作,以此類推,不斷地提取特征作為樣本區(qū)域的特征,擴(kuò)大樣本區(qū)域的范圍,從淺層局部特征最終得到深層全局語義特征。
對于語義分割問題,首先將高維的點(diǎn)反距離插值得到與低維相同的點(diǎn)數(shù),然后進(jìn)行特征融合,最后使用MLP提取特征,利用與特征提取結(jié)構(gòu)數(shù)目相同的特征傳遞結(jié)構(gòu),得到每個(gè)點(diǎn)的類別概率,實(shí)現(xiàn)語義分割。
經(jīng)典PointNet++模型是基于室內(nèi)小場景適用的網(wǎng)絡(luò)模型,待分割對象大多為小目標(biāo)物體,而道路點(diǎn)云數(shù)據(jù)往往長達(dá)數(shù)百米,待分割對象(如路燈、圍欄、樹木等)相對較大。PointNet++的多層次特征提取結(jié)構(gòu)共分為4層,該結(jié)構(gòu)的采樣半徑依次為0.1、0.2、0.4、0.8 m,在預(yù)處理階段將點(diǎn)云原始數(shù)據(jù)沿x軸、y軸方向分割為1 m×1 m的塊后再進(jìn)行處理。顯然,經(jīng)典PointNet++的采樣半徑和分塊大小并不適合道路點(diǎn)云的語義分割。
為使PointNet++更好地學(xué)習(xí)道路點(diǎn)云中各類物體的特征,本文對感受野大小及預(yù)處理中的分塊大小進(jìn)行調(diào)整,將采樣半徑改為0.4、0.8、1.6、3.2 m,并將分塊大小改為4 m×4 m,以更好地學(xué)習(xí)相對較大的物體特征。
經(jīng)典PointNet++網(wǎng)絡(luò)模型采用的損失函數(shù)為交叉熵?fù)p失函數(shù),使用的數(shù)據(jù)集(如S3DIS[14]數(shù)據(jù)集)中,待分割的各類點(diǎn)云數(shù)量在總點(diǎn)云數(shù)量中的占比相對平均,交叉熵?fù)p失函數(shù)可以較好地發(fā)揮作用。而在道路點(diǎn)云數(shù)據(jù)中,待提取的目標(biāo)桿狀物點(diǎn)云數(shù)量遠(yuǎn)少于其他類別數(shù)據(jù),導(dǎo)致繼續(xù)使用交叉熵?fù)p失函數(shù)時(shí),占比較小的桿狀物類無法得到充分的訓(xùn)練。
焦點(diǎn)損失函數(shù)可用于密集物體檢測工作,即用于解決樣本數(shù)量極度不均衡的問題,以減少簡單樣本對總損失的影響,從而減弱樣本數(shù)量不均衡對網(wǎng)絡(luò)分割造成的影響。文獻(xiàn)[15]表明,焦點(diǎn)損失函數(shù)在樣本數(shù)量不均衡的電力桿塔分割中表現(xiàn)良好。
交叉熵?fù)p失函數(shù)公式為
(1)
焦點(diǎn)損失函數(shù)公式為
(2)
式中,y′為模型給出的預(yù)測類別概率;y為真實(shí)樣本。相對于交叉熵?fù)p失函數(shù),焦點(diǎn)損失函數(shù)增加了一個(gè)(1-y′)γ的權(quán)重值。正確類別的概率越大,(1-y′)γ越小,說明分類正確的樣本的損失權(quán)重較小;反之,分類錯(cuò)誤的樣本的損權(quán)重較大。焦點(diǎn)損失函數(shù)增加了參數(shù)α、γ,通過α平衡各類別的數(shù)量比例不均,通過γ來減少簡單樣本的影響,使網(wǎng)絡(luò)模型更關(guān)注難以區(qū)分的樣本。使用焦點(diǎn)損失函數(shù)進(jìn)行均衡化處理,網(wǎng)絡(luò)模型可以更好地分割道路點(diǎn)云數(shù)據(jù)。本文采用參數(shù)為α=0.3,γ=1.5的焦點(diǎn)損失函數(shù)。
相對于PointNet網(wǎng)絡(luò),PointNet++網(wǎng)絡(luò)不僅考慮了全局特征,同時(shí)也關(guān)注了局部細(xì)節(jié),但僅考慮鄰域內(nèi)的各點(diǎn),并沒有考慮各點(diǎn)之間的相互影響關(guān)系,損失了特征信息。
為更好地學(xué)習(xí)局部區(qū)域的特征,本文在采樣分組和MLP操作之間插入鄰域特征聚合模塊。該模塊從坐標(biāo)相似度、特征相似度兩方面考慮各點(diǎn)之間的影響關(guān)系。其中,兩點(diǎn)間歐式距離越小,認(rèn)為影響越大;特征值之差越大,影響越大。
使用歐式距離表示相似度,常采用的轉(zhuǎn)換公式為
(3)
式中,S為x、y兩點(diǎn)的相似度;dx,y為x、y兩點(diǎn)間的歐式距離。PointNet++網(wǎng)絡(luò)中,若采用S1,各點(diǎn)間歐式距離較小時(shí),S值較大,與其他S值相差較大,不利于后續(xù)處理,對局部細(xì)節(jié)特征的學(xué)習(xí)能力較差。如圖1所示,采用S1時(shí),桿狀物主體部分割良好,但上部特征學(xué)習(xí)不充分,分割效果較差,而采用S2則可以減少此類問題,故本文采用S2作為兩點(diǎn)間相似度。
圖1 采用不同S分割結(jié)果對比
采用各點(diǎn)間特征值之差作為特征值相似度,與坐標(biāo)相似度結(jié)合。對于給定區(qū)域內(nèi)點(diǎn)的特征集F={F1,F2,…,Fk},各點(diǎn)對點(diǎn)i的影響之和Δ的表達(dá)式為
(4)
其中,點(diǎn)i聚合了鄰域信息的新特征F′i,可表示為
F′i=Fi+Δ
(5)
為驗(yàn)證方法的有效性,本文基于車載激光雷達(dá)采集的道路點(diǎn)云數(shù)據(jù)自行建立了數(shù)據(jù)集。該數(shù)據(jù)集包含11條道路點(diǎn)云數(shù)據(jù),分為:包含路燈、電線桿、信號(hào)燈桿等的桿狀物類;包含道路、水泥地面、泥土地面等的地面類;包含樹木及低矮灌木等的植物類;包含路沿、圍欄、車輛、廣告牌等的雜物類4個(gè)類別。本文試驗(yàn)中的訓(xùn)練集與測試集比例為9∶2,即在9條道路上訓(xùn)練,在2條道路上測試。如圖2所示,測試的道路中,道路1為只有桿狀物、圍欄、道路,桿狀物附近無鄰接樹木影響的簡單道路場景;道路2為樹木、灌木等較多,且桿狀物與樹木雜物鄰接的復(fù)雜道路場景。
圖2 測試集兩道路數(shù)據(jù)
本文試驗(yàn)環(huán)境為CPU:i7-9700,GPU:Intel(R) UHD Graphics 630,內(nèi)存:8 GB,深度學(xué)習(xí)框架環(huán)境:PyTorch17.1, CUDA10.2, Windows 10。
模型訓(xùn)練過程中,優(yōu)化器使用Adam,學(xué)習(xí)輪數(shù)設(shè)為60,初始學(xué)習(xí)率設(shè)為0.001,學(xué)習(xí)率衰減步長設(shè)為10,學(xué)習(xí)率衰減倍數(shù)設(shè)為0.7。
2.2.1 感受野與分塊大小
采用經(jīng)典PointNet++網(wǎng)絡(luò)模型的采樣半徑、數(shù)據(jù)預(yù)處理階段分塊大小進(jìn)行試驗(yàn)時(shí),不僅無法很好地學(xué)習(xí)道路點(diǎn)云數(shù)據(jù)中的大物體類別的特征,還會(huì)出現(xiàn)一些不完整的類別訓(xùn)練,以預(yù)處理分塊界限為分界線,兩邊分類預(yù)測結(jié)果各不相同的情況,語義分割的結(jié)果較差,如圖3(a)所示。
圖3 調(diào)整采樣半徑及分塊大小前后結(jié)果對比
調(diào)整感受野、分塊大小后,該網(wǎng)絡(luò)模型對大物體的特征學(xué)習(xí)更加充分,不完整類別訓(xùn)練導(dǎo)致同一物體按分塊線分為不同類別的情況大幅減少,語義分割效果明顯提升,如圖3(b)所示。本文后續(xù)研究皆在此基礎(chǔ)上進(jìn)行。
2.2.2 交叉熵?fù)p失函數(shù)與焦點(diǎn)損失函數(shù)
本文以交并比(intersection over union,IoU)作為評(píng)價(jià)標(biāo)準(zhǔn)。交并比即真實(shí)值和預(yù)測值的交集與真實(shí)值和預(yù)測值的并集之比。
兩組試驗(yàn)分別使用交叉熵?fù)p失函數(shù)與焦點(diǎn)損失函數(shù),其余試驗(yàn)條件,如試驗(yàn)數(shù)據(jù)、訓(xùn)練策略及參數(shù)等均相同,試驗(yàn)結(jié)果見表1。
表1 不同損失函數(shù)下的語義分割結(jié)果
從分割結(jié)果來看,使用焦點(diǎn)損失函數(shù)來代替經(jīng)典PointNet++中的交叉熵?fù)p失函數(shù),數(shù)據(jù)占比大的地面類語義分割精度相差不大。在簡單道路中,桿狀物類分割精度明顯提升,IoU提高了7.6%,雜物類分割精度略微提升;在復(fù)雜道路中,占比較少的桿狀物類和雜物類的分割精度明顯提升,IoU分別提升了8.5%和6.9%。
試驗(yàn)結(jié)果表明,在道路點(diǎn)云提取桿狀物的學(xué)習(xí)中,使用焦點(diǎn)損失函數(shù)可以解決數(shù)據(jù)中各分類占比不均衡的問題,使PointNet++網(wǎng)絡(luò)模型能更好地學(xué)習(xí)占比較少的分類特征,從而提高分割結(jié)果精度。
2.2.3 鄰域特征聚合模塊
分別采用交叉熵?fù)p失函數(shù)和焦點(diǎn)損失函數(shù)作為模型的損失函數(shù)來進(jìn)行試驗(yàn)。分別采用經(jīng)典的PointNet++網(wǎng)絡(luò)特征提取結(jié)構(gòu)與改進(jìn)的插入鄰域特征提取模塊的特征提取結(jié)構(gòu),其余試驗(yàn)條件均相同,試驗(yàn)結(jié)果見表2。
表2 不同特征提取結(jié)構(gòu)的語義分割結(jié)果
從分割結(jié)果來看,插入特征聚合模塊后,與插入前對比,在簡單道路中,采用損失函數(shù)為交叉熵?fù)p失函數(shù)時(shí),地面類精度稍有提升,桿狀物類精度有所提升,IoU提高了3.7%,雜物類精度大幅提升;采用損失函數(shù)為焦點(diǎn)損失函數(shù)時(shí),地面類、桿狀物類精度略微提升,桿狀物類IoU提高了0.9%,雜物類精度明顯提升。在復(fù)雜道路中,采用的損失函數(shù)為交叉熵?fù)p失函數(shù)時(shí),地面類IoU基本一致,桿狀物精度大幅提升,IoU提高了14.4%,樹木類精度略微下降,雜物類精度大幅提升;采用的損失函數(shù)為焦點(diǎn)損失函數(shù)時(shí),地面類IoU基本一致,桿狀物類精度明顯提升,IoU提高了6.8%,樹木類精度有所提升,雜物類精度大幅提升。
可見,聚合鄰域信息后,網(wǎng)絡(luò)對特征的學(xué)習(xí)能力得到提升,在測試集兩道路數(shù)據(jù)中,桿狀物的分割精度均得到提升。在損失函數(shù)采用焦點(diǎn)損失函數(shù)的基礎(chǔ)上,插入特征聚合模塊,可以更進(jìn)一步解決分類錯(cuò)誤的問題。如圖4所示,桿狀物與樹木、雜物鄰接的局部區(qū)域,對于使用焦點(diǎn)損失函數(shù)的PointNet++網(wǎng)絡(luò),插入鄰域特征聚合模塊后網(wǎng)絡(luò)能更好地對道路點(diǎn)云數(shù)據(jù)進(jìn)行學(xué)習(xí)、分割。最終分割結(jié)果如圖5所示。
圖4 有無鄰域特征聚合模塊分割結(jié)果對比
圖5 基于改進(jìn)的PointNet++網(wǎng)絡(luò)分割結(jié)果
本文將經(jīng)典PointNet++網(wǎng)絡(luò)的感受野大小與數(shù)據(jù)預(yù)處理分塊大小調(diào)整至適合道路點(diǎn)云,方便后續(xù)特征的學(xué)習(xí)與各類別的分割;采用焦點(diǎn)損失函數(shù)替換經(jīng)典PointNet++網(wǎng)絡(luò)的交叉熵?fù)p失函數(shù)來解決類別占比不平衡的問題;采用鄰域特征聚合模塊來聚合鄰域信息,使網(wǎng)絡(luò)更好地學(xué)習(xí)特征。
與經(jīng)典PointNet++網(wǎng)絡(luò)相比,本文改進(jìn)后的PointNet++網(wǎng)絡(luò)解決了部分分割問題,對道路的分割精度均有明顯提升,各類別IoU均有提高,在無樹木道路點(diǎn)云數(shù)據(jù)和桿狀物與樹木、雜物鄰接道路點(diǎn)云數(shù)據(jù)上的分割I(lǐng)oU分別提升了8.44%、15.25%,達(dá)到了98.88%、92.50%,基本實(shí)現(xiàn)了道路桿狀物的提取。