喬瑤瑤, 張?zhí)m蘭
(黃河交通學(xué)院智能工程學(xué)院, 河南 焦作 454950)
修補是點云預(yù)處理中的重要環(huán)節(jié)和基礎(chǔ),其主要是通過一定的先驗信息對缺失點云進行修補。傳統(tǒng)修補方法的先驗信息為物體的基礎(chǔ)結(jié)構(gòu)信息,比如對稱性信息和語義類信息等,因此傳統(tǒng)方法在處理結(jié)構(gòu)特征不明顯的點云時效果不佳,而基于深度學(xué)習(xí)的方法在三維點云處理方面取得顯著成效。PointNet[1]首次將深度學(xué)習(xí)方法應(yīng)用到非結(jié)構(gòu)化點云上;王春香等[2]利用GA-BP遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)對三維點云進行修補;呂富強等[3]利用隨機森林算法對地表點云空洞進行修補;張藝真等[4]通過訓(xùn)練RBF神經(jīng)網(wǎng)絡(luò)對點云數(shù)據(jù)進行修補。然而,上述方法僅從單一的全局形狀表征預(yù)測整個點云,大多面臨著結(jié)構(gòu)細節(jié)信息丟失的問題。為解決這一問題,本文采用基于深度學(xué)習(xí)的RL-GAN網(wǎng)絡(luò)對缺失點云進行修補。RL-GAN網(wǎng)絡(luò)是一種基于強化學(xué)習(xí)(Reinforcement Learning, RL)控制的生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN),可以從不完整點云數(shù)據(jù)中預(yù)測完整點云信息。利用強化學(xué)習(xí)實現(xiàn)點云修補,可以節(jié)約時間,實現(xiàn)點云的實時修補,并且對于大區(qū)域的缺失具有魯棒性。
基于深度學(xué)習(xí)的實時空洞修補算法的網(wǎng)絡(luò),它由三個基本模塊組成,包括自編碼器(Autoencoder, AE)、GAN和強化學(xué)習(xí)模塊。每一個模塊都是一個深度神經(jīng)網(wǎng)絡(luò),需要單獨訓(xùn)練。第一階段,自編碼器使用完整點云作為數(shù)據(jù)集進行訓(xùn)練,經(jīng)過訓(xùn)練的編碼器用于提取訓(xùn)練集中的每個點云的全局特征向量(Global Feature Vector, GFV)。第二階段,使用提取到的GFV訓(xùn)練GAN。第三階段,將強化學(xué)習(xí)模塊中的強化學(xué)習(xí)智能體(Reinforcement Learning-agent, RL-agent)與預(yù)先訓(xùn)練好的自編碼器和GAN進行聯(lián)合訓(xùn)練,訓(xùn)練后的RL-agent 將為GAN的生成器選擇合適的種子向量,使得生成器可以快速生成完整點云的GFV。該網(wǎng)絡(luò)的前向傳播如圖1所示。
圖1 網(wǎng)絡(luò)的前向傳播Fig.1 Forward propagation of the network
自編碼器由編碼器和解碼器組成。編碼器將復(fù)雜的輸入轉(zhuǎn)換為潛在空間表征,解碼器將潛在空間表征還原到原始維度。自編碼器是通過反向傳播減少輸入和輸出點云之間的距離進行的訓(xùn)練。這里的點云距離可以采用推土機距離(Earth Mover′s Distance, EMD)[5],也可以采用倒角距離(Chamfer Distance,CD)。EMD用于衡量在某一特征空間下兩個多維分布之間的不同。這里使用EMD作為損失函數(shù),它是基于兩個點云S1和S2之間的距離表示的:
其中,φ是S1到S2的雙映射。
GAN網(wǎng)絡(luò)主要由生成器和鑒別器構(gòu)成,生成器將一個噪聲包裝成一個逼真的樣本,鑒別器判斷送入的樣本是否為真實樣本,在這個不斷迭代的過程中,鑒別器對樣本的判別能力不斷上升,生成器的生成能力也不斷上升,最終兩者的能力達到平衡。生成器的期望是將所生成的數(shù)據(jù)送入鑒別器后,鑒別器能將其判別為真實數(shù)據(jù),鑒別器的期望是能將所有的生成數(shù)據(jù)和原始數(shù)據(jù)區(qū)分開,二者在博弈的過程中共同提升性能。
GAN的訓(xùn)練模式一般會先固定生成器,迭代多次訓(xùn)練鑒別器,然后固定鑒別器訓(xùn)練生成器,兩者依次交替,使用梯度下降的方法進行更新。GAN的訓(xùn)練可能表現(xiàn)出發(fā)散、不穩(wěn)定性和模式崩潰等現(xiàn)象。為了解決這些問題,ACHLIOPTAS等[6]提出在潛在空間表征上訓(xùn)練GAN,他們的研究也表明在潛在空間表征上訓(xùn)練GAN比在原始點云上訓(xùn)練得到的結(jié)果更加穩(wěn)定。GURUMURTHY等[7]也采用了該方法訓(xùn)練GAN網(wǎng)絡(luò)。因此,本文采用該方法在GFV上訓(xùn)練GAN網(wǎng)絡(luò)。
本文使用的生成器和鑒別器是SAGAN[8]網(wǎng)絡(luò)的生成器和鑒別器,SAGAN的損失函數(shù)借鑒的是WGAN-GP[9]的損失函數(shù)。為了解決原始GAN網(wǎng)絡(luò)訓(xùn)練困難、生成樣本缺乏多樣性及損失函數(shù)無法引導(dǎo)訓(xùn)練過程等問題,對改進的生成對抗網(wǎng)絡(luò)(Wasserstein Generative Adversarial Networks-Gradient Penalty, WGAN-GP)做了一些更改,對于生成器和鑒別器的損失函數(shù)不再取對數(shù),并且為鑒別器損失函數(shù)加上梯度懲罰項。鑒別器和生成器的損失函數(shù)分別如下:
LD=Ex~pdataD(x)-Ez~pzD(G(z))+d_gp
LG=-Ez~pzD(G(z))
其中,pdata是輸入點云經(jīng)過編碼器編碼生成的GFV的樣本分布,D(x)是以x為輸入和輸出的鑒別器,并且x是在[0,1]之間的標量。G(x)是生成器,能夠?qū)⒃肼晍包裝成一個逼真的樣本。d_gp是梯度懲罰項。
在典型的強化學(xué)習(xí)框架中,智能體與環(huán)境一直處于互動狀態(tài),智能體發(fā)送動作至環(huán)境,環(huán)境返回狀態(tài)和獎勵。在每個時刻,智能體會接收到來自環(huán)境的狀態(tài),基于這個狀態(tài),智能體會依據(jù)一定的策略做出相應(yīng)的動作,然后環(huán)境會依據(jù)一定的狀態(tài)轉(zhuǎn)移概率轉(zhuǎn)移到下一個狀態(tài),與此同時,環(huán)境會根據(jù)此時狀態(tài)的好壞反饋給智能體一個獎勵。智能體可以根據(jù)環(huán)境的反饋調(diào)整其策略,然后繼續(xù)在環(huán)境中探索,最終學(xué)習(xí)到一個能夠獲得最多獎勵的最優(yōu)策略。
這里訓(xùn)練一個基于演員-評論家的強化學(xué)習(xí)網(wǎng)絡(luò),該網(wǎng)絡(luò)可以從連續(xù)的動作空間中學(xué)習(xí)到策略,然后使用學(xué)習(xí)到的策略控制GAN完成點云修補工作?;谘輪T-評論家的網(wǎng)絡(luò)架構(gòu)由智能體和環(huán)境組成,通過動作和獎勵完成智能體和環(huán)境的交互。這里的環(huán)境是一個由自編碼器和GAN組成的點云修補框架,動作是GAN生成器的輸入,觀測到的狀態(tài)就是從不完整點云中編碼獲得的全局特征向量。假設(shè)環(huán)境具有馬爾可夫性,并且是完全可預(yù)測的,也就是說最近的觀測結(jié)果足以定義狀態(tài)。智能體采取行動為生成器選擇正確的種子,然后合成的全局特征向量通過解碼器獲得完整的點云形狀。強化學(xué)習(xí)控制的生成對抗網(wǎng)絡(luò)(A Reinforcement Learning Agent Controlled GAN Network, RL-GAN-NET[10])用到的是值優(yōu)化和策略優(yōu)化相結(jié)合的深度確定性策略梯度(DDPG)算法。本文采用雙延遲深度確定性策略梯度算法(Twin Delayed Deep Deterministic Policy Gradient Algorithm, TD3)作為強化學(xué)習(xí)框架。
訓(xùn)練強化學(xué)習(xí)智能體的一個主要任務(wù)是建立正確的獎勵函數(shù)。獎勵函數(shù)通過對損失函數(shù)取相反數(shù)獲得,也就是說,最大化獎勵函數(shù)就等價于最小化損失函數(shù),獎勵函數(shù)re由re_emd、re_D、re_G構(gòu)成,分別如下:
re_emd=-dEMD,re_D=-LD,re_G=-LG
re=α1re_emd+α2re_D+α3re_G
其中,α1、α2、α3是每個損失函數(shù)的權(quán)重,dEMD、LD、LG分別是自編碼器AE、鑒別器D、生成器G的損失函數(shù)。
(1)數(shù)據(jù)集。使用ShapeNet數(shù)據(jù)集作為實驗的數(shù)據(jù)集,每個類別包含不同的模型網(wǎng)格。所有的模型被平移至以原點為中心的位置,并且將模型進行縮放,使得其邊框?qū)蔷€的長度為單位長度。之后對模型進行均勻采樣,生成包含16 384個點的點云數(shù)據(jù)作為完整點用于訓(xùn)練自編碼器,并且通過自編碼器編碼的全局特征變量用于訓(xùn)練GAN網(wǎng)絡(luò)。為了使輸入的分布更接近真實世界的傳感器數(shù)據(jù),使用反向投影的深度圖像作為不完整點云,得到的不完整點云作為測試集,并在完整點云數(shù)據(jù)集上訓(xùn)練強化學(xué)習(xí)智能體。
(2)網(wǎng)絡(luò)實現(xiàn)細節(jié)。自編碼器由編碼器和解碼器組成。編碼器將輸入點云轉(zhuǎn)化成全局特征向量,解碼器將全局特征向量轉(zhuǎn)換成點云模型。編碼器由5個一維卷積層組成,分別為64、128、128、256、128通道;解碼器由3個全連接層組成,分別為256、256、6 144通道。每一層后面都跟著ReLu激活單元。通過減小輸入點云與輸出點云之間的EMD距離訓(xùn)練自編碼器。
GAN網(wǎng)絡(luò)是由自編碼器的編碼器、生成器和鑒別器構(gòu)成。采用的是自注意的生成對抗網(wǎng)絡(luò)的主要結(jié)構(gòu)。生成器和鑒別器均由4個卷積層、1個一維轉(zhuǎn)換卷積層及1個自注意機制網(wǎng)絡(luò)組成。使用WGAN-GP對抗損失函數(shù)訓(xùn)練GAN網(wǎng)絡(luò),生成器每更新1次,則鑒別器更新5次。使用Adam作為優(yōu)化器,其中生成器和鑒別器的學(xué)習(xí)率均設(shè)置為0.000 01,批處理設(shè)置為50。
強化學(xué)習(xí)模塊由智能體和環(huán)境構(gòu)成。使用基于演員-評論家的體系結(jié)構(gòu)實現(xiàn)對GAN的連續(xù)控制,并且使用TD3算法訓(xùn)練。演員網(wǎng)絡(luò)由3個全連接層組成,前兩層使用ReLu激活,最后一層使用tanh激活。評論家網(wǎng)絡(luò)由3層全連接層組成,前兩層使用ReLu激活。
使用來自ShapeNet的數(shù)據(jù)集測試所改進算法的有效性。實驗網(wǎng)絡(luò)輸入的是缺失點云,期望得到的是高質(zhì)量和高分辨率的補全點云。圖2展示了本文方法在ShapeNet數(shù)據(jù)集上的修補結(jié)果,展示的分別是飛機、櫥柜、汽車、椅子、燈具、沙發(fā)、桌子和船舶類缺失點云的修補結(jié)果。從圖2可以看到,修補后的結(jié)果和實際點云可能不是每個細節(jié)都是對齊的,但是在語義上是合理的,并且不存在明顯可見的空洞,修補結(jié)果達到了預(yù)期。圖3展示的是桌子點云缺失不同部位和缺失程度不同的點云修補結(jié)果,修補結(jié)果良好,語義合理,沒有明顯可見的空洞。
圖2 ShapeNet數(shù)據(jù)集實驗結(jié)果Fig.2 Experimental results of ShapeNet dataset
圖3 不同缺失程度的點云修補結(jié)果Fig.3 Point cloud repair results with different missing degrees
(1)修補時間。在ShapeNet數(shù)據(jù)集上測試點云修補完成的時間。使用訓(xùn)練好的模型進行點云修補測試,輸入缺失點云,輸出完整的點云。每一類修補所需要的平均時間如表1所示。從表1中可以看出,本文所提方法可以做到實時的點云修補。
表 1 點云修補完成時間Tab.1 Completion time of point cloud repair
(2)相似性度量。點云修補的一個挑戰(zhàn)是如何與真實數(shù)據(jù)進行比較。現(xiàn)有的相似性度量主要包括倒角距離CD和推土機距離EMD,使用這兩個度量作為評估指標。對于兩個點云,CD測量一個點云中每個點到另一個點云中最近的點之間的平均距離,EMD要求兩個點云的大小一致。
將本文方法與以下方法進行比較。3D編碼器預(yù)測網(wǎng)絡(luò)(3D-Encoder Predictor Network, 3D-EPN[11])是大型合成數(shù)據(jù)集端到端的訓(xùn)練,是體素修補方法的代表。為了進行比較,將3D-EPN的距離場輸出轉(zhuǎn)換為點云,提取等值面,在生成的網(wǎng)格上均勻采樣16 384個點。融合卷積自編碼器(Fusion Convolutional Autoencoder, FCAE)使用直觀的自編碼器,編碼器與PointNet中的相似,解碼器是一個全連接層,使用倒角距離作為該方法的損失函數(shù)。三維形狀曲面深度學(xué)習(xí)生成網(wǎng)絡(luò)(AtlasNet[12])使用類似的編碼器,每次前向傳播能輸出2 500個點,將多次傳遞的生成點進行組合。點云補全網(wǎng)絡(luò)(Point Completion Network, PCN)也使用自編碼器完成點云的修補,它使用PointNet的改進版本作為編碼器,并以由粗到細的方式生成點云,從中隨機抽取16 384個點進行比較。
定量結(jié)果見表2和表3,從中可以看出,本文方法在CD和EMD兩個方面都優(yōu)于3D-EPN、FCAE、AtlasNet和PCN方法。EMD在點云比較方面更具有判別性和說服力。在所有類別中,本文方法的EMD是最低的,表明了該方法的優(yōu)越性。EMD在不同的對象類別中是不同的,這表明完成不同類別的困難是不同的。具體來說,在數(shù)據(jù)集中有更多數(shù)量的飛機和汽車,由于它們的結(jié)構(gòu)相對簡單和穩(wěn)定,因此它們更容易完成。相比之下,在數(shù)據(jù)集中的各種燈是相對孤立的,因此更難完成。就CD而言,不同方法和對象類別之間的差異相對較小。雖然本文方法使用EMD作為損失函數(shù),但是在CD方面也是優(yōu)于其他方法的。
表 2 ShapeNet數(shù)據(jù)集結(jié)果定量比較:CD×100Tab.2 Quantitative comparison of ShapeNet dataset results: CD×100
表 3 ShapeNet數(shù)據(jù)集結(jié)果定量比較: EMD×100Tab.3 Quantitative comparison of ShapeNet dataset results: EMD×100
本文提出一種基于深度學(xué)習(xí)的實時點云修補算法,其主要目的是從不完整點云中生成完整點云,實現(xiàn)對不完整點云的實時修補,其中強化學(xué)習(xí)可以為GAN網(wǎng)絡(luò)提供快速而穩(wěn)定的控制,通過控制GAN將輸入點云數(shù)據(jù)轉(zhuǎn)換為具有高保真度的完整點云。為了能夠?qū)崿F(xiàn)實時的點云修補,一方面使用強化學(xué)習(xí)智能體控制生成器,另一方面該網(wǎng)絡(luò)刪除了成本高且復(fù)雜的優(yōu)化過程,將損失函數(shù)轉(zhuǎn)化為獎勵函數(shù)。該網(wǎng)絡(luò)可以較為穩(wěn)定地補全含有大面積缺失區(qū)域的點云。在數(shù)據(jù)集ShapeNet上進行實驗,實驗表明本文所提方法在點云修補上可以實現(xiàn)不完整點云的實時修補,可以將部分點云數(shù)據(jù)轉(zhuǎn)換成符合語義的完整點云。