張景異,侯昌邑,劉韻婷,葛忠文
(沈陽理工大學自動化與電氣工程學院,沈陽 110159)
圖像的三維重建是計算機視覺的主要研究內(nèi)容之一[1],通過單幅或多幅圖像重建出物體或場景的三維結(jié)構(gòu),可用于醫(yī)學圖像處理以及虛擬現(xiàn)實等領(lǐng)域[2]。 由于單幅圖像信息量不足,基于單幅圖像的物體三維重建頗具挑戰(zhàn)性,傳統(tǒng)方法是使用真實的三維結(jié)構(gòu)學習從二維到三維的映射,如Choy 等[3]提出的3D-R2N2 網(wǎng)絡(luò),在編碼器與解碼器之間通過長短期記憶神經(jīng)網(wǎng)絡(luò)進行連接,將二維圖像與其對應的體素模型建立映射關(guān)系,可以接收任意角度的單個或多個圖像進行三維重建,但由于其二維圖像映射成三維體素的計算較復雜,為防止內(nèi)存占用過多,得到的輸出圖像分辨率僅為 32 × 32 × 3,三維重建效果并不理想。
不同于體素形式的點云由易于幾何變換的離散空間點構(gòu)成,也常被用來表示三維結(jié)構(gòu),F(xiàn)an等[4]提出的PointOutNet 網(wǎng)絡(luò)結(jié)構(gòu)開創(chuàng)了用點云做單幅圖三維重建的先例,其不僅設(shè)計了新穎有效的體系結(jié)構(gòu)、損失函數(shù)和學習范式,還利用條件形狀采樣器預測三維點云,通過實驗證明了模型預測結(jié)果的交并比(IOU)等指標在多個物體類別表現(xiàn)上均超過了3D-R2N2 網(wǎng)絡(luò),重建效果顯著,但PointOutNet 網(wǎng)絡(luò)結(jié)構(gòu)以稀疏點云呈現(xiàn)最終結(jié)果,無法很好地重現(xiàn)三維形狀的表面細節(jié)。 Wang等[5]提出了Pixel2Mesh 網(wǎng)絡(luò),其可從單張彩色圖片直接生成三維網(wǎng)格,從輸入圖像中逐步提取特征,作為初始三維形狀的橢球體根據(jù)提取的特征不斷形變,生成最終的幾何形狀。 莊昱峰等[6]在Pixel2Mesh 網(wǎng)絡(luò)的框架上,使用改進的DenseNet替換原特征提取網(wǎng)絡(luò)部分,沿用圖神經(jīng)網(wǎng)絡(luò)生成網(wǎng)格的方式,但效果欠佳。 Wen 等[7]提出了Pixel2Mesh ++網(wǎng)絡(luò),受多視圖重建方法啟發(fā),模型在每個網(wǎng)格頂點周圍搜索最佳位置進行頂點位置變形,可生成更準確的表面細節(jié),但相比于易于學習和生成的點云形式[8],直接作用于三維結(jié)構(gòu)使得網(wǎng)絡(luò)訓練周期更長。
針對以上問題,多數(shù)研究者均直接改善重建網(wǎng)絡(luò)的生成部分,包括對三維卷積進行改進、利用2.5D 草圖對三維結(jié)構(gòu)預測等,而針對特征提取網(wǎng)絡(luò)進行改善的研究不多,且效果不顯著[6]。 本文以特征提取部分為重點,提出一種高效的三維重建網(wǎng)絡(luò)。 利用殘差思想設(shè)計殘差單元以提高網(wǎng)絡(luò)的特征提取能力,在殘差單元中加入通道注意力層,使網(wǎng)絡(luò)可以學習到不同通道特征的相關(guān)性,進一步提高網(wǎng)絡(luò)對有效特征的關(guān)注,將殘差單元嵌入卷積網(wǎng)絡(luò)中,構(gòu)成整個層疊結(jié)構(gòu);經(jīng)過層疊結(jié)構(gòu)提取特征,采用多解碼器并行的方式處理特征,使用二維卷積運算預測二維投影,通過三維幾何推理組合成密集點云,并引入偽渲染器近似渲染預測點云的新投影,新投影聯(lián)合真實二維投影進行監(jiān)督學習,逐步優(yōu)化點云的預測效果;經(jīng)過逐層的預訓練后,再進行端到端的微調(diào),同時加入梯度優(yōu)化模塊,對網(wǎng)絡(luò)反向傳播的梯度加上閾值限定,使網(wǎng)絡(luò)更加穩(wěn)定。
本文提出的網(wǎng)絡(luò)總結(jié)構(gòu)如圖1 所示。 單幅彩色三通道(RGB)圖像輸入特征提取網(wǎng)絡(luò),通過設(shè)計的層疊結(jié)構(gòu)提高特征提取能力,將豐富的特征映射到潛在空間中;特征從潛在空間進入解碼器中,N個解碼器并行工作,通過二維卷積生成N個預測的重建物體二維投影,分別對應N個不同視點,通過三維坐標轉(zhuǎn)換后融合成密集點云;對于預測的密集點云,利用偽渲染器渲染新的二維投影,通過與真實投影進行監(jiān)督學習,逐步提高三維點云的重建效果。
圖1 網(wǎng)絡(luò)總結(jié)構(gòu)
單幅圖進行三維重建的難點之一是如何提取足夠的特征信息用來重建物體[9],對于重建物體細節(jié)部分的把控和處理與特征提取效果密切相關(guān)。 因此,本文重點研究特征提取網(wǎng)絡(luò),將通道注意力層融合到本文設(shè)計的殘差單元內(nèi),再嵌入卷積網(wǎng)絡(luò)中,以多個“卷積層+殘差單元”的形式構(gòu)成層疊結(jié)構(gòu)。 本文特征提取網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。 利用殘差單元加深網(wǎng)絡(luò)深度,提高特征提取能力,使網(wǎng)絡(luò)關(guān)注到更多圖像中重建物體的表面細節(jié);利用通道注意力層權(quán)衡不同通道特征的重要程度,進一步提高網(wǎng)絡(luò)對有效特征的關(guān)注。
圖2 特征提取網(wǎng)絡(luò)結(jié)構(gòu)
1.1.1 殘差單元
深層卷積網(wǎng)絡(luò)能夠捕獲更加豐富的特征,但加深網(wǎng)絡(luò)容易出現(xiàn)梯度消失或網(wǎng)絡(luò)退化的問題,因此本文利用殘差網(wǎng)絡(luò)(ResNet)[10]的思想設(shè)計了殘差單元,避免出現(xiàn)上述問題,同時通過加深網(wǎng)絡(luò)豐富提取到的特征。 Lin 等[11]將殘差塊用于網(wǎng)絡(luò)的解碼器部分,增加了點云生成網(wǎng)絡(luò)深度,使三維重建效果略有提高,本文則將設(shè)計的殘差單元用于編碼器網(wǎng)絡(luò)中,更側(cè)重于提高網(wǎng)絡(luò)對于圖像特征信息的提取能力。
殘差單元包含兩個卷積層和一個通道注意力層,可簡化表示為
式中:am和bm分別表示第m個殘差單元的輸入和輸出;f為通道注意力函數(shù),表示對卷積層的輸出進行各通道的權(quán)重分配;pm為中間變量;F為兩個卷積層簡化后的殘差函數(shù);Wm為卷積層的權(quán)重矩陣。 基于式(1)和式(2),可求得損失反向到達輸入am的梯度為
1.1.2 通道注意力層
提取到豐富的特征后,還需對所提取到的特征根據(jù)相關(guān)性進行區(qū)分,對更有用的特征加以關(guān)注,對用處較小的特征則適當降低其重要程度,提高特征的利用效率。 為此本文根據(jù)壓縮和激勵網(wǎng)絡(luò)(SENet)[12]設(shè)計了一個通道注意力(SE)層,將其嵌入到特征提取網(wǎng)絡(luò)的殘差單元中,從通道層面對所提取的特征進行處理。
通道注意力層結(jié)構(gòu)如圖3 所示。 首先通過全局平均池化對輸入的長度為H、寬度為W、通道數(shù)為C的特征圖進行壓縮操作,將同一通道上的所有特征編碼為一個1 ×1 ×C的全局特征;然后采用連續(xù)的兩個全連接層,第一個全連接層降維(降維因子為r),而后經(jīng)ReLU 函數(shù)激活,第二個全連接層恢復維度,擬合通道間復雜的相關(guān)性;最后通過Sigmoid 函數(shù)獲得歸一化的權(quán)重,將得到的各通道權(quán)重與原特征圖相乘,得到最終的特征圖。
圖3 通道注意力層結(jié)構(gòu)
對于正常的卷積操作,默認對輸入特征的所有通道直接進行融合,本文設(shè)計的殘差單元則利用兩個卷積層,通過擴大感受野增加特征信息的提取,而使特征維度保持不變。 加入的通道注意力層通過關(guān)注通道之間的關(guān)系,使網(wǎng)絡(luò)可以自動學習到不同通道特征的重要程度,使特征提取的效率進一步提高。
基于Hafiz 等[13]對單編碼器多解碼器結(jié)構(gòu)的研究,多個解碼器并行在單幅圖三維重建中效果更好。 本文通過N個解碼器并行的方式處理編碼器(特征提取網(wǎng)絡(luò))生成的特征,N個解碼器分別對應于N個不同視點,在訓練時不共享權(quán)重,并行方式能夠提高網(wǎng)絡(luò)效率,生成效果更好的點云。
解碼器結(jié)構(gòu)如圖4 所示,解碼器的輸入是來自編碼器的1 ×1 ×512 特征向量,輸出是N個視點的四通道圖像。 預測點云的三維坐標可由圖像三個通道各像素點處的像素值表示,即Xi=(xi,yi,zi),二元掩膜由單通道圖像表示,四通道圖像可看作圖像坐標與二元掩膜的合成,再通過N個視點的協(xié)同作用即可融合為三維密集點云。 給出N個視點的三維變換矩陣(Rn,tn)(n= 1,2,…,N),則每個視點下的圖像坐標Xi可通過公式轉(zhuǎn)化為易于點云融合的標準點云坐標Pi,表達式為
圖4 解碼器結(jié)構(gòu)
式中K為預定義的相機固有矩陣。 式(4)確定了圖像坐標系與標準點云坐標系下融合點云之間的關(guān)系,因此直接通過二維卷積運算就可以預測三維物體的幾何結(jié)構(gòu)。
由編碼器傳來的特征先逐步通過3 個線性層,而后經(jīng)過5 個反卷積層(3 ×3 卷積核,步長為1),在解碼器的末尾添加一個額外的卷積層(1 ×1卷積核,步長為1)用來促進像素的多樣化[14]。 與編碼器類似,除最后的卷積層外,每個卷積層后均進行批標準化處理,并使用ReLU 函數(shù)進行激活。
為使用已有的三維CAD 模型監(jiān)督生成點云,傳統(tǒng)方法是利用在三維空間上度量點云和真實CAD 模型之間距離的指標(如倒角距離[4])進行損失計算和優(yōu)化,但該度量指標通常不易計算,尤其對于密集點云,計算成本很高。 因此,本文引入偽渲染器,即一種近似真實渲染的可微模塊,通過式(4)的逆運算將標準點云坐標Pi轉(zhuǎn)換為不同視點對應的圖像坐標X′i,再使用偽渲染器得到不同視點下新的深度圖像Z′,利用得到的深度圖像和生成的二元掩膜進行較好的監(jiān)督學習。
為獲得像素化的深度圖像,需要將投影點的坐標進行離散化,從而可能導致多個點在投影時“碰撞”到同一像素上,偽渲染器可通過提高投影分辨率緩解這種碰撞效應。 其具體過程為:將圖像坐標對應的各三維點投影到以U因子進行上采樣的目標圖像上,從而減少二維坐標的量化誤差以及碰撞發(fā)生的概率;再通過最大池化操作,將圖像降回到原始分辨率,同時在每個像素位置保持最小深度值;通過采用近似的渲染操作保持反向傳播時的可微性和并行性,以偽渲染器渲染出的新深度圖像和二元掩膜計算損失。 總損失L為二元掩膜損失和深度損失的組合,表示為
式中:Lmask為二元掩膜損失;Ldepth為深度損失;λ為加權(quán)因子。Ldepth由L1 范數(shù)損失函數(shù)計算,Lmask由交叉熵損失函數(shù)計算,計算式分別為
式中:Mn和Zn分別表示第n個視點的二元掩膜和深度圖像的真實值為第n個視點的二元掩膜和深度圖像的預測值。
解碼器預測的三維點通過幾何推理組合生成密集點云[15]送入偽渲染器,從新視點生成深度圖像,配合二元掩膜共同與真實值計算損失,通過監(jiān)督學習逐步提高網(wǎng)絡(luò)性能。
2.1.1 數(shù)據(jù)集
ShapeNet[16]數(shù)據(jù)庫為大型三維模型存儲庫,包含多種語義類別的三維模型,共300 多萬個已經(jīng)標注的模型,其中22 萬個模型被劃分為3 135個類別,均以三維 CAD 形式表示。 對于每個CAD 模型,在隨機視角下預渲染100 對128 ×128的深度圖像和二元掩膜,作為計算損失函數(shù)的真實值。 本文網(wǎng)絡(luò)的輸入圖像是固定高度和從24個不同方位角預渲染的對象。
2.1.2 實驗環(huán)境
硬件環(huán)境:顯卡NVIDIA GeForce RTX 2080 Ti,CPU 6 × Xeon E5-2678 v3,顯存11 G,內(nèi)存62 G。
軟件環(huán)境:Ubuntu18. 04,Python3. 5,Tensor-Flow1.13.0,CUDA10.0。
2.1.3 實驗過程
網(wǎng)絡(luò)訓練分為兩個階段:首先進行預訓練,編碼器從單幅圖像提取特征,將特征輸入到多個解碼器中,多個解碼器從多個視點預測二維投影,與真實投影對比并計算損失值,通過多次迭代使預測投影逐漸接近真實投影;然后為微調(diào)階段,通過將多視點預測的二維投影進行坐標轉(zhuǎn)換融合成三維點云,對該點云利用偽渲染器生成新投影,聯(lián)合真實二維投影進行監(jiān)督學習,通過多次迭代對整個網(wǎng)絡(luò)作進一步優(yōu)化。 訓練完成后生成最終密集點云,計算與真實點云的平均三維歐幾里得距離(平均3D 歐氏距離)并生成評價指標。
實驗中批次大小設(shè)置為32,降維因子r=4,上采樣因子U=5,加權(quán)因子λ=1.0。 預訓練階段學習率設(shè)置為0.001,迭代次數(shù)為20 萬次,耗時20 h;微調(diào)階段學習率設(shè)置為0.000 01,迭代次數(shù)為10 萬次,耗時28 h。
2.1.4 評價指標
本文使用預測點云與真實點云之間的平均3D 歐氏距離作為評價指標。 真實點云S由在物體CAD 模型表面均勻生成的10 萬個點構(gòu)成,將預測點云中每個點與真實點云S中各點Pj之間的距離取最小值,以其作為預測點云與真實點云相同位置點的距離,用ξi表示,定義式為
對式(8)計算得到的各點最小距離取平均值,即為預測點云與真實點云的平均3D 歐氏距離。 平均3D 歐氏距離計算是雙向的,正向和反向計算結(jié)果分別代表三維重建效果的不同質(zhì)量指標,正向計算以“Pred.→GT”表示,代表所測得的三維形狀與真實三維形狀的相似性,反向計算以“GT→Pred.”表示,代表所測得三維形狀的點云表面覆蓋率。
使用單編碼器和2、4、8 個解碼器并行進行平均3D 歐氏距離測量,并與文獻[11]的單編碼器單解碼器網(wǎng)絡(luò)和文獻[13]的單編碼器多解碼器網(wǎng)絡(luò)進行對比,結(jié)果如表1 所示。
表1 多解碼器并行對比
由表1 可見,本文改進后的網(wǎng)絡(luò)整體效果優(yōu)于其他網(wǎng)絡(luò),且8 個解碼器并行的效果明顯更好,故后續(xù)實驗采用單編碼器八解碼器網(wǎng)絡(luò)。
利用ShapeNet 數(shù)據(jù)庫的椅子類別進行預訓練,其由 6 778 個 CAD 模型組成。 圖 5 為文獻[13]與本文的單編碼器八解碼器網(wǎng)絡(luò)預訓練時的損失值對比。
圖5 不同網(wǎng)絡(luò)預訓練損失值對比
由圖5 可明顯看出,本文網(wǎng)絡(luò)的預訓練效率更高。 層疊結(jié)構(gòu)設(shè)計使得特征提取效果更好,其中通道注意力層為不同的通道分配適宜的權(quán)重,使提取的特征得到高效利用,故在同樣的網(wǎng)絡(luò)迭代次數(shù)下,本文網(wǎng)絡(luò)的預訓練不僅收斂速度明顯加快,而且損失值也明顯降低。
盡管首先通過預訓練階段對網(wǎng)絡(luò)進行了逐層訓練,但在微調(diào)階段仍會出現(xiàn)梯度爆炸,導致網(wǎng)絡(luò)模型無法正常學習,計算的損失值變?yōu)镹aN。 本文通過增加梯度優(yōu)化模塊,優(yōu)化網(wǎng)絡(luò)訓練中梯度反向傳播過程,對原Adam 優(yōu)化器反向傳播時更新的梯度設(shè)定閾值,將梯度限制在固定的范圍內(nèi),使得模型能夠正常學習。 加入梯度優(yōu)化模塊前后微調(diào)階段的損失值對比如圖6 所示。
圖6 加入梯度優(yōu)化模塊前后微調(diào)階段的損失值對比
由圖6 可見,加入梯度優(yōu)化模塊后,梯度爆炸情況消失,網(wǎng)絡(luò)恢復正常訓練,且微調(diào)損失能夠正常計算,未出現(xiàn)NaN 值。
網(wǎng)絡(luò)訓練結(jié)束后,使用測試集進行測試,并與其他單幅圖三維重建方法進行比較,在同樣的評價指標下進行評估,分析本文提出網(wǎng)絡(luò)的重建效果,評估結(jié)果如表2 所示。 表2 中文獻[17]提出的網(wǎng)絡(luò)通過混合嵌入學習隱式的三維表示,文獻[18]的透視變換網(wǎng)絡(luò)(PTN)通過最小化投影誤差學習預測體積數(shù)據(jù),表2 中用于對比的網(wǎng)絡(luò)還包括文獻[18]提出的兩種PTN 變體及基線網(wǎng)絡(luò)3D ConvNet、文獻[11]提出的單編碼器單解碼器網(wǎng)絡(luò)、文獻[13]提出的單編碼器八解碼器網(wǎng)絡(luò)。使用文獻[18]提供的數(shù)據(jù)集,按80%訓練集和20%測試集的比例進行分割。
表2 評估結(jié)果
由表2 可知,與其他方法對比,無論是三維形狀的相似性還是點云的表面覆蓋率,本文所提出網(wǎng)絡(luò)的評估指標都更小。 用于比較的幾個網(wǎng)絡(luò)中文獻[13]的評估指標最小,與文獻[13]相比,本文方法在形狀相似性上提高了12.3%,在點云表面覆蓋率上提高了6.4%,尤其在形狀相似性上更占優(yōu)勢。
為更好地展現(xiàn)點云的重建效果,利用Matlab軟件對網(wǎng)絡(luò)生成的點云進行可視化,將本文網(wǎng)絡(luò)生成點云通過不同視角與文獻[13]及真實值對比重建效果,結(jié)果如圖7 所示。
圖7 點云重建效果對比
由圖7 可以看出,相比文獻[13]提出的方法,本文提出的網(wǎng)絡(luò)在各類細節(jié)部分處理更好,包括空洞、欄桿及扶手等,也證明了層疊結(jié)構(gòu)設(shè)計在特征提取上的良好效果,對整體結(jié)構(gòu)重建的同時更能捕獲細小的特征信息,展現(xiàn)了更優(yōu)異的重建效果。
針對單幅圖三維重建形狀相似性不足、點云表面覆蓋率低等問題,提出了一種高效的單幅圖生成密集點云的三維重建網(wǎng)絡(luò)。 網(wǎng)絡(luò)使用ShapeNet 數(shù)據(jù)集進行訓練和測試,結(jié)果表明:多解碼器并行能夠提升物體重建效果,其中單編碼器八解碼器網(wǎng)絡(luò)效果最優(yōu);微調(diào)損失值對比顯示,梯度優(yōu)化模塊可加強網(wǎng)絡(luò)穩(wěn)定性;與其他單幅圖三維重建網(wǎng)絡(luò)的對比實驗可見,本文網(wǎng)絡(luò)生成的密集點云在形狀相似性與點云表面覆蓋率上均更優(yōu)秀;點云可視化結(jié)果證明,設(shè)計的層疊結(jié)構(gòu)有效提高了網(wǎng)絡(luò)對強相關(guān)性細小特征的關(guān)注,增強了對物體細節(jié)部分重建的能力。