论文阅读笔记-Unsupervised Learning of Depth and Ego-Motion from Video

该论文提出了一种利用视频中相邻帧的视角合成进行无监督深度和相机位姿估计的方法。通过深度和相机位姿网络,处理动态物体和遮蔽问题,并引入了解释性掩模。此外,使用二阶导数的L1正则化处理低纹理区域。尽管存在对动态物体处理的局限性,但这种方法为单目深度估计开辟了新的途径。
摘要由CSDN通过智能技术生成

原论文链接
arXiv Unsupervised Learning of Depth and Ego-Motion from Video
CVPR 2017 open access Unsupervised Learning of Depth and Ego-Motion from Video

据我所知,这是第一篇使用视频来进行无监督单目深度估计学习的论文。论文主要贡献是:利用视频中相邻两帧的视角合成作为监督信号来进行深度估计和相机位姿估计的训练。(所以后面也有人管这叫自监督学习。)

本博客仅为个人理解,推荐阅读原文,原文写得也非常清楚。

1 方法

在开头提到过利用视频中相邻两帧的视角合成作为监督信号来进行深度估计和相机位姿估计的训练是本文主要的贡献。

本章将详细说明该方法如何将相邻帧的视角合成作为监督信号,作者如何处理违背假设和视角合成没有意义的地方。

需要注意的是:本文的方法假设相邻帧之间的场景变化只受相机变化的影响,也就是说,视频中的运动物体会对本文的方法造成比较大的影响。

1.1 将视角合成作为监督信号

将视角合成作为监督信号的主要过程见图1,作者将视频中的一帧 I t I_t It作为目标帧,也就是目标视角。然后将 I t I_t It相邻的图像 I t − 1 I_{t-1} It1 I t + 1 I_{t+1} It+1作为源帧/源视角 I s I_{s} Is
首先将目标图像 I t I_t It经过深度估计网络得到对应的深度图 D ^ t \hat{D}_{t} D^t,将目标图像 I t I_t It分别和源图像 I s I_{s} Is作为相机位姿估计网络的输入得到相对相机位姿 T ^ t → s \hat{T}_{t\rightarrow s} T^ts。然后将利用目标图像深度图 D ^ t \hat{D}_{t} D^t,相机的内外参将目标图像 I t I_{t} It投影弯曲到目标图像的平面上。投影弯曲的过程见图2。投影(Project)的过程主要通过下面的公式(1)来进行。
p s ∼ K T ^ t → s D ^ t ( p t ) K − 1 p t \begin{align} p_{s} \sim K\hat{T}_{t\rightarrow s}\hat{D}_{t}(p_{t})K^{-1}p_{t} \end{align} psKT^tsD^t(pt)K1pt
经过投影之后,利用投影位置附近的四个像素的值进行可微双线性采样(differentiable bilinear sampling),采样后 I ^ s \hat{I}_{s} I^s p t p_{t} pt位置的值为
I ^ s ( p t ) = I s ( p s ) = ∑ i ∈ { t , b } , j ∈ { l , r } w i j I s ( p s i j ) \begin{align} \hat{I}_{s}(p_{t}) = I_{s}(p_{s}) = \sum_{i\in \{t,b\}, j\in \{l,r\}}w^{ij}I_{s}(p_{s}^{ij}) \end{align} I^s(pt)=Is(ps)=i{t,b},j{l,r}wijIs(psij)
其中 ∑ i , j w i j = 1 \sum_{i,j}w^{ij}=1 i,jwij=1 t , b , l , r t,b,l,r t,b,l,r分别表示 t o p , b o t t o m , l e f t , r i g h t top, bottom, left, right top,bottom,left,right
得到了变化后的源图像 I ^ s \hat{I}_s I^s后,利用目标图像和源图像计算损失 L v s \mathcal{L}_{vs} Lvs,这与后面利用SSIM来计算该损失不同,这里直接用L1距离来计算。
L v s = ∑ < I 1 , . . . , I N > ∈ S ∑ p ∣ I t ( p ) − I ^ s ( p ) ∣ \begin{align} \mathcal{L}_{vs} = \sum_{<I_{1},...,I_{N}>\in \mathcal S}\sum_{p}|I_{t}(p)-\hat{I}_{s}(p)| \end{align} Lvs=<I1,...,IN>∈SpIt(p)I^s(p)
图1  将视角合成作为监督信号

图1 将视角合成作为监督信号的总览

图2  目标图像的投影弯曲过程

图2 目标图像的投影弯曲过程

1.2 处理违背假设的部分

以下三种情况违背了作者最初的假设:

  1. 场景中包含有运动的物体
  2. 源视角和目标视角之间有遮蔽和未遮蔽的变化,举个例子:目标视角中原本没有被遮蔽的物体,在源视角被遮蔽了。
  3. 物体表面不符合Lambertian

为处理这几种情况,作者在相机位姿估计网络中添加了解释性网络,解释性网络输出解释性掩模 E ^ s \hat{E}_{s} E^s。并利用解释性掩模 E ^ s \hat{E}_{s} E^s来修改损失 L v s \mathcal{L}_{vs} Lvs
L v s = ∑ < I 1 , . . . , I N > ∈ S ∑ p E ^ s ( p ) ∣ I t ( p ) − I ^ s ( p ) ∣ \begin{align} \mathcal{L}_{vs} = \sum_{<I_{1},...,I_{N}>\in \mathcal S}\sum_{p}\hat{E}_{s}(p)|I_{t}(p)-\hat{I}_{s}(p)| \end{align} Lvs=<I1,...,IN>∈SpE^s(p)It(p)I^s(p)
但是这种情况下,为了最小化损失 L v s \mathcal{L}_{vs} Lvs,网络会将解释性掩模 E ^ s \hat{E}_{s} E^s预测为0,所以作者增加了正则化项 L r e g ( E ^ s ) \mathcal{L}_{reg}(\hat{E}_{s}) Lreg(E^s)来通过最小化解释性掩模 E ^ s \hat{E}_{s} E^s与1的交叉熵损失来鼓励网络不将解释性掩模 E ^ s \hat{E}_{s} E^s预测为0。

1.3 处理视角合成没有意义的地方

因为损失 L v s \mathcal{L}_{vs} Lvs是由像素间的强度差来获取的。 L v s \mathcal{L}_{vs} Lvs在低纹理区域时没有意义,所以作者添加了损失函数 L s m o o t h \mathcal{L}_{smooth} Lsmooth,该损失最小化预测深度图的二阶导的 L 1 L_{1} L1正则化。

2 结论

作者提出了一个端到端的无监督单目深度估计方法。作者在文章结尾提出了展望:

  1. 对动态物体和遮蔽的处理不好,可能可以通过结合运动分割来处理。
  2. 需要相机内参,不能任意使用网络中的视频来训练。
  3. 深度图知识3D场景的一个简单的表示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值