王 勇 岳晨珂
(重慶理工大學(xué)兩江人工智能學(xué)院 重慶 400054)
3D數(shù)據(jù)通常可以用幾種不同的格式表示,如RGB-D、深度圖、點(diǎn)云等。作為一種常用的3D數(shù)據(jù)表示形式,由于點(diǎn)云將原有的幾何信息保存在3D空間當(dāng)中,并且不會(huì)進(jìn)行離散化,因此在許多場(chǎng)景理解當(dāng)中成為首選的表示形式?;谶@些優(yōu)勢(shì),三維點(diǎn)云物體識(shí)別逐漸成為一個(gè)研究熱點(diǎn),在生物識(shí)別、自動(dòng)駕駛、場(chǎng)景理解、激光遙感等眾多領(lǐng)域都有廣泛的應(yīng)用[1-2]。
點(diǎn)云物體的分割與分類任務(wù)是點(diǎn)云處理領(lǐng)域非常重要的任務(wù)。傳統(tǒng)的方法[3]利用數(shù)據(jù)點(diǎn)的特征權(quán)值構(gòu)成多維特征向量,其中包括數(shù)據(jù)點(diǎn)的坐標(biāo)、法矢量、高斯曲率和平均曲率,利用多層自組織特征映射網(wǎng)絡(luò)SOFM對(duì)多維特征向量來聚類,達(dá)到了區(qū)域分割的目的。Chua等[4]提出了一種點(diǎn)簽名法(Point Signature),該方法根據(jù)每個(gè)點(diǎn)的球半徑鄰域與物體的交線L所擬合平面的法向量與參考矢量定義旋轉(zhuǎn)角,從而計(jì)算簽名距離,即每個(gè)點(diǎn)的簽名。通過對(duì)所有模型的所有點(diǎn)的簽名進(jìn)行預(yù)處理和存儲(chǔ),可以實(shí)現(xiàn)有效的對(duì)象識(shí)別。目前點(diǎn)云很多的功能是針對(duì)特定的任務(wù),手工提取相應(yīng)的特征完成的[5]。而僅僅依靠手工提取很難提取到完整的幾何特征,很多時(shí)候無法對(duì)于某種特定的任務(wù)提取到最佳的特征組合,從而無法提高精度問題。隨著深度學(xué)習(xí)的快速發(fā)展,很多研究者都開始尋找使用深度神經(jīng)網(wǎng)絡(luò)來自動(dòng)學(xué)習(xí)點(diǎn)云特征的方法[6]。近年來深度學(xué)習(xí)也廣泛應(yīng)用于點(diǎn)云識(shí)別領(lǐng)域,2015年Su等[7]采用三維物體多視角(Multi-view)的二位渲染圖片作為訓(xùn)練數(shù)據(jù),基于CNN對(duì)三維物體進(jìn)行識(shí)別。Charles等[8]提出了一種基于體素CNN點(diǎn)云識(shí)別方法,該方法將點(diǎn)云數(shù)據(jù)進(jìn)行柵格化處理,形成體素結(jié)構(gòu),然后再通過3D卷積操作進(jìn)行處理,并且引入輔助的訓(xùn)練任務(wù)來減小過擬合。還有一些利用樹形結(jié)構(gòu)來規(guī)則化點(diǎn)云數(shù)據(jù)如OctNet[9]用輸入數(shù)據(jù)中的稀疏性,使用一組不平衡的八叉樹來對(duì)空間進(jìn)行分層劃分,修改并實(shí)現(xiàn)了卷積運(yùn)算,以適應(yīng)混合網(wǎng)格-八叉樹數(shù)據(jù)結(jié)構(gòu)。Klokov等[10]在2017年提出的Kd-Net利用Kd樹對(duì)點(diǎn)云空間進(jìn)行劃分,其層次結(jié)構(gòu)用作不同的特征形式。
目前主流的點(diǎn)云分割與分類網(wǎng)絡(luò)模型是Charles等[11]在2017年提出的PointNet網(wǎng)絡(luò)模型,首次使用深度網(wǎng)絡(luò)模型端到端地直接處理原始的無序點(diǎn)云數(shù)據(jù)。PointNet將原始全部點(diǎn)云數(shù)據(jù)的集合作為輸入,通過和一個(gè)T-Net網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)到的轉(zhuǎn)換矩陣相乘來對(duì)齊,保證了模型對(duì)于特定空間轉(zhuǎn)換的不變性,之后在特征的每個(gè)維度上使用MaxPooling操作得到全局特征,再根據(jù)不同結(jié)構(gòu)完成分類和分割等任務(wù)并且在很多數(shù)據(jù)集上取得了不錯(cuò)的效果。但該模型簡(jiǎn)單粗暴地利用MaxPooling操作把所有點(diǎn)池化成了一個(gè)全局特征,而損失了每個(gè)點(diǎn)的局部特征信息,這使得識(shí)別局部點(diǎn)云問題的能力和對(duì)于復(fù)雜場(chǎng)景的泛化能力較差。
為了解決PointNet所存在的問題,設(shè)計(jì)一個(gè)基于多粒度特征的網(wǎng)絡(luò)分類模型,利用KNN(K-Nearest Neighbor)和FPS(Farthest Point Sampling)算法對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行多層次?;僮?在對(duì)于不同粒度層進(jìn)行特征提取,通過MaxPooling使得不同粒度層的特征進(jìn)行結(jié)合以完成相應(yīng)的分類和分割任務(wù),并且取得了較好的效果。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)在2D圖像領(lǐng)域大放異彩,在許多的圖像處理任務(wù)中都達(dá)到了最先進(jìn)的性能。使用離散化卷積的優(yōu)勢(shì)在于,它能充分利用了數(shù)據(jù)的網(wǎng)格結(jié)構(gòu),而點(diǎn)云數(shù)據(jù)不具備這種網(wǎng)格結(jié)構(gòu)。要想在點(diǎn)云上使用卷積操作有兩種方案:第一種是將點(diǎn)云數(shù)據(jù)轉(zhuǎn)換成適合離散卷積的數(shù)據(jù)形式,如體素[12];第二種是創(chuàng)建一種新的卷積形式來處理無結(jié)構(gòu)的點(diǎn)云數(shù)據(jù)。最近,Boulch[13]在2020年提出的ConvPoint就利用卷積概念,使用多層感知機(jī)(MLP)學(xué)習(xí)到每個(gè)點(diǎn)中鄰近點(diǎn)的連續(xù)權(quán)重函數(shù),計(jì)算出每個(gè)點(diǎn)的密度(Density),來解決點(diǎn)云采樣不均勻問題。圖1所示為CovnPoint 分類網(wǎng)絡(luò)框架圖。
圖1 CovnPoint 分類網(wǎng)絡(luò)框架圖
目前已經(jīng)有了很多使用深度學(xué)習(xí)對(duì)于點(diǎn)云物體進(jìn)行分割和分類方法,但大多數(shù)研究方法在處理點(diǎn)云時(shí)通常會(huì)將其轉(zhuǎn)換成特定視角下的深度圖像或者體素(Voxel)等更為規(guī)整的格式以便于定義權(quán)重共享的卷積操作。而PointNet[11]方法允許直接輸入點(diǎn)云數(shù)據(jù)進(jìn)行處理, 輸入為三通道點(diǎn)云數(shù)據(jù)(x,y,z),也可以有額外的通道比如顏色、法向量等,輸出整體的類別、每個(gè)點(diǎn)所處的部分、每個(gè)點(diǎn)的類別。對(duì)于目標(biāo)分類任務(wù),輸出為k個(gè)分?jǐn)?shù),分別對(duì)應(yīng)k個(gè)可能的類別。對(duì)于語(yǔ)義分割任務(wù),輸出n×m個(gè)分?jǐn)?shù),分別對(duì)應(yīng)n個(gè)點(diǎn)相對(duì)于m各類別的分?jǐn)?shù)。
在PointNet網(wǎng)絡(luò)模型中,輸入的點(diǎn)云數(shù)據(jù)先通過和一個(gè)T-Net網(wǎng)絡(luò)學(xué)習(xí)到的轉(zhuǎn)換矩陣相乘來對(duì)齊,保證了模型對(duì)于特定空間轉(zhuǎn)換的不變性。通過多次MLP對(duì)各點(diǎn)云數(shù)據(jù)進(jìn)行特征提取之后,再用一個(gè)T-Net對(duì)特征進(jìn)行對(duì)齊操作,然后在特征的各個(gè)維度上執(zhí)行MaxPooling操作來得到最終的全局特征。圖2所示為PointNet的輕量級(jí)體系結(jié)構(gòu)。n表示輸入點(diǎn)的數(shù)量,m表示每個(gè)點(diǎn)的學(xué)習(xí)特征尺寸。
粒計(jì)算(Granular Computing)[14]是當(dāng)前計(jì)算智能研究領(lǐng)域中模擬人類思維和解決復(fù)雜問題的新方法。點(diǎn)云數(shù)據(jù)包含很多局部空間信息,而很多方法只是對(duì)于整個(gè)點(diǎn)云數(shù)據(jù)單一地提取其局部空間信息[15-16],沒有完全利用點(diǎn)云數(shù)據(jù)的幾何空間結(jié)構(gòu)。多粒度特征可以提取到點(diǎn)云不同層次的粒度特征信息,相比于單一地對(duì)于整個(gè)點(diǎn)云數(shù)據(jù)進(jìn)行局部特征提取來說,多粒度特征[17]可以獲得更多的點(diǎn)云空間結(jié)構(gòu)信息。
受到PointNet和粒計(jì)算思想和圖卷積思想的啟發(fā),提出一種基于多粒度特征提取的分層網(wǎng)絡(luò)模型。通過構(gòu)造局部鄰域圖,對(duì)每個(gè)點(diǎn)所攜帶的信息進(jìn)行重新編碼,結(jié)合周圍鄰域和自身信息使得每個(gè)點(diǎn)攜帶局部信息,從而解決點(diǎn)云旋轉(zhuǎn)和平移的不變性問題。完整算法流程如圖3所示。
圖3 基于多粒度的點(diǎn)云分類分割模型算法流程
基于多粒度的點(diǎn)云分類分割算法描述:
輸入:點(diǎn)云數(shù)據(jù)(2 048, 3)。
輸出:分類任務(wù):k分割任務(wù):(2 048, c)。
1) 使用KNN+FPS算法對(duì)原始點(diǎn)云數(shù)據(jù)進(jìn)行迭代特征聚集采樣至三個(gè)不同粒度層G1、G2、G3。
3) 對(duì)于每個(gè)粒度層提取到的特征圖進(jìn)行MaxPooling操作得到每一層的全局特征描述符U1、U2、U3。
4) 對(duì)于分類任務(wù),把不同粒度層提取到的特征進(jìn)行堆疊操作得到全局特征,然后利用全連接網(wǎng)絡(luò)得到分類結(jié)果。
5) 對(duì)于分割任務(wù),把不同粒度層提取到的特征分別進(jìn)行repeat操作把每一粒度提取特征賦予所有點(diǎn),然后進(jìn)行維度疊加通過MLP得到最后分割特征圖。
(1)
邊緣函數(shù)的選擇對(duì)于每個(gè)點(diǎn)所攜帶的局部信息具有重要的影響,PointNet只對(duì)單個(gè)點(diǎn)進(jìn)行編碼,沒有考慮到周圍局部特征信息,導(dǎo)致其識(shí)別特征的能力受到限制。考慮到自身點(diǎn)和鄰域點(diǎn)所攜帶的幾何信息采用的邊緣函數(shù)定義為:
hθ(xi,xj)=hθ(xi,xi-xj)
(2)
這樣的結(jié)構(gòu)同時(shí)結(jié)合了全局形狀信息以及局部領(lǐng)域信息。
把點(diǎn)云M進(jìn)行最遠(yuǎn)點(diǎn)采樣(FPS)采樣到N/2個(gè)點(diǎn)來傳入下一層粒度層,再重新計(jì)算每個(gè)點(diǎn)的鄰域信息進(jìn)行特征提取。雖然越往下粒度層的點(diǎn)云會(huì)變得更稀疏,但其每個(gè)點(diǎn)所攜帶的信息更多,局部信息一層一層從上到下進(jìn)行傳遞并且更加細(xì)化,每一層提取到的特征點(diǎn)也更加具體。實(shí)驗(yàn)表明采用三個(gè)不同粒度層結(jié)構(gòu)能獲得較好的性能。圖4表示?;蓸訉铀惴?。
圖4 ?;蓸訉铀惴?/p>
為了獲得更好的點(diǎn)云分割與分類效果,需要獲得更為精細(xì)的點(diǎn)特征,因此采用多粒度特征提取思想,通過分層結(jié)構(gòu)來更好地提取點(diǎn)云的局部特征信息,其網(wǎng)絡(luò)結(jié)構(gòu)可分為兩部分,第一部分為多粒度特征提取結(jié)構(gòu)如圖5所示,特征提取過程包括:
圖5 多粒度特征提取結(jié)構(gòu)圖
1) 輸入層。具有N個(gè)點(diǎn)的點(diǎn)云模型N×S作為網(wǎng)絡(luò)的輸入,S=3每個(gè)點(diǎn)由xyz坐標(biāo)組成。
2) ?;蓸訉?。把N個(gè)點(diǎn)的點(diǎn)云模型?;蓸映蒒/2×S×2形狀的點(diǎn)云模型作為下一粒度層的點(diǎn)云輸入。
3) MLP層。第一粒度層的MLP=(S,64,128,256)。第二粒度層的MLP=(2×S,64,128,256)。第三粒度層的MLP=(4×S,64,128,256,512)。
分類網(wǎng)絡(luò)如圖6所示。把每一粒度層提取到的點(diǎn)云特征進(jìn)行池化操作(Pooling)得到三個(gè)一維向量,再把一維向量按照維度進(jìn)行拼接成1 024維向量,輸入到全連接網(wǎng)絡(luò)當(dāng)中進(jìn)行分類操作。全連接層分為三層,每層的輸出維度為(512, 256, 40),在最后一層后面加入了Dropout層。
圖6 點(diǎn)云分類網(wǎng)絡(luò)
點(diǎn)云分割如圖7所示,把每一粒度層池化得到的一維特征向量復(fù)制給每個(gè)點(diǎn),使得每個(gè)點(diǎn)都攜帶局部和全局的特征信息,通過拼接操作把不同粒度層提取到的不同特征信息拼接起來,通過MLP(512,256,128,k)對(duì)每個(gè)點(diǎn)進(jìn)行分類操作,其中k為每個(gè)點(diǎn)所對(duì)應(yīng)的類別數(shù)。
使用PyTorch深度學(xué)習(xí)框架,在ModeNet40和ShapeNet數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試。實(shí)驗(yàn)在Ubuntu 18.04.5系統(tǒng)下進(jìn)行,配置顯卡微星GeForce RTX 2080 SUPER, Python 3.6, PyTorch-GPU 1.5.1。
在實(shí)驗(yàn)中,采用ModeNet40數(shù)據(jù)集,該數(shù)據(jù)集一共9 843個(gè)訓(xùn)練樣本,每個(gè)樣本有2 048個(gè)點(diǎn),每個(gè)點(diǎn)由xyz三維坐標(biāo)組成。ShapeNet數(shù)據(jù)集有12 137個(gè)訓(xùn)練樣本,每個(gè)樣本有2 048個(gè)點(diǎn),每個(gè)點(diǎn)由xyz三維坐標(biāo)組成。對(duì)于鄰域圖中的k值分別選取了15、20、25進(jìn)行實(shí)驗(yàn)對(duì)比,實(shí)驗(yàn)結(jié)果表明當(dāng)k為20時(shí)模型效果最好。通過先前實(shí)驗(yàn)對(duì)比,當(dāng)粒度層數(shù)為三層時(shí)且點(diǎn)云數(shù)對(duì)半遞減時(shí),效果明顯好于其他層數(shù)。根據(jù)先前工作研究,本文選取迭代次數(shù)200次,學(xué)習(xí)率為0.01,批訓(xùn)練次數(shù)為32,使用ReLU激活函數(shù),優(yōu)化器采用自適應(yīng)矩陣估計(jì)優(yōu)化器(adam)。為了防止訓(xùn)練過擬合,對(duì)于全連接層采取DropOut操作。
1) ModelNet40。
ModelNet40數(shù)據(jù)集包含40個(gè)類別的12 311個(gè)CAD模型,其中有9 843個(gè)模型用于深度網(wǎng)絡(luò)的訓(xùn)練,2 468個(gè)模型用于測(cè)試。
2) ShapeNet。
ShapeNet數(shù)據(jù)集包含16物體類別,分別為Airplane、Bag、Cap、Car、Chair、Earphone、Guitar、Knife、Lamp、Laptop、Motorbike、Mug、Pistol、Rocket、Skateboard、Table。其中訓(xùn)練樣本數(shù)為12 137個(gè)3D形狀,測(cè)試樣本數(shù)為2 874個(gè)3D形狀。物體分割中,16類物體總共標(biāo)注了50種零部件。
1) 點(diǎn)云分類。
將模型在ModelNet40數(shù)據(jù)集上進(jìn)行分類準(zhǔn)確率與其他三維模型分類網(wǎng)絡(luò)作對(duì)比如表1所示。
表1 幾種模型在ModelNet40上的分類精度對(duì)比
可以看出本模型在ModelNet40數(shù)據(jù)集上的分類準(zhǔn)確率更高,比PointNet的精度高出約5百分點(diǎn),也遠(yuǎn)高于PointNet++,并且本模型的訓(xùn)練速度要優(yōu)于PointNet++。當(dāng)k=20的時(shí)候模型精度遠(yuǎn)好于k為其他值。
在ShapeNet訓(xùn)練集上進(jìn)行分類準(zhǔn)確率與其他模型做對(duì)比如表2所示。本模型在ShapeNet數(shù)據(jù)集上的分類精度也優(yōu)于PointNet和PointNet++。跟分類實(shí)驗(yàn)相同,當(dāng)k取20時(shí),實(shí)驗(yàn)結(jié)果要好于其他值。
表2 幾種模型在ShapeNet上的分類精度對(duì)比
2) 點(diǎn)云分割。
ShapeNet數(shù)據(jù)集上評(píng)估了點(diǎn)云分割模型的性能。物體分割結(jié)果分別與Kd-Net、PointNet++、PointNet的分割結(jié)果通過所有形狀的總平均交并比(mIOU)和每個(gè)類的平均交并比(mIOU)的評(píng)價(jià)標(biāo)準(zhǔn)進(jìn)行比較,結(jié)果如表3所示。比較Kd-Net和PointNet,由于本模型采用多粒度思想,通過鄰域圖有效地提取了點(diǎn)云的局部信息導(dǎo)致精度得到了較大提升,平均交并比提高了將近4百分點(diǎn)。對(duì)比PointNet++,本模型也略優(yōu),且速度上本模型也優(yōu)于PointNet++。分割比較效果圖如圖8所示。
表3 ShapeNet數(shù)據(jù)集上的分割效果對(duì)比(%)
圖8 點(diǎn)云分割效果比對(duì)圖
采用多粒度思想,結(jié)合點(diǎn)云空間幾何結(jié)構(gòu)設(shè)計(jì)出一種基于多粒度思想的深度學(xué)習(xí)點(diǎn)云識(shí)別網(wǎng)絡(luò)。該模型充分利用點(diǎn)云局部空間結(jié)構(gòu)信息,對(duì)每個(gè)點(diǎn)的局部信息進(jìn)行重新編碼,采用分層結(jié)構(gòu)逐層提取點(diǎn)云特征,更有效地進(jìn)行點(diǎn)云識(shí)別任務(wù)。在自動(dòng)駕駛領(lǐng)域中,點(diǎn)云處理技術(shù)可以對(duì)傳感器獲取的點(diǎn)云地圖進(jìn)行分析。本方法可以將先前技術(shù)所構(gòu)建的點(diǎn)云地圖進(jìn)行分割,可以把背景和前景實(shí)物區(qū)分開來,僅將前景點(diǎn)用于后續(xù)模塊處理,該方法可以顯著降低目標(biāo)檢測(cè)的計(jì)算量,提高目標(biāo)檢測(cè)的精度。本方法還可以用于識(shí)別3D道路中的交通線和路標(biāo)等重要信息。
在ModelNet40和ShapeNet數(shù)據(jù)集上的實(shí)驗(yàn)表明,本模型可以很好地提取點(diǎn)云的局部特征,在分割和分類任務(wù)上性能優(yōu)于PointNet和PointNet++,并且對(duì)大規(guī)模點(diǎn)云數(shù)據(jù)表現(xiàn)出較好的識(shí)別潛能。