论文笔记 Unsupervised Scale-consistent Depth Learning from Video
我整理了一些單目深度估計的論文,github地址:awesome-Monocular-Depth-Estimation 持續更新中
2021
- [IJCV] Unsupervised Scale-consistent Depth Learning from Video [code] (Extended version of NeurIPS 2019) [Project webpage] 🔥
contributions:
(1)幾何一致性loss,讓網絡預測尺度一致性的深度,懲罰相鄰視野間深度的不一致性(第一個討論尺度一致性的)
(2)一種自我發現的mask,自動定位違反基本靜態場景假設并在訓練時產生噪聲的運動物體。
(3)在KITTI和NYUv2數據集上詳細的消融實驗,并整合到了orb-slam2中。
比之前傳統的單目系統的優勢在于:
a)在任何一幀可以開始跟蹤
b)在深度的輔助下,跟蹤更魯棒和準確
c)可以用在稠密3D重建。
根據訓練數據,將學習方法分為四類:
①用傳感器得到的深度值作為訓練的真值(精度高,成本高)
②從網上收集立體對圖像和視頻,用現成的工具或者多視角立體對來計算稠密的真值深度。(成本低,但一般收集到的數據和想要的場景存在較大的區別,且難以泛化)
③用標定過的立體對圖像作為訓練模型,相機基線已知,通過預測的深度warp圖像,用光度誤差懲罰warping誤差項。(比如圖相對的左右一致性誤差、視頻的時間一致性誤差、對抗學習、預測深度的不確定性等。能預測深度,但要求用到的雙目相機標定較好)
④從無標簽的視頻中訓練模型,用相鄰幀分別訓練深度和位姿(簡單,泛化能力好)。
關于尺度一致性:
前人的兩個工作:
- 3D ICP loss分別取近似depth和pose的梯度,ICP是不可微的,所以效果不好。而本文提出的幾何一致性損失是可微的。
- 深度一致性loss,強制兩幅圖中對應點有一樣的深度預測。物理上是不對的因為場景的深度是視情況而定的。
本文通過剛性變換用第一個視圖中的預測深度來合成第二個圖中的深度,并懲罰第二個視圖中預測深度和合成深度之間的差異。好處:提高深度精度、保證尺度一致性的深度預測。
框架:
給定視頻序列相鄰的兩幀Ia,Ib,有深度和pose CNN s估計深度圖和相對相機位姿。根據深度圖和位姿,通過可微warping將源圖Ib合成參考圖Ia,從而生成Ia‘。在真正的Ia和合成的Ia‘之間的光度誤差作為網絡的監督信號。
- 幾何一致性loss LG是為了得到尺度一致性的深度
- 自發現mask Ms(通過檢查深度一致性來推理動態物體和遮擋)和自動mask Ma(去除圖像對的靜態點)是為了解決靜態幀和動態物體。
Loss
自發現mask Ms決定的光度誤差loss L P L_P LP?(低紋理區域不能提供信息),幾何一致性loss L G L_G LG?,平滑loss L S L_S LS?。
幾何一致性loss:
為了明確地強制執行幾何一致性,我們通過懲罰它們的不一致來限制預測的 Da 和 Db(與 Pab 相關)符合相同的 3D 結構。提出一個可微的深度不一致操作符來計算兩張深度圖間的像素級不一致性,就是找a圖和b 圖哪兩個點的深度是一樣的。
可微的深度不一致性計算:
- D b a D^a_b Dba? 是Ia通過 P a b Pab Pab warping Da計算得到的,Db‘是估計的深度圖Db雙線性插值得到的。
將Da用inverse warp投影到Db上去,根據 Z ′ [ x y 1 ] T = K T [ X Y Z 1 ] T Z' [x y 1]^T = KT[ X Y Z 1]^T Z′[xy1]T=KT[XYZ1]T得到 Z ′ Z' Z′ ,即藍點在Db上對應的a尺度下的深度值(先將Da投影到3D空間,再通過 P a b Pab Pab 投影到Db的圖像平面),得到一張 D b a D^a_b Dba? 深度圖(project過程),再計算Db和 D b a D^a_b Dba? 的差。因為投影過來的值不會剛好落到網格上,所以用可微的雙線性插值得到Db’(看的是藍點投影過來的位置),即藍點在b尺度下的深度值,再計算Db’的 D b a D^a_b Dba? 的差來得到深度不一致性(這里有一個歸一化的的操作,優化loss來得到尺度的一致性)。
歸一化操作后比用絕對距離要好,因為對不同的絕對深度在優化中是平等對待的。
通過最小化一個批中的采樣值的深度不一致性,將一致性在整個序列上傳播,于是在整個序列上就可以得到一個尺度一致性的結果。
Mask策略
移動物體創造了非剛性的光流,Ms通過檢查深度不一致性計算有效點中的點的權重,檢測動態和遮擋,Ma從有效點中移除無效點,發現無效的靜態點。
- ①自發現Mask M s Ms Ms:移動的物體和遮擋違反幾何一致性的假設,所以 D d i f f D_{diff} Ddiff?會很高,所以 M s = 1 ? D d i f f Ms = 1-D_{diff} Ms=1?Ddiff?,幾何不一致的地方Ms就低,權重低,一致的地方權重高。
- ②自動Mask M a Ma Ma:比較Ia與Ib Warp后的Ia’的光度損失和與源圖Ib間的光度損失。如果是靜止的物體的話,Ia與Ib間的光度損失應為0,此時 M a = 0 Ma = 0 Ma=0。
訓練時值計算有效點的loss,再用Ma,不在無效點上用Ma,用Ms重新計算光度loss L P L_P LP?的權重??梢詼p少移動物體和遮擋帶來的噪聲信號。
偽RGB-SLAM
輸入:單目RGB視頻。輸出:全局一直的6維相機軌跡和稀疏/稠密的3D地圖。
步驟:用初始幀 I 0 I_0 I0?中預測的深度初始化跟蹤和建圖,來建立一個初始的3D圖。對新的一幀It,用訓練的模型來估計深度和相對上一幀的位姿,因為在每一次的估計中能知道相機的位姿,通過累加能得到當前幀的位姿估計。再將彩色圖、深度圖和It估計的位姿作為ORB-SALM2的輸入,在ORB-SALM2中做匹配和優化,得到優化后的相機位姿和增量式地圖。最終能從視頻中得到全局一致的相機軌跡和一個稀疏的3D地圖。最后將彩色圖、深度圖和相機軌跡輸入到InfiniTAMv3,通過融合深度圖來構造稠密的紋理體素。
深度作用
被用來在開始初始化3D地圖,并在優化過程中用于目標函數。有了深度信息,能將slam中的重投影誤差從2D擴展到3D,能提高表現。且深度不一致的話會增大重投影誤差,正確的匹配會被當成錯誤的外點移除,這里為了表現深度一致性的好處。
pose作用
被用來作為跟蹤過程的初始pose,系統首先用估計的pose將3D圖中的稀疏關鍵點投影到當前的視圖,再在鄰域搜索關聯。跟蹤之后。通過用BA優化后的相機pose將當前視圖檢測到的關鍵點取消投影到地圖來豐富3D地圖。
InfiniTAMv3作用:用RGB-D視頻可以稠密重建場景結構。本文用優化后的相機位姿可預測的深度圖代替跟蹤模塊來重建。證明一致性結果。
與ORB-SLAM2相比的好處
①ORB-SLAM2需要多視角的三角化,初始化困難。本文的方法任何時候都可以初始化。
②3D地圖過于稀疏的時候ORB-SLAM2會丟掉跟蹤,但本文的方法更魯棒因為能通過預測的稠密深度豐富地圖
③ORB-SLAM2只能提供稀疏的地圖,但本文的方法能提供稠密的地圖。
不足
因為只用了單目的視頻所以不能恢復絕對尺度。
細節:
①多分辨率對本文的方法沒什么用,時間還長。monodepth2里面用到的全分辨率是因為在低分辨率下會有holes和紋理復制偽影,這里說低分辨率圖像上的監督信息不準確,訓練圖相對的相機移動是很小的,所以多分辨率是不必要的。
②用網絡學pose很困難,用傳統的基于幾何解pose的方法替代。
③我們在這里的貢獻是使單目訓練方法能夠預測尺度一致的結果,從而允許通過使用經典幾何框架來優化預測的深度和姿勢。
④通過使用 Open3D 庫中實現的點云配準度量來評估預測深度的幾何一致性。計算兩個對齊點云的RMSE,用一個常數閾值識別內在關聯。對給定的測試序列,預測每個相鄰圖相對的深度和pose,將depth轉換為點云來評估。
⑤poseCNN和用運動模型與SLAM結合的效果差不多,但作者認為poseCNN更通用因為突然運動發生的時候會違反常速模型。
⑥和ORB-SLAM2比較:跟蹤精度更高,更魯棒,能保持尺度一致性。
⑦2K關鍵點比8K的精度要高,推測是關鍵點更多的時候會引入更多的外點,然而幾何優化只需要一些精確的稀疏點。
與Monodepth2比較:
(1)遮擋:Monodepth2用的是最小重投影誤差,SC用Ms與Lg來處理動態物體和遮擋。
(2)mask:感覺Ma和monodepth2的差不多,Ms主要是通過深度不一致性來計算的,用在了光度loss的加權上。
(3)提出了深度一致性。
(4)monodepth2提出的多分辨率對本文的方法沒什么用,時間還長,只在初始圖像的分辨率上計算loss,極大減少計算量,效果和monodepth2也差不多。
(5)將網絡加入了SLAM系統,并與SLAM系統做了比較。
參考:https://blog.csdn.net/qq_42518956/article/details/105442305
總結
以上是生活随笔為你收集整理的论文笔记 Unsupervised Scale-consistent Depth Learning from Video的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度营销-读书笔记
- 下一篇: hass 安装hacs