ICCV 2023 | R3D3:从多视图像实现动态场景的密集三维重建-程序员宅基地

技术标签: 3d  

作者:Scentea  | 来源:3D视觉工坊

在公众号「3D视觉工坊」后台,回复「原论文」即可获取论文pdf。

添加微信:dddvisiona,备注:三维重建,拉你入群。文末附行业细分群。

R3D3是一种用于密集三维重建和自我运动估计的多摄像头算法,该方法通过迭代地结合多摄像头的几何估计和单目深度细化来实现一致的密集三维重建。R3D3的核心思想是将单目线索与来自多摄像头的空间-时间信息的几何深度估计相结合,通过在共视图中迭代密集对应关系,计算准确的几何深度和位姿估计。为了在多摄像头设置中确定共视帧,作者提出了一种简单而有效的多摄像头算法,用于平衡性能和效率。深度细化网络以几何深度和对应的不确定性为输入,并生成细化深度,以改善例如移动物体和低纹理区域的重建,细化的深度估计作为下一次几何估计迭代的基础,从而在增量几何重建和单目深度估计之间闭合循环。R3D3在DDAD和NuScenes基准测试中实现了最优异的多摄像头深度估计性能,与单目SLAM方法相比有更高的精度和鲁棒性。这里也推荐「3D视觉工坊」新课程彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

1. 引言

密集三维重建和自我运动估计是自动驾驶和机器人领域的关键挑战。与当前复杂的多模态系统相比,多摄像头系统提供了一种更简单、低成本的替代方案,然而,基于摄像头的复杂动态场景的三维重建一直面临极大的困难,因为现有的解决方案通常会产生不完整或不连贯的结果。作者提出了R3D3,一种用于密集3D重建和自我运动估计的多摄像头系统,通过迭代地结合多摄像头的几何估计和单目深度细化来实现一致的密集三维模型。

将感知输入转化为环境的密集三维模型,并跟踪观察者的位置是机器人学和自动驾驶的主要研究内容之一。现代系统依赖于融合多种传感器模态,如摄像头、激光雷达、雷达、惯性测量单元等,使硬件和软件栈变得复杂且昂贵,相比之下,多摄像头系统提供了一种更简单、低成本的替代方案,已广泛应用于现代消费者汽车。然而,基于图像的密集3D重建和自我运动估计在大规模动态场景中仍是一个开放性的研究问题,因为移动物体、重复纹理以及光学退化等方面都带来了显著的算法挑战。

b5667d4a789760582846fd484d28b2e0.png图 1 R3D3网络结构概略图这篇论文的主要贡献包括以下三点:

  1. 提出了一种用于密集三维重建和自我运动估计的多摄像头算法R3D3。

  2. 通过一种新颖的多摄像头密集束调整(DBA)方法和多摄像头共视图,实现了准确的几何深度和位姿估计。

  3. 通过深度细化网络,整合了先验几何深度和不确定性以及单目线索,从而提高了密集三维重建的质量。

2. 相关工作

这篇论文的相关工作部分主要讨论了多视点立体(MVS)方法、视觉SLAM方法和自监督深度估计方法。MVS方法旨在从具有已知位姿的一组图像中恢复密集的3D场景结构;视觉SLAM方法关注从视觉输入中联合映射环境和跟踪观察者的轨迹,即一个或多个RGB摄像头;自监督深度估计方法关注从单目线索预测密集深度,如透视物体表面和场景上下文。

Multi-view Stereo(MVS)方法旨在从具有已知位姿的一组图像中恢复密集的3D场景结构。尽管早期的研究主要关注经典优化方法,但近年来,许多研究开始利用卷积神经网络(CNN)来估计多个深度假设平面上的特征匹配,从而在3D代价体中进行匹配。早期方法采用多个图像对之间的多个代价体,而最近的方法则使用整个图像集的单一代价体,这些方法假设在一个受控环境中有许多高度重叠的图像和已知的位姿来创建三维代价体。相反,本文的目标是从未知轨迹的移动平台上的任意多摄像头设置中实现稳健的密集3D重建。

传统的SLAM系统通常分为不同阶段,首先将图像处理为关键点匹配,然后使用这些匹配来估计3D场景几何和相机轨迹,另一类方法直接基于像素强度优化3D几何和相机轨迹。最近的方法将基于CNN的深度和姿态预测集成到SLAM流程中,这些方法面临的共同挑战是由于低纹理区域、动态物体或光学退化引起的像素对应中的离群值,需要使用鲁棒估计技术来过滤这些离群值。

自监督深度估计的开创性工作是由Zhou等人[1]提出的,他们通过最小化视图合成损失来学习深度估计,该损失使用几何约束将参考视图中的颜色信息变形到目标视图。后续的研究主要关注改进网络架构、损失正则化和训练策略,最近的方法从多视图立体视觉中汲取灵感,提出使用3D代价体来整合时间信息。然而,这些方法仍然关注单摄像头、前向场景,而这并不能反映自动驾驶汽车中真实世界的传感器设置。另一类最近的研究关注利用多摄像头设置中重叠摄像头的空间信息,这些方法利用空间上下文来提高准确性,并实现绝对尺度深度学习。然而,这些方法忽略了时间域,而时间域对深度估计提供了有用的线索。

3.方法

R3D3 算法通过结合单目视觉线索和来自多摄像头的空间-时间信息的几何深度估计,实现了在动态室外环境中的密集、一致的三维重建。该方法首先利用多摄像头系统的空间-时间信息进行几何深度估计和相机位姿估计,为了提高几何深度不可靠的区域(如移动物体或低纹理区域)的重建质量,作者引入了一个深度细化网络,该网络接受几何深度和不确定性作为输入,并产生细化后的深度。此外,细化后的深度估计作为下一次几何估计迭代的基础,从而在增量几何重建和单目深度估计之间形成闭环。97d68213684c23f6ec1c7e89b817e7dd.png

图 2 R3D3网络结构图

3.1 特征提取和相关性

本小节详细介绍了如何从每个图像中提取相关特征和上下文特征,以及如何构建共视图和计算特征相关性。主要内容包括:

  • 特征提取:通过深度相关编码器(ϕ)和上下文编码器(φ)从每个图像中分别提取相关特征和上下文特征。

  • 共视图:将相关特征和上下文特征存储在一个图中。作者构建了具有三种边的共视图:时间边、空间边和空间-时间边。为了在多摄像头设置中实现高效的共视图构建,作者设计了一个简单而有效的共视图构建算法。

  • 特征相关性:对于图中的每条边,计算特征相关性。通过点积计算4D特征相关体,并使用查找操作符限制相关搜索区域。

这一部分的核心是如何从图像中提取特征并构建共视图,以便在后续步骤中进行几何深度估计和相机位姿估计。

3.2 深度和位姿估计

阐述了如何根据共视图中的每条边来估计相对位姿和深度。这部分主要包括流量校正、多相机密集束调整以及深度和位姿聚合。首先,给定和的初始估计,计算诱导流以采样相关体;然后将采样的相关特征、上下文特征ψ和诱导流输入到卷积GRU中。GRU预测流残差和置信权重;接着,作者提出了一种多相机密集束调整(DBA)算法,用于在共视图中的每条边上迭代地优化深度和相对位姿估计;最后,在多次迭代后,作者使用加权平均法聚合每个节点的深度和位姿估计,以得到最终的深度图和相机位姿。

3.3 深度细化

本小节提出了一种深度优化方法,通过结合几何深度估计和单目视觉线索,可以在几何估计不可靠的情况下改善重建效果。作者使用了一个由参数表示的卷积神经网络,将深度、置信度和对应的图像作为输入。网络预测改进后的密集深度。通过使用每个边缘置信度权重的最大值,计算每个帧的深度置信度。对于低于阈值β的置信度区域,将输入深度和置信度权重设为零。将这些与图像进行连接,并将深度和置信度与1/8缩放的特征进行连接。与之前的方法类似,输出深度在四个尺度上进行预测。为了适应传感器设置中不同摄像头之间的焦距差异,对输出进行焦距缩放。

不同于几何方法,单目深度估计器从语义线索中推断深度,这使得它们在不同领域之间的泛化能力受到限制。因此,作者在原始的真实世界视频上通过自监督的方式训练,最小化视图合成损失。通过计算目标图像Itc和参考图像It'c'在目标视点上的光度误差,实现自监督深度估计。自监督深度估计是一个经过充分研究的领域,作者遵循了应用正则化技术过滤光度误差的通用做法。

3.4 推理过程

在论文的 3.4 小节中,作者详细描述了整个推理过程,包括如何从多个摄像头获取数据、估计深度和相对姿态、以及如何优化和融合这些信息以获得稠密的三维重建结果。

首先,从C个摄像头在时间t处获取帧,并将其编码并整合到具有初始深度图dtc和自我姿态Pt的共视图G=(V,E)中;然后,对于共视图中的每条边(i,j)∈E,从深度di和相对摄像头姿态(由自我姿态P和摄像头外参T导出)计算诱导流,从中聚合特征相关性,作为GRU的输入,该GRU估计流更新和置信度,通过多摄像头DBA操作在k次迭代中使用新的流估计f全局对齐深度d和姿态P;最后,对于共视图中的每个节点i∈V,文中使用深度优化网络优化深度图。

整个推理过程包括以下几个关键步骤:

  1. 将来自多个摄像头的帧编码并整合到共视图中。

  2. 估计每条边的深度和相对姿态。

  3. 使用 GRU 预测流更新和置信度。

  4. 通过多摄像头 DBA 方法全局对齐深度和姿态。

  5. 使用深度优化网络优化每个节点的深度图。

4. 实验

在实验部分,作者展示了他们的方法在两个广泛使用的多摄像头深度估计基准测试(DDAD和NuScenes)上的性能,并与现有的SOTA方法进行了比较。此外,他们还展示了与单目SLAM方法的精度和鲁棒性比较。实验结果表明,通过共同利用多摄像头约束以及单目深度线索,他们的方法在动态户外环境中实现了鲁棒的密集3D重建和自我运动估计。此外,他们还对共视图构建算法进行了评估,并将其与现有算法进行了比较,实验结果证实了他们的方法在几何深度估计、单目深度估计和完整方法之间有效地结合了各自的优势,同时避免了各自的弱点。这里也推荐「3D视觉工坊」新课程彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

6014baf286c7b7a35c775796a488f926.png图 3 动态场景中稠密三维重建的对比实验

37b7fae072935e06d0fdc365eb765629.png图 4 在DDAD数据集上的效果

9210230b946146f65dddf30ce0410765.png图 5 在NuScenes数据集上的效果

86501d3602e538ab997f1c98d87e155e.png图 6 在DDAD数据集上的定量评价

071d4eb6823722b5272c6aa216480623.png图 7 在NuScenes数据集上的定量评价

5. 结论

R3D3算法通过共同利用多摄像头约束以及单目深度线索,在动态户外环境中实现了鲁棒的密集3D重建和自我运动估计。作者提出了一种新颖的多摄像头密集束调整方法,并设计了一个深度细化网络,将几何深度和不确定性与单目线索相结合。实验结果表明,R3D3方法在两个广泛使用的多摄像头深度估计基准测试(DDAD和NuScenes)上取得了最优异的性能,此外,与单目SLAM方法相比,R3D3算法具有更高的精度和鲁棒性。总之,R3D3方法为动态场景的密集三维重建和自我运动估计提供了一种有效的解决方案。

[1] 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.

—END—

高效学习3D视觉三部曲

第一步 加入行业交流群,保持技术的先进性

目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

a05b34b81f3ad3c1d591ceefafff80a5.jpeg
添加小助理微信:cv3d007, 拉你入群
第二步 加入知识星球,问题及时得到解答
3.1 「3D视觉从入门到精通」技术星球

针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」

学习3D视觉核心技术,扫描查看,3天内无条件退款 6d146750172d3913b7748913da216460.jpeg
高质量教程资料、答疑解惑、助你高效解决问题
3.2 3D视觉岗求职星球

本星球:3D视觉岗求职星球 依托于公众号「3D视觉工坊」和「计算机视觉工坊」、「3DCV」,旨在发布3D视觉项目、3D视觉产品、3D视觉算法招聘信息,具体内容主要包括:

  • 收集汇总并发布3D视觉领域优秀企业的最新招聘信息。

  • 发布项目需求,包括2D、3D视觉、深度学习、VSLAM,自动驾驶、三维重建、结构光、机械臂位姿估计与抓取、光场重建、无人机、AR/VR等。

  • 分享3D视觉算法岗的秋招、春招准备攻略,心得体会,内推机会、实习机会等,涉及计算机视觉、SLAM、深度学习、自动驾驶、大数据等方向。

  • 星球内含有多家企业HR及猎头提供就业机会。群主和嘉宾既有21届/22届/23届参与招聘拿到算法offer(含有海康威视、阿里、美团、华为等大厂offer)。

  • 发布3D视觉行业新科技产品,触及行业新动向。

9620b5a077a546b345b076b7329df610.jpeg
扫码加入,3D视觉岗求职星球,简历投起来
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行

如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com

科研论文写作:

[1]国内首个面向三维视觉的科研方法与学术论文写作教程

基础课程:

[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶

[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]

[3]如何学习相机模型与标定?(代码+实战)

[4]ROS2从入门到精通:理论与实战

[5]彻底理解dToF雷达系统设计[理论+代码+实战]

工业3D视觉方向课程:

[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]

[2]保姆级线结构光(单目&双目)三维重建系统教程

[3]机械臂抓取从入门到实战课程(理论+源码)

[4]三维点云处理:算法与实战汇总

[5]彻底搞懂基于Open3D的点云处理教程!

[6]3D视觉缺陷检测教程:理论与实战!

SLAM方向课程:

[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战

[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化

[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析

[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)

[5](第二期)ORB-SLAM3理论讲解与代码精析

视觉三维重建:

[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

自动驾驶方向课程:

[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)

[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程

[3]单目深度估计方法:算法梳理与代码实现

[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)

[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)

无人机:

[1] 零基础入门四旋翼建模与控制(MATLAB仿真)[理论+实战]

最后

1、3D视觉文章投稿作者招募

2、3D视觉课程(自动驾驶、SLAM和工业3D视觉)主讲老师招募

3、顶会论文分享与3D视觉传感器行业直播邀请

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Yong_Qi2015/article/details/133191431

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签