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.5k次,点赞28次,收藏38次。本章将会讲解计算机的操作系统。操作系统(Operating System,OS)就好比一个计算机内部的管理者,是管理和控制计算机硬件与软件资源的计算机程序,直接运行在“裸机”上的最基本的系统软件,任何其他应用软件都必须在操作系统的支持下才能运行,操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件,软件及数据资源,控制程序运行,为其他应用软件提供支持等。_操作系统

Python之pip download 命令用法-下载指定平台和python版本的依赖包-程序员宅基地

文章浏览阅读1.9w次,点赞7次,收藏27次。pip download 和 pip install 有着相同的解析和下载过程,不同的是,pip install 会安装依赖项,而 pip download 会把所有已下载的依赖项保存到指定的目录 ( 默认是当前目录 ),此目录稍后可以作为值传递给 pip install --find-links 以便离线或锁定下载包安装_pip download

centos7设置密码策略_CentOS7 设置密码复杂度-程序员宅基地

文章浏览阅读3.4k次。在CentOS下设置密码复杂度分为两步(1)修改/etc/login.defs文件vim /etc/login.defsPASS_MAX_DAYS90   # 密码最长过期天数PASS_MIN_DAYS80    # 密码最小过期天数PASS_MIN_LEN10    # 密码最小长度PASS_WARN_AGE7    # 密码过期警告天数(2)..._echo 'mypassword' | openssl passwd -6 -stdin centos7

王斌老师的博客_王斌 github-程序员宅基地

文章浏览阅读480次。http://blog.sina.com.cn/s/blog_736d0b9101018cgc.html_王斌 github

ACM OJ Collection_htt//acm.wydtang.top/-程序员宅基地

文章浏览阅读737次。原文来自:http://blog.csdn.net/hncqp/article/details/4455263 ACM OJ Collection(排名不分先后):中国:浙江大学(ZJU):http://acm.zju.edu.cn/北京大学(PKU):htt_htt//acm.wydtang.top/

ios 自己服务器 苹果支付_修复苹果IOS支付-程序员宅基地

文章浏览阅读467次。更新记录1.0.0(2019-07-01)插件简介专门用来修复苹果IOS支付时出现"您已购买此App内购买项目。此项目将免费恢复"。问题描述首先在IOS平台里面创建“APP内购买项目”,选择的是“消耗型项目”,然后用uni-app官方的支付api进行支付,多支付几次,有时候就会出现提示“您已购买此App内购买项目。此项目将免费恢复”,特别是在沙盒测试里面支付很大几率出现,我明明选的是消耗型项目,应..._ios开发苹果支付恢复权益

随便推点

郁金香2021年游戏辅助技术中级班(七)_squad辅助科技-程序员宅基地

文章浏览阅读379次。郁金香2021年游戏辅助技术中级班(七)058-C,C++写代码HOOK分析封包数据格式A059-C,C++写代码HOOK分析封包数据格式B-detours劫持060-C,C++写代码HOOK分析封包数据格式C-过滤和格式化061-C,C++写代码HOOK分析封包数据格式D-写入配置文件062-C,C++写代码HOOK分析封包数据格式D-读取配置文件058-C,C++写代码HOOK分析封包数据格式A_squad辅助科技

ssh登录qemu虚拟机里的linux系统_qemu ssh连接-程序员宅基地

文章浏览阅读350次。上面的命令启动了一个带有NAT网络的QEMU虚拟机,并设置了端口转发,将主机的2222端口映射到虚拟机的22端口(SSH端口)。1、安装openssh,如果是根文件系统用buildroot构建,打开 BR2_PACKAGE_OPENSSH 开关。2、在qemu的启动脚本里增加。3、在虚拟机里增加一个新用户。4、向虚拟机里发送文件。_qemu ssh连接

用netty实现zcool_Netty框架入门-程序员宅基地

文章浏览阅读63次。一、概述Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。二、体系结构图三、Netty的核心结构Netty是典型的Reactor模型结构,在实现上,Netty中的Boss类充当mainReactor,NioWorker类充当subReactor(默认NioWorker的个数是当前服务器的..._channelconnected

SpringBoot 过滤器 filter 3种方法_spring boot filter 配置-程序员宅基地

文章浏览阅读4.7k次。最近Spring Boot项目做单点登录对接的时候,在配置过滤器的时候,找了几种方法,记录一下。欢迎评论补充沟通~由于之前JAVA Web项目最开始都有web.xml配置,随着框架慢慢的进化,从Spring Boot开始,已经没有了web.xml配置文件。那原来在web.xml里,配置的filter过滤器,在Spring Boot中怎么配置呢?注意,这个自定义类,也不能加@Component或@Configuration注解,加了就会初始化Filter了,过滤全部的路径了。_spring boot filter 配置

Ubuntu下,Python源码制作deb包_unmet build dependencies: debhelper (>= 11)-程序员宅基地

文章浏览阅读1k次。背景: 自己写了一个Python的qt客户端, 然后需要制作deb包1.先贴上代码的目录结构x@hostv6:~/mywork/my-client$ tree.├── 1├── debian│ ├── changelog│ ├── compat│ ├── control│ ├── copyright│ ├── README.Debian│ ├── rules│ ├── source│ │ ├── format│ │ └── loc..._unmet build dependencies: debhelper (>= 11)

13. PyQt5实现多页面切换之QTabWidget_pyqt5 tabwidget-程序员宅基地

文章浏览阅读2.8w次,点赞19次,收藏96次。QTabWidget 类,是一个实现多页面切换的类,该类已经实现了多页面切换的部分功能,只需再对其进行少量的设计(主要是要设计页面中的内容)便可实现多页面切换了。因此,使用该类实现多页面切换时,就不需要再使用 QStackedLayout 布局把页面与选项卡相关联,也不需要使用类似 QVBoxLayout 的布局把选项卡和页面放置在一起。与 QStackedLayout 布局原理相同,只有当前页面(即可见页面)是可见的,所有其他页面都不可见,用户可通过选择不同的选项卡来显示其对应的其他页面。_pyqt5 tabwidget

推荐文章

热门文章

相关标签