王博豪, 孫戰(zhàn)里
(安徽大學(xué) 電氣工程與自動化學(xué)院, 安徽 合肥 230601)
近年來,隨著激光雷達(dá)、深度攝像機(jī)等傳感器的廣泛使用,所捕獲的三維(3D)數(shù)據(jù)越來越多,針對3D點(diǎn)云的研究分析也相應(yīng)增多,因此,急需有效的算法來完成關(guān)鍵任務(wù),例如點(diǎn)云分類[1,2]、分割[3]和其他3D形狀分析任務(wù)等。
對于3D點(diǎn)云的分析,傳統(tǒng)算法一般會結(jié)合一些估計(jì)的幾何信息去建立模型,這些方法高度依賴人工制作的特征。在近幾年中,開始有新的研究策略出現(xiàn)[4],許多研究也開始參考卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)在圖像分析上的應(yīng)用,將其應(yīng)用在不規(guī)則點(diǎn)云的處理上。其中一種簡單的策略是將點(diǎn)云轉(zhuǎn)換為常規(guī)體素,還有一種是轉(zhuǎn)換為多視圖圖像,以方便使用CNN,但這些轉(zhuǎn)換通常會導(dǎo)致大量3D幾何信息丟失,并且復(fù)雜度很高。PointNet是一項(xiàng)具有開拓性的工作,它可以直接處理原始點(diǎn)云而無需將其轉(zhuǎn)換為其他形式[1],但它缺乏一些局部上下文信息。為了改進(jìn)該缺點(diǎn),PointNet++將點(diǎn)云層次化地分組為局部子集進(jìn)行處理[2]。動態(tài)圖CNN(dynamic graph CNN,DGCNN)在每一層產(chǎn)生的特征空間中通過計(jì)算歐幾里得距離選出k個最近鄰點(diǎn)來重建K最近鄰(K-nearest neighbor,KNN)鄰域圖[5]。
本文提出在較高維特征空間中使用修正余弦相似度作為判別標(biāo)準(zhǔn)選出近鄰的k個點(diǎn)構(gòu)建KNN鄰域圖。另外,因?yàn)樯鲜鼍矸e層在進(jìn)行每一次卷積時,使用的特征都是在前一層提取的基礎(chǔ)上進(jìn)一步學(xué)習(xí),只能應(yīng)用前一層特征,而在一定程度弱化了前幾層網(wǎng)絡(luò)層所學(xué)習(xí)的低維特征的作用,對此構(gòu)建了一個殘差特征學(xué)習(xí)模塊,通過短連接多層基于網(wǎng)絡(luò)并且固定圖卷積特征尺度的方式改善這一點(diǎn)。
多視圖的方法會將3D形狀轉(zhuǎn)換為一系列2D圖像的集合,然后應(yīng)用傳統(tǒng)的CNN。而體素方法是將3D形狀轉(zhuǎn)換為常規(guī)3D網(wǎng)格后,使用3D CNN[5]。但這種方法的參數(shù)量非常大,計(jì)算成本較高。
PointNet能夠獨(dú)立學(xué)習(xí)每個點(diǎn)的特征最后聚合全局特征,但其忽略了點(diǎn)云的局部信息[1],因此,PointNet++將點(diǎn)云劃分為局部子集進(jìn)行學(xué)習(xí)[2]。SO-Net提出了點(diǎn)云局部區(qū)域自組織網(wǎng)絡(luò)[6]。PCNN(point convolutional neural networks)提出使用擴(kuò)展算子和卷積算子組合對點(diǎn)云進(jìn)行特征提取。此外還有利用全局特征的點(diǎn)云處理算法。
PointNet++利用傳統(tǒng)的多尺度學(xué)習(xí),直接在同一層捕獲上下文,但這會大量增加計(jì)算復(fù)雜度[2]。ShapeContextNet采用了另一種形狀上下文的策略搭建網(wǎng)絡(luò),使用自我注意力機(jī)制動態(tài)地學(xué)習(xí)所有點(diǎn)對的權(quán)重[7]。
網(wǎng)絡(luò)的整體結(jié)構(gòu)如圖1所示。
圖1 網(wǎng)絡(luò)整體結(jié)構(gòu)
引用DGCNN的模型[6],模塊網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。輸入數(shù)據(jù)為點(diǎn)云P={xi︰i=1,2,…,N}∈RN×3,其中,N為點(diǎn)云所包含點(diǎn)的個數(shù),xi表示第i個點(diǎn)的特征向量。點(diǎn)云數(shù)據(jù)在進(jìn)入第一個KNN鄰域圖卷積層后,會輸出維度為64的特征向量,隨后進(jìn)入下一層KNN領(lǐng)域圖卷積,前2層的鄰域圖卷積都是基于歐氏距離進(jìn)行構(gòu)建,且特征維度均為64。到第3,4層圖卷積層時,便采用基于修正余弦相似度的KNN(記為KNN-CS)鄰域圖卷積,此時所提取的特征也變?yōu)榘S富的語義信息的128維特征向量。在經(jīng)過圖2所示的4次KNN鄰域圖卷積后將多尺度特征做級聯(lián)操作,得到維度為N×512的多尺度特征。
圖2 多尺度特征學(xué)習(xí)模塊
引用Spec-GCN的網(wǎng)絡(luò)結(jié)構(gòu),實(shí)驗(yàn)所用的圖卷積層模型如圖3所示[8]。利用點(diǎn)云構(gòu)建圖G={V,E},其中,V={1,…,N},表示N個鄰域圖的頂點(diǎn),E?V×V,表示圖的邊特征。點(diǎn)云中每個點(diǎn)xi都分別被視為頂點(diǎn),再利用KNN尋找其鄰域點(diǎn)xij(j=1,2,…,k),并以此構(gòu)建出其鄰域圖(子圖)。特征向量xi表示第i個點(diǎn)的3D空間坐標(biāo),因此,構(gòu)建的KNN鄰域圖包含完全的3D坐標(biāo)信息,隨網(wǎng)絡(luò)層的加深及特征維度的增多,特征會變成更高維抽象特征,此時采用修正余弦相似度進(jìn)行KNN領(lǐng)域圖的構(gòu)建。
圖3 圖卷積模型
修正余弦相似度公式如下
(1)
eij=xi-xij
(2)
經(jīng)過下一網(wǎng)絡(luò)層將鄰域圖的中心點(diǎn)特征及邊特征編碼成維度為N×k×D的更高維特征,表示為
F=hθ{cat(xi,Ei)}
(3)
式中h為所經(jīng)過的網(wǎng)絡(luò)層,θ為可學(xué)習(xí)參數(shù),cat(xi,Ei)對特征xi和Ei進(jìn)行級聯(lián)。特征F經(jīng)下一最大池化層,得到N×D的特征。
引用MC-Conv的模型[9],用于點(diǎn)云的殘差特征學(xué)習(xí),如圖4所示,共有4個KNN鄰域圖卷積層,最初的輸入數(shù)據(jù)為點(diǎn)云坐標(biāo),進(jìn)入KNN鄰域圖卷積層,經(jīng)過MLP與最大池化層后得到N×64的特征,隨后的3個圖卷積層每一層的輸入都是由上一層的輸入和輸出直接相加得到,可表示為
圖4 殘差特征學(xué)習(xí)模塊
(4)
本文選用標(biāo)準(zhǔn)的公開數(shù)據(jù)集ModelNet40進(jìn)行測試。數(shù)據(jù)集總共有12 311個物體,共包括40個類別,其中,9 843個模型用作訓(xùn)練數(shù)據(jù)集,其余2 468個模型為測試數(shù)據(jù)集。本文實(shí)驗(yàn)所使用的配置如表1所示。
表1 實(shí)驗(yàn)配置
模型使用交叉熵作為損失函數(shù),優(yōu)化方法選用隨機(jī)梯度下降法,其中的動量參數(shù)設(shè)置為0.9,權(quán)重衰減參數(shù)設(shè)置為0.000 4。學(xué)習(xí)率更新策略使用帶有熱重啟的余弦退火算法,周期參數(shù)設(shè)置為100,初始學(xué)習(xí)率設(shè)置為0.2,最低學(xué)習(xí)率設(shè)置為0.000 4。迭代次數(shù)為400輪,訓(xùn)練批處理參數(shù)為40,測試批處理參數(shù)為20。在每個全連接層后都加入比例為0.5的Dropout,以抑制過擬合。
不同鄰域點(diǎn)個數(shù)k對應(yīng)的實(shí)驗(yàn)結(jié)果如表2所示,設(shè)置的k值分別為4,8,14,20,26,32??梢钥闯?當(dāng)k為20時,能得到最佳實(shí)驗(yàn)結(jié)果。因?yàn)?較少的鄰近點(diǎn)不足以提取出足夠的局部空間結(jié)構(gòu)信息,而當(dāng)k過大時性能會發(fā)生退化。且較大的k會使得計(jì)算量大幅增加,實(shí)驗(yàn)花費(fèi)時間成倍增長。
表2 不同k值的實(shí)驗(yàn)結(jié)果 %
魯棒性實(shí)驗(yàn)結(jié)果如圖5所示。點(diǎn)云的點(diǎn)個數(shù)分別設(shè)置為1 024,768,512,256,128,從圖中可以看出,實(shí)驗(yàn)的整體精度與平均精度稍有下降趨勢,但均無明顯波動。且在選擇128個點(diǎn)作為輸入時仍能取得90 %以上的整體精度,甚至超過了PointNet使用1 024個點(diǎn)的整體精度[1]。足以證明本模型具有較強(qiáng)的魯棒性。
圖5 魯棒性實(shí)驗(yàn)
與其他文獻(xiàn)的結(jié)果對比如表3所示,本文實(shí)驗(yàn)采用的輸入數(shù)據(jù)為1 024個只含有3D坐標(biāo)的點(diǎn)云數(shù)據(jù),在表中將此類輸入數(shù)據(jù)記為1×103,同理,2×103則表示輸入點(diǎn)云數(shù)量為2 048,表中的5×103+nor 表示輸入數(shù)據(jù)為5 000個點(diǎn)的3D坐標(biāo)以及額外的法向量信息,表中的voting表示實(shí)驗(yàn)使用了多次投票驗(yàn)證策略。從表中可以看出,在輸入點(diǎn)云的數(shù)量為1×103時,本文實(shí)驗(yàn)的平均精度和整體精度均優(yōu)于其他文獻(xiàn)。此外,PointNet++[2]與SpiderCNN[10]還使用了5×103數(shù)量級別的點(diǎn)云并添加了額外的法向量特征,但實(shí)驗(yàn)精度仍然較低。RS-CNN在使用了多次投票驗(yàn)證策略后,得到了93.6 %的實(shí)驗(yàn)整體精度,但在不使用該策略時的整體精度為92.9 %,低于本文的93.4 %。表3中的實(shí)驗(yàn)結(jié)果可以證明,本文網(wǎng)絡(luò)模型的有效性。
表3 在ModelNet40數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果對比
本文提出了一種用于點(diǎn)云識別的雙模塊圖卷積網(wǎng)絡(luò)。兩個不同的模塊分別用于提取點(diǎn)云的多尺度特征和殘差特征,然后將兩種特征融合后經(jīng)過多層感知機(jī)、池化層以及全連接層,最終得到點(diǎn)云的類別。在ModelNet40數(shù)據(jù)集上的分類任務(wù)實(shí)驗(yàn)結(jié)果表明了本文算法的有效性。下一步工作將考慮對網(wǎng)絡(luò)模型作進(jìn)一步優(yōu)化,并擴(kuò)展到其他任務(wù)場景,例如點(diǎn)云分割、配準(zhǔn)等。