博客專欄

EEPW首頁 > 博客 > SC-DepthV3來了!深度解析無監(jiān)督單目深度估計V1到V3的主要變化(1)

SC-DepthV3來了!深度解析無監(jiān)督單目深度估計V1到V3的主要變化(1)

發(fā)布人:計算機視覺工坊 時間:2022-11-19 來源:工程師 發(fā)布文章
0. 筆者個人體會

因為項目原因需要用到無監(jiān)督單目深度估計網(wǎng)絡,目前SC-Depth系列是非常經(jīng)典的框架,因此寫下這篇文章記錄自己的學習經(jīng)歷。深度估計其實是一個非常早的問題,早期方法主要是Structure from Motion (SfM)和Multi View Stereo (MVS)這兩種。SfM算法輸入是一系列無序照片,兩兩照片通過特征點建立匹配關系,利用三角化方法獲得稀疏點云,之后使用BA進行聯(lián)合優(yōu)化,輸出是整個模型是三維點云和相機位姿。但此類方法獲得的是稀疏點云,就是說深度圖也是稀疏的。MVS與SfM原理類似,但它是對每個像素都去提取特征并進行匹配,最終可以獲得稠密的深度圖。相較雙目/多目深度估計而言,單目深度估計更具挑戰(zhàn)性,這是因為單目視覺天生就存在致命缺陷:尺度模糊。近年來深度學習技術的發(fā)展,引發(fā)了一系列單目深度估計網(wǎng)絡的問世。近期SC-DepthV3發(fā)表在了新一期的TPAMI上,對單目深度估計問題又提出了一個新的解決思路。本文將分別介紹牛津大學提出的SC-Depth系列的三個網(wǎng)絡,探討它們都解決了什么問題,以及實現(xiàn)了什么效果。

1. 為什么是無監(jiān)督?

先說答案:因為有監(jiān)督太貴了!目前單目深度估計網(wǎng)絡在KITTI、NYU等數(shù)據(jù)集上的性能其實已經(jīng)非常好了,各項定量指標也好,定性估計深度圖也好,看起來已經(jīng)非常完美。但任何網(wǎng)絡、任何模型歸根結底都是要落地的,只在數(shù)據(jù)集上跑一跑沒辦法創(chuàng)造實際的產(chǎn)能。可是深度學習本身就是依賴數(shù)據(jù)集的,如果想把一個訓練好的模型拓展到實際場景中,往往需要在實際場景進行finetune。如果是有監(jiān)督網(wǎng)絡的話,實際場景的微調就需要激光雷達、高精相機等昂貴傳感器提供的ground truth。這在很大程度上就限制了有監(jiān)督單目深度估計網(wǎng)絡的實際落地。我們更想實現(xiàn)的目標是拿著一個相機(甚至手機)拍一組視頻,就可獲得每幀的深度!那么怎么辦呢?無監(jiān)督單目深度估計網(wǎng)絡就可以很好得解決這一問題!無監(jiān)督單目深度估計網(wǎng)絡不需要提供深度真值就可以進行訓練,可以在任何場景通過一組單目視頻進行finetune,這就意味著網(wǎng)絡具備極強的泛化能力!最早的無監(jiān)督單目深度估計網(wǎng)絡來源于2016年ECCV論文“Unsupervised CNN for single view depth estimation: Geometry to the rescue.”。網(wǎng)絡輸入是雙目相機中的左右目圖像,但是只估計左目圖像的深度。由于左右目位姿是已知的,那么我們就可以通過左目深度圖和左右目位姿去重建左圖,之后去計算重建左圖和真實左圖之間的差異,回傳損失進行訓練。除這個損失外,這個網(wǎng)絡還提出了深度值的平滑損失。圖片這個網(wǎng)絡名義上確實是單目深度估計網(wǎng)絡,因為只估計了左圖的深度。但我們更希望的是網(wǎng)絡輸入是真正的單目圖像。最早的真正只使用單目圖像的無監(jiān)督單目深度估計網(wǎng)絡是2017年CVPR論文“Unsupervised Learning of Depth and Ego-Motion from Video”。這個網(wǎng)絡與上一篇論文的原理類似,它的輸入是單目視頻序列中的前后兩幀。首先給第一幀圖像估計深度圖,同時估計兩幀圖像中的位姿,之后利用深度圖和位姿重建第一幀圖像,同樣去計算與真實圖像之間的差異。圖片之后的SOTA方法就是大家所熟知的Monodepth2,來源于2019年ICCV論文“Digging Into Self-Supervised Monocular Depth Estimation”。其原理還是利用SfM同時估計深度網(wǎng)絡和位姿網(wǎng)絡。網(wǎng)絡輸入為單目視頻的連續(xù)多幀圖片,根據(jù)深度網(wǎng)絡和位姿網(wǎng)絡構建重投影圖像,計算重投影誤差并引入至損失函數(shù)。圖片雖然近些年也出現(xiàn)了非常多的單目深度估計網(wǎng)絡,但大多都是基于Monodepth2和SC-Depth框架進行的。因此,本文對其他網(wǎng)絡結構不再贅述。

2. SC-DepthV1做了什么?

至此,開始引入本文真正的主角:SC-Depth系列。之前的單目深度估計網(wǎng)絡的重投影損失,更多的是利用前后幀的顏色誤差進行約束,得到了比較精確的結果。但它們基本上都有一個共性問題:深度值不連續(xù)!連續(xù)幾張圖像之間的深度值不連續(xù)!也就是說,在不同的幀上產(chǎn)生尺度不一致的預測,因為它們承受了每幀圖像的尺度不確定性。這種問題這不會影響基于單個圖像的任務,但對于基于視頻的應用至關重要,例如不能用于VSLAM系統(tǒng)中的初始化。因此,SC-DepthV1為解決此問題提出了尺度一致性約束。具體來說,就是給前后兩幀圖像都預測深度,利用兩張圖像的深度和位姿投影到3D空間中,進而去計算尺度一致性損失。這種方法確保了相鄰幀之間尺度的一致性,如果每連續(xù)兩幀圖像的尺度都是一致的,那么整個視頻序列的深度序列也就是連續(xù)的。圖片此外,SC-DepthV1還使用了一種Mask,對應視頻上出現(xiàn)不連續(xù)的區(qū)域。作者認為這就是動態(tài)物體,通過去除這種Mask可以使得網(wǎng)絡具備一定的動態(tài)環(huán)境魯棒性。圖片定量結果顯示,SC-DepthV1取得了與Monodepth2相持平的結果。但SC-DepthV1估計出的深度圖具有連續(xù)性,因此還是SC-DepthV1更勝一籌。圖片值得一提的是,SC-DepthV1在論文里除了介紹自己的定量結果外,還將單目深度估計結果引入到了ORB-SLAM2中,構建了一個偽RGB-D SLAM系統(tǒng)。在一些序列中,Monodepth2+ORB-SLAM2的系統(tǒng)由于深度不連續(xù)問題,很快跟丟。而SC-DepthV1+ORB-SLAM2的組合可以獲得較好的跟蹤結果。圖片圖片一句話總結:SC-DepthV1解決了深度連續(xù)性問題。


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: AI

相關推薦

技術專區(qū)

關閉