胡茂林,李金龍,胡 濤
(中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 合肥230027)
三維重建是指給定一張或多張RGB 圖像的情況下重建該RGB 圖像中物體的三維形狀。三維重建已經(jīng)被探索了幾十年,它是計(jì)算機(jī)視覺領(lǐng)域一個(gè)基礎(chǔ)性任務(wù)之一,擁有大量應(yīng)用場景,例如,機(jī)器人導(dǎo)航、虛擬現(xiàn)實(shí)、計(jì)算機(jī)輔助設(shè)計(jì)、無人駕駛、醫(yī)學(xué)圖像處理等領(lǐng)域。三維重建是一個(gè)非常復(fù)雜的過程,從二維圖像恢復(fù)三維形狀,恢復(fù)缺失的信息往往具有歧義性。為克服三維形狀的歧義性,三維重建方法通常需要結(jié)合圖像信息和先驗(yàn)形狀知識(shí)。
隨著大型數(shù)據(jù)集的出現(xiàn),數(shù)據(jù)驅(qū)動(dòng)的方法一定程度上克服歧義性問題,數(shù)據(jù)集提供三維形狀先驗(yàn)知識(shí)。三維重建方法利用CNN 在大型數(shù)據(jù)集進(jìn)行預(yù)測物體三維形狀取得了巨大的成功,預(yù)測的三維形狀可以被歸結(jié)為三類:體素網(wǎng)格表示[1]、點(diǎn)云表示[2]、網(wǎng)格表示[3]。近年來,大量基于深度學(xué)習(xí)的方法被提出來進(jìn)行三維重建,例如,3D-R2N2[4]、Pix2Vox、PSGN[2]和AttSets[5]。CHOY C B[4]率先提出使用長短期記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)[6]來融合不同視角圖像的信息,一步一步重建三維物體的形狀。PSGN 使用點(diǎn)云表示三維形狀進(jìn)行單視圖三維重建。Pix2Vox++直接使用CNN 融合不同視角圖像信息來進(jìn)行三維重建。AttSets 使用一個(gè)注意力聚合模塊去預(yù)測一個(gè)權(quán)重矩陣作為輸入特征的注意力得分。
基于深度學(xué)習(xí)的方法圍繞如何提升重建的三維物體質(zhì)量問題,提出的解決方案可以概括為三類:(1)為了應(yīng)對(duì)三維形狀的變化,增加訓(xùn)練網(wǎng)絡(luò)的參數(shù)數(shù)量,以提供更大的先驗(yàn)信息記憶空間,保留更多的先驗(yàn)信息;(2)提供更多的線索,增加不同視角的圖像;(3)減少三維形狀變化范圍,每一個(gè)類別的三維形狀,單獨(dú)訓(xùn)練一個(gè)模型。Pix2Vox 的實(shí)驗(yàn)在多個(gè)類別下進(jìn)行模型參數(shù)實(shí)驗(yàn)對(duì)比,得出增加參數(shù)數(shù)量可以提升三維物體重建質(zhì)量。TULSIANI S[7]在每個(gè)類別上訓(xùn)練一個(gè)模型來提升三維物體重建質(zhì)量。然而,在深度學(xué)習(xí)中已經(jīng)證明,隨著參數(shù)數(shù)量增加到一定程度,模型的性能并不能一直提高[6]。三維重建中增加不同視角圖片數(shù)量在一些特定情況下并不可行。
本文研究給定一張RGB 圖像情況下,重建三維物體的形狀,即單視圖三維重建。本文基于距離正則化提出了三維殘三維重建網(wǎng)絡(luò)(3D Residual Net work,ResVox)和設(shè)計(jì)特殊的殘差塊結(jié)構(gòu)(3D ResBlock)。為了提高重建三維物體的質(zhì)量,本文提出了軟性距離規(guī)則化損失,利用真實(shí)的三維形狀來監(jiān)督生成的三維形狀和三維形狀周圍空白部分。在三維殘差塊中設(shè)計(jì)了基于圖像特征的批量歸一化(Feature based Batch Normalization,F(xiàn)-BN)。總的來說,ResVox 有以下創(chuàng)新點(diǎn):
(1)針對(duì)提升三維物體質(zhì)量,提出了距離規(guī)則化損失,通過約束生成的三維形狀,既考慮三維形狀部分,也考慮了三維形狀周圍的空白部分;
(2)針對(duì)方法模型參數(shù),設(shè)計(jì)了三維殘差塊和F-BN,F(xiàn)-BN 使用圖像特征在深層網(wǎng)絡(luò)中指導(dǎo)三維形狀恢復(fù);
(3)本文在ShapeNet 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),與其他方法進(jìn)行對(duì)比,證明了該方法在三維重建上的有效性。
給定一張RGB 圖片,單視圖三維重建任務(wù)是恢復(fù)該RGB 圖像中物體的三維形狀。形式上,三維重建過程的表示成一個(gè)映射:
其中I是RGB 圖像集合,S是三維形狀集合,θ 表示一組參數(shù)。三維重建可以簡化為學(xué)習(xí)一個(gè)預(yù)測函數(shù):
可以預(yù)測RGB 圖像中物體的三維形狀S^與其真實(shí)的三維形狀的接近程度。
基于圖像特征的批量歸一化是條件歸一化的一種,它使用圖像特征作為條件,用來計(jì)算和產(chǎn)生參 數(shù)γ 和β,γ用哈達(dá)瑪乘(Hadamard Multiplication)乘以上一層的輸出和加上β,可以用式(1)表示:
圖1 基于圖像特征的批量歸一化
該模型為三維殘差網(wǎng)絡(luò),模型整體結(jié)構(gòu)如圖2所示,它包含兩個(gè)模塊:圖像編碼器和三維殘差生成器。在ResVox 中給定一張圖片,首先通過圖像編碼器提取RGB 圖像的語義信息作為三維殘差生成器的輸入。三維殘差生成器從該語義信息中一步一步恢復(fù)三維形狀。每個(gè)三維殘差塊中包含二個(gè)基于圖像特征的批量歸一化層。
圖2 單視圖三維重建網(wǎng)絡(luò)
圖像編碼器將為三維殘差生成器計(jì)算一組圖像語義特征,提供給三維殘差生成恢復(fù)物體的三維形狀。如圖3 所示,圖像編碼器用來從大小為224×224×3 的RGB圖像提取大小為512×28×28 的圖像語義特征。圖像編碼器采用修改過后的預(yù)訓(xùn)練模型VGG16[8]來固定VGG16 的參數(shù)。圖像編碼器由11 層卷積神經(jīng)網(wǎng)絡(luò)層組成,每層卷積神經(jīng)網(wǎng)絡(luò)后面跟隨一個(gè)批量歸一化層和非線性激活層。圖像編碼器的前9 層卷積神經(jīng)網(wǎng)絡(luò)和VGG16 前9 層卷積神經(jīng)網(wǎng)絡(luò)一樣,并且使用預(yù)訓(xùn)練好的VGG 的參數(shù)。圖像編碼器中使用的均為二維卷積神經(jīng)網(wǎng)絡(luò),后面的3 層屬于可訓(xùn)練二維卷積神經(jīng)網(wǎng)絡(luò)層,卷積核大小分別為33、33和33,輸出通道大小分別為512、512 和256。第十層和第十一層二維卷積層之間直接使用最大池化(Max Pool)進(jìn)行下采樣操作。
圖3 圖像編碼器結(jié)構(gòu)
三維殘差解碼器負(fù)責(zé)將圖像的語義特征的信息轉(zhuǎn)換為三維形狀。三維殘差解碼器由五個(gè)Res-Block塊組成,ResBlock 結(jié)構(gòu)如圖4 所示。在三維殘差生成器使用的是三維卷積神經(jīng)網(wǎng)絡(luò),卷積核大小都是33。通過控制每層ResBlock 的通道大小,來控制模型參數(shù)的數(shù)量,ResVox 的第一層殘差塊的輸入通道為2 048,輸出通道為512;第二層殘差塊輸入通道為512,輸出通道為256;第三次殘差塊輸入通道為256,輸出通道為64;第四層殘差塊輸入通道為64,輸出通道為32;第五層殘差塊輸入通道為32,輸出通道為1,并使用sigmoid 函數(shù)對(duì)輸出體素值約束到0 到1 之間。
圖4 三維殘差塊結(jié)構(gòu)
ResVox 包含兩個(gè)損失:二值交叉熵?fù)p失函數(shù)和軟距離規(guī)則化損失損失函數(shù)。二值交叉熵用來度量預(yù)測的三維體素和真實(shí)的三維體素之間的距離。二值交叉熵?fù)p失如式(2)所示,二值交叉熵?fù)p失越小,表示重建三維形狀與其對(duì)應(yīng)的真實(shí)三維形狀的距離越小。ResVox 重建的三維形狀每個(gè)體素(x,y,z)服從伯努利分布[1-p^x,y,z,p^x,y,z],p^x,y,z是預(yù)測體素在該位置被三維形狀占用的概率,該體素對(duì)應(yīng)的真實(shí)體素px,y,z∈{0,1}。
為了提高重建三維物體的質(zhì)量,提出了軟距離正則化損失,如式(3)所示。m+是在三維體素空間中三維物體對(duì)應(yīng)部分的軟間隔,m-是三維體素空間中三維形狀周圍空白對(duì)應(yīng)的軟間隔,λ 是超參,代表對(duì)三維形狀周圍空白的體素關(guān)注度。
模型ResVox 的整體損失是二值交叉熵?fù)p失加上距離正則化損失,如式(4)所示:
其中η 表示正則化損失的作用,N是批量大小。
本文中三維形狀使用三維體素表示,屬于圖像的像素在三維空間的一般化。三維形狀在一個(gè)規(guī)則的體素網(wǎng)格R3,使用二進(jìn)制表示,0 表示空白,即沒有占用該體素網(wǎng)格;1 表示非空白,該體素被三維形狀占用。
為了驗(yàn)證ResVox 的有效性,在大型數(shù)據(jù)集Shape-Net[9]的一個(gè)子集合上面進(jìn)行實(shí)驗(yàn)。它包含13 個(gè)大類別的三維形狀,總共43 783 個(gè)三維模型,表1 展示了各個(gè)類別數(shù)據(jù)的詳細(xì)信息。把數(shù)據(jù)集分成訓(xùn)練集和測試集合,訓(xùn)練集占4/5,測試集占1/5。訓(xùn)練集中再劃分訓(xùn)練集的2/5 作為驗(yàn)證集合,剩下的作為訓(xùn)練數(shù)據(jù)。在整個(gè)實(shí)驗(yàn)中把這兩個(gè)數(shù)據(jù)集稱為ShapeNet 測試集和ShapeNet 訓(xùn)練集。
表1 ShapeNet 數(shù)據(jù)集
所有三維形狀用單通道三維體素表示,它的大小被設(shè)置為323。圖像編碼器和三維殘差生成器網(wǎng)絡(luò)同時(shí)訓(xùn)練。正則化損失中λ 被設(shè)置為0.4,整體損失中η 被設(shè)置為1。模型ResVox 的所有可訓(xùn)練參數(shù)初始化使用Xavier 方法[10],采用Adam[11]優(yōu)化算法,其中β1等于0.9,β2等于0.999,所有的激活函數(shù)采用ReLU 函數(shù)[12]。訓(xùn)練批次大小為128,學(xué)習(xí)率初始設(shè)為0.001,在第150 次和第200 次,學(xué)習(xí)率衰減一半。采用PyTorch-1.7 實(shí)現(xiàn)該模型,并在一個(gè)Nvidia RTX 3 090 顯卡上運(yùn)行。訓(xùn)練模型總共600 次。
為了評(píng)價(jià)模型生成的三維形狀的質(zhì)量,采用IoU 作為相似度評(píng)價(jià)。IoU 是測量預(yù)測到的三維形狀與其對(duì)應(yīng)真實(shí)的三維形狀的交集比上它們的并集。IoU 值大于等于0,小于等于1。將模型概率化的三維形狀輸出二值化。IoU 的計(jì)算公式如式(5)所示。
式中,I(·)是一個(gè)指示函數(shù)(Indicator Function),t是二值化預(yù)測三維形狀的閾值,,y,z是體素在(x,y,z)位置的預(yù)測值,Vx,y,z是體素在(x,y,z)位置的真實(shí)值。IoU 值越高,標(biāo)志重建的三維物體質(zhì)量越高。
由于統(tǒng)計(jì)模型參數(shù)數(shù)量需要原作者的代碼,選取3D-R2N2、OGN[13]、Pix2Vox 進(jìn)行時(shí)參數(shù)數(shù)量對(duì)比。如表2 所示,該模型比之前最好的模型Pix2Vox 減少了約4 千萬的參數(shù)。
表2 模型參數(shù)對(duì)比
為了評(píng)價(jià)方法重建效果,在ShapeNet 數(shù)據(jù)集上與幾個(gè)方法進(jìn)行重建質(zhì)量和視覺效果對(duì)比實(shí)驗(yàn),重建質(zhì)量使用IoU 評(píng)價(jià)指標(biāo)進(jìn)行評(píng)價(jià)。這些方法包括3D -R2N2、OGN、DRC[7]、PSGN、Matryoshka[14]、Atlas-Net[15]、Pixel2Mesh[16]、OccNet[17]、AttSets[5]和Pix2Vox。如表3 所示,ResVox 在13 個(gè)類別的10 個(gè)類別IoU中評(píng)價(jià)勝出,整個(gè)數(shù)據(jù)集取得最好的重建效果,重建效果圖對(duì)比如圖5 所示。
對(duì)距離正則化損失和基于特征的批量歸一化進(jìn)行消融實(shí)驗(yàn),如表4 所示。共進(jìn)行四組對(duì)比實(shí)驗(yàn),Y 表示使用該損失進(jìn)行訓(xùn)練或者使用該模塊,N 表示不使用該損失進(jìn)行訓(xùn)練或者不適用該模塊。ResVox-和ResVox 網(wǎng)絡(luò)結(jié)構(gòu)一樣,ResVox-未使用距離正則化損失進(jìn)行訓(xùn)練,實(shí)驗(yàn)結(jié)果顯示IoU 僅僅平均提升0.08,使用正則化損失IoU 平均提升了0.15。ResVox+是ResVox 刪除F-BN 模塊的一個(gè)變體模型,即ResVox+的網(wǎng)絡(luò)結(jié)構(gòu)其模塊和ResVox 相同。ResVox*代表去掉F-BN。實(shí)驗(yàn)結(jié)果如表3 所示,F(xiàn)-BN對(duì)三維重建質(zhì)量提升有部分幫助,結(jié)合距離正則化損失效果更好。
表3 在ShapeNet 測試數(shù)據(jù)集上各個(gè)類別IoU 對(duì)比(最好的結(jié)果用加粗強(qiáng)調(diào))
圖5 單視圖三維重在ShapeNet 測試集上部分示例模型對(duì)比
表4 消融實(shí)驗(yàn)配置
本文提出基于距離正則化的單視圖三維重建,針對(duì)使用圖像特征在恢復(fù)三維形狀,設(shè)計(jì)了殘差生成器網(wǎng)絡(luò)和提出了距離正則化損失來約束三維形狀。此外,在殘差生成器恢復(fù)三維形狀過程中,使用基于圖像特征的批量歸一化,在每個(gè)殘差塊中融合圖像信息。消融實(shí)驗(yàn)結(jié)果顯示了正則化損失和F-BN 的有效性。同時(shí),在網(wǎng)絡(luò)參數(shù)的對(duì)比中,使用的參數(shù)比之前最好的方法要降低將近40%。綜上,在ShapeNet 數(shù)據(jù)集上,該方法在IoU 評(píng)價(jià)指標(biāo)上取得了良好的結(jié)果。