摘要:隨著深度學(xué)習(xí)的發(fā)展,計算機視覺和自然語言處理任務(wù)所使用的方法越來越相似,使用Transformer來完成視覺任務(wù)成為了一個新的研究方向。如何從單個圖像中恢復(fù)物體的三維信息是計算機視覺深入研究的一個系統(tǒng)問題。然而,傳統(tǒng)的三維重建算法在缺乏物體表面紋理的情況下重建效果較差。因此基于前人的研究,提出一種使用Transformer結(jié)構(gòu)的多視圖三維重建方法,經(jīng)過實驗測試后,證明Transformer應(yīng)用于三維重建的有效性與可行性,并且有較好的重建效果。
關(guān)鍵詞:深度學(xué)習(xí);三維重建;Transformer;多視圖
一、 前言
多視圖三維重建是一種從攝像機拍攝的一組多視點圖像中重建出三維模型的方法,是幾十年來計算機視覺領(lǐng)域廣泛研究的核心問題。傳統(tǒng)方法使用人工設(shè)計的相似性度量來計算密集對應(yīng)和恢復(fù)3D點。雖然這些方法在圖像信息較強的場景下取得了很好的結(jié)果,但他們都有共同的局限性。例如,當(dāng)場景是低紋理時,使得密集匹配難以實現(xiàn),從而導(dǎo)致不完全重建。
近年來卷積神經(jīng)網(wǎng)絡(luò)在二維圖像任務(wù)上的成功,激發(fā)了人們探索三維世界感知建模的興趣。越來越多的研究人員開始使用卷積神經(jīng)網(wǎng)絡(luò)來進行三維重建的研究。而目前最為廣范的方法是yao等人[1]提出的MVSNet為每個視圖使用卷積神經(jīng)網(wǎng)絡(luò)來進行特征提取,然后通過可微的單應(yīng)性變換來將這些特征構(gòu)造成代價體,然后再使用3D CNN網(wǎng)絡(luò)來對代價體進行處理輸出深度圖。
隨著現(xiàn)在Transformer模型在自然語言處理(NLP)領(lǐng)域發(fā)揮出了極強的作用[2],目前,越來越多的研究人員將Transformer模型的有效建模能力應(yīng)用到計算機視覺中。2020年,研究人員首次在圖像分類任務(wù)上使用了Transformer,并且獲得了比卷積神經(jīng)網(wǎng)絡(luò)更好的效果。此后,不少研究都開始嘗試將Transformer融入到不同的計算機視覺任務(wù)中。目前,Transformer已經(jīng)在三大圖像問題上——分類、檢測和分割[3],都取得了比之前卷積神經(jīng)網(wǎng)絡(luò)更好的效果。
因此,本文的貢獻總結(jié)如下:①在特征提取網(wǎng)絡(luò)使用深度可分離卷積的基礎(chǔ)上嵌入動態(tài)濾波器卷積,以加強模型的特征提取能力和減少模型的參數(shù)量。②在代價體正則化網(wǎng)絡(luò)使用Transformer模型作為編碼器,解決回歸出的深度圖不平滑的現(xiàn)象并證明應(yīng)用Transformer在3D圖像任務(wù)上的可行性。
二、 相關(guān)工作
(一) 三維重建算法介紹
目前三維重建所采用的方法也非常多元化,我們根據(jù)原理將這些方法分為兩類:①基于傳統(tǒng)多視圖幾何的三維重建算法。②基于深度學(xué)習(xí)的三維重建算法。
傳統(tǒng)的三維重建算法根據(jù)其他傳感器是否向目標(biāo)照射光源可分為主動和被動兩種。主動式,指傳感器主動向被測物體發(fā)送光信號,然后根據(jù)反射回的信號來恢復(fù)出物體在三維空間中的結(jié)構(gòu),常見的有:結(jié)構(gòu)光、TOF 激光飛行時間和三角測距法[4]。被動式是直接根據(jù)物體的RGB圖像,并分析計算幾何原理獲得物體的三維信息。
在基于學(xué)習(xí)的三維重建人工智能算法研究中,多視圖三維重建(MVS)研究尤為廣泛。多視圖三維重建(MVS)的目標(biāo)是用一系列標(biāo)定后的圖像恢復(fù)密集的三維表現(xiàn)。
(二) MVSNet介紹與基本思想
MVSNet將一張參考圖像和多個源圖作為輸入作為輸入來預(yù)測參考圖像的深度圖,而不是整個3D場景。
MVSNet的第一步是將N張輸入圖片送入特征提取網(wǎng)絡(luò)獲得深度特征圖,這些特征圖用于后續(xù)的稠密匹配。2D卷積神經(jīng)網(wǎng)絡(luò)的輸出為N個32通道的特征圖。與輸入的原圖大小相比,特征圖的寬高縮小了4倍。
接下來是基于提取的特征圖和相機參數(shù)構(gòu)建3D代價體,這里是基于參考相機視錐體進行代價體的構(gòu)建。此處為論文主要創(chuàng)新:提出了一個基于單應(yīng)變換的2D到3D的轉(zhuǎn)換方法,并且在神經(jīng)網(wǎng)絡(luò)中嵌入相機幾何。這一步主要是把其他圖像上的特征轉(zhuǎn)換到參考圖像的相機視錐中的256個深度平面上,總有一個深度是對應(yīng)的。第i個特征轉(zhuǎn)換到參考圖像相機視錐的深度d平面的單應(yīng)矩陣計算公式為:
其中ki是源圖像的內(nèi)參矩陣,Ri是源圖像的外參矩陣。經(jīng)過可微單應(yīng)性變換的步驟后,得到N個特征體,每個特征體大小是:
就是之前特征提取模塊兩個步長為2的卷積層造成的縮放結(jié)果。D是深度采樣數(shù),F(xiàn)是特征圖的通道數(shù),就是32。接下來做的就是把N個特征圖合并成一個代價體,公式如下:
從圖像特征圖計算得到的初始代價體很有可能是包含噪聲的,為了預(yù)測深度圖還需要進行光滑處理。代價體經(jīng)過一個四級的U-Net結(jié)構(gòu)來生成一個概率體。概率體衡量的是圖像像素在不同的深度值下的可能性大小。在概率體生成之后,在深度這一維度上使用 softmax 操作進行概率值的歸一化。產(chǎn)生的概率體可以很好得用于深度值預(yù)測。最后在深度維度上計算期望,即將所有假設(shè)的深度值進行加權(quán)和:
其中P(d)為在深度值d處的所估計的概率值。該操作在文獻中被稱為soft argmin操作,該操作可微分并且能夠產(chǎn)生argmax操作的結(jié)果。在代價體構(gòu)建的過程中深度假設(shè)值是在一定范圍內(nèi)均勻采樣得到的,所以預(yù)測的深度值是連續(xù)的。輸出深度圖的尺寸與2D特征圖相同。
三、MVSNet算法改進
目前有兩種常用的代價體正則化成概率圖的方法,一種方法是使用MVSNet中的3DCNN結(jié)構(gòu),另一種方法是在R-MVSNet中的門控循環(huán)單元[5],相比于MVSNet降低了模型大小,但同時也損失了多尺度上下文信息的聚合特征信息。因此,在Transformer結(jié)構(gòu)在CV領(lǐng)域大量應(yīng)用的背景下,本文使用一種將Transformer作為編碼器的Encoder-Decoder結(jié)構(gòu)來進行代價體正則化,經(jīng)過實驗證明,這種Transformer結(jié)構(gòu)回歸出來的深度圖比原方法更加完整。
在特征提取階段,將原本的卷積全部替換成深度可分離卷積,并且在每次進行降采樣操作之后,加入一層動態(tài)濾波卷積,以加強特征提取的能力。
在encoder階段,采用4層Transformer模塊,每個Transformer先將輸入的代價體通過3D卷積將其轉(zhuǎn)化成一維的序列,隨后將序列輸送到一層線性層中,并且給每個序列塊分配一個位置編碼,用以記錄每個序列的位置。在嵌入層之后,再將這些序列送入多頭自注意力(MSA)和多層感知器(MLP)模塊,MLP由具有GELU激活函數(shù)的兩個線性層組成,一個多頭自注意力模塊包括12個并行的自我注意力頭。
decoder階段,在Transformer最后一層的輸出處,將反卷積層應(yīng)用于變換后的特征圖,以將其分辨率提高2倍。然后將調(diào)整大小后的特征圖與上一個Transformer的特征圖相加,將它們輸入到連續(xù)的3×3×3卷積層中,并使用反卷積層對輸出進行上采樣。對其他后續(xù)層重復(fù)此過程,直到達(dá)到原始輸入分辨率。
四、 DTU數(shù)據(jù)集
DTU數(shù)據(jù)集主要內(nèi)容是室內(nèi)場景的數(shù)據(jù)集,在三維重建領(lǐng)域有著廣泛的應(yīng)用。它包含124個不同的場景,將相機環(huán)繞在場景周圍的49個位置進行拍攝,并且在每個場景都進行7種光照條件下的拍攝,這樣下來每張RGB圖像都有對應(yīng)的相機參數(shù)和真實深度圖。因為如此的實驗設(shè)置,使得該數(shù)據(jù)集包含了多種多樣場景紋理,可以很好很好得覆蓋現(xiàn)實生活中的室內(nèi)物品。同時數(shù)據(jù)集里還提供由專業(yè)掃描儀器獲取的點云圖[6]。
五、 實驗結(jié)果與分析
本文分別在公開數(shù)據(jù)集和真實數(shù)據(jù)上對所構(gòu)建的基于深度學(xué)習(xí)的多視圖三維重建系統(tǒng)進行測試,并和先前的算法進行對比分析。實驗結(jié)果如下所述:
(一) 訓(xùn)練策略
文中算法基于Pytorch深度學(xué)習(xí)框架實現(xiàn)。網(wǎng)絡(luò)輸入的視圖數(shù)選擇7張圖片,其中包含1張參考視圖和6張源視圖。訓(xùn)練過程中的網(wǎng)絡(luò)優(yōu)化器選用Adam,初始學(xué)習(xí)率為0.01,并且每訓(xùn)練3輪學(xué)習(xí)率衰減0.9。實驗使用2張NVIDIA RTX 2080Ti 11G、操作系統(tǒng)為Ubuntu 18.04。圖片的大小為,設(shè)置深度采樣數(shù)D=192??偣策M行12輪訓(xùn)練。
(二) DTU數(shù)據(jù)集上的測試結(jié)果
在完成模型的訓(xùn)練后,在DTU測試集上對模型進行測試,并使用scan1和scan4的深度圖進行融合,得到如下的點云對比圖:
從圖1可以看出MVSNet重建出來的點云有大量的空洞并且含有大量雜點,而本文優(yōu)化過后的算法重建出來的效果雜點相對較少,并且能夠很好的恢復(fù)物體細(xì)微的表面紋理。
除此之外,本文使用DTU數(shù)據(jù)集提供的Matlab測試腳本計算重建出的三維點云的精度和完整度,來對算法整體的性能進行評價。因為指標(biāo)計算的是點云間的距離,所以指標(biāo)的值越小代表性能越好。結(jié)果見表2。通過對表格數(shù)據(jù)的分析可以發(fā)現(xiàn),改進后的三維重建算法在精度和完整度上都較MVSNet和P-MVSNet[7]有了極大的提升,反映出了文中算法的有效性。
六、結(jié)語
本文聚焦于多視圖三維重建方法,在主流的MVSNet算法上進行改進,得到了更高的重建精度。在先前工作的基礎(chǔ)上,將代價體正則化網(wǎng)絡(luò)進行了替換,將Transformer模型與3D卷積進行結(jié)合,構(gòu)成一個新型的U-Net結(jié)構(gòu)。經(jīng)過實驗證明,該模型能充分利用提取的特征來得到較好的重建表現(xiàn),并且從指標(biāo)上來看,也優(yōu)于目前主流的網(wǎng)絡(luò)。但是使用Transformer模型同樣帶來了顯存消耗大這個問題,雖然目前有研究人員提出輕量化的Transformer模型,但是對于顯卡的消耗依然是巨大的。因此后續(xù)的算法優(yōu)化,可以從輕量化模型入手,來構(gòu)建更加高效的三維重建網(wǎng)絡(luò)。
參考文獻
[1]Yao Y, Luo Z, Li S, et al. Mvsnet: Depth inference for unstructured multi-view stereo[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 767-783.
[2]Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.
[3]Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020.
[4]陳秋敏.基于深度學(xué)習(xí)的多視圖物體三維重建研究[D].電子科技大學(xué),2020.
[5]Yao Y, Luo Z, Li S, et al. Recurrent mvsnet for high-resolution multi-view stereo depth inference[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 5525-5534.
[6]Aan?s H, Jensen R R, Vogiatzis G, et al. Large-scale data for multiple-view stereopsis[J]. International Journal of Computer Vision, 2016, 120(2): 153-168.
[7]Luo K, Guan T, Ju L, et al. P-mvsnet: Learning patch-wise matching confidence aggregation for multi-view stereo[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 10452-10461.
(作者單位:安徽建筑大學(xué))