Neural-RGBD: 从单目视频序列中估计深度及其不确定度

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者:路痴走不出户部巷 | 来源:知乎

https://zhuanlan.zhihu.com/p/111192056

本文仅做学术分享,如有侵权,请联系删除。

论文地址:arxiv.org/pdf/1901.0257
github: github.com/NVlabs/neura

1. Introduction

这篇论文断断续续地研读以及代码重构了很久,做一个总结(保姆级详解).

首先这篇工作的基本insight,提出这样一个观点,基于Deep Learning的深度估计的方法,应该估计的是每个像素点的深度值的概率分布,而不是某个确定的值. 接着,可以通过Bayesian等方法,随时间整合优化这些概率,以减少深度估计的不确定性并提高准确率.

论文的两个关键点:

对于每个像素点,估计它深度的概率分布DPV( Depth Probabilty Distribution ). DPV事实上提供了深度的最大似然估计和相对应的不确定性测量;

连续帧的DPV随着时间聚合优化,减少不确定性;

2. Network

整体pipeline:

网络共分为三个部分,每个部分分工明确:

1. D-Net: Estimating DPV

顾名思义,这个子网络的作用是用来估计条件DPV. DPV(Depth Probabilty Volume), 即的具体含义就是,像素点的深度值为的概率,在我们预先设定的深度范围之内. 输入是连续的局部视频帧(连续5帧),其中中间的一帧叫作参考帧(ref_frame), 其余四帧叫作源帧(src_frames). 在进行常规的特征提取操作后,得到这一组输入数据的feature, 通过各个src_frame到ref_frame的pose和在预设深度范围内的candidate_depth, 将源帧的feature都warp到参考帧. 换个说法,就是利用已知的pose,得到各个src_features在不同candidate_depth下warp到ref_view的features. 那么,这些warp得到的features再与本来的ref_feature进行L1或者L2的距离计算,并经过softmax函数则可以得到我们需要的cost volume, 这个cost volume是整个网络的隐状态.(这里的costV是一个[BS, D, H, W]的tensor,通俗一点的物理含义就是,在H×W的特征图上,每个像素点的深度值为d的概率,d是将预设的深度范围均分成D等份得到的各个candidate depth).
这部分可以表示为:

2. K-Net: Integratimg DPV over time

这个子网络的作用是将估计出的DPV随着时间聚合起来,以较少深度估计的不确定性.D-Net的输出代表条件概率分布,表示在已知第1-t帧的costV下,第t帧的cost volume.利用朴素贝叶斯定理,将当前帧t的DPV warp到下一帧(t+1)去,得到第t+1帧的DPV(相当于在已知1-t帧的DPV的情况下预测得到的第t+1帧的DPV),那么,同时还可以通过D-Net得到t+1帧的DPV(当有新的输入时).此时就可以更新得到在已知观测的情况下,第t+1帧的DPV.

做一个简单变形,式子(6)转化成:

但是利用贝叶斯定理存在一个问题,在预下一帧DPV的过程中,有用的和错误的信息都会被使用到.比方说出现遮挡时,遮挡边缘处的深度发生突变,直接使用贝叶斯定理会将这些错误的信息传递到下一帧去. 针对这个问题,最简单直接的做法是较少预测值的权重,但是在减少错误信息传播的同事也阻止了正确信息的更新.因此,采用了K-Net来学习预测的DPV和观测的DPV之间的残差. 当残差较小时,DPV几乎不更新,当有深度突变时,残差值很大,此时会被K-Net纠正. 通过这种方式,就实现了自适应改变DPV权重.

需要注意的是(也是个人看代码觉得很不好理解的一点),对与一个视频序列来说,只有第二个以及以后的局部小窗口才有这一步,而第一个小窗口,不存在上一帧预测得到的DPV. 也就是说,在K-Net中,t一定是>=2的(假设下标从1开始). 换句话说,在这个部分中得到的第t帧的DPV,不仅包含了实际的输入,还包含了第t-1帧对第t帧的DPV的预测.

3. R-Net: Upsample & Refine

这部分的功能比较简单,就是将经过feature_extrator后,分辨率变小的costV上采样回输入数据的分辨率率大小, 同时用3D conv进行refine.

4. LOSS

最终使用的是Negative Log-Likelihood(NLL) loss, 用网络输出的DPV与实际的depth进行比较. 看论文中,loss包含四项,分别是:
(1) D-Net输出的第t帧的DPV,与第t帧的gt_depth (1/4 resolution);
(2) D-Net的DPV经过R-Net refine后,与第t帧的gt_depth (input resolution);
(3) 经过K-Net的优化后得到的DPV,与第t帧的gt_depth (1/4 resolution) (t>=2);
(4) 经过K-Net的优化后得到的DPV, 再经过R-Net的refine,与第t帧的gt_depth (input resolution) (t>=2

3. Experiment

最后亮一下在KITTI数据集上的测试结果,请教过原作者,这是在1-60m范围内的结果.

最后的最后,经过一段时间的积极复现,终于把这份开源代码简化整理出来了!

推荐阅读:

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值