胡茂林,李金龍,胡 濤
(中國科學技術大學 計算機科學與技術學院,安徽 合肥230027)
三維重建是指給定一張或多張RGB 圖像的情況下重建該RGB 圖像中物體的三維形狀。三維重建已經被探索了幾十年,它是計算機視覺領域一個基礎性任務之一,擁有大量應用場景,例如,機器人導航、虛擬現實、計算機輔助設計、無人駕駛、醫學圖像處理等領域。三維重建是一個非常復雜的過程,從二維圖像恢復三維形狀,恢復缺失的信息往往具有歧義性。為克服三維形狀的歧義性,三維重建方法通常需要結合圖像信息和先驗形狀知識。
隨著大型數據集的出現,數據驅動的方法一定程度上克服歧義性問題,數據集提供三維形狀先驗知識。三維重建方法利用CNN 在大型數據集進行預測物體三維形狀取得了巨大的成功,預測的三維形狀可以被歸結為三類:體素網格表示[1]、點云表示[2]、網格表示[3]。近年來,大量基于深度學習的方法被提出來進行三維重建,例如,3D-R2N2[4]、Pix2Vox、PSGN[2]和AttSets[5]。CHOY C B[4]率先提出使用長短期記憶網絡(Long Short Term Memory,LSTM)[6]來融合不同視角圖像的信息,一步一步重建三維物體的形狀。PSGN 使用點云表示三維形狀進行單視圖三維重建。Pix2Vox++直接使用CNN 融合不同視角圖像信息來進行三維重建。AttSets 使用一個注意力聚合模塊去預測一個權重矩陣作為輸入特征的注意力得分。
基于深度學習的方法圍繞如何提升重建的三維物體質量問題,提出的解決方案可以概括為三類:(1)為了應對三維形狀的變化,增加訓練網絡的參數數量,以提供更大的先驗信息記憶空間,保留更多的先驗信息;(2)提供更多的線索,增加不同視角的圖像;(3)減少三維形狀變化范圍,每一個類別的三維形狀,單獨訓練一個模型。Pix2Vox 的實驗在多個類別下進行模型參數實驗對比,得出增加參數數量可以提升三維物體重建質量。TULSIANI S[7]在每個類別上訓練一個模型來提升三維物體重建質量。然而,在深度學習中已經證明,隨著參數數量增加到一定程度,模型的性能并不能一直提高[6]。三維重建中增加不同視角圖片數量在一些特定情況下并不可行。
本文研究給定一張RGB 圖像情況下,重建三維物體的形狀,即單視圖三維重建。本文基于距離正則化提出了三維殘三維重建網絡(3D Residual Net work,ResVox)和設計特殊的殘差塊結構(3D ResBlock)。為了提高重建三維物體的質量,本文提出了軟性距離規則化損失,利用真實的三維形狀來監督生成的三維形狀和三維形狀周圍空白部分。在三維殘差塊中設計了基于圖像特征的批量歸一化(Feature based Batch Normalization,F-BN)。總的來說,ResVox 有以下創新點:
(1)針對提升三維物體質量,提出了距離規則化損失,通過約束生成的三維形狀,既考慮三維形狀部分,也考慮了三維形狀周圍的空白部分;
(2)針對方法模型參數,設計了三維殘差塊和F-BN,F-BN 使用圖像特征在深層網絡中指導三維形狀恢復;
(3)本文在ShapeNet 數據集進行實驗,與其他方法進行對比,證明了該方法在三維重建上的有效性。
給定一張RGB 圖片,單視圖三維重建任務是恢復該RGB 圖像中物體的三維形狀。形式上,三維重建過程的表示成一個映射:

其中I是RGB 圖像集合,S是三維形狀集合,θ 表示一組參數。三維重建可以簡化為學習一個預測函數:

可以預測RGB 圖像中物體的三維形狀S^與其真實的三維形狀的接近程度。
基于圖像特征的批量歸一化是條件歸一化的一種,它使用圖像特征作為條件,用來計算和產生參 數γ 和β,γ用哈達瑪乘(Hadamard Multiplication)乘以上一層的輸出和加上β,可以用式(1)表示:


圖1 基于圖像特征的批量歸一化
該模型為三維殘差網絡,模型整體結構如圖2所示,它包含兩個模塊:圖像編碼器和三維殘差生成器。在ResVox 中給定一張圖片,首先通過圖像編碼器提取RGB 圖像的語義信息作為三維殘差生成器的輸入。三維殘差生成器從該語義信息中一步一步恢復三維形狀。每個三維殘差塊中包含二個基于圖像特征的批量歸一化層。

圖2 單視圖三維重建網絡
圖像編碼器將為三維殘差生成器計算一組圖像語義特征,提供給三維殘差生成恢復物體的三維形狀。如圖3 所示,圖像編碼器用來從大小為224×224×3 的RGB圖像提取大小為512×28×28 的圖像語義特征。圖像編碼器采用修改過后的預訓練模型VGG16[8]來固定VGG16 的參數。圖像編碼器由11 層卷積神經網絡層組成,每層卷積神經網絡后面跟隨一個批量歸一化層和非線性激活層。圖像編碼器的前9 層卷積神經網絡和VGG16 前9 層卷積神經網絡一樣,并且使用預訓練好的VGG 的參數。圖像編碼器中使用的均為二維卷積神經網絡,后面的3 層屬于可訓練二維卷積神經網絡層,卷積核大小分別為33、33和33,輸出通道大小分別為512、512 和256。第十層和第十一層二維卷積層之間直接使用最大池化(Max Pool)進行下采樣操作。

圖3 圖像編碼器結構
三維殘差解碼器負責將圖像的語義特征的信息轉換為三維形狀。三維殘差解碼器由五個Res-Block塊組成,ResBlock 結構如圖4 所示。在三維殘差生成器使用的是三維卷積神經網絡,卷積核大小都是33。通過控制每層ResBlock 的通道大小,來控制模型參數的數量,ResVox 的第一層殘差塊的輸入通道為2 048,輸出通道為512;第二層殘差塊輸入通道為512,輸出通道為256;第三次殘差塊輸入通道為256,輸出通道為64;第四層殘差塊輸入通道為64,輸出通道為32;第五層殘差塊輸入通道為32,輸出通道為1,并使用sigmoid 函數對輸出體素值約束到0 到1 之間。

圖4 三維殘差塊結構
ResVox 包含兩個損失:二值交叉熵損失函數和軟距離規則化損失損失函數。二值交叉熵用來度量預測的三維體素和真實的三維體素之間的距離。二值交叉熵損失如式(2)所示,二值交叉熵損失越小,表示重建三維形狀與其對應的真實三維形狀的距離越小。ResVox 重建的三維形狀每個體素(x,y,z)服從伯努利分布[1-p^x,y,z,p^x,y,z],p^x,y,z是預測體素在該位置被三維形狀占用的概率,該體素對應的真實體素px,y,z∈{0,1}。

為了提高重建三維物體的質量,提出了軟距離正則化損失,如式(3)所示。m+是在三維體素空間中三維物體對應部分的軟間隔,m-是三維體素空間中三維形狀周圍空白對應的軟間隔,λ 是超參,代表對三維形狀周圍空白的體素關注度。

模型ResVox 的整體損失是二值交叉熵損失加上距離正則化損失,如式(4)所示:

其中η 表示正則化損失的作用,N是批量大小。
本文中三維形狀使用三維體素表示,屬于圖像的像素在三維空間的一般化。三維形狀在一個規則的體素網格R3,使用二進制表示,0 表示空白,即沒有占用該體素網格;1 表示非空白,該體素被三維形狀占用。
為了驗證ResVox 的有效性,在大型數據集Shape-Net[9]的一個子集合上面進行實驗。它包含13 個大類別的三維形狀,總共43 783 個三維模型,表1 展示了各個類別數據的詳細信息。把數據集分成訓練集和測試集合,訓練集占4/5,測試集占1/5。訓練集中再劃分訓練集的2/5 作為驗證集合,剩下的作為訓練數據。在整個實驗中把這兩個數據集稱為ShapeNet 測試集和ShapeNet 訓練集。

表1 ShapeNet 數據集
所有三維形狀用單通道三維體素表示,它的大小被設置為323。圖像編碼器和三維殘差生成器網絡同時訓練。正則化損失中λ 被設置為0.4,整體損失中η 被設置為1。模型ResVox 的所有可訓練參數初始化使用Xavier 方法[10],采用Adam[11]優化算法,其中β1等于0.9,β2等于0.999,所有的激活函數采用ReLU 函數[12]。訓練批次大小為128,學習率初始設為0.001,在第150 次和第200 次,學習率衰減一半。采用PyTorch-1.7 實現該模型,并在一個Nvidia RTX 3 090 顯卡上運行。訓練模型總共600 次。
為了評價模型生成的三維形狀的質量,采用IoU 作為相似度評價。IoU 是測量預測到的三維形狀與其對應真實的三維形狀的交集比上它們的并集。IoU 值大于等于0,小于等于1。將模型概率化的三維形狀輸出二值化。IoU 的計算公式如式(5)所示。

式中,I(·)是一個指示函數(Indicator Function),t是二值化預測三維形狀的閾值,,y,z是體素在(x,y,z)位置的預測值,Vx,y,z是體素在(x,y,z)位置的真實值。IoU 值越高,標志重建的三維物體質量越高。
由于統計模型參數數量需要原作者的代碼,選取3D-R2N2、OGN[13]、Pix2Vox 進行時參數數量對比。如表2 所示,該模型比之前最好的模型Pix2Vox 減少了約4 千萬的參數。

表2 模型參數對比
為了評價方法重建效果,在ShapeNet 數據集上與幾個方法進行重建質量和視覺效果對比實驗,重建質量使用IoU 評價指標進行評價。這些方法包括3D -R2N2、OGN、DRC[7]、PSGN、Matryoshka[14]、Atlas-Net[15]、Pixel2Mesh[16]、OccNet[17]、AttSets[5]和Pix2Vox。如表3 所示,ResVox 在13 個類別的10 個類別IoU中評價勝出,整個數據集取得最好的重建效果,重建效果圖對比如圖5 所示。
對距離正則化損失和基于特征的批量歸一化進行消融實驗,如表4 所示。共進行四組對比實驗,Y 表示使用該損失進行訓練或者使用該模塊,N 表示不使用該損失進行訓練或者不適用該模塊。ResVox-和ResVox 網絡結構一樣,ResVox-未使用距離正則化損失進行訓練,實驗結果顯示IoU 僅僅平均提升0.08,使用正則化損失IoU 平均提升了0.15。ResVox+是ResVox 刪除F-BN 模塊的一個變體模型,即ResVox+的網絡結構其模塊和ResVox 相同。ResVox*代表去掉F-BN。實驗結果如表3 所示,F-BN對三維重建質量提升有部分幫助,結合距離正則化損失效果更好。

表3 在ShapeNet 測試數據集上各個類別IoU 對比(最好的結果用加粗強調)

圖5 單視圖三維重在ShapeNet 測試集上部分示例模型對比

表4 消融實驗配置
本文提出基于距離正則化的單視圖三維重建,針對使用圖像特征在恢復三維形狀,設計了殘差生成器網絡和提出了距離正則化損失來約束三維形狀。此外,在殘差生成器恢復三維形狀過程中,使用基于圖像特征的批量歸一化,在每個殘差塊中融合圖像信息。消融實驗結果顯示了正則化損失和F-BN 的有效性。同時,在網絡參數的對比中,使用的參數比之前最好的方法要降低將近40%。綜上,在ShapeNet 數據集上,該方法在IoU 評價指標上取得了良好的結果。