一、基本信息
标题: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=s∑p∑∣∣∣It(p)−I^s(p)∣∣∣
p是像素索引,It是目标图,Is是源图,I^s是Is使用深度D^t和位置矩阵T^t→s计算出来的。个人理解:Is通过CNN参数产生I^s,I^s其实就是为了表示It,损失算之间差异。
那么就说道,先前工作使用此方法需要位姿信息,而本文直接再用一个网络估计位置。

解释上图:
深度预测只需要一张图It(训练时需要几张?什么方法),通过DepthCNN,得到预测深度图D^t(p),输入3帧It、It−1、It+1,通过PoseCNN,可以得到2个位置预测T^t→t−1、T^t→t+1。那么重点就是深度+位置希望重建目标targe view损失最小。
比如It−1 结合 D^t(p)和T^t→t−1生成I^t−1(p),希望和It的光度重建误差最小,也就是∣∣∣It(p)−I^t−1(p)∣∣∣要小。
深度预测和之前使用视差方法不太一样,但是深度 D^t(p)作用在另一张上算损失,思想是一样的。
上述具体关联,比如说s和t(上面是It和It−1、It+1):
ps∼KT^t→sD^t(pt)K−1pt
上面计算出ps是连续的,就是带小数,所以又使用双线性插值了,这种方法可以微分,求梯度:

I^s(pt)=Is(ps)=i∈{t,b},j∈{l,r}∑wijIs(psij)
模型限制
有3个限制:
- 没有移动的物体(-_-)
- 没有遮挡
- 表面Lambertian
如果条件不满足,梯度就会被破坏,并可能抑制训练。为了提高鲁棒性:
Lvs=⟨I1,…,IN⟩∈S∑p∑E^s(p)∣∣∣It(p)−I^s(p)∣∣∣
又为了防止E^s总是0,加了正则化项Lreg(E^s)
,也就是说,鼓励网络将视图综合目标最小化,但对模型未考虑的因素给予一定的松弛。
克服梯度局部性2种方法:
- 使用带有深度网络小瓶颈的卷积编码器-解码器架构,隐式限制输出全局平滑,促进梯度从有意义的区域传播到附近的区域??
- 多层和平滑损失
本文使用第2种方法,所以最终损失:
Lfinal=∑Lvsl+λsLsmoothl+λe∑Lreg(E^sl)
网络结构

对于单视图深度,使用DispNet(a),输出多尺度深度图。b是位姿估计和可解释性网络,在反卷积之前,输出6自由度的位姿,只有再反卷积得到E^s
四、实验结果

最后2行处理的不好,大场景和靠近镜头。

位姿误差和SLAM对比:

可解释高亮部分说明不能计算运动:

五、结论与思考
作者结论
作者也提到了还未能解决的问题:
- 场景在动,比如行人,路上行驶的车,还有遮挡问题
- 相机内参固定了
- 没有转成3D点云。。
总结
提出位置网络,训练时不是单独训练的,而是结合深度,来重建目标图。但是在使用时是各种的2个网络。
思考
参考