论文笔记: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,损失完全可微。
L v s = ∑ s ∑ p ∣ I t ( p ) − I ^ s ( p ) ∣ \mathcal{L}_{v s}=\sum_{s} \sum_{p}\left|I_{t}(p)-\hat{I}_{s}(p)\right| Lvs=spIt(p)I^s(p)
p是像素索引, I t I_{t} It是目标图, I s I_{s} Is是源图, I ^ s \hat{I}_{s} I^s I s I_{s} Is使用深度 D ^ t \hat{D}_{t} D^t和位置矩阵 T ^ t → s \hat{T}_{t \rightarrow s} T^ts计算出来的。个人理解: I s I_{s} Is通过CNN参数产生 I ^ s \hat{I}_{s} I^s I ^ s \hat{I}_{s} I^s其实就是为了表示 I t I_{t} It,损失算之间差异。

那么就说道,先前工作使用此方法需要位姿信息,而本文直接再用一个网络估计位置。
在这里插入图片描述
解释上图:
深度预测只需要一张图 I t I_t It(训练时需要几张?什么方法),通过DepthCNN,得到预测深度图 D ^ t ( p ) \hat{D}_{t}(p) D^t(p),输入3帧 I t I_{t} It I t − 1 I_{t-1} It1 I t + 1 I_{t+1} It+1,通过PoseCNN,可以得到2个位置预测 T ^ t → t − 1 \hat{T}_{t \rightarrow t-1} T^tt1 T ^ t → t + 1 \hat{T}_{t \rightarrow t+1} T^tt+1。那么重点就是深度+位置希望重建目标targe view损失最小。

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

深度预测和之前使用视差方法不太一样,但是深度 D ^ t ( p ) \hat{D}_{t}(p) D^t(p)作用在另一张上算损失,思想是一样的。

上述具体关联,比如说s和t(上面是 I t I_t It I t − 1 I_{t-1} It1 I t + 1 I_{t+1} It+1):
p s ∼ K T ^ t → s D ^ t ( p t ) K − 1 p t p_{s} \sim K \hat{T}_{t \rightarrow s} \hat{D}_{t}\left(p_{t}\right) K^{-1} p_{t} psKT^tsD^t(pt)K1pt

上面计算出 p s p_s ps是连续的,就是带小数,所以又使用双线性插值了,这种方法可以微分,求梯度:
在这里插入图片描述
I ^ s ( p t ) = I s ( p s ) = ∑ i ∈ { t , b } , j ∈ { l , r } w i j I s ( p s i j ) \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) I^s(pt)=Is(ps)=i{t,b},j{l,r}wijIs(psij)

模型限制

有3个限制:

  • 没有移动的物体(-_-)
  • 没有遮挡
  • 表面Lambertian
    如果条件不满足,梯度就会被破坏,并可能抑制训练。为了提高鲁棒性:
    L v s = ∑ ⟨ I 1 , … , I N ⟩ ∈ S ∑ p E ^ s ( p ) ∣ I t ( 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| Lvs=I1,,INSpE^s(p)It(p)I^s(p)
    又为了防止 E ^ s \hat{E}_{s} E^s总是0,加了正则化项 L r e g ( E ^ s ) \mathcal{L}_{r e g}\left(\hat{E}_{s}\right) Lreg(E^s)
    ,也就是说,鼓励网络将视图综合目标最小化,但对模型未考虑的因素给予一定的松弛。

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

  • 使用带有深度网络小瓶颈的卷积编码器-解码器架构,隐式限制输出全局平滑,促进梯度从有意义的区域传播到附近的区域??
  • 多层和平滑损失
    本文使用第2种方法,所以最终损失:
    L final = ∑ L v s l + λ s L smooth l + λ e ∑ L reg ( E ^ s l ) \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) Lfinal=Lvsl+λsLsmoothl+λeLreg(E^sl)

网络结构

在这里插入图片描述
对于单视图深度,使用DispNet(a),输出多尺度深度图。b是位姿估计和可解释性网络,在反卷积之前,输出6自由度的位姿,只有再反卷积得到 E ^ s \hat{E}_{s} E^s

四、实验结果

在这里插入图片描述
最后2行处理的不好,大场景和靠近镜头。
在这里插入图片描述

位姿误差和SLAM对比:
在这里插入图片描述

可解释高亮部分说明不能计算运动:
在这里插入图片描述

五、结论与思考

作者结论

作者也提到了还未能解决的问题:

  • 场景在动,比如行人,路上行驶的车,还有遮挡问题
  • 相机内参固定了
  • 没有转成3D点云。。

总结

提出位置网络,训练时不是单独训练的,而是结合深度,来重建目标图。但是在使用时是各种的2个网络。

思考

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值