论文笔记: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个网络。

思考

参考

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