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

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf