許振楠,沈 洋,許 浩,包艷霞,劉 江
(1.浙江理工大學 計算機科學與技術學院,浙江 杭州 310018;2.麗水學院 工學院,浙江 麗水 323000)
三維點云的生成方法是計算機視覺領域關注的熱點問題之一。二維圖像難以表示現(xiàn)實世界中多個物體之間的深度信息,并且不適用于需要深度和定位信息的場景,從機器人導航[1]到自動駕駛汽車[2-3],從增強現(xiàn)實[4]到醫(yī)療保?。?],3D 數(shù)據(jù)集正在被廣泛使用。在各種數(shù)據(jù)模式中,原始點云作為一種緊湊的表示形式正變得流行起來,它能夠捕捉物體的復雜細節(jié)。三維點云可以被認為是從一個物體的表面收集到的一個無序的不規(guī)則點集,每個點由一個笛卡爾坐標組成,以及其他附加信息,如曲率、表面法線估計和RGB 顏色值等。由于曲率和法線是由點云坐標經(jīng)過一系列線性變換計算得到,曲率和法線無法提供比坐標更多的信息,因此點云的曲率等因素對點云的生成影響較小。
近年來,基于生成對抗網(wǎng)絡的點云生成模型相繼出現(xiàn),生成對抗網(wǎng)絡(Generative Adversarial Networks,GAN)是Goodfellow 等[6]于2014 年提出的一種生成式模型,目前已成為人工智能學界的一個熱門研究方向。在二維圖像中,圖像生成的像素是以規(guī)則的格子排列,而三維形狀是由三維空間中的離散點表示,缺乏結(jié)構(gòu)性。傳統(tǒng)GAN 由于初始潛碼從高斯分布中采樣,導致生成具有不均勻性的點云,鑒于每個點云中點的數(shù)量是固定的(現(xiàn)有的GAN 通常為2 048 個),這種不均勻性使得點集中在一個區(qū)域,使得其他區(qū)域稀疏甚至空洞。如果沒有適當?shù)恼齽t化,更多的點會聚集在物體的幾何中心或不同語義部分的連接處,導致點云生成高度不均勻的形狀。點云數(shù)據(jù)是一個包含三維坐標信息的無序點集合,對數(shù)據(jù)順序不敏感,相同的一個點云數(shù)據(jù)模型完全可以有多種不同的存儲順序,并且傳統(tǒng)三維GAN 在訓練過程中缺乏概率分布信息的學習,因此在訓練點云生成上效率不高。
本文提出了一種基于點云概率分布學習的生成對抗網(wǎng)絡以處理生成點云分布不均和生成真實點云效率不高的問題,在映射網(wǎng)絡中訓練了一個潛碼用以學習點云的概率分布,網(wǎng)絡輸出得到一個概率分布更加準確的潛碼,在樹結(jié)構(gòu)生成網(wǎng)絡中的每一層使點云的分布對齊到潛碼的分布,改變了生成點云的位置分布,使生成點云的形狀更具結(jié)構(gòu)性,不僅解決了分布不均的問題,在生成真實點云的效率上也高于以往三維GAN 生成點云方法,并且通過改變初始的潛碼,可以改變生成點云的局部特征,并通過相關實驗證明了該方法具有可行性和有效性。本文主要貢獻如下:①將從高斯分布采樣的潛碼通過映射網(wǎng)絡訓練學習點云的概率分布,使點云的概率分布對齊到潛碼的概率分布,生成點云的形狀更具結(jié)構(gòu)性,可以提高模型訓練效率;②通過映射網(wǎng)絡中全連接層訓練學習到的概率分布可以解決樹結(jié)構(gòu)生成網(wǎng)絡子節(jié)點受父節(jié)點影響產(chǎn)生的點云生成不均勻的問題;③通過改變初始潛碼,使得生成點云的位置分布改變,達到改變生成點云局部特征的效果。
最近,基于深度神經(jīng)網(wǎng)絡的3D 數(shù)據(jù)生成問題備受關注,并產(chǎn)生了許多解決方案,包括圖像到點云[7]、圖像到體素[8]、圖像到網(wǎng)格[9]、點云到體素[10]和點云到點云[11]。生成的3D 數(shù)據(jù)已廣泛應用于計算機視覺(例如:分割[12-13]、分類[14-15]、目標檢測[16-17]、特征提取[18]等),并取得顯著效果。
用于2D 圖像生成任務的GAN[19-20]已被廣泛研究并取得良好效果,在StyleGAN[21]中,一個新的生成器結(jié)構(gòu)(Style-based Generator)被提出,與傳統(tǒng)GAN 直接將隨機潛在向量輸入生成器不同,其在生成器前添加了一個非線性映射網(wǎng)絡,并且結(jié)合風格遷移方法,基于潛碼調(diào)整各卷積層的圖像風格,達到了控制圖像風格的效果。與三維點云不同,二維圖像的像素是規(guī)則排列的,StyleGAN 中潛碼控制的是圖像的灰度顏色特征。本文受StyleGAN 啟發(fā),將映射網(wǎng)絡和風格遷移方法加以改進并應用于點云生成,改進后的映射網(wǎng)絡中的潛碼能有效地學習點云的概率分布信息,改變生成點云的分布及特征。
近幾年,在3D 點云生成方面,Achlioptas 等[22]提出一種用于3D 點云的GAN,稱為r-GAN,其生成器基于全連接層。由于全連接層無法保持結(jié)構(gòu)信息,r-GAN 難以生成具有多樣性的逼真形狀。Valsesia 等[23]使用圖卷積作為GAN 的生成器。在訓練期間的每一層圖卷積中,使用來自每個頂點的特征向量動態(tài)構(gòu)建鄰接矩陣。然而,為了提取圖的連通性,在單層計算鄰接矩陣時會產(chǎn)生二次計算復雜度O(V2),其中V 表示頂點數(shù)量,因而這種方法對于多批次和多層網(wǎng)絡是難以處理的。與Valsesia 中的方法不同,Tree-GAN 在計算上更為高效,因為它不構(gòu)造鄰接矩陣[24]。相反,Tree-GAN 使用來自樹的祖先信息并利用了圖的連通性,只需一個樹結(jié)構(gòu)列表即可。由于沒有適當?shù)恼齽t化,Tree-GAN 不同分支的點會傾向于形成類似高斯的分布,如更多的點聚集在物體的幾何中心或不同語義部分的連接處,并且樹形結(jié)構(gòu)生成的點分布更依賴其祖先分布,導致生成點云的形狀不均勻。在ShapeInversion 中,一個均勻損失以解決生成點云不均勻性的問題被提出,通過最遠點取樣(FPS)對物體表面的n個種子位置進行隨機取樣,再讓每個種子的k個最近鄰居形成小區(qū)塊,計算每個種子與其k個最近鄰居之間的平均距離,并對所有區(qū)塊的平均距離的方差進行懲罰[25]。
與ShapeInversion 中通過損失函數(shù)解決生成點云不均勻性問題不同,本文在訓練過程中分為兩部分:于映射網(wǎng)絡中訓練一個潛碼得到概率分布更加均勻的特征向量,于樹型生成網(wǎng)絡中訓練學習點云的特征信息,在樹型生成網(wǎng)絡的每一層通過AdaIN 模塊將特征向量結(jié)合達到解決生成點云的不均勻性,并且不需要額外的損失函數(shù),效率較傳統(tǒng)GAN 更高。
本文提出了一種基于TreeGAN[24]的樹結(jié)構(gòu)深度生成網(wǎng)絡Probability-TreeGAN(P-TreeGAN)。受StyleGAN[21]通過風格遷移方法改變生成圖片內(nèi)容樣式的啟發(fā),本文在生成器中加入一個改進后的映射網(wǎng)絡,用以學習點云位置的概率分布,使用風格遷移方法結(jié)合學習的概率分布改變點云的位置分布。
TreeGAN 的生成器是一個典型的樹結(jié)構(gòu)生成網(wǎng)絡,從高斯分布中獲取一個點作為輸入,在生成器的每一層,都會進行分支(Branching)和圖卷積(GraphConv)操作以生成下一層的點。先前層生成的所有點都被存儲并附加到當前層的樹中,樹從根節(jié)點開始,通過分支操作分裂為子節(jié)點,并通過圖卷積操作修改節(jié)點的值。Branching 模塊是用于生成點云過程中增加點的總數(shù),與二維卷積中的上采樣類似。在生成器中,對每一層使用不同的分支度,經(jīng)過最后一層分支操作得到2 048 個點。與傳統(tǒng)圖卷積通過鄰接點的值更新其值不同,TreeGAN 提出的樹圖卷積(TreeGCN)是通過每個頂點祖先的值更新它的值,為GCN引入了樹結(jié)構(gòu),如式(1)所示。
由于TreeGCN 是通過祖先節(jié)點的值更新當前節(jié)點的值,它可以使用祖先信息提高特征的表示能力。但同時,在樹型結(jié)構(gòu)中每一層新生成的點分布均受祖先節(jié)點分布影響,如果祖先節(jié)點的分布不均勻,子節(jié)點也會不均勻,且經(jīng)過Branching 后的點分布容易集中在物體的語義中心部分或者不同語義連接處(見圖1),并且訓練效率不高,存在一定局限性。
Fig.1 Chair point cloud generated by TreeGAN圖1 TreeGAN生成的椅子點云
本文引入了WGAN-GP[26]的目標函數(shù),生成器的損失函數(shù)Lgen定義如式(2)所示。
其中,D為判別器,G為生成器,Z為潛在分布,采用正態(tài)分布N(0,I)。
判別器的損失函數(shù)Ldisc定義如式(3)所示。
其中,G(z)為生成的點云,x為真實的點云,R表示真實的數(shù)據(jù)分布,并且使用了梯度懲罰的方法,x是從真假點云中采樣,λgp為梯度懲罰項的常系數(shù)。
判別器的損失函數(shù)會使網(wǎng)絡生成的點集中于點云判別性特征,如邊緣明顯的部分,同樣會造成生成點云分布不均勻。為了改善該問題,本文通過映射網(wǎng)絡訓練學習得到概率分布更加準確的潛碼,并且在生成過程中使點云的分布對齊到潛碼的分布,生成點云分布更加均勻。Shape-Inversion[25]中,通過加入一個損失項以約束生成點之間的距離,具有一定效果。但與之相比,本文方法不需要額外的損失函數(shù),計算量更少、效率更高。
為了解決樹型網(wǎng)絡和判別器損失函數(shù)產(chǎn)生的不均勻性問題,本文在生成器中引入風格遷移[27]方法并結(jié)合改進后的映射網(wǎng)絡中學習的概率分布改變生成點云的位置分布。
2.3.1 改進后的映射網(wǎng)絡
StyleGAN 中,映射網(wǎng)絡學習的潛碼控制圖像風格的功能已得以廣泛應用。受其啟發(fā),本文將映射網(wǎng)絡加以改進并引入生成器,使?jié)摯a在網(wǎng)絡中學習點云的概率分布。StyleGAN 中生成的是二維圖像,控制二維圖像特征的是圖像的灰度顏色信息,圖2(a)為StyleGAN 中的映射網(wǎng)絡,其潛碼是通過8 層全連接層后直接映射到各網(wǎng)絡層。三維點云的特征是通過點云的位置分布進行控制,與StyleGAN不同,本文映射網(wǎng)絡中的潛碼學習的是點云的概率分布,圖2(b)為本文改進后的映射網(wǎng)絡,其每一層潛碼都會映射到對應生成網(wǎng)絡層,映射網(wǎng)絡的前兩層學習的是點云的粗粒度特征(如形狀、大小等),其潛碼需要多層全連接層進行訓練以學習其概率分布。隨著網(wǎng)絡深度增加,潛碼控制生成點云的細節(jié)特征和分布的均勻性,用于學習點云的概率分布的全連接層數(shù)減少。通過全連接層的學習使?jié)摯a的概率分布更加均勻,能更好地控制生成點云的特征。
2.3.2 AdaIN模塊
風格遷移中的主要方法是自適應實例標準化AdaIN(Adaptive Instance Normalization)[27],將內(nèi)容圖像特征的均值和方差對齊到風格圖像的均值和方差,以實現(xiàn)風格遷移。本文使用AdaIN 模塊將通過映射網(wǎng)絡學習得到的潛碼,與生成網(wǎng)絡中基向量x結(jié)合,使三維點云位置特征的均值和方差對齊到潛碼的均值和方差,達到改變生成點云分布的效果,如式(4)所示。
其中,σ(x)、σ(y) 分別為基向量和潛碼的方差,μ(x)、μ(y)分別為基向量和潛碼的均值。由于樹型生成網(wǎng)絡子節(jié)點受父節(jié)點影響導致點云生成不均勻,本文在樹型生成網(wǎng)絡每一層進行分支和圖卷積之前加入AdaIN 模塊,用于改變生成點云的分布。
2.3.3 生成器網(wǎng)絡
生成器主要由映射網(wǎng)絡和樹結(jié)構(gòu)生成網(wǎng)絡兩個部分組成,映射網(wǎng)絡中共有11 個全連接層,用以學習點云的概率分布;樹結(jié)構(gòu)網(wǎng)絡由7 個PT-Block 模塊(ProbabilityTree-Block)組成,每個模塊有自適應性實例標準化(AdaIN)、分支(Branching)、圖卷積(GraphConv)3 個部分,用以學習點云的特征信息。將潛碼通過全連接層進行訓練使其概率分布更加準確,再映射到各PT-Block 模塊中,通過AdaIN模塊結(jié)合使樹結(jié)構(gòu)網(wǎng)絡中每一層生成的點云分布均受潛碼的概率分布影響,網(wǎng)絡結(jié)構(gòu)如圖3所示。
2.3.4 訓練階段算法流程
在模型訓練階段,本文算法分為兩個部分。一部分在映射網(wǎng)絡中學習點云的概率分布信息,一部分在樹型網(wǎng)絡中學習點云的形狀信息。從高斯分布中隨機采樣潛碼z、x。將潛碼z輸入映射網(wǎng)絡學習點云概率分布,在映射網(wǎng)絡中通過全連接層及上采樣層得到對應樹型生成網(wǎng)絡每一層不同維度的潛碼向量w1,w2,...,w7;將潛碼x輸入樹型生成網(wǎng)絡作為基向量用以生成點云,在樹型生成網(wǎng)絡每一層分支上采樣前加入AdaIN 模塊,在AdaIN 模塊中將每一層生成的點云x1,x2,...,x7對齊到潛碼w1,w2,...,w7上,結(jié)合映射網(wǎng)絡中學習好點云概率分布的潛碼改變當前層生成點云的分布信息。算法流程如圖4所示。
本文生成器網(wǎng)絡模型是金字塔結(jié)構(gòu),從上到下生成信息更豐富的點云,映射網(wǎng)絡中潛碼通過全連接層和上采樣,逐漸學習更深層的信息,全連接層可以整合網(wǎng)絡層中具有類別區(qū)分性的局部信息,更好地提取特征,金字塔底部潛碼可以比頂部的潛碼學習更加準確的概率分布信息,更能反映點云結(jié)構(gòu)的形狀信息。樹型生成網(wǎng)絡是根據(jù)父節(jié)點的信息生成子節(jié)點,當前層點云的均勻性及分布信息會被前幾層的點云影響,網(wǎng)絡層數(shù)越深影響越大。在樹型生成網(wǎng)絡每一層中都加入對應維度的潛碼,通過AdaIN 模塊使生成點云對齊到學習好概率分布的潛碼,改變當前層生成點云的分布信息,使生成點云的位置更加準確,更具結(jié)構(gòu)性,在訓練過程中生成接近真實的點云時間更短,提升了模型訓練效率。這不僅解決了樹結(jié)構(gòu)生成點依賴祖先點產(chǎn)生的不均勻性問題,對判別器損失函數(shù)趨于生成點集中在邊緣特征明顯位置的情況也有所改善。
使用ShapeNet Part 數(shù)據(jù)集對本文提出的模型進行訓練和評估。ShapeNet Part 總共有16 類,訓練集12 137 個,驗證集1 870 個,測試集2 874 個,總計16 881 個。該數(shù)據(jù)集中樣本呈現(xiàn)出不均衡特性,如Table 類別有5 263 個樣本,而Earphone 類別只有69 個樣本。每個樣本包含2 048個點,屬于小數(shù)據(jù)集。實驗平臺為搭載GeForce RTX 3090 GPU 的服務器,配置環(huán)境為Python3.8 和Tensorflow2.4-gpu。
本文使用JS 散度(Jensen-Shannon Divergence)評估GAN 生成點云的質(zhì)量,JS 散度是定義在歐幾里得三維空間邊緣分布的。假設條件為軸對齊的點云數(shù)據(jù)和環(huán)境空間中的規(guī)范體素網(wǎng)格,可以測量點云A 與點云B 占據(jù)相似位置的程度。通過分別計算點云A 和點云B 中每個體素內(nèi)的點數(shù),獲得經(jīng)驗分布(PA,PB)之間的JSD,如式(5)所示。
其中,M=(PA+PB)/2,D(·||·)是兩個分布之間的KL散度(Kullback-Leibler divergence),KL 散度是一個用來衡量兩個概率分布之間相似性的度量指標,如式(6)所示。
本文對生成器和判別器網(wǎng)絡都使用了Adam 優(yōu)化器,學習率為α=10-4,其他系數(shù)為β1=0 和β2=0.99。在生成器中,使用LeakyReLU(α=0.2)作為沒有批歸一化的非線性函數(shù)。損失函數(shù)中梯度懲罰系數(shù)設置為10,判別器每次迭代更新5 次,而生成器每次迭代更新一次。潛在向量z∈R96從正態(tài)分布N(0,I)中采樣以作為輸入,TreeGCN 的循環(huán)項有K=10 個支持,最后一層的總點數(shù)設置為n=2 048。判別器網(wǎng)絡結(jié)構(gòu)及參數(shù)如表1所示。
Table 1 Discriminator network structure and parameter表1 判別器網(wǎng)絡結(jié)構(gòu)及參數(shù)
在生成點云前,潛碼需要通過映射網(wǎng)絡進行訓練以學習點云位置的概率分布。為了觀察映射網(wǎng)絡學習點云概率分布的效果,將潛碼直接輸入生成網(wǎng)絡與經(jīng)過映射網(wǎng)絡訓練學習的原網(wǎng)絡進行對比。對飛機類別進行了2 000 個周期的訓練,通過觀察兩個模型的JSD 變化趨勢以判斷映射網(wǎng)絡的重要性,從折線圖(見圖5)可以看出,網(wǎng)絡直接加入從高斯分布采樣的潛碼生成點云的JSD 指標波動大,并且最終生成的點云分布也不規(guī)則。因為經(jīng)過映射網(wǎng)絡中全連接層訓練后的潛碼概率分布更加均勻,生成點云的分布更接近潛碼的概率分布,使生成的點云更加規(guī)則和穩(wěn)定,證明了模型中映射網(wǎng)絡學習到的點云概率分布的有效性。
Fig.5 JSD change curve with and without mapping network圖5 有無映射網(wǎng)絡的JSD變化曲線
將本文提出的模型與其他用于點云生成的GAN 模型進行定量和定性比較。由于Valsesia 等[23]只展現(xiàn)了飛機和椅子的點云結(jié)果,且其源代碼沒有公開,因而本文基于飛機和椅子的結(jié)果與其他GAN 進行了比較,并且對所有16 個類別進行了評估。在ShapeNet Part 數(shù)據(jù)集上進行了5 000 個epoch 的訓練,將實驗結(jié)果與其他模型進行比較,如表2所示。
Table 2 Quantitative comparison in terms of the JSD metrics表2 JSD指標的定量比較
在Shapenet Part 數(shù)據(jù)集上,本文提出模型的JSD 在椅子和飛機以及總體16 類上分別達0.093、0.074 和0.091,均優(yōu)于其他用于點云生成的GAN 模型,表明本文模型生成點云質(zhì)量更高,模型泛化性更強。
針對GAN 模型生成點云具有不均勻性的問題,本文通過映射網(wǎng)絡訓練了一個概率分布更加準確的潛碼,在點云生成過程中加入概率分布信息,使得生成點云更加均勻。為了方便對比觀察,對TreeGAN 和P-TreeGAN 進行了可視化實驗,將兩個模型生成的點云(2 048 個點)訓練2 000 個epoch 進行對比,可視化結(jié)果如圖6所示。
Fig.6 Uniformity comparison of point cloud generation圖6 生成點云的均勻性比較
對比圖6 中TreeGAN 和P-TreeGAN 生成的結(jié)果,TreeGAN 生成的點云會有更多的點聚集在物體的幾何中心以及不同語義部分的連接處,導致生成點云的形狀不均勻。如圖6 所示,TreeGAN 生成的椅子大量聚集在椅背和椅座連接的位置;飛機中的點聚集在機身,機翼和機尾的點較為稀疏;桌子中的點聚集在桌面中心,桌子邊緣及桌腿的點稀疏。而本文提出的模型在生成網(wǎng)絡中的圖卷積之前增加了AdaIN 模塊,將映射網(wǎng)絡中訓練得到概率分布更加準確的潛碼結(jié)合,改變了生成點云的位置分布,實驗可視化結(jié)果證明本文模型生成的點云更加均勻。
針對TreeGAN 模型訓練速度慢、JSD 指標收斂慢的問題,本文提出的模型在點云生成過程中加入了學習了概率分布的潛碼,使得生成點云的形狀更具結(jié)構(gòu)性,生成更加真實的點云速度更快,提高了訓練效率和收斂速度。將本文提出的模型與TreeGAN 在相同參數(shù)條件下,對椅子類別進行了2 000 個epoch 的實驗,對指標JSD 的變化情況進行了對比,選取前150個epoch 繪制折線圖如圖7所示。
Fig.7 Comparison of model training efficiency圖7 模型訓練效率比較
對圖7 中折線進行分析得出,本文提出的模型在JSD收斂速度上明顯快于TreeGAN。為了更清楚地看到模型訓練時生成點云的質(zhì)量,取兩個模型訓練各周期時生成的點云圖進行對比,結(jié)果如圖8所示。
Fig.8 Comparison of the point clouds generated by training each epoch圖8 訓練各epoch生成的點云比較
圖8 對兩個模型在訓練相同周期時生成的點云進行對比,在訓練100 個epoch 時,本文模型生成的椅子已經(jīng)初具形狀,而TreeGAN 生成的椅子大量散點仍然聚集在一起;在訓練500個epoch 時,TreeGAN 生成的椅子僅有輪廓,而本文模型生成的椅子已經(jīng)特征明顯,從可視化結(jié)果可以看出P-TreeGAN 生成點云的效果比TreeGAN 更好。此外,為了更直觀地比較速度,對達到不同JSD 所需要的訓練周期進行了統(tǒng)計,結(jié)果如表3所示。
Table 3 The period required for training to reach the specified JSD表3 訓練達到指定JSD所需周期
可以看出,在達到相同精度的JSD 情況下,本文提出的模型所需訓練周期遠少于TreeGAN。當JSD 達到0.3 時,TreeGAN 需要600 個epoch,而P-TreeGAN 只需要100 個epoch 訓練周期,速度是TreeGAN 的6 倍;當JSD 達到0.15時,P-TreeGAN 所需訓練周期比TreeGAN 少了1 000 個epoch。以上實驗均證明本文提出模型在訓練效率上的高效性。
本文模型在訓練階段,映射網(wǎng)絡的潛碼和樹型生成網(wǎng)絡的基向量均從正態(tài)分布隨機采樣。將訓練好的模型通過改變映射網(wǎng)絡中初始的潛碼以達到改變生成點云局部特征的效果。對椅子、飛機和桌子進行實驗,分別取6 個不同的初始潛碼改變生成點云的局部特征,同時訓練2 000個epoch,可視化結(jié)果如圖9所示。
Fig.9 Point cloud renderings generated under different features圖9 不同特征下生成點云效果
本文提出一種基于點云概率分布學習的樹結(jié)構(gòu)生成對抗網(wǎng)絡P-TreeGAN。在生成器中加入映射網(wǎng)絡用以訓練學習點云位置的概率分布,在點云生成過程中使點云位置分布對齊到潛碼的概率分布,生成點云的形狀更具結(jié)構(gòu)性,不僅訓練效率更高,生成點云分布更加均勻,并且通過改變初始的潛碼可以改變生成點云的特征。
本文模型生成的點云在椅子、飛機以及總體16 類別上的JSD 指標評估上均優(yōu)于r-GAN、TreeGAN 等傳統(tǒng)點云生成GAN 模型,更加接近真實點云。并且與TreeGAN 進行了均勻性和訓練效率比較,可視化結(jié)果均顯示本文模型效果更好。本文還展示了控制生成椅子和桌子特征的可視化結(jié)果,效果良好。后續(xù)將針對映射網(wǎng)絡進行改進,進一步提升訓練效率和生成點云質(zhì)量;同時,對生成點云的特征進行控制,例如特征混合等。