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