劉勇江,史健芳,袁曉輝
(太原理工大學信息與計算機學院,山西晉中 030600)
點云數(shù)據(jù)由眾多點坐標構(gòu)成用以反映真實物體的幾何信息,點云的語義分割作為點云數(shù)據(jù)的一種處理技術(shù)在3D 場景理解、城市規(guī)劃、基礎(chǔ)設(shè)施維護等[1-3]領(lǐng)域發(fā)揮著重要作用,具有很高的理論意義與應(yīng)用價值。
深度學習算法中基于體素表示的算法[4]將點云轉(zhuǎn)換為規(guī)則的三維體素表示具有立方復(fù)雜度,導致網(wǎng)絡(luò)在處理中等規(guī)模點云時所需要的內(nèi)存消耗和計算資源急劇增加,而將點云投影為多視圖的預(yù)處理方法[5-6]通常會導致幾何信息的嚴重丟失。
隨著深度學習的發(fā)展,文獻[7]基礎(chǔ)網(wǎng)絡(luò)PointNet直接輸入點云數(shù)據(jù)進行分類與分割,避免了數(shù)據(jù)轉(zhuǎn)變帶來的信息丟失。該網(wǎng)絡(luò)采用單獨提取點特征的方式使得網(wǎng)絡(luò)缺乏對局部特征的學習,從而導致模型泛化能力有限。文獻[8]使用的基礎(chǔ)網(wǎng)絡(luò)PointNet++在PointNet 的基礎(chǔ)上對點云進行區(qū)域采樣,再多層次遞歸應(yīng)用PointNet 提取局部特征,增強了網(wǎng)絡(luò)在細分場景和復(fù)雜場景中的分類能力。PointNet++在特征提取過程中仍然單獨處理局部區(qū)域內(nèi)的點,忽略了鄰域點之間的關(guān)系。PointSIFT[11]將2D 圖像中的尺度不變特征進行變換后引入點云數(shù)據(jù)處理中,通過方向編碼和尺度感知提取各個方向特征,以提高對局部特征的描述。盡管現(xiàn)有直接處理點云的方法[9-18]取得了較好的分割性能,但忽略了點云中點之間的鄰域關(guān)系與拓撲結(jié)構(gòu)信息。
該文算法為了避免數(shù)據(jù)幾何信息的丟失,將點云數(shù)據(jù)作為PointNet++網(wǎng)絡(luò)結(jié)構(gòu)網(wǎng)絡(luò)的輸入,在其局部特征提取過程中引入注意力機制對鄰域點空間位置信息等進行自適應(yīng)學習;其次采用多尺度局部特征提取策略達到多尺度特征互補,并設(shè)計了多尺度交叉熵損失函數(shù)進行網(wǎng)絡(luò)訓練。
由于LiRAR 或者深度相機產(chǎn)生的點云數(shù)據(jù)量過大,且不同點云數(shù)據(jù)間的點數(shù)量不相等導致訓練過程中批量訓練難以進行,所以該文算法采用最遠點采樣算法(Farthest Point Sampling,FPS)實現(xiàn)對原始點云的降采樣操作,以確定局部鄰域中心點,降低數(shù)據(jù)冗余度與模型輸入大小。最遠點采樣算法具體流程如下:
1)隨機選擇一個初始點作為已選采樣點;
2)計算未選采樣點集中每個點與已選采樣點之間的距離,將距離最大點添加到已選采樣點集;
3)循環(huán)迭代更新,直至獲得目標數(shù)量采樣點。
以通過降采樣獲取的點為中心劃定半徑,使用球查詢(Ball query)的方式找出在該半徑球內(nèi)固定規(guī)模N的點作為該點的相鄰點,降采樣中心點pi與其相鄰點pj∈N(pi)共同完成局部鄰域的構(gòu)建。
該文算法采用鄰域注意力機制獲取每個點鄰域注意力系數(shù),同時使用中心點與鄰域點空間位置信息、歐式距離、角度信息作為特征提取輸入,以增強點集語義表達。具體方法為:首先在以某一點pi為中心點的局部區(qū)域內(nèi)對pi和其相鄰點pj∈N(pi)構(gòu)建向量λi,j∈R13:
其中,xi與xj分別表示pi和pj的坐標信息;xj-xi表示pj相對于中心點pi的坐標;||·||表示pi和pj的歐式距離;aj表示pj在三個坐標軸方向上相對于pi的角度信息,計算過程如下:
向量λi,j∈R13包含了中心點pi與pj的空間位置和幾何信息。利用多層感知機分別將局部鄰域內(nèi)的λi,j∈R13經(jīng)式(3)隱式編碼映射得到高維特征:
其中,MLP(·) 為多層感知機。C1為特征維度數(shù),點云數(shù)據(jù)包含顏色、反射光強度等信息,將局部鄰域內(nèi)提取到的高維特征與上述信息進行融合得到增強特征,其中,C2為附加特征維度。增強特征通過式(4)獲得不同鄰域點注意力系數(shù):
注意力系數(shù)表示鄰域點對于中心點的影響程度,注意力系數(shù)越大表明鄰域點對中心點影響越大。將上述操作所得注意力系數(shù)通過softmax 操作進行歸一化處理,使所有的注意力系數(shù)相加為1,計算公式如下所示:
將鄰域點特征與注意力系數(shù)逐元素相乘得到重新分配的中心點特征,如式(6)所示:
其中,bi為偏置項。通過最大池化聚合鄰域特征獲得pi,輸出局部特征,該特征包含局部區(qū)域內(nèi)豐富的點之間的鄰域關(guān)系和空間幾何信息,池化操作使點云局部特征提取過程滿足置換不變性,如圖1所示。
圖1 中,降采樣局部鄰域構(gòu)建可得到局部鄰域點,經(jīng)過多層感知機映射得到特征向量,鄰域點特征向量最大值聚合得到中心點特征向量,保證了不同輸入鄰域點順序依然可以聚合得到相同中心點特征。
圖1 池化操作過程
為了獲得足夠的特征信息以及消除點云數(shù)據(jù)下采樣過程中信息丟失的影響,該文采用多尺度局部特征提取策略,針對某一中心點pi,選取不同區(qū)域半徑構(gòu)建不同尺度的局部區(qū)域。將這些不同區(qū)域點分別送入基于注意力機制局部特征提取層,生成不同尺度語義特征,最后將所得特征拼接生成最終語義特征,以達到多尺度特征互補,特征拼接過程如式(7)所示:
為了使網(wǎng)絡(luò)具有自適應(yīng)探索語義關(guān)系和局部幾何信息能力,該文利用多尺度交叉熵損失函數(shù)進行網(wǎng)絡(luò)訓練,損失函數(shù)定義如下:
其中,Li為第i個尺度上的交叉熵損失函數(shù),λi為多尺度交叉熵損失因子,設(shè)置為1。
該文算法利用PointNet++[9]分層提取特征結(jié)構(gòu),將點云數(shù)據(jù)作為網(wǎng)絡(luò)輸入進行降采樣,相較以往基于體素與基于多視圖轉(zhuǎn)化方法,其最大程度地避免了數(shù)據(jù)幾何信息丟失。該文所提語義分割整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 整體網(wǎng)絡(luò)結(jié)構(gòu)圖
圖2 中,輸入點集利用最遠點采樣算法完成降采樣局部鄰域的構(gòu)建,利用注意力機制局部特征提取層提取鄰域點特征、空間位置信息、幾何距離與角度等基本幾何特征,完成局部鄰域點之間鄰域關(guān)系與幾何信息的學習。針對點云數(shù)據(jù)語義分割任務(wù),在上采樣層網(wǎng)絡(luò)利用基于反距離加權(quán)平均插值法恢復(fù)點云數(shù)量,該方法的核心思想是通過衡量與關(guān)鍵點的距離確定權(quán)重值大小,距離關(guān)鍵點距離越大的點所求權(quán)重越小,反之權(quán)重值越大。同時利用跳躍拼接將點數(shù)相同的局部特征提取層與上采樣層的特征信息進行拼接,使輸出特征既包括局部特征也包括全局特征。將最終的特征信息輸入全連接神經(jīng)網(wǎng)絡(luò)層,以輸出點云數(shù)據(jù)中每個點的語義分割結(jié)果。
該文使用斯坦福大規(guī)模三維室內(nèi)空間數(shù)據(jù)集S3DIS[19]作為實驗數(shù)據(jù)集來評估所提算法語義場景分割任務(wù)性能,該數(shù)據(jù)集覆蓋面積超過6 000 m2,包含來自三棟建筑物的六個不同大型室內(nèi)場景中的272 個房間的3D 掃描點云數(shù)據(jù),不同類型的場景可視化如圖3 所示。該數(shù)據(jù)集分別對每個房間內(nèi)天花板、地板、墻面、房梁、柱子等13 個類別物體進行了語義標注。每個數(shù)據(jù)中包含X、Y、Z坐標信息、標簽信息和RGB 顏色信息,該文將X、Y、Z坐標信息和標簽信息作為網(wǎng)絡(luò)輸入進行實驗。
圖3 不同室內(nèi)場景可視化
點云是眾多反映三維場景或物體幾何信息的點坐標集合,一個真實場景通常包含了大量點云數(shù)據(jù)。S3DIS 數(shù)據(jù)集點云總數(shù)量超過了2 億,受限于該文實驗條件,網(wǎng)絡(luò)在訓練過程中使用全部數(shù)據(jù)點會導致計算量過大。因此,該文在網(wǎng)絡(luò)訓練階段采用數(shù)據(jù)規(guī)約對數(shù)據(jù)集進行預(yù)處理,將每個室內(nèi)場景分為1 m×1 m 的塊,采用隨機采樣對每個塊取n個樣本點,實驗中的n取4 096,網(wǎng)絡(luò)測試階段使用每個塊中的全部樣本點。
該文實驗硬件配置為Intel(R) Xeon(R) Gold 5120 CPU@2.20 GHz處理器,顯卡為NVIDIA Tesla P4(8G)。操作系統(tǒng)采用Linux Ubuntu20.04,運算平臺為CUDA-Toolkit 11.2,CUDNN 7.6.5 作為GPU 加速器。
該文算法在Pytorch 1.6.0 框架下進行實驗,網(wǎng)絡(luò)參數(shù)設(shè)置如表1-2 所示。
表1 網(wǎng)絡(luò)參數(shù)設(shè)置(1)
表2 網(wǎng)絡(luò)參數(shù)設(shè)置(2)
實驗中選取總體準確度oAcc、類別交并比IoU以及平均類別交并比mIoU 作為語義分割評估指標??傮w準確度oAcc:預(yù)測正確的點云數(shù)量與總體點云數(shù)量的比值,計算過程如式(9)所示:
其中,設(shè)點云數(shù)據(jù)中共有N+1 個類別,Pij表示第i類類別被預(yù)測分類為第j類類別的點,Pii表示第i類類別被預(yù)測為第i類類別的點。
類別交并比IoU 是每種類別預(yù)測值與標簽值交集和并集的比值,而平均類別交并比mIoU 是利用上述所有類別交并比求平均值,具體計算公式如式(10)所示:
其中,N+1 在實驗中取室內(nèi)數(shù)據(jù)集所包含的13 個類別,Pji表示第j類類別被預(yù)測分為第i類類別的點,其他變量所代表的意義與式(9)相同。
為了驗證該文算法在三維點云語義分割任務(wù)中的有效性,在S3DIS 數(shù)據(jù)集上進行網(wǎng)絡(luò)的訓練與測試,實驗中S3DIS 數(shù)據(jù)集分為6 個區(qū)域:Area_1、Area_2、Area_3、Area_4、Area_5、Area_6。其中,Area_5 包含了該數(shù)據(jù)集中的全部建筑物與物體類別,并且與其他區(qū)域中的物體在外觀上存在一定差異,因此,使用Area_5 作為算法的測試集,其他區(qū)域作為訓練集,可以評估網(wǎng)絡(luò)的泛化性能。
表3 為該文算法在測試集Area_5 上的分割結(jié)果,評價指標分別是總體準確度oAcc、平均類別交并比mIoU 以及13 個類別物體的交并比IoU。將結(jié)果與已有算法PointNet、PointNet++、PointConv 進行對比,其中,該文算法的oAcc 較PointNet++提高了6.18%,mIoU 提高了5.96%,墻面、窗戶、門、黑板這幾類幾何結(jié)構(gòu)為平面體的物體類別IoU 分別提高了7.4%、1.02%、10.73%、3.96%,由此可見,該文算法依據(jù)局部鄰域點的空間位置信息、幾何距離信息以及角度信息分配鄰域點注意力系數(shù),以聚合中心點局部特征信息的方式充分利用了點之間的鄰域關(guān)系與幾何信息,在一些空間幾何結(jié)構(gòu)相似的語義場景下依然可以得到較好的分割效果。但是,在對橫梁與柱體的分割中所達到的IoU依然分別只有0.00%與9.43%,這是由于這兩類類別在數(shù)據(jù)集中占據(jù)的數(shù)量比較少,因此算法能夠?qū)W習到的特征有限,不容易正確分割,導致分割精度較低。
表3 測試集Area_5評估的語義分割結(jié)果
圖4 進一步給出了該文算法的語義分割效果圖,圖中第1 列為真實場景,第2 列為點云分割真實值,第3 列為對比算法PointNet++分割預(yù)測值,第4 列為該文算法的分割結(jié)果預(yù)測值,從分割效果圖也可以看出該文算法在復(fù)雜場景中對幾何結(jié)構(gòu)相似類別的分割效果要優(yōu)于原始網(wǎng)絡(luò)結(jié)構(gòu),解決了原網(wǎng)絡(luò)結(jié)構(gòu)部分錯分割與漏分割問題。
圖4 不同場景語義分割效果對比
針對當前點云語義分割網(wǎng)絡(luò)結(jié)構(gòu)在局部區(qū)域中單獨提取點特征,缺乏點之間鄰域關(guān)系及幾何信息學習和復(fù)雜場景分割能力較弱的問題,該文算法融合注意力機制與PointNet++網(wǎng)絡(luò)結(jié)構(gòu),使模型自適應(yīng)學習鄰域點的空間位置等信息。此外,采用多尺度局部特征提取策略抵消點云數(shù)據(jù)下采樣中的信息丟失,設(shè)計了多尺度交叉熵損失函數(shù)進行網(wǎng)絡(luò)訓練。該文算法在S3DIS 上相較于原始網(wǎng)絡(luò)結(jié)構(gòu)oAcc 與mIoU 分別提高了6.18%、5.96%,然而對于橫梁與柱體兩類數(shù)據(jù)量占比非常小的物體測試效果仍存在提升空間,之后將在較少點云數(shù)據(jù)下進行實驗,進一步完善算法以提升模型的分割精度。