摘要
我們提出了一個新的幾何和光度3D映射管道,用于從單眼圖像中準(zhǔn)確和實時地重建場景。為了實現(xiàn)這一目標(biāo),我們利用了最近在密集單眼SLAM和實時分層容積神經(jīng)輻射場方面的進(jìn)展。我們的見解是,密集的單眼SLAM通過提供準(zhǔn)確的姿勢估計和具有相關(guān)不確定性的深度圖,為實時適應(yīng)場景的神經(jīng)輻射場提供了正確的信息。
通過我們提出的基于不確定性的深度損失,我們不僅實現(xiàn)了良好的光度測量精度,還實現(xiàn)了巨大的幾何精度。事實上,我們提出的管道比競爭對手的方法實現(xiàn)了更好的幾何和光度測量精度(PSNR提高了179%,L1深度提高了86%),同時實時工作并只使用單眼圖像。
主要貢獻(xiàn)
我們提出了第一個結(jié)合密集單眼SLAM和分層體積神經(jīng)輻射場優(yōu)點的場景重建管道。
我們的方法從圖像流中建立精確的輻射場,不需要姿勢或深度作為輸入,并且可以實時運行。
我們在Replica數(shù)據(jù)集上實現(xiàn)了單眼方法的最先進(jìn)性能。
主要方法
我們管道的輸入包括連續(xù)的單眼圖像(這里表示為Img 1和Img 2)。從右上角開始,我們的架構(gòu)使用Instant-NGP擬合一個NeRF,我們使用RGB圖像I和深度D對其進(jìn)行監(jiān)督,其中深度由其邊緣協(xié)方差ΣD加權(quán)。
受Rosinol等人[23]的啟發(fā),我們從密集的單眼SLAM計算這些協(xié)方差。在我們的案例中,我們使用Droid-SLAM。我們在第3.1節(jié)提供了關(guān)于信息流的更多細(xì)節(jié)。藍(lán)色顯示的是Droid-SLAM的貢獻(xiàn)和信息流,同樣,粉紅色是Rosinol的貢獻(xiàn),而紅色是我們的貢獻(xiàn)。
1. 追蹤
密集SLAM與協(xié)方差 我們使用Droid-SLAM作為我們的跟蹤模塊,它為每個關(guān)鍵幀提供密集的深度圖和姿勢。從一連串的圖像開始,Droid-SLAM首先計算出i和j兩幀之間的密集光流pij,使用的架構(gòu)與Raft相似。
Raft的核心是一個卷積GRU(圖2中的ConvGRU),給定一對幀之間的相關(guān)性和對當(dāng)前光流pij的猜測,計算一個新的流pij,以及每個光流測量的權(quán)重Σpij。
有了這些流量和權(quán)重作為測量值,DroidSLAM解決了一個密集束調(diào)整(BA)問題,其中三維幾何被參數(shù)化為每個關(guān)鍵幀的一組反深度圖。這種結(jié)構(gòu)的參數(shù)化導(dǎo)致了解決密集BA問題的極其有效的方式,通過將方程組線性化為我們熟悉的相機/深度箭頭狀的塊狀稀疏Hessian H∈R (c+p)×(c+p) ,其中c和p是相機和點的維度,可以被表述為一個線性最小二乘法問題。
從圖中可以看出,為了解決線性最小二乘問題,我們用Hessian的Schur補數(shù)來計算縮小的相機矩陣HT,它不依賴于深度,維度小得多,為R c×c。通過對HT=LLT的Cholesky因子化,其中L是下三角Cholesky因子,然后通過前置和后置求解姿勢T,從而解決相機姿勢的小問題。
此外,給定姿勢T和深度D,Droid-SLAM建議計算誘導(dǎo)光流,并再次將其作為初始猜測送入ConvGRU網(wǎng)絡(luò),如圖2左側(cè)所示,其中Π和Π-1,是投影和背投函數(shù)。
圖2中的藍(lán)色箭頭顯示了跟蹤循環(huán),并對應(yīng)于Droid-SLAM。然后,受Rosinol等人的啟發(fā),我們進(jìn)一步計算密集深度圖和Droid-SLAM的姿勢的邊際協(xié)方差(圖2的紫色箭頭)。
為此,我們需要利用Hessian的結(jié)構(gòu),我們對其進(jìn)行塊狀分割如下:
其中H是Hessian矩陣,b是殘差,C是塊狀相機矩陣,P是對應(yīng)于每個像素每個關(guān)鍵幀的反深度的對角矩陣。我們用?ξ表示SE(3)中相機姿態(tài)的謊言代數(shù)的delta更新,而?d是每個像素反深度的delta更新。
E是相機/深度對角線Hessian的塊矩陣,v和w對應(yīng)于姿勢和深度的殘差。從這個Hessian的塊分割中,我們可以有效地計算密集深度Σd和姿勢ΣT的邊際協(xié)方差:
最后,鑒于跟蹤模塊計算出的所有信息--姿勢、深度、它們各自的邊際協(xié)方差以及輸入的RGB圖像--我們可以優(yōu)化我們的輻射場參數(shù),并同時完善相機的姿勢。
2. 建圖
鑒于每個關(guān)鍵幀的密集深度圖,有可能對我們的神經(jīng)體積進(jìn)行深度監(jiān)督。不幸的是,由于其密度,深度圖是非常嘈雜的,因為即使是無紋理的區(qū)域也被賦予了一個深度值。圖3顯示,密集的單眼SLAM所產(chǎn)生的點云是特別嘈雜的,并且包含大的離群值(圖3的頂部圖像)。
根據(jù)這些深度圖監(jiān)督我們的輻射度場會導(dǎo)致有偏見的重建。 Rosinol等人的研究表明,深度估計的不確定性是一個很好的信號,可以為經(jīng)典的TSDF體積融合的深度值加權(quán)。受這些結(jié)果的啟發(fā),我們使用深度不確定性估計來加權(quán)深度損失,我們用它來監(jiān)督我們的神經(jīng)體積。
圖1顯示了輸入的RGB圖像,其相應(yīng)的深度圖的不確定性,所產(chǎn)生的點云(在用σd≤1.0對其不確定性進(jìn)行閾值化以實現(xiàn)可視化),以及我們使用不確定性加權(quán)的深度損失時的結(jié)果。鑒于不確定性感知的損失,我們將我們的映射損失表述為:
我們對姿勢T和神經(jīng)參數(shù)Θ進(jìn)行最小化,給定超參數(shù)λD來平衡深度和顏色監(jiān)督(我們將λD設(shè)置為1.0)。特別是,我們的深度損失是由以下公式給出的。
其中,D*是渲染的深度,D、ΣD是由跟蹤模塊估計的密集深度和不確定性。我們將深度D*渲染為預(yù)期的射線終止距離。每個像素的深度都是通過沿著像素的射線取樣的三維位置來計算的,在樣本i處評估密度σi,并將得到的密度進(jìn)行alpha合成,與標(biāo)準(zhǔn)的體積渲染類似:
顏色的渲染損失如下:
3. 架構(gòu)
我們的管道由一個跟蹤線程和一個映射線程組成,兩者都是實時和并行運行的。追蹤線程不斷地將關(guān)鍵幀活動窗口的BA重投影誤差降到最低。
映射線程總是優(yōu)化從跟蹤線程收到的所有關(guān)鍵幀,并且沒有一個有效幀的滑動窗口。這些線程之間的唯一通信發(fā)生在追蹤管道生成新關(guān)鍵幀時。
在每一個新的關(guān)鍵幀上,跟蹤線程將當(dāng)前關(guān)鍵幀的姿勢與它們各自的圖像和估計的深度圖,以及深度的邊際協(xié)方差,發(fā)送到映射線程。
只有跟蹤線程的滑動優(yōu)化窗口中當(dāng)前可用的信息被發(fā)送到映射線程。跟蹤線程的有效滑動窗口最多包括8個關(guān)鍵幀。
只要前一個關(guān)鍵幀和當(dāng)前幀之間的平均光流高于一個閾值(在我們的例子中是2.5像素),跟蹤線程就會生成一個新的關(guān)鍵幀。最后,映射線程還負(fù)責(zé)渲染,以實現(xiàn)重建的交互式可視化。
主要結(jié)果
審核編輯:劉清
-
Gru
+關(guān)注
關(guān)注
0文章
12瀏覽量
7505 -
SLAM
+關(guān)注
關(guān)注
23文章
426瀏覽量
31931 -
NGP
+關(guān)注
關(guān)注
0文章
12瀏覽量
6702
原文標(biāo)題:NeRF-SLAM:實時密集單眼SLAM 輻射場的實時密集單眼SLAM
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論