王俊鍇,譚臺哲,楊天宇
(廣東工業(yè)大學(xué)計算機學(xué)院,廣州510006)
隨著三維點云模型的廣泛使用,在數(shù)字化文物、設(shè)計制造、虛擬現(xiàn)實等各個領(lǐng)域都產(chǎn)生了越多的點云模型的需求。大多數(shù)的點云生成步驟較為繁瑣或者需要用到專門的采集設(shè)備(如激光掃描、RGBD攝像頭等)。這些采集方式所得到的點云模型通常會受到場景中其他物體的相互遮擋、相機精度的原因,出現(xiàn)部分的結(jié)構(gòu)缺失或者產(chǎn)生噪音。特別是對于物體一些必要的精細結(jié)構(gòu)出現(xiàn)的區(qū)域缺失或改變,往往會丟失原有對象的語義信息。另外,在一些場景下比如增強現(xiàn)實交互、動畫游戲,人們通常需要一個簡單快速的方法提取圖像的主要特征進行重建,由于這種情景下缺乏目標(biāo)的完整信息,使用單個視圖來生成點云具有實用性。
傳統(tǒng)的三維重建方法需要依靠多個角度下的視圖完成。在實際生活中,對于單幅圖像,依靠對現(xiàn)實世界中各類物體的辨識,通??梢匀藶榈赝茢喑瞿硞€圖像的拍攝角度,進而想象出拍攝對象的總體三維結(jié)構(gòu)。近年來,隨著深度學(xué)習(xí)方法的廣泛應(yīng)用以及相關(guān)數(shù)據(jù)集[1]的開源,基于數(shù)據(jù)驅(qū)動的從單幅圖像生成三維模型的需求和應(yīng)用也隨之引起學(xué)者們的興趣。其中生成數(shù)據(jù)主要分為體素和點云兩種。相比體素,點云有著結(jié)構(gòu)更為簡單,分辨率更高且變換方式多樣的特點,在深度學(xué)習(xí)方法上更具有優(yōu)勢。
Fan等人基于沙漏網(wǎng)絡(luò)結(jié)構(gòu)的自編碼器[2],提出把倒角距離和推土機距離用于度量點集之間的相似性,并作為點集真實值和預(yù)測值對應(yīng)點坐標(biāo)數(shù)值回歸的損失函數(shù),以解決點云這種無序序列的數(shù)據(jù)結(jié)構(gòu)生成的難題。
在深度學(xué)習(xí)用于三維數(shù)據(jù)的領(lǐng)域,ShapeNet將三維卷積用于體素模型(volumetric pixel)的識別。由于點云數(shù)據(jù)表現(xiàn)出的無序性,即點云是由一組無特定順序的離散點所組成,且點的排列順序改變不影響最終在空間中所呈現(xiàn)的三維點云的形狀,導(dǎo)致不同的點云數(shù)據(jù)可能是同一個三維對象,不能像體素一樣被三維卷積網(wǎng)絡(luò)處理。文獻[3]首先提出使用全連接層的操作和全局池化,對點云的特征提取有優(yōu)良的效果。因為其簡單高效的優(yōu)點,本文使用類似的結(jié)構(gòu)作為判別器中的點云特征提取網(wǎng)絡(luò)來對生成器所生成的點云模型進一步優(yōu)化。
近年來,距離度量學(xué)習(xí)在人臉識別、行人重識別、圖像檢索等任務(wù)上表現(xiàn)出優(yōu)越的效果。FaceNet[4]將度量學(xué)習(xí)用于人臉識別上,大幅地降低了表示人臉數(shù)據(jù)的特征維度。距離度量是指原始的樣本通過深度非線性變換映射到某一特征空間,求取該空間中特征向量間的距離或相似度的過程。距離度量學(xué)習(xí)則是通過設(shè)計相應(yīng)的損失函數(shù),通過優(yōu)化問題以學(xué)習(xí)其變換矩陣參數(shù)的過程。通過距離度量學(xué)習(xí),能夠?qū)⒉煌悩?biāo)簽的易混淆樣本或者同類標(biāo)簽的難以辨認樣本區(qū)分開來,拉大類間距離和減小類內(nèi)距離。
應(yīng)用在深度學(xué)習(xí)中的度量學(xué)習(xí)方法有:對比損失[5]和三元組損失[4]。對比損失需要的是成對的同類或異類的樣本,三元組損失則是構(gòu)造一個三元組,分別為樣本、樣本的正例和負例。以上方法通過學(xué)習(xí)到非線性映射函數(shù)來達到最大化類間距離和最小化類內(nèi)距離的目的。在實驗的過程中可發(fā)現(xiàn):基于三元組損失的方法的一個難點是需要構(gòu)造大量的數(shù)據(jù)對,占用內(nèi)存空間隨著訓(xùn)練數(shù)據(jù)的增加而膨脹,且在類別數(shù)目較多的情況下,各個類別的數(shù)據(jù)對之間沒有明顯的相似度,對網(wǎng)絡(luò)的優(yōu)化起到的作用有限。采用相關(guān)的技巧一定程度上有所改善,例如增加批處理數(shù)據(jù)大小、嚴格或者半嚴格的三元組檢索方法、基于代理點的度量方法[6]等,后兩者減少抽樣的數(shù)據(jù)對,有效加快了網(wǎng)絡(luò)的擬合。
3D-LMNet[7]使用自編碼高斯混合模型,訓(xùn)練得到具有豐富語義信息的點云自編碼器,基于概率分布的模型生成多個可信輸出。工作側(cè)重于在編碼方面的改進,說明通過合理的編碼方法可以有效提高生成樣本的質(zhì)量。
已有的從單幅圖像生成點云模型工作存在的不足有:圖像的特征提取網(wǎng)絡(luò)能力有限,受到視圖角度、遮擋等因素的影響,不能較好地區(qū)分同一對象的不同視圖。由于生成器網(wǎng)絡(luò)的輸入信息依賴于特征提取網(wǎng)絡(luò)的編碼,且在訓(xùn)練數(shù)據(jù)規(guī)模有限的條件下,如果未知圖像樣本的特征編碼不具有足夠的區(qū)分度,生成的點云模型就會表現(xiàn)出過于擬合訓(xùn)練集樣本。
針對該任務(wù)場景,提出基于度量學(xué)習(xí)的對抗生成方法,設(shè)計了一個三維點云的生成網(wǎng)絡(luò)。圖1為本文方法的整體框架流程。
圖1 網(wǎng)絡(luò)總體結(jié)構(gòu)
與原始生成對抗網(wǎng)絡(luò)相比,網(wǎng)絡(luò)在判別器中的輸出不是對輸入樣本的真假二值判斷,而是一個多維的特征編碼向量。從輸入對象的特征編碼的角度出發(fā),將距離度量學(xué)習(xí)的策略用于生成對抗網(wǎng)絡(luò)中。將中心損失[8]作為判別器網(wǎng)絡(luò)的損失函數(shù),增強保存對同類樣本的記憶,生成的點云模型更具有區(qū)分度。
基于點云重建的損失函數(shù)目標(biāo)是最小化預(yù)測所得點云模型中的點與真實值點云模型最近的點之間的平均距離。而對抗的中心損失度量函數(shù)是最小化具有語義信息的編碼之間的距離。聯(lián)合以上二者的監(jiān)督,將相同實例聚集在一起,并增大區(qū)分度較小的不同對象間的距離。通過有效設(shè)計的圖像和點云特征提取網(wǎng)絡(luò),可以利用生成對象在同一空間上編碼的一致性來提高生成點云的質(zhì)量。具體地,通過融合訓(xùn)練數(shù)據(jù)集中同一實例已有的多個視圖的特征來提高對不同視角下的二維視圖的特征提取能力,從而改進所預(yù)測生成對應(yīng)的三維點云模型的效果。
使用PointNet[3]類似的全連接和1維卷積網(wǎng)絡(luò)作為生成點云的特征提取網(wǎng)絡(luò)和CNN網(wǎng)絡(luò)用于圖像的編碼,經(jīng)過編碼網(wǎng)絡(luò)的點云會得到一個多維的特征變量,將其和輸入圖像的特征向量在同一空間中基于歐氏距離進行度量。
以上步驟中,已有實驗證明對輸入樣本的有效編碼對于最終解碼生成的點云極為重要[7]。為了提高圖像編碼網(wǎng)絡(luò)在本任務(wù)下的能力,在不同視圖下都能對輸入圖像的特征進行有效提取,在生成網(wǎng)絡(luò)G的后端加入點云的判別網(wǎng)絡(luò)。生成網(wǎng)絡(luò)部分是輸入圖像I的編碼器網(wǎng)絡(luò)和解碼器網(wǎng)絡(luò),這一部分將單幅圖像編碼得到一個多維向量,將該向量輸入到解碼器網(wǎng)絡(luò)以生成點云模型G(I)。右側(cè)是判別器網(wǎng)絡(luò)D,使用1維卷積將點云中的每個點都生成一個多維特征,在多層網(wǎng)絡(luò)進行一定程度的提取后,采用最大池化得到對應(yīng)的全局特征編碼向量。
判別器網(wǎng)絡(luò)損失函數(shù)包含兩個部分,分別為:真假判別損失和基于中心損失的特征損失。其中Ldis計算的是判別器對輸入真PCgt、假點云G(I)的特征編碼的歐氏距離Lcd(gt)和Lcd(pred)。而Lcd則是最大化真假點云的特征編碼和對應(yīng)標(biāo)簽的中心C和C距離的歐氏距離來辨別真假樣本。
倒角距離用于度量真值點云PCgt與生成點云G(I)中匹配的各點之間的平均距離,距離越小,說明生成的點云與真實值更相似。為了獲得更佳的生成效果,生成器損失結(jié)合了倒角距離損失和對抗生成損失作為總體的損失函數(shù)。其中倒角距離損失為:
總的判別器、生成器的損失函數(shù)為:
C和C分別是預(yù)測和真實樣本經(jīng)過判別器的中心編碼。訓(xùn)練開始時,將二者都初始化為0。對每個批數(shù)據(jù)計算誤差反向傳播后,更新其值。更新策略為:
在批大小為m的輸入中,如果滿足條件,則更新第i個實例的真實值中心向量Ci。同理更新預(yù)測中心向量Ci。γ是更新的學(xué)習(xí)率,當(dāng)γ相對較大時,中心向量更依賴于當(dāng)前階段學(xué)習(xí)到的樣本,而對先前的樣本存在更小的記憶。通過與中心編碼距離的約束,可以最小化同個實例之間的距離,又與其他容易混淆的樣本保持足夠的區(qū)分度。
本文實驗采用點云數(shù)據(jù)集ShapeNet。包含以下3個類別:飛機、汽車、椅子。在訓(xùn)練集、驗證集、測試集的劃分上參照3D-PSRNet提供的標(biāo)準(zhǔn)。實驗中訓(xùn)練數(shù)據(jù)輸入是每個對象在10個不同角度下的渲染視圖以及對應(yīng)的真實點云模型。
訓(xùn)練時的輸入圖像尺寸縮放為224×244,使用Adam優(yōu)化器。學(xué)習(xí)率為0.0002等超參數(shù)設(shè)置下進行200輪的訓(xùn)練。使用TensorFlow框架完成網(wǎng)絡(luò)模型的搭建。
為了驗證算法的可行性以及進行對比實驗,使用結(jié)構(gòu)較為簡單的3D-PSRNet[9]網(wǎng)絡(luò)的基線模型結(jié)構(gòu)作為生成器部分。在訓(xùn)練的過程中,生成器網(wǎng)絡(luò)和判別器網(wǎng)絡(luò)交替優(yōu)化。生成器的目標(biāo)是最小化G*,以達到生成一個與真實值點集近似的點云,具體為將輸入圖像編碼為一個多維向量,再使用解碼器將該編碼還原成三維點云物體。判別器則是對該生成的點云進一步利用特征提取網(wǎng)絡(luò)得到包含語義信息的編碼與輸入圖像進行對比。該網(wǎng)絡(luò)是一個端到端的網(wǎng)絡(luò),不需要對網(wǎng)絡(luò)中的編碼器進行預(yù)訓(xùn)練。在測試階段,僅使用完成訓(xùn)練的生成器網(wǎng)絡(luò)即可完成從圖像生成點云的任務(wù)。
本文對比了采用對生成點云進行分割的PSGN和3D-PSRNet兩種方法。實驗結(jié)果如表1所示。通過實驗結(jié)果可發(fā)現(xiàn)在基于倒角距離和推土機距離(更小說明更接近真實值點云)的對比下,提出的方法生成的點云有更高的保真度。由圖2可以看出在直觀上生成的點云也接近原圖的信息。
表1 本文的方法與基準(zhǔn)方法在不同評價指標(biāo)上的對比
圖2 從左側(cè)圖像生成的點云的多個視圖
本文提出的方法為從單幅圖像生成三維點云模型的方法引入一個新的思路,通過度量學(xué)習(xí)的方法結(jié)合了圖像編碼網(wǎng)絡(luò)和點云特征提取網(wǎng)絡(luò)的編碼信息,有效利用原始圖像中的語義信息,使生成的點云更符合輸入圖像的表達。下一步工作重點是增強數(shù)據(jù)集,并繼續(xù)探索更高效的度量學(xué)習(xí)模塊網(wǎng)絡(luò)結(jié)構(gòu),提升對復(fù)雜背景下的圖像特征提取能力和點云生成的泛化能力。