胡飛,葉龍,鐘微,張勤
(中國傳媒大學(xué)媒介音視頻教育部重點實驗室 北京 100024)
三維重建是建模中不可或缺的問題。對于三維物體,二維圖像僅是物體部分?jǐn)?shù)據(jù)采樣。因此,在將圖像轉(zhuǎn)換為三維模型時,尤其是當(dāng)我們從一個單一視圖重建三維對象時,對象的細(xì)節(jié)非常容易丟失。在這種情況下,主要的挑戰(zhàn)是使計算焦點更加關(guān)注潛在的細(xì)節(jié)缺失區(qū)域,以便可以更完整地重建三維對象。
手動三維建模需要很高的成本,并且正在被自動重建方法所取代。深度學(xué)習(xí)在圖像領(lǐng)域的發(fā)展是及其成功,而其在三維視覺領(lǐng)域的應(yīng)用則才剛剛開始。隨著大規(guī)模三維數(shù)據(jù)集合,諸如IKEA 3D、PASCAL 3D+[1]、ShapeNet 等數(shù)據(jù)庫的全面建立,已經(jīng)有大量的學(xué)者將研究的目標(biāo)放在的基于深度學(xué)習(xí)的三維視覺領(lǐng)域。
由于神經(jīng)網(wǎng)絡(luò)對輸入和輸出的表示有標(biāo)準(zhǔn)化的要求,因此多邊形網(wǎng)格和隱式曲面的表示并不太容易應(yīng)用到學(xué)習(xí)方法中。盡管體素表示的復(fù)雜性很高,但體素的矩陣表示的性質(zhì)完全滿足標(biāo)準(zhǔn)化的要求。因此,體素表示是基于學(xué)習(xí)的3D重建中的常見表示。當(dāng)然,固定點數(shù)的點云表示也是另一種折衷方法。本文主要研究基于體素表示的方法。
Abhishek Kar[1]等人在2014年提出了PASCAL 3D+的三維數(shù)據(jù)集,通過圖像分割網(wǎng)絡(luò)和視角估計網(wǎng)絡(luò)的結(jié)合,在固定類別的基礎(chǔ)上完成了三維模型的重建。
Andrey Kurenkov[2]等人引入了一個模型字典庫,根據(jù)輸入圖像,在模型字典庫中找去最接近的一個備選模型,將輸入圖像與備選模型一起進(jìn)入網(wǎng)絡(luò),最終完成整個重建過程。
Maxim Tatarchenko等人在[3]中加入了視角信息的編碼,完成了從普通RGB圖像到RGBD圖像的轉(zhuǎn)換,網(wǎng)咯分別接收圖像和視角信息。
Christopher B. Choy等人在[4]中,引入了長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)的思想。作者構(gòu)造了一個3D-LSTM的結(jié)構(gòu),巧妙的在一個網(wǎng)絡(luò)中實現(xiàn)了1個視角及多個視角的三維重建。
Fan H等人[5]則是完成了基于單視角的點云重建,作者首先將問題定性為固定點數(shù)的三維重建,并根據(jù)任務(wù)測試了不同的網(wǎng)路結(jié)構(gòu)和損失函數(shù)。
[6]創(chuàng)造性的完成了端到端的單視角圖像直接生成點線面模型的任務(wù),本文巧妙的利用了圖卷積網(wǎng)絡(luò)的表示方法,網(wǎng)絡(luò)結(jié)構(gòu)如圖1.7所示,并針對任務(wù)構(gòu)建相應(yīng)的損失函數(shù)和評價方法,使得深度學(xué)習(xí)與三維重建的結(jié)合前進(jìn)了一大步。
當(dāng)我們重現(xiàn)現(xiàn)有論文的實驗時,我們發(fā)現(xiàn)輸出模型通常缺乏細(xì)節(jié)信息。我們將問題歸結(jié)為單視圖重建任務(wù)的病態(tài)性和現(xiàn)有網(wǎng)絡(luò)的片面性。而這些細(xì)節(jié)部分可以在相應(yīng)的輸入圖像中找到對應(yīng)的像素點。因此,我們希望通過引入注意力機(jī)制來解決這個問題。
本文整體結(jié)構(gòu)安排如下:第二章介紹注意力機(jī)制和網(wǎng)絡(luò)模型,第三章介紹我們是如何將注意力機(jī)制引入到三維重建模型中,第四章用實驗對比來驗證我們的模型在三維重建中的有效性。
注意力機(jī)制是人工智能領(lǐng)域?qū)ι窠?jīng)科學(xué)研究[7,8]中的視覺模式的模仿。
神經(jīng)科學(xué)的研究[7,8]中發(fā)現(xiàn),許多動物通常只關(guān)注其視覺輸入的特定部分以計算適當(dāng)?shù)姆磻?yīng)。將這個原理遷移到計算機(jī)視覺中,即在相應(yīng)的視覺任務(wù)中,我們所獲得的數(shù)據(jù)在任務(wù)中是冗余的,我們不需要對所有的信息平均話處理,我們只需要選擇與目標(biāo)任務(wù)最相關(guān)的信息。在深度學(xué)習(xí)和人工智能發(fā)展之后,許多研究人員對神經(jīng)網(wǎng)絡(luò)中的注意力機(jī)制進(jìn)行了廣泛的研究[9-12]。
為了解決生成模型的細(xì)節(jié)缺失問題,我們將注意力機(jī)制引入到三維重建中來。本章采用的是軟注意力機(jī)制的方法。我們整體網(wǎng)絡(luò)框架如圖1所示,它由兩個分支完成,上支為三維自動編碼器網(wǎng)絡(luò)(3D Autoencoder,3DAE),輸入為單幅圖像,以編碼器-解碼器的結(jié)構(gòu)生成3D輪廓;下支為注意力網(wǎng)絡(luò)(Attention Network),采用圖像輸入,通過注意力機(jī)制提取細(xì)節(jié)信息,然后解碼5生成上支所缺失的細(xì)節(jié)。最后,我們將兩者結(jié)合生成完整的3D形狀。

圖1 注意力-自編碼三維重建網(wǎng)絡(luò)(AAN)網(wǎng)絡(luò)結(jié)構(gòu)圖
我們將圖1的網(wǎng)絡(luò)稱為注意力-自編碼三維重建網(wǎng)絡(luò)(Attention-Autoencoder Network,AAN)。
自動編碼器是由編碼器和解碼器組成的生成模型。自動編碼器是生成任務(wù)中最常用的模型。本文從任意視圖采樣的二維圖像送到二維圖像編碼器以產(chǎn)生低維特征向量。三維體素解碼器擴(kuò)展圖像特征以生成相應(yīng)的三維體素。
也就是說,我們結(jié)構(gòu)由兩個自動編碼器組合而成,如圖2所示,我們預(yù)訓(xùn)練一個二維圖像的變分自動編碼器以及一個三維模型的變分自動編碼器,選取2D自動編碼器的編碼器部分與3D自動編碼器的解碼器部分相結(jié)合。

圖2 兩個變分自動編碼器的組合過程
令先驗的隱變量為中心各向同性多元高斯,渲染圖像是從某個先驗分布p(I)生成的,真實模型是從某個先驗分布p(V)生成的。假設(shè)我們可以在隱變量空間中推斷出相同的特征:z | I=z | V。這意味著圖像p(z | I)的后驗分布等于體素的后驗分布,p(z | V)。q(z)~N(u,d)是對后驗p(z | I)的變分近似。通過重新參數(shù)化的技巧,q(z)被重寫為q(z)=u + d * N(0,I)。使用編碼器網(wǎng)絡(luò),我們可以學(xué)習(xí)u,d,然后從分布N(0,1)中采樣隨機(jī)變量e。利用3DAE解碼網(wǎng)絡(luò),我們可以從后驗變量z=u + d * e推斷出三維表示。
如果輸入圖像、輸出體素和權(quán)重是固定的,那么在隱變量空間中只有一個固定變量z能生成唯一的輸出。也就是說解碼網(wǎng)絡(luò)推斷的是精確的z,而不是隨機(jī)變量。因此,利用連續(xù)向量(u,d),存在某個向量e,網(wǎng)絡(luò)可以利用該向量e推斷出2D圖像的某個3D表示。這意味著變量(u,d)是圖像和各個體素的共有特征。
因此我們刪除了結(jié)構(gòu)中的采樣過程,如圖3所示,我們的網(wǎng)絡(luò)由兩部分組成:2D卷積神經(jīng)網(wǎng)絡(luò)和3D反卷積神經(jīng)網(wǎng)絡(luò)。

圖3 3DAE的基本網(wǎng)絡(luò)結(jié)構(gòu)
我們的重建網(wǎng)絡(luò)由兩部分組成:圖像編碼器和體素解碼器。在每個全連接層后,放置非線性激活函數(shù)。編碼器將127 * 127的 RGB圖像轉(zhuǎn)換為低維特征,然后將其饋送到變換單元。解碼器然后獲取3D低維特征并將它們變換為最終體素。
第三章的實驗部分會更進(jìn)一步驗證我們的網(wǎng)絡(luò)結(jié)構(gòu)去隨機(jī)變量的合理性問題。
為了解決細(xì)節(jié)缺失的問題,我們在3DAE重建網(wǎng)絡(luò)中增加了注意力分支,以完成三維模型的形狀。我們設(shè)計了一個基于卷積的注意力網(wǎng)絡(luò)(如圖3.13的下半部分所示),以建立體積占用中缺失細(xì)節(jié)與圖像局部特征之間的對應(yīng)關(guān)系。
卷積網(wǎng)絡(luò)可以從2D圖像中提取一組特征向量。提取器產(chǎn)生m維向量A,其每個元素代表圖像的局部區(qū)域。
A={a1,a2,…,am},am
(1)
由于3DAE可以產(chǎn)生粗略的形狀,我們可以獲得無法重建的殘余體素。在卷積注意力網(wǎng)絡(luò)中,反向傳播算法將殘余體素投射回注意力權(quán)重特征向量。映射關(guān)系記錄為I,并且可以從中間層獲得。I是n維向量,并且每個元素表示圖像的這些局部區(qū)域與殘余體素之間的相關(guān)性。這樣它就可以被視為重要加權(quán)特征向量。
I={i1,i2,…,in},in
(2)
總的來說,如圖1的下半部分所示,我們將2D圖像x饋送到注意力網(wǎng)絡(luò)。從兩個子分支(即,將圖像特征提取作為權(quán)重矩陣Wf和重要性加權(quán)提取作為權(quán)重矩陣Ww),當(dāng)m=n時,我們可以得到關(guān)注向量V。V包含不同圖像區(qū)域有助于形狀完成的各種信息。在饋入解碼器Wd之后,V被擴(kuò)展到殘余體素。該過程用以下公式表示,X是全形狀三維模型的分布。
V=Wfx⊙(Wwx)T=A⊙I
(3)
X-x′=Wd·V
(4)
注意力網(wǎng)絡(luò)是AAN的體素補充分支,與3DAE分支共享相同的輸入圖像。它建立了圖像局部特征與缺失邊緣體素之間的映射關(guān)系,并利用這種關(guān)系賦予圖像更重要區(qū)域更高的權(quán)重。通過與3DAE分支相同的解碼架構(gòu),Attention Network可以精確地生成更好的細(xì)節(jié)體素模型。
圖3.16是我們的模型可視化的重建樣例,圖片(b)、(c)兩列能夠清晰的顯示注意力模型在生成模型的過程中所起到的作用。

圖4 重建可視化的樣例。第一排是飛機(jī),第二排是汽車。(a)列是ShapeNet數(shù)據(jù)集中的真實數(shù)據(jù)。(b)和(c)是相同預(yù)測值的不同投影,其中藍(lán)色體素網(wǎng)格由3DAE網(wǎng)絡(luò)生,粉紅色體素網(wǎng)格由注意力網(wǎng)絡(luò)生成
我們的重建網(wǎng)絡(luò)由兩部分組成:圖像編碼器和體素解碼器。在每個全連接層后,放置非線性激活函數(shù)。編碼器將127 * 127的 RGB圖像轉(zhuǎn)換為低維特征,然后將其饋送到變換單元。解碼器然后獲取3D低維特征并將它們變換為最終體素。
損失函數(shù)是影響網(wǎng)絡(luò)收斂的關(guān)鍵因素,在本任務(wù)中將采用組合損失函數(shù)。
由于模型的表示是體素網(wǎng)格,這是一個的二值矩陣,因此體素重建任務(wù)可以看成32768維的邏輯回歸任務(wù)。由于三維體素的稀疏性,重建問題是一個大規(guī)模不均衡分布分類問題。常用處理非均衡數(shù)據(jù)問題的函數(shù)是加權(quán)交叉熵?fù)p失函數(shù):
wSCE=-w*t*log(σ(o))
-(1-t)*log(1-σ(0))
(5)

而交叉熵?fù)p失函數(shù)主要使得預(yù)測分布與目標(biāo)分布之間的距離接近,而我們的三維重建任務(wù)中,除了要保證分布上的一致性,還需要保證具體每一個體素上的一致性。因此,我們對加權(quán)交叉熵?fù)p失函數(shù)加以細(xì)微調(diào)整,增加二階距修正項,表達(dá)式如下:
Loss=-w*t*log(σ(o))-(1-t)*log(1-σ(o))+λ(t-σ(o))2
(6)
其中λ為超參數(shù)。
當(dāng)然在實驗中,我們還測試了其他幾種用于非均衡數(shù)據(jù)的損失函數(shù),包括disc function、focal loss function等損失函數(shù),其中disc function的函數(shù)為:
(7)
Focal Loss Funciton表示如下:
(8)
為了避免兩個超參數(shù)的大量調(diào)參,我們在實驗中采用了如下的簡化形式:

(9)
其中K為超參數(shù),我們在雛形網(wǎng)絡(luò)上,我們分別在帶隨機(jī)變量和不帶隨機(jī)變量的網(wǎng)絡(luò)中測試了以上各種損失函數(shù)。詳細(xì)的實驗結(jié)果可以參見第三章。
在本章節(jié),我們將給出具體的實驗參數(shù)和實驗結(jié)果,并定性定量的分析了我們的實驗結(jié)果。
本文采用兩個數(shù)據(jù)集,ShapeNet和Pascal 3D+。
ShapeNet是一個數(shù)據(jù)量相當(dāng)龐大的三維模型數(shù)據(jù)集,是由普林斯頓大學(xué),斯坦福大學(xué)和TTIC的研究人員所收集整理。該數(shù)據(jù)集為開放數(shù)據(jù)集部分開放。為世界各地的研究人員提供這些數(shù)據(jù),以便在計算機(jī)圖形學(xué),計算機(jī)視覺,機(jī)器人學(xué)和其他相關(guān)學(xué)科方面進(jìn)行研究。該數(shù)據(jù)集包含兩個子集,ShapeNetCore和ShapeNetSem。
ShapeNetCore是完整ShapeNet數(shù)據(jù)集的子集,具有單個清潔三維模型和手動驗證的類別和對齊注釋。它涵蓋55個常見對象類別,約有51,300個獨特的三維模型。
ShapeNetSem是一個更小,更密集注釋的子集,由12,000個模型組成,分布在更廣泛的270個類別中。除了手動驗證的類別標(biāo)簽外,這些模型還使用實際維度進(jìn)行注釋,在類別級別估算其材料成分,并估算其總體積和重量。
本文所測試的數(shù)據(jù)集,對ShapeNetCore篩選掉部分較少*類別后的數(shù)據(jù)集,其中包含13個常見類別中的約40,000個三維模型。后文中,我們統(tǒng)一稱該數(shù)據(jù)集為ShapeNet。
PASCAL 3D +于2014年由斯坦福大學(xué)計算視覺和幾何實驗室收集整理,這是一個用于3D物體檢測和姿態(tài)估計的數(shù)據(jù)集。該數(shù)據(jù)集包含PASCAL VOC 2012的12個對象類別中的12,093個3D CAD模型,這些類別均由ShapeNetCore涵蓋。我們將這些CAD模型統(tǒng)一轉(zhuǎn)換為我們所需要體素格式。我們將數(shù)據(jù)集分成訓(xùn)練和測試集,其中1/2用于訓(xùn)練,剩下的1/2用于測試。
所有體素統(tǒng)一采用32×32×32的分辨率,每一個32×32×32的體素模型在網(wǎng)絡(luò)計算中,對應(yīng)一個32×32×32的矩陣,占用體素塊的對應(yīng)矩陣值為1,否者為0。
我們在所有實驗中使用ADAM算法回傳神經(jīng)網(wǎng)絡(luò)。預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率為0.001,正式訓(xùn)練時的神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率為0.0001。
我們在實驗測試階段準(zhǔn)確率采用的是IoU(intersection-over-union)。該指標(biāo)用于衡量特定數(shù)據(jù)集上對象檢測器的準(zhǔn)確性。常見的對象檢測如PASCAL VOC任務(wù)評價指標(biāo)就可以用IoU來衡量。

為了驗證損失函數(shù)的有效性,我們分別在添加隨機(jī)變量和不添加隨機(jī)變量的網(wǎng)絡(luò)中分別實驗了章節(jié)3.2中的各個損失函數(shù),網(wǎng)絡(luò)結(jié)構(gòu)如圖5、6所示。

圖5 3DAE帶隨機(jī)變量的網(wǎng)絡(luò)結(jié)構(gòu)

圖6 3DAE不帶隨機(jī)變量的網(wǎng)絡(luò)結(jié)構(gòu)
我們在ShapeNet上完成對應(yīng)的不同實驗,實驗結(jié)果如表1所示,通過在不同損失函數(shù)的模型測試結(jié)果,我們發(fā)現(xiàn)所有結(jié)果均為不帶隨機(jī)變量的模型結(jié)果要優(yōu)于帶隨機(jī)變量的模型結(jié)果。而該測試結(jié)果也從側(cè)面應(yīng)正了我們損失函數(shù)的有效性。

表1 網(wǎng)絡(luò)中關(guān)于網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)的測試
我們首先在ShapeNet上測試我們的模型,我們將我們的結(jié)果與現(xiàn)有的深度學(xué)習(xí)三維重建方法3D-R2N2[4],PSGN[5]的結(jié)果進(jìn)行比較。我們的注意力-自編碼三維重建網(wǎng)絡(luò)(AAN)和比較方法的13個類別的IoU準(zhǔn)確度如表2所示。
其中3D-R2N2是從單視圖或多視圖圖像重建三維模型。表2中的結(jié)果顯示,單視圖重建結(jié)果中,我們在大多數(shù)類別中實現(xiàn)了更好的性能。特別是,在13個類別中的8個中,我們的結(jié)果甚至比用于5個視圖的3D-R2N2重建更好。盡管PSGN在某些類別中實現(xiàn)了更高的IoU準(zhǔn)確度,但生成的三維模型由固定數(shù)量的1024個點表示,不同于我們的注意力-自編碼三維重建網(wǎng)絡(luò)(AAN)具有32×32×32的維度占用問題,這意味著評估的比較是不公平的,并且PSGN中更高的IoU準(zhǔn)確度與模型看起來更不具有正相關(guān)性。3DAN的類別平均IoU為0.627,而AAN的IoU為 0.640,這也顯示了注意力機(jī)制的有效性。

表2 各個算法在ShapeNet數(shù)據(jù)集上的三維重建結(jié)果IoU測試結(jié)果

續(xù)表
我們的實驗結(jié)果的體素網(wǎng)格可視化顯示在圖7中,我們將AAN的重建結(jié)果與3D-R2N2和3DAE進(jìn)行定性分析比較(因為PSGN預(yù)測了3D點云,在視覺上是不可比性的)。第一列是三維對象的二維單視角視圖,第二列是ShapeNet數(shù)據(jù)集中的體素模型真實值。其他列則是來自單視覺圖像的網(wǎng)絡(luò)重建實驗結(jié)果,實線部分是真實值的邊界線,因此我們可以明確地看到區(qū)別。前五個重建樣本顯示我們AAN彌補了缺乏的細(xì)節(jié),特別是在第四排的椅子腿等纖細(xì)結(jié)構(gòu)中,這樣我們就能得到更精確的結(jié)果。最后兩行顯示了重建物體依然存在空洞,這是現(xiàn)有技術(shù)方法的局限性。

圖7 各算法模型在ShapeNet上的輸出可視化
為了驗證網(wǎng)絡(luò)的泛化性,我們在數(shù)據(jù)集Pascal 3D+,同樣對我們的網(wǎng)絡(luò)進(jìn)行了測試,測試的平均IoU結(jié)果如表3所示。圖8是我們的AAN網(wǎng)絡(luò)的部分預(yù)測結(jié)果展示。
表3中的平均IoU結(jié)果顯示,我們的模型是要優(yōu)于另外兩種現(xiàn)有模型的。

表3 已有各個算法在Pascal 3D+上平均IoU

圖8 模型在Pascal 3D+上的數(shù)據(jù)可視化,其中第一列是圖像,第二列是真實值,第三列是預(yù)測模型
本文針對三維重建中的細(xì)節(jié)缺失問題提出了一種基于注意力機(jī)制的完成三維重建的方法。模型由兩個部分完成,一個部分以單幅圖像為輸入,以自動編碼器的結(jié)構(gòu)完成三維雛形構(gòu)建;另一個部分同樣采用圖像輸入,通過注意力機(jī)制提取細(xì)節(jié)信息,生成雛形中所缺失的細(xì)節(jié)。最后,我們將兩者合并生成更為完整的三維形狀。值得注意的是,在自動編碼器結(jié)構(gòu)部分去掉隨機(jī)變量后,該部分的網(wǎng)絡(luò)結(jié)構(gòu)本質(zhì)上已經(jīng)變成了一個基本自動編碼器的結(jié)構(gòu),而不是初始化的變分自動編碼器,兩個變分自動編碼器僅僅是為了給我們雛形構(gòu)建部分的網(wǎng)絡(luò)提供一個較好的初始值。