Depth from Videos in the Wild 剖析

2019年7月17日11:37:05

论文 Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unknown Cameras

主要有几个亮点:

1,处理移动物体时 instance segmentation and tracking are not required,不需要实例分割,

  虽然文章里说还是需要一个网络预测可能移动的区域,但比起需要实例分割,难度还是下降了点。

2,occlusion-aware consistency 遮挡情形下的深度预测一致性

3,能够通过网络学习内参

这篇文章还是有点干货的,毕竟谷歌出品。

 

 

先讨论第二点,遮挡情形下的深度预测的问题

Depth from Videos in the Wild 剖析Depth from Videos in the Wild 剖析

这里很好理解也比较好实现:

左右两个相机对同一个场景进行观察,但是因为存在遮挡的原因,左右两个相机对

同一个三维点的深度预测结果不一致。这些遮挡区域有什么特点呢?

左右两个相机对同一个三维点的预测深度分别为$\mathbf{z}_{L}$和$\mathbf{z}_{R}$

然后

把$\mathbf{z}_{L}$变换(warp)到右相机所在的位置得到深度$z_{L}^{\prime}$

把$\mathbf{z}_{R}$变换到左相机所在的位置得到深度$z_{R}^{\prime}$

we apply photometric and geometric losses only at pixels where $z_{R}^{\prime} \leq \mathbf{z}_{R}$

and $z_{L}^{\prime} \leq \mathbf{z}_{L}$.

只在 $z_{R}^{\prime} \leq \mathbf{z}_{R}$ 和 $z_{L}^{\prime} \leq \mathbf{z}_{L}$的区域计算 photometric 和 geometric losses。

 

 

为什么是这些区域?

理想情况如下:

Depth from Videos in the Wild 剖析

左相机L和右相机R观察同一个三维点O。

O到左相机的光心$O_L$距离为$z_L$,右相机类似。

从右相机到左相机的变换为$T_{LR}$,因此有如下关系:

$z_{R}^{\prime} = z_L=T_{LR}*z_R$

$z_{L}^{\prime} = z_R=T_{RL}*z_L$

也就是说,在两个不同的位置观察到的同一个三维点的深度$z_L$和$z_R$看起来大小

不一样,但是换算到到对方的位置后,应该是相等的。

下面是有遮挡的情况中的一种(右相机看的到,左相机看不到):

Depth from Videos in the Wild 剖析

这里就不仅要像sfmlearner中做warp ref img to tgt ,还要在两个相机位置上互相warp深度图,

再把上述区域剔除出计算loss的部分。

深度不一致,一是因为有遮挡,二是因为这个三维点在运动。

Depth from Videos in the Wild 剖析

所以这个方式对于处理移动物体的深度预测也是有帮助的

总的来讲就是要让loss计算的更清楚,把不该计算的部分剔除出去。

 

2019年7月18日12:18:13

我想了一下,warp ref_img和warp 深度图Z是一样的,利用现有设施简单改造下

就可以达到目标。

 

2019年7月19日23:42:42

遮挡的处理会干扰ssim的计算。。。

Depth from Videos in the Wild 剖析

做法是当两帧之间的depth discrepancy 相比 depth discrepancy 的RMS较大

的时候,降低ssim在这个区域的权重?

 

2019年7月20日10:13:56

关于内参的学习,之前在sfmlearner剖析的博客中简单推导了一下公式,

这篇文章中不用T,用(R*XYZ+t)的写法替换,其他都是一样的:

$$

Z \boldsymbol{P}_{u v}=Z\left[\begin{array}{l}{u} \\ {v} \\ {1}\end{array}\right]=\boldsymbol{K}\left(\boldsymbol{R} \boldsymbol{P}_{w}+\boldsymbol{t}\right)=\boldsymbol{K} \boldsymbol{T} \boldsymbol{P}_{w}

$$

写成:

$depth_2*uv_2 = K\left(R*XYZ_1+t\right)$

$depth_2*uv_2 = K*R*depth_1*K^{-1}*uv_1+K*t$

调整下$depth_1$的顺序:

$$ depth_2*uv_2 = K*R*K^{-1}*depth_1*uv_1+K*t \tag{0} $$

这个就是论文中的方程1:

$$ z^{\prime} p^{\prime}=K R K^{-1} z p+K t \tag{1}$$

这里就没有把$depth_2$省略。

 

 

 

 

上一篇:博客DeOldify: Colorizing and Restoring Old Images and Videos with Deep Learning整理+笔记


下一篇:目标跟踪数据集整理(五)---NfS