【三維重建】Unsupervised Learning of Depth and Ego-Motion from Monocular Video

題目:Unsupervised Learning of Depth and Ego-Motion from Monocular Video Using 3D Geometric Constraints
鏈接:https://arxiv.org/abs/1802.05522

前言

最近開始接觸三維重建,希望能夠跟着師兄的腳步多學一點東西。剛開始學論文讀起來還是很喫力的,這篇文章花了一個上午的時間才勉強懂了一點。爲了防止自己忘得太快,做一下筆記方便以後回顧。

概述

本文提出了一種基於無監督學習的新方法,對單目視頻中的深度與自我運動的估計。以往的一些方法多采用像素級或基於梯度的損失,只關注在較小區域的像素。而作者提出的方法能夠明確地對整個區域的3D幾何進行推斷,並且加強連續視頻幀之間3D點雲和自我運動的一致性。對於這項比較有挑戰性的任務,在作者提出的對齊三維結構的新穎的反向傳播算法下得以解決。
作者使用從相鄰幀之間得到的深度與運動信息,將3D的損失與基於幀重建光度質量的2D損失進行了結合。作者還通過加入有效性掩碼來避免不存在有效信息區域的懲罰。
最終作者在KITTI數據集和一個通過手機拍攝的微景觀標定的視頻數據集進行了算法的驗證,也取得了SOTA。

自我運動: 環境中相機的3D運動。在計算機視覺領域,自我運動是指估計相機相對於固定場景的運動。自我估計的一個例子是估計汽車相對於從汽車本身觀察到的道路或街道標誌線上的移動位置。自我運動的估計在自主機器人導航應用中很重要。
https://blog.csdn.net/CSerwangjun/article/details/103154308

1、介紹

估計深度與自我運動對於無論是機器人還是自動駕駛都是很重要的,而大多數的監督學習方法需要仔細的標定,這嚴重限制了能夠使用的數據集,這正是爲什麼很多監督學習方法只用在一些著名的數據集,例如KITTI和Cityspaces。即使GT可用的時候,也很容易造成預測僞影。

信號處理(特別是在原始轉換過程中執行的操作)可能導致顯着的視覺僞影,包括過度銳化“光暈”和丟失精細、低對比度的細節。這些僞影是非線性信號處理的結果(因爲它隨信號的變化而變化)。日誌頻率-對比度圖表圖像可能被銳化(MTF增強),在出現對比特徵,如邊緣和模糊(低通濾波),在他們沒有。這通常提高測量性能(銳度和噪聲/信噪比),但它可能導致圖像質量下降,例如,一個“塑料”卡通樣的外觀,即使邊緣是強烈銳化。這種細節的損失不能用SFR來衡量。

而旋轉LIDAR(Light Detection and Ranging)無法與照相機採集的圖像對齊,即使兩者仔細同步過。結構光深度傳感器、LIDAR和TOF傳感器都有噪聲與結構僞影的問題。另外,深度傳感器和照相機間經常有偏差,當點雲投影到照相機視角的時候容易導致一些縫隙或重疊。所以在這種數據上訓練出的模型很容易出現僞影。
針對這個些問題,本文提出的一種基於非監督學習的方法能夠對單目視頻中的深度和自我運動進行學習。唯一的可以稱得上“監督”的便是假設連續幀之間具有一致性與時間相關性。
爲了實現無監督學習,作者依賴的是自我運動,通過將兩個連續的幀輸入到視頻中,神經網絡產生對每一幀的深度估計與自我運動的估計。
這個方法之所以可以學習深度,在於深度和自我運動到一個新的幀的變換是能夠被學習的,這個變換可以用可微函數對其進行逼近。
作者本文的貢獻主要體現在三個方面:

Imposing 3D constraints

作者提出了一種可以在深度估計中對不連續直接懲罰的約束。通過3D點雲對深度進行對比。直觀地說,假設場景中沒有明顯的物體運動,可以通過應用ego運動或其逆運動將每幀的估計點雲轉換爲另一幀的預測點雲。在當時,這種直接施加3D幾何約束的方法是獨創的,並且取得了很顯著的效果。

這張圖還是很清晰的,對於xt-1和xt在估計點雲後分別通過T-1或T變換得到下一幀與前一陣的點雲估計,然後再與直接的點雲估計計算loss,從而更新T變換,這也代表着對自我運動的估計。

Principled masking

當轉換和投影時,場景中有的地方並沒有被包含在內,可能是因爲視差或者物體剛剛離開或進入到這個場景中,所以這部分的深度和像素信息是無用的。以前的方法通過向模型中添加通用學習掩碼或應用後處理來消除邊緣僞影來解決此問題。但是,學習mask不是很有效。解析地計算遮罩會給模型留下一個更簡單的學習問題。

Learning from an uncalibrated video stream

作者論證其提出的方法可以應用於任何單目視頻並且提出了一個新的數據集,是在自行車上通過手機拍攝的。

2、相關工作

深度和自我運動估計的經典方法涉及stereo和特徵匹配技術,而目前深度學習普遍取得了更好的效果。很多開創性的工作主要通過對深度傳感器中的信息進行監督學習,很多後來的方法把它們當做一種密集預測問題。很多方法(具體可以看原論文)採用了兩張圖片,即雙目圖像,Godard提出了一種使用矯正立體輸入的方法,視差匹配只需一維搜索。另外,還有的方法通過雙目圖以及深度、光流信息實現。
之前也有類似的非監督學習方法,但是本文主要的不同在於提出了一種3D損失。

3、具體方法

Problem Geometry

問題其實可以簡單的概括爲輸入xt-1和xt,估計深度dt-1和dt,以及兩者之間的自我運動變換Tt。dt好了以後就可以映射爲點雲

這裏的K是照樣機內參矩陣。

//這個公式還沒有特別看懂,有待研究

Principled Mask

如果要估計Xt,那麼需要一個Xt-1和Xt之間的座標映射,然後由於自我運動,某些部分可能會消失或者出現,兩者並不共有。尤其是前向自我運動,這種事情很容易發生,而這些部分很影響重建效果。之前的一些方法要麼忽略這個問題,要麼認爲採取了一些蜜汁方法,難以解釋。

文中提出的Principled Mask方法如上圖所示,可以把前後幀一致的座標保留下來。

Image Reconstruction Loss


這個loss的主要問題在於獲得預測結果的過程是粗略的,因爲需要可微。這個處理過程無法解釋光影、半透明和反射等的影響。總之,這個loss是有噪聲的以及有僞影。正則化被用來去減少僞影,相應的也平滑平預測。如果直接學習相鄰的幀就可以避免這些問題,但是就無法預測深度和自我運動了。

A 3D Point Cloud Alignment Loss


作者並沒有通過Q和Q的預測值建立相鄰幀的座標映射,而是直接比較點雲,這個3D loss使用了著名的剛性配準方法,Iterative Closest Point (ICP),用來降低對應點的差異。ICP交替計算兩個點雲之間的對應關係,並且計算了兩個點雲之間的一個最佳變換,然後不斷迭代。
不過ICP是不可微的,因爲只能通過它計算的產物粗略的估計,這也有利於反向傳播。

簡單來說就是這個變換會被不斷地調整,基於ICP的結果, 直到與預測值與真實值一致。這個變換也就是自我運動。

最終的loss如上,r代表真實值與預測值直接的差異。

Additional Image-Based Losses

Structured similarity (SSIM)是一種常用的評估預測圖質量的指標,這個loss也被用於訓練過程。它被用來評估兩張圖的的相似性。


根據優化目標設計了上了的loss,只需要最小化即可。
然後作者還設計了一種深度平滑loss。

Learning Setup


最後組成了一個最終loss,其中四個參數一次爲0.85,0.1,0.05, 0.5。然後採用SfMLearner architecture進行學習,基於DispNet實現。

3、實驗


總結

說實話這篇文章已經是少數能看懂一點的了,但是讀到現在還是很喫力,已經花了好久了。基於能看懂的一點點,還是總結一下。
作者基於之前一個非監督單目重建工作的思想,把loss從二維升級到3維,精心設計了由四個部分組成的loss進行學習,從變換學習質量、圖像質量等多個角度對學習進行限制。並且基於一些越界問題使用了Principled Mask。比較核心的思想還是前後幀的利用,通過估計到點雲,然後前後估計與真實估計計算loss用來學習,還是很值得借鑑的。其loss的設計也是基於了很多現有的差異或相似性計算指標實現的。另外,裏面出現了很多重建方面的方法與術語,值得細細品味。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章