論文筆記:Unsupervised Learning of Depth and Ego-Motion from Video(無監督深度預測系列4:PoseCNN方法)

一、基本信息

標題:Unsupervised Learning of Depth and Ego-Motion from Video
時間:2017
論文領域:深度預測、深度學習
引用格式:Zhou T, Brown M, Snavely N, et al. Unsupervised learning of depth and ego-motion from video[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 1851-1858.

二、研究背景

  • SfM: 對於低紋理,複雜的幾何/光度學,薄的結構,和遮擋,存在問題。最近使用深度學習方法解決。
  • Warping-based view synthesis:和視差不太一樣,基於扭曲的方法被迫學習幾何和/或對應的中間預測

三、創新點

本文在之前系列加入了位置估計網絡。
在這裏插入圖片描述
有2個網絡,聯合訓練,單獨使用。假設場景是剛性的(事實上KITTI中車是會動的,使用這篇方法有所解決),場景外觀變換主要是因爲相機動了。

把合成視圖作爲監督(無監督)

CNN產生新的合成視圖作爲關鍵的監督信息。給定一個場景的一個輸入視圖,合成一個新的場景圖像從不同的相機姿勢。合成過程使用CNN,損失完全可微。
Lvs=spIt(p)I^s(p)\mathcal{L}_{v s}=\sum_{s} \sum_{p}\left|I_{t}(p)-\hat{I}_{s}(p)\right|
p是像素索引,ItI_{t}是目標圖,IsI_{s}是源圖,I^s\hat{I}_{s}IsI_{s}使用深度D^t\hat{D}_{t}和位置矩陣T^ts\hat{T}_{t \rightarrow s}計算出來的。個人理解:IsI_{s}通過CNN參數產生I^s\hat{I}_{s}I^s\hat{I}_{s}其實就是爲了表示ItI_{t},損失算之間差異。

那麼就說道,先前工作使用此方法需要位姿信息,而本文直接再用一個網絡估計位置。
在這裏插入圖片描述
解釋上圖:
深度預測只需要一張圖ItI_t(訓練時需要幾張?什麼方法),通過DepthCNN,得到預測深度圖D^t(p)\hat{D}_{t}(p),輸入3幀ItI_{t}It1I_{t-1}It+1I_{t+1},通過PoseCNN,可以得到2個位置預測T^tt1\hat{T}_{t \rightarrow t-1}T^tt+1\hat{T}_{t \rightarrow t+1}。那麼重點就是深度+位置希望重建目標targe view損失最小。

比如It1I_{t-1} 結合 D^t(p)\hat{D}_{t}(p)T^tt1\hat{T}_{t \rightarrow t-1}生成I^t1(p)\hat{I}_{t-1}(p),希望和ItI_t的光度重建誤差最小,也就是It(p)I^t1(p)\left|I_{t}(p)-\hat{I}_{t-1}(p)\right|要小。

深度預測和之前使用視差方法不太一樣,但是深度 D^t(p)\hat{D}_{t}(p)作用在另一張上算損失,思想是一樣的。

上述具體關聯,比如說s和t(上面是ItI_tIt1I_{t-1}It+1I_{t+1}):
psKT^tsD^t(pt)K1ptp_{s} \sim K \hat{T}_{t \rightarrow s} \hat{D}_{t}\left(p_{t}\right) K^{-1} p_{t}

上面計算出psp_s是連續的,就是帶小數,所以又使用雙線性插值了,這種方法可以微分,求梯度:
在這裏插入圖片描述
I^s(pt)=Is(ps)=i{t,b},j{l,r}wijIs(psij)\hat{I}_{s}\left(p_{t}\right)=I_{s}\left(p_{s}\right)=\sum_{i \in\{t, b\}, j \in\{l, r\}} w^{i j} I_{s}\left(p_{s}^{i j}\right)

模型限制

有3個限制:

  • 沒有移動的物體(-_-)
  • 沒有遮擋
  • 表面Lambertian
    如果條件不滿足,梯度就會被破壞,並可能抑制訓練。爲了提高魯棒性:
    Lvs=I1,,INSpE^s(p)It(p)I^s(p)\mathcal{L}_{v s}=\sum_{\left\langle I_{1}, \ldots, I_{N}\right\rangle \in \mathcal{S}} \sum_{p} \hat{E}_{s}(p)\left|I_{t}(p)-\hat{I}_{s}(p)\right|
    又爲了防止E^s\hat{E}_{s}總是0,加了正則化項Lreg(E^s)\mathcal{L}_{r e g}\left(\hat{E}_{s}\right)
    ,也就是說,鼓勵網絡將視圖綜合目標最小化,但對模型未考慮的因素給予一定的鬆弛。

克服梯度局部性2種方法:

  • 使用帶有深度網絡小瓶頸的卷積編碼器-解碼器架構,隱式限制輸出全局平滑,促進梯度從有意義的區域傳播到附近的區域??
  • 多層和平滑損失
    本文使用第2種方法,所以最終損失:
    Lfinal=Lvsl+λsLsmoothl+λeLreg(E^sl)\mathcal{L}_{\text {final}}=\sum \mathcal{L}_{v s}^{l}+\lambda_{s} \mathcal{L}_{\text {smooth}}^{l}+\lambda_{e} \sum \mathcal{L}_{\text {reg}}\left(\hat{E}_{s}^{l}\right)

網絡結構

在這裏插入圖片描述
對於單視圖深度,使用DispNet(a),輸出多尺度深度圖。b是位姿估計和可解釋性網絡,在反捲積之前,輸出6自由度的位姿,只有再反捲積得到E^s\hat{E}_{s}

四、實驗結果

在這裏插入圖片描述
最後2行處理的不好,大場景和靠近鏡頭。
在這裏插入圖片描述

位姿誤差和SLAM對比:
在這裏插入圖片描述

可解釋高亮部分說明不能計算運動:
在這裏插入圖片描述

五、結論與思考

作者結論

作者也提到了還未能解決的問題:

  • 場景在動,比如行人,路上行駛的車,還有遮擋問題
  • 相機內參固定了
  • 沒有轉成3D點雲。。

總結

提出位置網絡,訓練時不是單獨訓練的,而是結合深度,來重建目標圖。但是在使用時是各種的2個網絡。

思考

參考

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