天天看點

【三維深度學習】多視角場景點雲重模組化型PointMVS

PointMVS差別于先前利用cost volum來進行多視角處理的方法,直接基于點雲的方式對場景進行處理。從過由粗到細的疊代優化過程,充分結合了幾何先驗資訊和2D紋理資訊來來增強點雲特征,并利用圖網絡的來對深度的殘差進行有效估計。這種由粗到精的疊代結構獲得非常好的重建精度。

1.PointMVS

基于深度學習的現有三維重建方法大多都是基于3D CNN來進行深度圖或者體素的預測。但這種方法對于記憶體的消耗達到了分辨率的三次方量級,使得生成結果的分辨率受到了很大的限制。而點雲是一種十分高效高精度的三維表示方法。

在PointMVS中研究人員提出了直接利用點雲表示來對目标場景進行處理。整個模型遵循着由粗到精的思想,并可通過疊代的方式不斷提升結果的精度。

【三維深度學習】多視角場景點雲重模組化型PointMVS

模型從整體上分為兩個主要部分:初始深度估計和深度優化疊代兩個部分。

【三維深度學習】多視角場景點雲重模組化型PointMVS

1.1初始深度估計

深度粗估計部分參考了MVSNet的方法,利用多尺度3D-CNN建構了較小的代價空間,進而進行深度粗估計。

多視角圖像輸出利用簡化的MVSNet建構出代價空間,随後輸出較為粗糙的深度估計結果。值得注意的是在MVSNet的原始結構中,其特征圖尺寸為原圖的1/4x1/4,而在PointNet中則使用了1/8x1/8大小的特征圖;其次原始MVSNet中的虛拟深度平面為256個,而在PointNet中為了提高效率粗估計階段隻保留了48/96個深度層。這意味着PointNet在初始深度估計階段的計算量為MVSNet的1/2x1/2x1/5~1/2x1/2x2/5,大約提速10到20倍。

1.2圖像特征增強點雲

在獲得初始深度圖的基礎上,就可以利用相機參數将初始深度圖反投影得到點雲,而後從輸入多視角圖像中抽取特征來增強點雲。基于增強後的點雲和本文提出的PointFlow方法最終估計出初始深度于基準深度間的殘差結果。

受到圖像特征可以增強稠密像素比對的啟發,研究人員建構了多尺度的3層金字塔結構從輸入圖像幀中提取出特征金字塔。每一層金字塔由2D卷積構成,同時下采樣步長為2,針對所有輸入圖像共享同一個特征金字塔。針對每一幀圖像 I i I_i Ii​,經過特征金字塔作用後得到的特征為:

F i = [ F i 1 , F i 2 , F i 3 ] F_i = [F^1_i,F^2_i,F^3_i] Fi​=[Fi1​,Fi2​,Fi3​]

PointMVS中使用的點雲特征來自于多視角圖像特征的方差和世界坐标系中的歸一化三維坐标 X p X_p Xp​。其中針對每一個三維點其對應的圖像特征,可以在給定相機參數的情況下,通過可查分的反投影方式從多視角特征圖中擷取。針對不同尺度的金字塔,相機參數可以通過縮放變換來應用于對應尺度的特征圖。研究人員将建構基于方差的損失度量(可以了解為不同視角下特征的差異)來将任意視角下的特征進行聚合。

C j = ∑ i = 1 N ( F i j − F j ˉ ) N , ( j = 1 , 2 , 3 ) C^j = \frac{\sum_{i=1}^{N}(F_i^j-\bar{F^j})}{N},(j=1,2,3) Cj=N∑i=1N​(Fij​−Fjˉ)​,(j=1,2,3)

上式表示了第j層特征金字塔上,N個不同視角下的特征方差名額。

随後為每個3D點建構特征,研究人員将從圖像中擷取的特征和歸一化的點坐标合并在了一起:

C p = c o n c a t [ C p j , X p ] , ( j = 1 , 2 , 3 ) C_p = concat[C_p^j,X_p],(j=1,2,3) Cp​=concat[Cpj​,Xp​],(j=1,2,3)

這一通過圖像特征增強後的點雲 C p C_p Cp​随後就會被送入到PointFlow中進行深度的殘差估計。在每一次疊代過程中,點的三維坐标 X p X_p Xp​都會被更新并與金字塔特征相比對。而後基于動态特征比對的方法來對增強後的特征進行處理。

值得注意的是,這裡的動态特比對可以基于更新後點雲的位置來從圖像特征的不同區域中擷取特征,而不像基于cost-volum的方法其對應的特征是來自于固定的空間分區。那麼這種方法就可以集中于感興趣的區域來進行更為精細化的處理。

Todo(rjj):dynemic feature fetching understanding

1.3基于PointFlow方法的高精度深度估計

利用代價空間進行計算的深度圖精度受限于3D cost volume的分辨率。為了進一步利用圖像特征增強的點雲網絡來提升深度圖的分辨率,PointMVS提出了PointFlow的方法來疊代的預測出深度圖的殘差以提升最終的深度圖精度。首先将深度圖反投影到3D點雲上,而後針對每個點,在參考相機方向上觀測所有視角下的鄰域點來預測出其于基準表面間的位置差異,使得這些點“流向”目标表面/基準表面。

PointFlow方法主要由假設點生成、邊緣卷積、流預測和上采樣疊代優化等四部分構成。

直接利用抽取的圖像特征對每個點的位移進行抽取是比較困難的,由于透視變換的存在2D特征圖無法有效反映3D歐氏空間中的空間結構特性,是以PointFlow提出了在參考相機方向上設定一系列假設點 p ~ \widetilde p p

​來模組化。

p ~ = p + k ∗ s ∗ t \widetilde p = p + k*s* \mathbf t p

​=p+k∗s∗t

其中s為假設點位移的步長,t為參考相機的方向。在某個點周圍将建構出2m+1個鄰域假設點來。這些參考點将在不同深度上抽取出圖像的特征并包含了空間幾何關系。

下圖中可以看到紅色點事反投影點,藍色點是不同的位移步長生成的假設點。PointFlow的目的在于利用圖像特征增強後的點雲,計算出紅色點相對于每個藍色鄰域假設點的位移機率,并最終得到與基準目标表面間的位移。

【三維深度學習】多視角場景點雲重模組化型PointMVS

為了進行魯棒的深度預測,PointFlow從DGCNN中從鄰域抽取資訊獲得啟發,利用了knn建構的有向圖來表示局域幾何結構資訊,進而可以被用于點特征的傳播。定義邊緣卷積來對點雲特征進行抽取:

C p ~ ′ = □ q ∈ k N N ( p ~ ) h θ ( C p ~ , C p ~ − C q ~ ) C'_{\tilde p} =\square_{q \in kNN(\tilde p)} h_\theta(C_{\tilde p} , C_{\tilde p} -C_{\tilde q} ) Cp~​′​=□q∈kNN(p~​)​hθ​(Cp~​​,Cp~​​−Cq~​​)

其中 C p ~ = { C p ~ 1 , ⋯   , C p ~ n } C_{\tilde p} = \{C_{\tilde p_1} ,\cdots,C_{\tilde p_n} \} Cp~​​={Cp~​1​​,⋯,Cp~​n​​}為特征增強後的點集合,q為鄰域點。h為非線性映射函數,方框為逐個通道的對稱聚合操作(包括池化、權重等),最終用于學習每一點對應的局部特征。

在充分利用圖像特征增強後的點雲資訊就可以進行流預測了。PointFlow中利用了3個邊緣卷積層來聚合多尺度點雲資訊,并加入了跳接層保留局部資訊。最終通過共享的MLP将逐點特征轉換為每一反投影點的假設點的機率。最終通過所有假設點的機率權重和得到最終點的位移(每個假設點都在原始點周圍領域上,通過特征抽取擷取每個假設點的機率,權重後即可得到原始點向目标點流動的位移):

Δ d p = E ( k s ) = ∑ k = − m m k s ∗ P o r b ( p ~ k ) \Delta d_p = \mathbf E(ks) = \sum_{k=-m}^m ks * Porb(\tilde p_k) Δdp​=E(ks)=k=−m∑m​ks∗Porb(p~​k​)

下圖顯示了特征增強後的點雲通過邊緣卷積處理得到深度圖的殘差結果:

【三維深度學習】多視角場景點雲重模組化型PointMVS

由于這種方法針對點雲進行處理十分靈活,是以可以對結果進行疊代處理不斷提升精度,克服課3D cost volum固定剖分的性質。對于預測出的粗深度圖,PointFlow中可以先對其進行上采樣,随後再進行流預測得到優化後的深度圖。此外還可以在疊代過程中減小深度步長s,使得更近距離的假設點可以捕捉到更為精細的特征,并得到更為精确的深度預測結果。

2.實作過程和實驗結果

通過PointFlow處理後,最終的損失函數如下圖所示,其中包含了l次疊代的L1損失,其中損失隻在有效點上進行計算。 λ , s \lambda,s λ,s為疊代過程中的調節參數。

L o s s = ∑ i = 0 l λ ( i ) s ( i ) ( ∑ p ∈ P v a l i d ∣ ∣ D G T ( p ) − D ( i ) ( p ) ∣ ∣ 1 ) Loss = \sum_{i=0}^l{\frac{\lambda^{(i)}}{s^{(i)}}(\sum_{p \in P_{valid}}} ||D_{GT}(p)-D^{(i)}(p)||_1 ) Loss=i=0∑l​s(i)λ(i)​(p∈Pvalid​∑​∣∣DGT​(p)−D(i)(p)∣∣1​)

輸入圖像的尺寸為640x512,輸入三個視角(預測時候使用5視角)。第一部分構架3D 代價空間的虛拟深度層數設定為 48(預測是使用了96層,425mm–921mm,比MVSNet約快20倍),優化疊代兩次。PointFlow中使用的點數為16。

實驗在DTU資料上進行,其中包含了7種光照條件在49-64個位置的124個場景下的圖像資料集及其相機參數。PointMVS算法重建點雲的完整性和精度如下表所示,重建的視覺效果也較為細膩,細節更為準确豐富。

【三維深度學習】多視角場景點雲重模組化型PointMVS
【三維深度學習】多視角場景點雲重模組化型PointMVS

3.消融性分析

研究中比較了優化疊代次數、邊緣卷積和圖像特征金字塔對于最終結果的作用。首先疊代對于點雲品質有着明顯的提升:

【三維深度學習】多視角場景點雲重模組化型PointMVS
【三維深度學習】多視角場景點雲重模組化型PointMVS

可以看到在第二次疊代時起生成結果已經明顯超過了MVSNet的結果,證明了疊代優化政策的有效性。

其次,邊緣卷積、歐氏空間聚類和特征金字塔增強都為模型性能做出了貢獻。EdgeConv:基于鄰域點的邊緣卷積對于居于幾何關系的抽取十分重要,可以利用特來針對性的處理點雲。EUCNN:歐氏空間中的knn聚類可以有效克服圖像空間中鄰近點(但在三維空間中有很大距離的點)所帶來的影響。Feature Pyramid:圖像的内容資訊為增強點雲特征貢獻了很大的部分。

TODO(TOM):tab3+supplementary

通過對初始深度圖加入不同強度的高斯噪聲,結果精度較為穩定,顯示出PointFlow較強魯棒性,下圖顯示了在兩種pool情況下起誤差随初始深度圖噪聲的變換,在0~2.4mm的誤差下都保持了較小的誤差。

同時于PU-Net比較,對于粗深度圖的優化過程表明,引入流機制的PointFlow上采樣能力更強。

【三維深度學習】多視角場景點雲重模組化型PointMVS

此外,由于這種方法(PointFlow中的疊代優化)可以處理任意大小的點雲,是以可以針對性的對感興趣區域進行優化(Foveated),得到粗中有細、層次清晰的重建結果,可以在同一個結果中包含多種點雲密度(疊代優化的分區不同)。

【三維深度學習】多視角場景點雲重模組化型PointMVS
【三維深度學習】多視角場景點雲重模組化型PointMVS

pic from pexels.com

繼續閱讀