譚海軍,芮勤甫
(長江師范學(xué)院 信息中心,重慶 408100)
三維模型作為記錄物體信息的一種方式,有著比二維圖片更為豐富的立體信息,可以更真實(shí)地呈現(xiàn)物體在空間中的位置和形態(tài),如何借助計算機(jī)技術(shù)準(zhǔn)確還原出目標(biāo)的三維結(jié)構(gòu)是當(dāng)前的研究熱點(diǎn)之一[1-2]。傳統(tǒng)的三維目標(biāo)生成是通過三維掃描儀采集目標(biāo)的點(diǎn)云數(shù)據(jù),然后運(yùn)用算法生成網(wǎng)格模型,最常用的是多邊形化(Polygonization),最終呈現(xiàn)出目標(biāo)的三維結(jié)構(gòu)。傳統(tǒng)方法需要專業(yè)設(shè)備和復(fù)雜的數(shù)據(jù)處理流程,成本較高,不適合進(jìn)行實(shí)時三維建模。隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)表現(xiàn)出比傳統(tǒng)模型更為強(qiáng)大的特征提取和建模能力,使得許多研究人員將目光聚集在基于深度學(xué)習(xí)的三維重建算法上,這類方法可以準(zhǔn)確地提取目標(biāo)的三維信息,并自動生成相應(yīng)的三維模型,極大地提高了三維模型的制作效率。
本文提出了基于GAN的三維目標(biāo)生成算法,在生成器中設(shè)計使用3D卷積和Transformer[3]來捕捉目標(biāo)三維結(jié)構(gòu)的局部細(xì)節(jié)和全局信息,以生成高質(zhì)量的三維圖像。判別器使用一系列3D卷積對輸入圖像進(jìn)行下采樣,最終得到判別該輸入圖像屬于生成圖像還是真實(shí)圖像的類別概率。通過對生成器和判別器的交替訓(xùn)練,可以使生成器逐漸擬合到目標(biāo)樣本的真實(shí)分布。
隨著近年來GAN的提出,其高效和高質(zhì)量的樣本生成模式迅速得到了研究人員的青睞。GAN主要由一個生成器和一個判別器組成。生成器的作用是學(xué)習(xí)輸入數(shù)據(jù)的分布,以生成與訓(xùn)練數(shù)據(jù)相似的新樣本,判別器則負(fù)責(zé)對數(shù)據(jù)進(jìn)行分類,即給定一個數(shù)據(jù)點(diǎn),判別器會輸出這個數(shù)據(jù)點(diǎn)屬于真實(shí)的數(shù)據(jù)還是生成器所生成的數(shù)據(jù),兩者通過在相互的博弈訓(xùn)練中提升了各自的表達(dá)能力[4]。在工業(yè)領(lǐng)域中常常使用GAN進(jìn)行三維建模,例如Wu等[5]第一次提出由二維擴(kuò)展到三維生成的3D GAN,該模型可以從單一類別中生成目標(biāo)物體形狀的高質(zhì)量圖像。Pan等[6]使用多視圖的2D圖像重建三維模型,取得了非常好的性能。
對于三維圖像生成,傳統(tǒng)的方法大多是通過堆疊3D卷積構(gòu)建的深度網(wǎng)絡(luò)來實(shí)現(xiàn)。但是基于卷積的方法缺乏交互全局信息的能力,使得生成的三維圖像邊緣常常出現(xiàn)偽影或缺失。由于3D模型與2D模型相比包含了更豐富的信息,因此需要算法從高維的特征空間中挖掘出與目標(biāo)整體結(jié)構(gòu)相關(guān)的語義信息,對算法的全局感知能力提出了考驗(yàn)。因此,本文提出了一種融合3D卷積和Transformer的生成對抗網(wǎng)絡(luò),利用卷積的局部性和Transformer長距離建模的優(yōu)點(diǎn),網(wǎng)絡(luò)能更好地學(xué)習(xí)到目標(biāo)的局部細(xì)節(jié)信息和整體結(jié)構(gòu)信息,從而生成更為真實(shí)的三維圖像。
ModelNet40數(shù)據(jù)集是一個用于三維形狀識別和分類的點(diǎn)云數(shù)據(jù)集,包含了生活中40種常見物體的3D模型,比如飛機(jī)、桌椅和汽車等。由于每一份數(shù)據(jù)都采用點(diǎn)云形式保存,因此無法直接放入神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,需要先對其進(jìn)行體素化,將點(diǎn)云格式轉(zhuǎn)換為體素格式。優(yōu)勢在于體素化的三維模型在計算機(jī)中的存儲形式與二維圖像極其相似,這使得原本用于二維圖像的卷積、池化和反卷積等神經(jīng)網(wǎng)絡(luò)操作都能通過將三維替換為二維進(jìn)行三維計算。其次,考慮到原始數(shù)據(jù)的分辨率較高,對于自注意力運(yùn)算而言具有很大的計算負(fù)擔(dān),因此本文設(shè)置每份數(shù)據(jù)的體素分辨率為32×32×32,該分辨率下的數(shù)據(jù)既保留了足夠的原始內(nèi)容又能顯著降低網(wǎng)絡(luò)的訓(xùn)練成本。
網(wǎng)絡(luò)的主體架構(gòu)由生成器和判別器兩個網(wǎng)絡(luò)組成,如圖1所示。首先從符合標(biāo)準(zhǔn)正態(tài)分布的概率空間中進(jìn)行隨機(jī)采樣,然后將得到的噪聲數(shù)據(jù)輸入生成器。生成器是GAN模型的主要組成部分,其任務(wù)是生成與真實(shí)數(shù)據(jù)具有相似特征的樣本,并欺騙判別器認(rèn)為生成的數(shù)據(jù)與真實(shí)數(shù)據(jù)相同。判別器的任務(wù)是將輸入的樣本分類為真實(shí)數(shù)據(jù)或虛假數(shù)據(jù),其結(jié)構(gòu)類似于一個二分類器。GAN的訓(xùn)練過程就是不斷迭代優(yōu)化生成器和判別器的過程,其核心思想在于通過兩個模型相互對抗的方式不斷提升三維目標(biāo)圖像生成的質(zhì)量。在每個訓(xùn)練迭代中,生成器產(chǎn)生一些虛假圖像,判別器給出關(guān)于這些圖像是否為真實(shí)數(shù)據(jù)的反饋。根據(jù)反饋結(jié)果,對兩個網(wǎng)絡(luò)的參數(shù)進(jìn)行調(diào)整,最終達(dá)到某種平衡。
圖1 基于GAN的三維目標(biāo)生成架構(gòu)
生成器如圖2所示。首先,輸入經(jīng)過隨機(jī)采樣得到的一維隨機(jī)噪聲向量Z,在本實(shí)驗(yàn)中長度設(shè)置為64,然后,通過上采樣層將其逐步映射到高維特征空間中,其次,經(jīng)過一個1×1×1的卷積層后輸出目標(biāo)的三維圖像。每一個上采樣層由一個卷積塊和一個自注意力塊組成,卷積塊中使用的是卷積核為3×3×3,步長為2×2×2的轉(zhuǎn)置卷積,每經(jīng)過一個卷積塊圖像分辨率增大兩倍,相應(yīng)地通道數(shù)減少為原來的一半,最終通道數(shù)縮減為1,生成的圖像分辨率為32×32×32。除最后一層外,每一個卷積塊均有批處理層(BatchNorm,BN)和整流線性單元(Rectified Linear Unit,ReLU)。BN層用于將輸入數(shù)據(jù)歸一化到均值為0、方差為1的分布上,可以加快網(wǎng)絡(luò)的收斂速度,同時提高訓(xùn)練的穩(wěn)定性,激活函數(shù)ReLU用于增強(qiáng)網(wǎng)絡(luò)的非線性以提升網(wǎng)絡(luò)的表達(dá)能力。
圖2 生成器
在生成器的self-attention block中加入了Transformer。Transformer的核心就是自注意力機(jī)制的運(yùn)算。鑒于Transformer具備全局感受野的優(yōu)勢,本文在每一個卷積塊后面跟上了一個自注意力塊,用于捕獲高維特征之間的相關(guān)性。具體做法是先將經(jīng)過卷積運(yùn)算后的特征使用全連接層進(jìn)行線性映射,得到3個映射矩陣Q、K和V,然后計算多頭自注意力。由于原始的自注意力操作具有O(N2)(N代表體素總個數(shù))的時間復(fù)雜度,對于三維數(shù)據(jù)來說開銷比較大,因此,本文遵循Wang等[7]的做法對矩陣進(jìn)行簡化,先用不同卷積核大小的均值池化對K和V矩陣進(jìn)行降維,然后將不同池化后的特征在通道維度上拼接,再計算多頭自注意力,這樣時間復(fù)雜度降到了O(S*N)(S?N),在實(shí)驗(yàn)中每一層的池化率都設(shè)置為1、2、4。在經(jīng)過空間縮減注意力運(yùn)算后,最后再經(jīng)過兩個全連接層恢復(fù)輸入數(shù)據(jù)的原始形狀。
生成器的最后一層是1×1×1的卷積再加上Sigmoid激活函數(shù)。1×1×1的卷積用于細(xì)化特征同時調(diào)整通道數(shù)為1,Sigmoid函數(shù)用于將特征值映射到[0,1]的區(qū)間。經(jīng)過整個流程后,生成器根據(jù)隨機(jī)噪聲Z最終生成大小為32×32×32的三維目標(biāo)圖像。
判別器和生成器結(jié)構(gòu)對稱,包含4個卷積層和最后的全連接層,但去掉了Transformer塊。判別器接收輸入大小為32×32×32的樣本,然后經(jīng)過一系列的卷積層進(jìn)行下采樣,卷積核大小設(shè)置為3×3×3,步長為2×2×2,再經(jīng)過全連接層和Sigmoid激活函數(shù)后輸出一個概率值,該值表示判別器判別輸入樣本是真實(shí)目標(biāo)圖像還是生成目標(biāo)圖像的概率。
模型的損失函數(shù)由兩部分組成,分別是重建損失Lrec和分類交叉熵?fù)p失Lce(見公式1)。其中,Lrec用于計算生成器生成的三維目標(biāo)圖像和真實(shí)目標(biāo)圖像逐像素點(diǎn)的L1距離,而Lce則是計算判別器判斷該圖像屬于生成圖像還是真實(shí)圖像的二分類損失。
Lcls=Lrec+Lce
(1)
本實(shí)驗(yàn)設(shè)置Batch大小為32,隨機(jī)噪聲Z長度為64,生成器的學(xué)習(xí)率初始化為0.002 5,判別器的學(xué)習(xí)率初始化為0.000 1,最大運(yùn)行500個epoch后停止訓(xùn)練。
本文使用ModelNet40數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn),每間隔10輪對生成器生成的最后8張圖像進(jìn)行采樣,并將結(jié)果輸出進(jìn)行可視化。圖3和圖4分別顯示了針對椅子這個目標(biāo),算法在迭代10輪和500輪后生成對應(yīng)三維結(jié)構(gòu)圖的可視化。從圖中可以看出,在訓(xùn)練的前期,由于采樣的是隨機(jī)噪聲,生成器不能很好地生成目標(biāo)的三維圖像,而隨著訓(xùn)練次數(shù)的增加,網(wǎng)絡(luò)能從隨機(jī)的概率空間中逐漸擬合到目標(biāo)真實(shí)的數(shù)據(jù)分布。通過生成器和判別器的聯(lián)合訓(xùn)練,網(wǎng)絡(luò)在運(yùn)行500輪后生成的三維結(jié)構(gòu)圖較為準(zhǔn)確,整體輪廓也逐漸清晰,表明了算法的有效性。
圖3 迭代10輪后的結(jié)果
圖4 迭代500輪后的結(jié)果
本文提出了一種基于生成對抗網(wǎng)絡(luò)的三維目標(biāo)生成算法,結(jié)合了3D卷積和Transformer進(jìn)行建模。卷積可以捕獲三維結(jié)構(gòu)的局部細(xì)節(jié)信息,而Transformer可以對三維模型的整體結(jié)構(gòu)進(jìn)行感知,使網(wǎng)絡(luò)關(guān)注到更重要的內(nèi)容。通過結(jié)合二者的優(yōu)點(diǎn)可以生成高質(zhì)量的三維圖像,在試驗(yàn)中也取得了比較好的性能,驗(yàn)證了算法的有效性。但是仍然存在著一些問題,首先,本文使用的生成對抗網(wǎng)絡(luò)和目前主流的CycleGAN、StyleGAN等復(fù)雜的圖像生成模型相比,結(jié)構(gòu)較簡單,這限制了模型學(xué)習(xí)能力的上限,需要在考慮小參數(shù)量的情況下進(jìn)一步提升模型的學(xué)習(xí)能力。其次,在GAN中如何更有機(jī)地結(jié)合3D卷積和Transformer兩種不同運(yùn)算模式的優(yōu)點(diǎn),也值得后續(xù)進(jìn)一步的研究。