sfm-learner学习心得

一、 sfm-learner

A、sfm-learner核心运行流程图如下图所示

sfm-learner学习心得_第1张图片
核心:Depth CNN和Pose CNN
具体过程:
1、目标视图作为Depth CNN的输入生成具有每个像素深度的深度图,即 Dt^ D t ^
2、对于Pose CNN则将目标视图和源视图作为输入,输出相机的相对姿态 T^tt1 T ^ t → t − 1 , T^tt+1 T ^ t → t + 1
3、Depth CNN和Pose CNN的输出,即 Dt^ D t ^ T^tt1 T ^ t → t − 1 , T^tt+1 T ^ t → t + 1 ;用来逆向翘曲(wrap)源视图以生成目标视图。
4、利用复原图与目标视图之间的误差用于训练Depth CNN和Pose CNN,至此我们可以无监督的训练我们的神经网络。
Lvs=sp|It(p)I^s(p)| L v s = ∑ s ∑ p | I t ( p ) − I ^ s ( p ) |

B、Illustration of the differentiable image warping process.

可微深度图像渲染

对于目标视图上的每一点 Pt P t ,首先利用预测的深度和相机姿态将它们映射(project)到源视图上,然后利用双线性插值得到翘曲图像在 Pt P t 处的值。

psKT^tsD^t(pt)K1pt p s − K T ^ t → s D ^ t ( p t ) K − 1 p t

其中 Ps P s 是连续的,可以利用双微边采样,线性插值 Ps P s 四个相邻像素的值来近似 Is(Ps) I s ( P s ) 、用一个 ωij ω i j 表示线性插值,此处通过投影几何学得到的像素warping的坐标能够充分利用估计的深度和估计的相机姿态。

建模的限制

基于三个假设:

  1. 场景是静态的
  2. 源视图与目标视图之间没有遮挡
  3. 表面是理想镜面反射,这样图像的一次性误差才有意义。
    对目标视图的每个像素添加置信系数 E^s E ^ s 得到:
    Lvs=spE^s(p)|It(p)I^s(p)| L v s = ∑ s ∑ p E ^ s ( p ) | I t ( p ) − I ^ s ( p ) |

克服梯度的局限性

模型的梯度主要来源于 I(pt) I ( p t ) 与其相邻的四个 I(pt) I ( p t ) ,如果 ps p s 位于一个缺少纹理的区域或者当前的估计不够准确。解决策略:
1、利用网络结构约束输出平滑,是的梯度从有意义的区域传输到邻近的区域;
2、明确多尺度与平滑损失:允许梯度能直接从更大的空间区域得到。通过将第二种思路应用到该工作中,用为他对网络结构框架不敏感,预测深度图时,我们通过最小化二阶梯度的 L1 L 1 范数来得到。最后的损失函数:
这里写图片描述

二、 sfm-Net

sfm-learner学习心得_第2张图片
一对帧作为输入,我们的模型将帧与帧之间的像素运动分解到三维场景深度,三维相机旋转,平移

你可能感兴趣的:(sfm)