黃 麗,劉心維,肖 建
(南京郵電大學(xué) 電子與光學(xué)工程學(xué)院、柔性電子學(xué)院,江蘇 南京 210046)
點(diǎn)云補(bǔ)全,顧名思義,就是將一個(gè)殘缺的點(diǎn)云,通過(guò)某個(gè)算法模型補(bǔ)全完整,它是三維視覺(jué)領(lǐng)域的一項(xiàng)基礎(chǔ)技術(shù)。在點(diǎn)云數(shù)據(jù)的采集過(guò)程中,由于采集設(shè)備本身以及外界因素等諸多原因?qū)е虏杉脑键c(diǎn)云數(shù)據(jù)不完整。點(diǎn)云模型形狀上的缺損,極大地限制了視覺(jué)和AI的感知能力。點(diǎn)云補(bǔ)全是獲得三維對(duì)象完整點(diǎn)云模型的必要步驟,是后續(xù)相關(guān)工作的基礎(chǔ),對(duì)殘缺點(diǎn)云的補(bǔ)全直接影響著后續(xù)工作的效果,因此點(diǎn)云補(bǔ)全工作有著很重要的意義。
點(diǎn)云補(bǔ)全的研究方法分為三大類,分別是基于幾何、基于對(duì)齊和基于學(xué)習(xí)的方法。Mitra、Sipiran和Sung[1-3]等人提出了一些基于幾何假設(shè)的方法,這些方法較為簡(jiǎn)單但補(bǔ)全效果很大程度依賴輸入點(diǎn)云的質(zhì)量且泛化性較差。Han、Kalogeralfis[4-5]等人基于數(shù)據(jù)庫(kù)匹配的方法要求輸入的3D物體形狀中含有很小的噪聲,并且匹配和補(bǔ)全的準(zhǔn)確性很依賴數(shù)據(jù)庫(kù)的大小規(guī)模以及豐富程度。基于學(xué)習(xí)的方法是通過(guò)構(gòu)建參數(shù)化模型[6-7]來(lái)學(xué)習(xí)輸入點(diǎn)云的特征,此方法分為兩個(gè)階段,最初出現(xiàn)的基于學(xué)習(xí)的方法大多是使用體素[8]來(lái)表示三維形狀,但是成本高且補(bǔ)全精度不理想,無(wú)法達(dá)到大多數(shù)點(diǎn)云補(bǔ)全任務(wù)的要求?!包c(diǎn)網(wǎng)絡(luò)”出現(xiàn)后,通過(guò)深度學(xué)習(xí)的方法進(jìn)行點(diǎn)云補(bǔ)全開始被人們普遍使用。PointNet[9]作為首個(gè)可以直接處理點(diǎn)云數(shù)據(jù)的深度模型算法被提出,在此之后,很多學(xué)者在其基礎(chǔ)上提出新的改進(jìn)算法[10-11]。PointNet通過(guò)一個(gè)簡(jiǎn)單的對(duì)稱函數(shù)即最大池化對(duì)點(diǎn)云的每一個(gè)點(diǎn)進(jìn)行獨(dú)立處理,通過(guò)獲得每個(gè)點(diǎn)的全局特征來(lái)消除數(shù)據(jù)順序的影響。Achlioptas等人[12]提出LGAN-AE(latent-space GAN autoencoder)網(wǎng)絡(luò)模型算法,這是首先使用深度學(xué)習(xí)實(shí)現(xiàn)三維點(diǎn)云補(bǔ)全的算法,證明深度學(xué)習(xí)對(duì)點(diǎn)云補(bǔ)全任務(wù)的有效性,但其解碼器在恢復(fù)稀有幾何結(jié)構(gòu)時(shí)效果較差。Yuan等人[13]提出PCN(Point Completion Network)網(wǎng)絡(luò)模型,直接對(duì)原始點(diǎn)云進(jìn)行操作,沒(méi)有任何結(jié)構(gòu)假設(shè)或?qū)Φ讓有螤畹淖⑨?無(wú)法恢復(fù)精細(xì)的幾何細(xì)節(jié)。Hinton[14]提出3D-Capsule(3D Point Capsule Network)網(wǎng)絡(luò)模型,使用膠囊網(wǎng)絡(luò)處理點(diǎn)云數(shù)據(jù),局部特征提取效果取得了一定的提升。羅開乾[15]等人提出一種基于多分支結(jié)構(gòu)的點(diǎn)云補(bǔ)全網(wǎng)絡(luò),采用編碼器對(duì)點(diǎn)云的全局特征和局部特征進(jìn)行綜合提取。Huang等人[16]提出PF-Net(Point Fractal Network)網(wǎng)絡(luò)結(jié)構(gòu),創(chuàng)新性地設(shè)計(jì)了點(diǎn)云分形網(wǎng)絡(luò),采用類似分形幾何的思想,同樣以不完整的點(diǎn)云作為輸入,僅輸出缺失部分點(diǎn)云,較好地保留物體的個(gè)體特征,但仍缺乏基于部分觀察的條件生成能力。Pan L等人[17]提出VRCNet,由概率模型網(wǎng)絡(luò)PMNet和關(guān)系增強(qiáng)網(wǎng)絡(luò)RENet兩個(gè)子網(wǎng)絡(luò)級(jí)聯(lián)構(gòu)成,可以基于觀測(cè)到的不同的殘缺點(diǎn)云結(jié)合關(guān)系性架構(gòu),從而推測(cè)生成合理的完整點(diǎn)云,但對(duì)局部細(xì)節(jié)特征補(bǔ)全仍存在缺限。
為了彌補(bǔ)基于深度學(xué)習(xí)的點(diǎn)云補(bǔ)全方法在局部特征提取上的欠缺,從而提高補(bǔ)全的精度,該文提出一種新的基于深度學(xué)習(xí)的點(diǎn)云補(bǔ)全算法。該算法創(chuàng)造性地在特征提取模塊引入卷積層DOConv,可以通過(guò)附加的深度卷積來(lái)增強(qiáng)卷積層,其中每個(gè)輸入通道都使用不同的二維內(nèi)核進(jìn)行卷積,兩個(gè)卷積的組成構(gòu)成了過(guò)參數(shù)化卷積層,增加了可學(xué)習(xí)的參數(shù),同時(shí)生成的線性運(yùn)算可以由單個(gè)卷積層表示,可提升特征提取模塊的特征提取能力,且不會(huì)增加計(jì)算復(fù)雜度。此外,還在特征融合模塊添加了結(jié)合空間注意力機(jī)制和通道注意力機(jī)制的雙重注意力機(jī)制,可以幫助解碼器更好地學(xué)到多種特征之間的相互關(guān)系,融合不同層次的特征,從而更好地表示這些特征信息,提高點(diǎn)云補(bǔ)全的精度。在大型開源數(shù)據(jù)集ShapeNet上進(jìn)行了大量的實(shí)驗(yàn)與性能評(píng)估,結(jié)果表明,與當(dāng)前比較主流的點(diǎn)云補(bǔ)全算法相比,提出的點(diǎn)云補(bǔ)全算法具有更高的補(bǔ)全精度。
點(diǎn)云補(bǔ)全算法整體框架由多分辨率編碼器、金字塔解碼器和注意力鑒別器構(gòu)成。
整體網(wǎng)絡(luò)框架如圖1所示。
圖1 整體網(wǎng)絡(luò)框架示意圖
將最遠(yuǎn)點(diǎn)采樣(FPS)生成的不同尺度的缺失點(diǎn)云作為網(wǎng)絡(luò)框架的整體輸入,最遠(yuǎn)點(diǎn)采樣是Pointnet++[18]中應(yīng)用的一種采樣策略,通過(guò)不斷迭代地選擇距離已有采樣點(diǎn)集合的最遠(yuǎn)點(diǎn),用于獲取一組骨架點(diǎn)。這可以更好地均勻表示點(diǎn)集的分布,并且不會(huì)破壞點(diǎn)云模型的結(jié)構(gòu),最遠(yuǎn)點(diǎn)采樣效果如圖2所示。
圖2 最遠(yuǎn)點(diǎn)采樣效果
再將輸入點(diǎn)云送入多分辨率編碼器進(jìn)行特征提取,該算法在共享權(quán)重的多層感知機(jī)(MLP)中嵌入了深度過(guò)參數(shù)化卷積層DOConv,生成的特征向量為V1、V2、V3,且同時(shí)在特征融合部分引入結(jié)合空間注意力機(jī)制和通道注意力機(jī)制的雙重注意力機(jī)制,將融合后的特征向量V作為輸入送入金字塔解碼器,最終得到三個(gè)尺度的點(diǎn)云補(bǔ)全結(jié)果。損失函數(shù)包括生成損失和對(duì)抗損失兩部分,Fan等人[19]提出了兩種衡量?jī)蓚€(gè)點(diǎn)云之間的差異指標(biāo):倒角距離CD(Chamfer Distance)和推土距離EMD(Earth Mover’s Distance),這里采用CD作為生成損失。對(duì)抗損失受生成對(duì)抗網(wǎng)絡(luò)[20](GAN)的啟發(fā),借鑒了GAN思想,由注意力鑒別器計(jì)算得到。
多分辨率編碼器的輸入是三個(gè)不同尺度的缺失點(diǎn)云,是由最遠(yuǎn)點(diǎn)采樣(FPS)對(duì)完整點(diǎn)云進(jìn)行操作得到,點(diǎn)的數(shù)量分別為N、N/K、N/K2,N取值2 048,K取值2。然后通過(guò)雙重注意力機(jī)制層,輸出注意力向量Va,最后通過(guò)多層感知機(jī)得到最終的特征向量V。
輸入點(diǎn)云通過(guò)嵌入DOConv的共享權(quán)重的多層感知機(jī),將輸入點(diǎn)云的點(diǎn)的維度編碼為[64-128-256-512-1 024],得到多維的特征向量V1、V2、V3。DOConv在一個(gè)普通的卷積層中加入了額外的深度卷積操作,構(gòu)成一個(gè)過(guò)參數(shù)化(over-parameterized)的卷積層。DOConv首先將深度卷積核的參數(shù)和標(biāo)準(zhǔn)卷積核的參數(shù)相乘得到新的W'權(quán)重,再用權(quán)重W'對(duì)輸入特征P做傳統(tǒng)卷積操作,得到最終的卷積操作結(jié)果O。具體計(jì)算公式為:
W'=DT°W,O=W'*P
(1)
結(jié)構(gòu)如圖3所示,D為深度卷積核的權(quán)重張量,W為普通卷積核的權(quán)重張量,Cin為輸入特征通道數(shù),Cout為輸出特征通道數(shù),Dmul是深度倍增器,M、N為卷積核作用的窗口尺寸。DOConv的引入提升了網(wǎng)絡(luò)補(bǔ)全的性能,并且不會(huì)導(dǎo)致推理計(jì)算復(fù)雜性增加。至此,DOConv完成了其所有工作,它可以靈活地捕獲輸入特征局部區(qū)域的信息,輸出具有局部關(guān)聯(lián)性的特征。
圖3 DOConv結(jié)構(gòu)
然后將輸出的多維特征向量V1、V2、V3輸入結(jié)合空間注意力機(jī)制和通道注意力機(jī)制[21]的雙重注意力機(jī)制的特征融合模塊。如圖4所示,首先,使用空間注意力機(jī)制學(xué)習(xí)綜合局部特征和全局信息的1 024維抽象特征,實(shí)現(xiàn)空間維度上的特征聚焦,輸出加權(quán)后每個(gè)位置的特征。其次,使用通道注意力機(jī)制學(xué)習(xí)綜合局部特征和全局信息的1 024維抽象特征,捕獲任意兩個(gè)通道特征之間的映射關(guān)系,輸出加權(quán)后每個(gè)通道的特征。再以深度學(xué)習(xí)中的concatenate數(shù)組拼接操作將3個(gè)1×1 024維的抽象特征拼接成1個(gè)1×3 072維的特征,最后使用MLP將潛在特征映射整合到最終的特征向量V,維度為1 024。
圖4 雙重注意力機(jī)制示意圖
金字塔解碼器由全連接層和重組層構(gòu)成,如圖5所示,這里借鑒了特征金字塔網(wǎng)絡(luò)[22](Feature Pyramid Network )的思想,按照從粗到細(xì)的步驟來(lái)完成缺失點(diǎn)云補(bǔ)全的操作,輸出也同樣是與之前對(duì)應(yīng)的三個(gè)尺度的生成點(diǎn)云。金字塔點(diǎn)生成器的輸入是多分辨率編碼器的輸出特征向量V,通過(guò)全連接層得到三個(gè)不同分辨率的子特征向量U1、U2、U3,維度為1 024、512和256,然后按照U1、U2、U3的順序預(yù)測(cè)出P3、P2距離P3中心點(diǎn)的相對(duì)坐標(biāo)、P1距離P2中心點(diǎn)的相對(duì)坐標(biāo),最終獲得補(bǔ)全的點(diǎn)云。
圖5 缺失點(diǎn)云補(bǔ)全過(guò)程
注意力鑒別器模塊借鑒了生成對(duì)抗網(wǎng)絡(luò)的思想,模型主要通過(guò)框架中的生成模型和判別模型互相博弈學(xué)習(xí)來(lái)產(chǎn)生好的輸出。將生成點(diǎn)云與真實(shí)點(diǎn)云送入鑒別器,通過(guò)其中的自編碼器獲得維度為512的特征向量,再通過(guò)連續(xù)的全連接層降低維度[512-256-128-16-1],輸出最終fake或real的二值結(jié)果。
為測(cè)試該算法的有效性,在大型開源的數(shù)據(jù)集ShapeNet上進(jìn)行實(shí)驗(yàn),使用具有13個(gè)類別的ShapeNet數(shù)據(jù)集。該文采用的ShapeNet數(shù)據(jù)集是一個(gè)由對(duì)象的三維CAD模型表示的豐富注釋的,大規(guī)模的形狀存儲(chǔ)庫(kù)。ShapeNet包含來(lái)自多種語(yǔ)義類別的3D模型,并按照WordNet分類法組織它們。該數(shù)據(jù)集包含多種類別的點(diǎn)云模型,包括飛機(jī)、椅子、吉他、帽子、滑板和桌子等,數(shù)據(jù)量達(dá)到32 913個(gè)。同時(shí)將該算法與LGAN-AE、PCN、3D-CAPSULE、PF-Net等當(dāng)前主流算法進(jìn)行對(duì)比,LGAN-AE、PCN、3D-CAPSULE的各項(xiàng)測(cè)試性能指標(biāo)參考文獻(xiàn)[16]中的數(shù)據(jù),而PF-Net以及文中算法的各項(xiàng)測(cè)試性能指標(biāo)均在自己的電腦上實(shí)現(xiàn)。
訓(xùn)練的硬件配置為Intel?CoreTMi9-9900kCPU@3.60 GHz和一塊NVIDIA GeForce RTX 2080 Ti GPU。實(shí)驗(yàn)在Ubuntu18.04環(huán)境下運(yùn)行,采用PyTorch1.4.0作為深度學(xué)習(xí)框架。
為保證實(shí)驗(yàn)的科學(xué)性,設(shè)置了隨機(jī)種子,確保每次隨機(jī)生成的變換矩陣相同。所有輸入點(diǎn)云都是以原點(diǎn)為中心,坐標(biāo)數(shù)值均被歸一化到區(qū)間[-1,1]。地面真實(shí)值的點(diǎn)云數(shù)據(jù)均通過(guò)在每個(gè)樣本上均勻采樣2 048個(gè)點(diǎn)創(chuàng)建,而不完整點(diǎn)云則通過(guò)在預(yù)設(shè)的多個(gè)視點(diǎn)中隨機(jī)選擇一個(gè)點(diǎn)作為中心,并從完整點(diǎn)云數(shù)據(jù)中去除一定半徑范圍內(nèi)的點(diǎn)來(lái)生成。采用Adam梯度下降優(yōu)化器用于網(wǎng)絡(luò)訓(xùn)練,初始學(xué)習(xí)率為0.001,訓(xùn)練集和測(cè)試集的批量大小均設(shè)置為16,共訓(xùn)練200步。在多分辨率編碼器和GAN鑒別器中使用批處理歸一化和RELU激活函數(shù),在金字塔解碼器中只使用RELU激活函數(shù)。在多分辨率編碼器中,將采樣和領(lǐng)域聚合操作重復(fù)2次,雙重注意力層重復(fù)2次。在金字塔解碼器中,通過(guò)改變m來(lái)設(shè)置生成的點(diǎn)云的點(diǎn)數(shù),m1=512,m2=128,m3=64。
該算法的損失函數(shù)包括兩個(gè)部分:生成損失和對(duì)抗損失。倒角距離CD計(jì)算生成點(diǎn)云和地面真實(shí)點(diǎn)云之間的平均最短點(diǎn)距離,其計(jì)算效率更高,計(jì)算公式為:
(2)
式中,CD計(jì)算了生成點(diǎn)云S1和真實(shí)點(diǎn)云S2之間的平均最近平方距離,由于最終的生成結(jié)果是三個(gè)不同尺度的生成點(diǎn)云P1、P2、P3,所以總損失也由三部分構(gòu)成,dCD1、dCD2、dCD3分別對(duì)應(yīng)三個(gè)不同尺度生成點(diǎn)云的CD值,其中α表示生成損失中的求和權(quán)重??倱p失表達(dá)式如下:
Lcom=dCD1(P1,P1gt)+αdCD2(P2,P2gt)+
2αdCD3(P3,P3gt)
(3)
式中,P1gt、P2gt、P3gt分別為三個(gè)不同尺度的生成點(diǎn)云所對(duì)應(yīng)的真實(shí)點(diǎn)云。文中的對(duì)抗損失借鑒對(duì)抗性網(wǎng)絡(luò)GAN,計(jì)算公式如下:
G(E(D(xi))))
(4)
式中,yi和xi分別屬于原始?xì)埲秉c(diǎn)云和真實(shí)點(diǎn)云。E、D、G分別表示多尺度特征提取器、金字塔點(diǎn)生成器和注意力鑒別器。總損失是由生成損失和對(duì)抗損失共同構(gòu)成,計(jì)算公式如式(5)所示:
L=βLcom+λLadv
(5)
式中,Lcom和Ladv分別是完成損失和對(duì)抗性損失的權(quán)重,滿足以下條件:β+λ=1。β和λ分別表示總損失函數(shù)中的完成損失和對(duì)抗性損失的權(quán)重。同時(shí),倒角距離CD也在文中作為測(cè)試補(bǔ)全性能的評(píng)估指標(biāo)。
為了更好地評(píng)估該算法的性能,采用dCD(S1→S2)和dCD(S2→S1)來(lái)綜合衡量算法的補(bǔ)全性能。其中dCD(S1→S2)計(jì)算的是從生成點(diǎn)云中的每個(gè)點(diǎn)到其最接近的真實(shí)點(diǎn)云中的點(diǎn)的平均平方距離,它衡量的是生成點(diǎn)云與真實(shí)點(diǎn)云的差異程度;dCD(S2→S1)計(jì)算的是從真實(shí)點(diǎn)云中的每個(gè)點(diǎn)到其最接近的生成點(diǎn)云中的點(diǎn)的平均平方距離,它衡量的是真實(shí)點(diǎn)云被生成點(diǎn)云的覆蓋的程度。這些值越小,表示點(diǎn)云補(bǔ)全效果越好。在ShapeNet 數(shù)據(jù)集上的測(cè)試結(jié)果如表1和表2所示,以表1中的Airplane為例,0.229/0.176分別表示dCD(S1→S2)和dCD(S2→S1)的數(shù)值。表1是基于整體點(diǎn)云的補(bǔ)全效果,表2是基于缺失點(diǎn)云的補(bǔ)全效果,表中加粗字體為最優(yōu)值。
表1 整體點(diǎn)云的點(diǎn)云補(bǔ)全效果
表2 缺失點(diǎn)云的點(diǎn)云補(bǔ)全效果
從表1和表2可以看出,文中算法在整體效果平均值上優(yōu)于PF-Net等主流算法,與PF-Net算法相比,在整體點(diǎn)云補(bǔ)全和缺失點(diǎn)云補(bǔ)全結(jié)果上性能分別提升7.81%和4.60%。除了以上實(shí)驗(yàn)結(jié)果,圖6還給出了文中算法與PF-Net算法在ShapeNet數(shù)據(jù)集上部分類別補(bǔ)全效果的可視化結(jié)果對(duì)比。
圖6 文中算法與PF-Net算法在ShapeNet數(shù)據(jù)集部分類別上的補(bǔ)全效果
從圖6可以看出,如飛機(jī)的機(jī)翼、椅子的腿及椅背、燈的燈罩等細(xì)節(jié)結(jié)構(gòu)處特征恢復(fù)較為完整,可以看出文中算法可以更有效地保持點(diǎn)云模型的精細(xì)結(jié)構(gòu)。此外,還針對(duì)25%、50%、75%的缺失比例,使用ShapeNet數(shù)據(jù)集進(jìn)行三次訓(xùn)練并將文中算法在不同缺失比例上的點(diǎn)云補(bǔ)全結(jié)果可視化,用以測(cè)試文中算法補(bǔ)全的穩(wěn)健性,可視化結(jié)果如圖7所示。
圖7 不同缺失比例點(diǎn)云補(bǔ)全效果
圖7中黑色部分點(diǎn)云為輸入的缺失模型,白色部分點(diǎn)云為文中算法補(bǔ)全的效果,可以看出在缺失比例為25%及50%時(shí)的模型補(bǔ)全效果相近且補(bǔ)全效果較好,即便是在缺失比例為75%時(shí)也可以將殘缺飛機(jī)形狀補(bǔ)全完整??梢钥闯?文中算法在點(diǎn)云補(bǔ)全任務(wù)中具有更高的穩(wěn)健性及更好的泛化性能。
為了彌補(bǔ)基于深度學(xué)習(xí)的點(diǎn)云補(bǔ)全方法在局部特征提取上的欠缺,提高補(bǔ)全的精度,提出了一種新的基于深度學(xué)習(xí)的高精度點(diǎn)云補(bǔ)全算法。實(shí)驗(yàn)結(jié)果表明,該算法可以更靈活地提取點(diǎn)云局部細(xì)節(jié)特征。同時(shí),與LGAN-AE、PCN、3D-Capusule、PF-Net這些同類主流算法相比,該算法在ShapeNet數(shù)據(jù)集上的點(diǎn)云補(bǔ)全效果取得了顯著提升,與PF-Net算法相比在基于整體點(diǎn)云補(bǔ)全效果和基于缺失點(diǎn)云的補(bǔ)全效果兩方面分別提升7.81%和4.60%,這證明該算法在點(diǎn)云補(bǔ)全任務(wù)中的有效性,且有更高的精度及泛化性能。但是該算法僅在特征提取階段做出了有效改進(jìn),如何更好地在關(guān)注全局特征的同時(shí)也不忽略局部特征以及如何使生成的點(diǎn)云更平滑,將成為接下來(lái)的主要研究方向之一。