MVS论文阅读笔记[PatchmatchNet: Learned Multi-View Patchmatch Stereo]
原文鏈接:https://arxiv.org/pdf/2012.01411.pdf
摘要:
? ?? 我們提出了一個新穎的,可學習的patchmatch 來實現高分辨率的MVS。由于有內存和性能的限制,相比與使用規則的3D代價體,patchMatch可以處理高分辨率的圖像,更適合資源有限制的設備。我們第一次介紹在端對端訓練結構中實現一個多尺度迭代,每次迭代中patchmatch的核心算法是通過一個新穎的,可學習的自適應傳播和評估方案實現的。性能比現有的最好的mvs方案快至少2.5倍,內存占用少2倍。
1.介紹
MVS是利用已知位姿的圖片,對觀察到的場景進行幾何重建。雖然作為一個基礎問題,幾何計算機視覺已經研究了幾十年,但是MVS仍然是一個挑戰。這是因為存在著一個實際的無法解決的問題就是:遮擋,弱紋理,non-Lambertian表面。
CNN在幾乎任意計算機視覺上的成功給了MVS希望,可以通過這種數據驅動模型的的方式解決MVS面臨的問題。事實上,在MVS上,很多基于學習的方法實現了這種期望,表現得比一些傳統的方法要好。但是他們很少關注可拓展性,內存和運行時間。目前,許多基于學習的MVS方法構建代價體素,用3D CNN正則化它然后回歸出depth。由于3D CNN比較耗時和耗內存,所以一些方法會降低輸入圖像的分辨率,在低分辨率上進行特征提取和計算得到低分辨率的depth。從圖1可以看出,低分辨率會影響depth的精度。由于內存限制,這些方法無法有效利用圖像原有的尺寸。很顯然,在一些應用上比如手機設備,頭戴AR或者其它時間要求嚴苛的應用上,低耗內存和時間是關鍵。最近,研究者們在試圖降低這種限制。比如,R-MVSNet從深度范圍和序列化處理代價體素解耦內存消耗,但是代價是額外的時間消耗。
幾個傳統的MVS方法完全拋棄使用一個結構化的代價體方法,取而代之的是基于開創性的Patchmatch算法。PatchMatch采用了一個隨機的迭代算法來實現近似最近鄰域的算法。特別的是深度圖的內在空間的相關性被用來快速找到好的方案,無需查找所有的可能性。對我們基于MVS的深度學習方法設置中,patch低內存要求與視差范圍無關和一個隱式平滑效果使這個方法變得很有吸引力。
在這個工作中,我們提出了PatchMatchNet,旨在計算高分辨率的depth上降低內存和時間的消耗。它繼承了經典的patchmatch的有效性,同時也旨在提高深度學習的性能。
貢獻:i. 我們介紹了一種基于MVS框架的端對端訓練的patch match方法。更進一步,我們嵌入模型到一個從粗糙到精細的框架中來加速運算。ii. 我們用可學習的、自適應的模塊增加傳統的傳播和代價計算來提高精度。在為sources views的代價聚合時我們建立可視化信息。此外,我們提出了一個魯棒的訓練策略即把隨機性加入訓練中來提高模型在可見性估計和泛化的魯棒性。iii. 我們在不同的mvs數據集上
2.相關工作
傳統的MVS:傳統的MVS方法可以被劃分為四種:基于體素的,基于曲面估計的,基于patch的,基于depthmap的。相比較而言,基于depth map的方法更簡潔靈活。在這里我們討論patchmatch 立體方法。Galliani 提出了Gipuma,一個大規模并行的Patchmatch stereo的多視圖拓展。它在傳播過程中使用紅黑棋盤格去并行信息傳遞。Sch¨onberger提出了COLMAP,包括了pixel-wise 視圖選擇,深度圖,曲面法線。ACMM采用自適應棋盤格采樣,multi-hypothesis用于視圖選擇和多尺度幾何一致性引導中。基于patchmatch的思路,我們提出了我們的基于學習的patch方法,該方法不僅繼承了傳統經典的patch算法的有效性,還提高了基于深度學習方法的性能。
基于學習的立體視覺:GCNet介紹了利用3D 代價 volume 正則化來實現立體重建,用soft argmin回歸最終的視差圖。PSMNet加了一個空間金字塔池化 并用3D沙漏網絡來正則化。DeepPruner提出了一個沒有可學習參數的可微分的Patch模塊,丟棄大部分視差,然后建立一個輕量級的代價體,并用3D CNN來正則化。相反,我們不適用任何代價volume,而是將原始的patch思想用deep learn來實現。xu [37] 提出了基于稀疏點的尺度內代價聚合方法,使用了變形卷積。同樣地,我們提出了一個自適應采樣點的策略來進行空間代價聚合。
基于學習的MVS:基于體素的方法[20,21]由于體素表示的缺點只能用來進行小尺度的建模。相反,基于plane-sweep stereo[9],最近有許多工作[6,28,39,42]使用深度圖來重建場景,他們通過warp多個視圖的特征來構建代價體,并用用3D CNN正則化,回歸出深度。因為3d cnn非常耗時和耗內存,他們通常使用下采樣代價體。為了減少內存,R-MVSNet[43]用GRU序列化正則化的2d代價,但是以犧牲了運行時間。目前基于Deep learning的方法構建的3D Cost Volume需要3D卷積來做cost aggregation消耗顯存非常大,為了節省內存一般最終輸出的depth/disparity map限制為輸入的1/4。目前研究的目標是提高效率同時建立高分辨率的深度圖。CasMVSNet[17]提出了基于特征金字塔的級聯代價體,從粗糙到精細構建深度圖。UCS-Net [7]提出了級聯自適應thin volumes,為了自適應構建采用基于方差的不確定度估計。CVP-MVSNet [41]形成了一個圖像金字塔,也構建了代價體金字塔。為了加速Patch傳播,我們同樣采用了一個級聯結構。除了級聯代價體之外,PVSNet [40]學習預測每個原圖像的可見性。一個抗噪聲訓練策略被用于處理干擾的views。我們還學習了一種自適應策略組合基于的多個視圖的信息可見性信息。此外,我們提出了一種魯棒的訓練方法在訓練中加入隨機性的策略來提高可見性估計和泛化的魯棒性。Fast-MVSNet [44]構建了一個稀疏代價體來學習一個稀疏的深度圖然后用高分辨率RGB圖像和2DCNN來稠密化它。我們構建的優化模塊是基于MSG-Net[19],用RGB來引導depth上采樣。驗證了我們方法的有效性,比如DTU,Tanks&Temples ,ETH3D。結果證明與大多數基于學習的方法相比,我們的方法在減少內存和時間上更具有競爭力。
3. 主要內容
在本節中,我們介紹Patchmatch-Net的結構,如圖2所示。它由多尺度特征提取、基于學習的Patchmatch :迭代地從粗糙到精細的框架和一個空間優化模塊三部分組成。
3.1多尺度特征提取
給N張輸入圖像尺寸WxH我們用I0表示參考圖像,Ii表示源圖像.在我們應用我們的基于學習的patch之前,我們從輸入圖像中提取了像素級的特征,與特征金字塔網絡(FPN)相似.特征在多分辨率圖像上分層提取,可以加速我們的深度圖從粗糙到精細的計算.
3.2 基于學習的PatchMatch
參考傳統的Patch Match和自適應的depth計算,我們的可學習的patchmatch包括以下三個步驟:
3.2.1初始化和局部擾動
在Patchmatch的第一次迭代中,初始化以隨機方式進行,以促進多元化。基于預先給定的depth范圍[dmin,dmax],在[1/dmax,1/dmin]范圍內取Df個間隔初始化每個depth的像素值,這樣可以實現在圖像空間均勻采樣.這幫助我們的模型能應用于復雜的大場景。
在后續的迭代中,對每個像素的每個假設值加一個小的波動值,小的波動值是depth逆區間乘一個因子,這個因子隨著depth分辨率增加而減少。這可以增加可能的depth值,使結果更準確,剔除錯誤的結果。
3.2.2 自適應傳播
深度值的空間相干性通常存在于具有相同物理曲面的像素。因此,不是像Gipuma [16] and DeepPruner [11]那樣采用一個固定的鄰域集合來傳播深度,我們想使用一種自適應傳播方法可以聚合近似的曲面,這可以讓patch match收斂的更快,傳遞更準確的深度圖。如圖4所示,證明了我們的策略。我們這種方法更傾向與收集具有相同曲面的像素。相比于固定模式,我們這種無論對有紋理還是無紋理區域都會更傾向找到期望的深度值。
?
我們是在Deformation CNN網絡上[10]實現的。因為該方法在每個分辨率上都是相同的,我們就不再區分。為了獲取參考圖像中每個像素p的Kp個深度假設值,我們學習了一個額外的2D偏移量Δoi應用到用柵格組織的固定偏移量o上。我們在參考圖的特征圖F0上應用2D CNN來為每一個像素學習一個額外的2D偏移量。通過雙線性插值的方式得到深度值Dp:
式中D是來自上一次迭代的深度值,也可能是上一個低分辨率的depth(coarser stage)上采樣得到的。
3.2.3 自適應Evaluation
自適應Evaluation模塊包括以下步驟:可微warping,匹配代價計算,自適應空間代價傳播和depth回歸。在每個分辨率stage都是一樣的就不在區分。
微分warping:像平面sweep立體視覺一樣,大多數基于學習的MVS方法都在每個深度假設值上建立一個平行平面,并把源圖像的feature map warp到它們。我們通過參考幀和源圖像的內參和位姿轉換關系,可以通過矩陣變化將參考幀的的depth和uv坐標投影到源圖像得到對應的像素坐標pij。公式如下:
?
我們通過可微雙線性插值得到warped 源圖像i的第j深度假設值的特征map,Fi(pij)。
匹配代價計算:對于多視立體視覺,這一步必須整合來自任意數量的源圖像信息到單個像素的單個深度值的代價值。為此我們通過group-wise(將feature的相關性通道降低至Group的個數,減少內存)相關性計算每個假設值的代價。通過一個像素級的view 權重來聚合views。在代價聚合過程中,我們可以利用可見性信息來提高魯棒性。最后通過一個小網絡每個group的代價被投影到參考幀的每個像素,每個depth上。
F0(p),Fi(pi;j)分別表示參考幀和源圖像的特征,在將特征通道會分為G組后,F0(p)g and
Fi(pi;j)g表示第g組的特征,它們的相似性如下表示S:
?
我們用Si(p; j)表示對應group的相似向量。
為了計算像素級的view權重,我們利用我們在stage3的最初的深度假設集的多樣性。我們用wi(p)表示圖像Ii在像素p的可見性信息。權重被計算一次后被鎖定,上采樣到更精細的stage。
一個簡單的像素級view權重計算網絡由3D卷積(1x1x1)和非線性sigmoid組成,輸入初始的相似性Si,輸出值在0-1之間,Pi ∈R[wxhxD],像素P對圖像Ii的權重由下表示:
?
?
最后每個group的相似性可以用如下表示:
?
最終我們得到每個像素的每個group的相似性S∈R[wxhxdxg],用一個帶有3D卷積(1x1x1)的小網絡即可得到每個像素的每個depth假設值的一個單獨的代價值。
?
?
自適應空間代價聚合:傳統的MVS匹配算法常常通過一個一個空間window來聚合代價(我們使用的是平行平面)來提高匹配的魯棒性和一個隱含的平滑效果。可以說,我們的多尺度特征提取已經從一個空間大的視野中包含了鄰域信息。盡管這樣我們還是使用空間代價聚合。為了防止聚合穿過曲面邊界的問題,我們提出了基于patch match和AANet的自適應代價聚合。對于一個空間window Ke個像素p被劃分成柵格,我們學習每個像素的額外的偏移量Δp,則聚合空間代價被定義為:
?
?
Δpkj通過在參考幀的特征圖上做2D CNN得到的。如圖5所示,被采樣的位置都在邊界內,采樣的位置保持在對象內邊界,而對于無紋理區域,采樣點聚集在一個更大的空間環境中可以潛在地減少估計的不明確性。
depth回歸:
使用softmax 我們將代價C轉換為可能性P,P被用來亞像素depth回歸和置信度計算。回歸的在像素點p的depth值D(p)計算如下:
?
3.3 深度圖優化
我們發現直接上采樣(W/2 x H/2 to W xH),用RGB圖像來優化是有效的。基于MSG-Net我們設計了depth殘差網絡。為了避免偏移某一depth尺度,我們預先將depth歸一化到[0,1],在refine后再恢復。我們的網絡輸出了一個殘差值被加到上采樣的D上。這個網絡獨立提取特征Fd和Fi。應用Fd上的反卷積到上采樣到圖像尺寸。應用多個二維卷積層頂部連接的兩個特征映射-深度映射和圖像-傳遞深度殘差。
3.4 loss 函數
Ltotal表示所有的深度估計和在相同分辨率上的真值的所有loss的總和:
?
我們采用L1 loss,Lik在stage k上的第i次迭代的loss,Lref是最后refine的depth的loss。
?
?
?
總結
以上是生活随笔為你收集整理的MVS论文阅读笔记[PatchmatchNet: Learned Multi-View Patchmatch Stereo]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 825. Friend
- 下一篇: 刷 百度排名,百度(google)搜索提