论文解读:【CVPR2024】DUSt3R: Geometric 3D Vision Made Easy
论文“”https://openaccess.thecvf.com/content/CVPR2024/papers/Wang_DUSt3R_Geometric_3D_Vision_Made_Easy_CVPR_2024_paper.pdf
代码:GitHub - naver/dust3r: DUSt3R: Geometric 3D Vision Made Easy
DUSt3R是一种旨在简化几何3D视觉任务的新框架。作者着重于使3D重建过程更加易于使用和高效。该框架利用深度学习和几何处理的最新进展,提高了准确性并降低了计算复杂性。
1 摘要
本文提出了DUSt3R,一种无需相机校准或视点位置信息即可处理任意图像集合的密集、无约束立体3D重建的全新范式。我们将成对重建问题视为点图的回归,放宽了传统投影相机模型的硬约束。这种方法统一了单目和双目重建案例。
在提供多于两张图像的情况下,我们进一步提出了一种简单但有效的全局对齐策略,将所有成对点图表达在一个共同的参考框架中。我们基于标准Transformer编码器和解码器的网络架构,利用强大的预训练模型。
我们的方法直接提供了场景的3D模型以及深度信息,并且可以从中无缝地恢复像素匹配、焦距、相对和绝对相机参数。在单目和多视图深度估计以及相对姿态估计方面的广泛实验展示了DUSt3R如何有效地统一各种3D视觉任务,创造新的性能记录。总而言之,DUSt3R使许多几何3D视觉任务变得简单。
图1展示了DUSt3R的工作流程和重建效果。
上半部分:DUSt3R以一组不受约束的图像为输入,输出点图(pointmaps),从这些点图可以直接推导出各种几何量。
下半部分:展示了DUSt3R在没有输入相机位姿或内参的情况下进行的一致3D重建。从左到右依次是输入图像、彩色点云、带有阴影的渲染。右上角的图示例展示了DUSt3R在没有视觉重叠的情况下也能进行场景重建。
2 主要贡献
- 简化的流程:DUSt3R将传统的多步骤3D视觉流程简化为一个更直接的过程。这种简化有助于减少错误并提高可用性。
- 鲁棒性:该框架在各种数据集和场景中表现出鲁棒性,包括不同的光照条件和遮挡情况。
- 高效性:通过优化算法组件和实现方式,DUSt3R在不牺牲准确性的情况下,实现了显著的计算效率提升。
3 核心算法:
DUSt3R算法结合了现代深度学习技术和传统几何方法,通过高效的点云生成和三维重建技术,提供高精度和高鲁棒性的三维重建结果。
4 DUSt3R网络的架构及其主要组件
图2展示了DUSt3R网络的架构及其主要组件。这张图形象地说明了网络如何处理输入的两张RGB图像(I1和I2),并生成对应的点云图(Pointmap)和置信度图(Confidence Map)。
网络架构
-
输入图像
输入是两张RGB图像,分别表示为I1和I2。I1表示由第一个相机拍摄的图像,I2表示由第二个相机拍摄的图像。
-
ViT编码器(ViT Encoder)
输入图像I1和I2首先经过一个共享权重的ViT编码器进行特征提取。ViT编码器是一种基于视觉Transformer(ViT)的模型,用于将图像转化为Token表示(Token Representation)。编码后的特征表示分别为F1和F2。
-
Patchify
编码器输出的Token表示F1和F2会被划分成小块(Patchify),每个块表示图像的一部分。
-
Transformer解码器(Transformer Decoder)
经过Patchify处理后的特征表示F1和F2分别输入到两个Transformer解码器中,这两个解码器通过交叉注意力机制不断交换信息。交叉注意力机制允许解码器在解码过程中综合两张图像的信息,从而提高点云图的精度。
-
回归头(Regression Head)
Transformer解码器的输出结果传递给两个回归头,分别对应输入的两张图像。回归头负责生成最终的点云图(X1,1和X2,1)和置信度图(C1,1和C2,1)。
-
输出
最终输出的点云图(X1,1和X2,1)和置信度图(C1,1和C2,1)都以第一张图像(I1)的坐标系为基准。这种设计简化了后续的处理步骤,使得点云图可以直接在同一坐标系下进行操作和分析。
训练过程
- 损失函数
- 网络使用简单的回归损失函数(公式4)进行训练。损失函数基于预测的点云图和真实点云图之间的欧几里得距离进行计算。
- 为了应对尺度模糊性,网络对预测和真实的点云图进行归一化处理,通过计算所有有效点到原点的平均距离来确定缩放因子。
- 网络还会学习为每个像素预测一个置信度分数,这个置信度分数表示网络对该像素预测的可靠程度。最终的训练目标是置信度加权的回归损失。
5 实验评估
5.1 无地图视觉定位
数据集:使用了Map-free relocalization benchmark,这是一项非常具有挑战性的测试,其中目标是在没有地图的情况下,仅凭一张参考图像确定相机在公制空间中的位置。测试集包括65个验证场景和130个测试场景。每个场景中,每帧视频剪辑的姿势必须相对于单个参考图像独立估计。
协议:评价标准包括绝对相机姿态准确性(以5°和25厘米为阈值)和虚拟对应重投影误差(VCRE),后者测量虚拟3D点根据真实和估计相机姿态重投影误差的平均欧氏距离。
结果:DUSt3R在测试集上的表现优于所有现有方法,有时优势显著,定位误差小于1米。
5.2 恢复未知相机内参
数据集:使用了BLUBB数据集来评估DUSt3R在没有内参信息的情况下恢复相机内参的能力。数据集提供了一系列场景,每个场景都具有已知的地面真实相机内参和3D点云。
协议:评价标准包括相机内参的准确性和重建的3D点云的完整性。DUSt3R通过估计场景的相对姿态和尺度,结合已知的地面真实3D点云来恢复内参。
结果:在没有先验相机信息的情况下,DUSt3R达到了平均2.7毫米的准确性,0.8毫米的完整性,总体平均距离为1.7毫米。这个精度水平在实际应用中非常有用,考虑到其即插即用的特性。
5.3 总结
DUSt3R在多个3D视觉任务中展示了其卓越的性能,无需对特定下游任务进行微调。该模型在零样本设置下取得了令人印象深刻的结果,特别是在无地图视觉定位和未知相机内参恢复任务中表现出色。实验结果表明,DUSt3R不仅适用于3D重建任务,还能有效处理各种3D视觉任务,展示了其广泛的应用潜力和实际使用价值。
5.4 可视化
论文包含了大量可视化内容,有助于理解概念和结果。这些包括流程图、架构细节和重建3D模型的视觉比较。
图3展示了两个场景的重建例子,这两个场景在训练期间从未见过。图像从左到右依次是:RGB图像、深度图、置信度图和重建结果。以下是对每部分的详细解析:
RGB图像:
- 这是输入的彩色图像,为网络提供了丰富的纹理和颜色信息,帮助进行3D重建。
深度图:
- 这是网络预测的深度图,表示场景中每个像素到相机的距离。深度值越大,像素点离相机越远。深度图为重建提供了基础的几何信息。
置信度图:
- 置信度图表示网络对每个像素深度预测的信心。高置信度区域通常表示预测较为准确的区域,而低置信度区域可能包含难以预测的部分,如天空、透明物体或反光表面。
重建结果:
- 左边的场景显示了直接从网络f(I1, I2)输出的原始结果。可以看到,网络已经能够较为准确地重建场景的3D形状。
- 右边的场景显示了经过全局对齐(第3.4节)的结果。全局对齐步骤进一步优化了重建结果,使其更加精确和一致。
通过展示这些结果,图3强调了DUSt3R方法在不同场景中的鲁棒性和有效性,尤其是其在未见过的场景中的表现。此外,置信度图的引入使得网络能够在不确定区域进行自适应调整,提高了重建的整体质量。
结论
DUSt3R在几何3D视觉领域提供了显著的进步。其简化流程、结合鲁棒性和高效性,使其成为计算机视觉研究人员和从业者的宝贵工具。详细的实验评估和全面的可视化进一步加强了论文的贡献。
相关文章:

论文解读:【CVPR2024】DUSt3R: Geometric 3D Vision Made Easy
论文“”https://openaccess.thecvf.com/content/CVPR2024/papers/Wang_DUSt3R_Geometric_3D_Vision_Made_Easy_CVPR_2024_paper.pdf 代码:GitHub - naver/dust3r: DUSt3R: Geometric 3D Vision Made Easy DUSt3R是一种旨在简化几何3D视觉任务的新框架。作者着重于…...

springboot助农电商系统-计算机毕业设计源码08655
摘要 近年来,电子商务的快速发展引起了行业和学术界的高度关注。基于移动端的助农电商系统旨在为用户提供一个简单、高效、便捷的农产品购物体验,它不仅要求用户清晰地查看所需信息,而且还要求界面设计精美,使得功能与页面完美融合…...

【windows】电脑如何关闭Bitlocker硬盘锁
如果你的硬盘显示这样的一把锁,说明开启了Bitlocker硬盘加密。 Bitlocker硬盘锁,可以保护硬盘被盗,加密防止打开查看数据。 方法一:进入“控制面板->BitLocker 驱动器加密”进行设置。或者“控制面板\系统和安全->BitLocke…...

vue-cli 搭建项目,ElementUI的搭建和使用
vue-cli 官方提供的一个脚手架,用于快速生成一个vue的项目模板;预先定义 好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个 骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速; …...
SQL-DDL操作
数据库操作 登录MySQL PS D:\WorkSpace\MachineLearning\DL_learning> mysql -u root -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 8.0.37 MySQL Community Server - GPLCopy…...
帮粉丝用gpt写代码生成一个文字视频
文章目录 使用网站ValueError: could not broadcast input array from shape (720,1280) into shape (720,1280,3) 定义文本内容和动画参数定义视频参数创建背景使用 PIL 创建文本图像创建文本剪辑使用函数创建文本剪辑合并所有剪辑导出视频1. 理解错误信息2. 确认图像数组形状…...

IP白名单及其作用解析
在网络安全领域,IP白名单是一项至关重要的策略,它允许特定的IP地址或地址范围访问网络资源,从而确保只有受信任的终端能够连接。下面,我们将深入探讨IP白名单的定义、作用以及实施时的关键考虑因素。 一、IP白名单的定义 IP白名单…...
【Android八股文】如何对ListView RecycleView进行局部刷新的?
文章目录 一、如何对ListView进行局部刷新的?1.1 方法一:更新对应view的内容1.2 方法二:通过ViewHolder去设置值1.3 方法三:调用一次getView()方法1.4 封装在万能适配器当中1.5 总结二、如何对RecyclerView 进行局部刷新的?2.0 为什么会有DiffUtil?2.1 讲解一下DiffUtil2…...

力扣300. 最长递增子序列(动态规划)
Problem: 300. 最长递增子序列 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 明确题目涉及到求取最值问题因此我们可以考虑使用动态规划来解决问题 1.定义状态:定义int类型的dp数组表示以nums[i]结尾的序列的最长长度,初始化均为1即表示…...

【ARM】Ulink不同的系列对于芯片的支持和可以支持keil软件
【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解不同版本的ULINK可以支持的芯片架构,和ULINK可以和哪个系列的keil软件进行在线调试 2、 问题场景 用于了解不同ULINK仿真器对于芯片的支持是不一样的,并不是ULINK可以支持所有的keil软件…...

【入门】5分钟了解卷积神经网络CNN是什么
本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、卷积神经网络的结构1.1.卷积与池化的作用2.2.全连接层的作用 二、卷积神经网络的运算2.1.卷积层的运算2.2.池化的运算2.3.全连接层运算 三、pytorch实现一个CNN例子3.1.模型的搭建3.2.CNN完整训练代码 CNN神…...

dB分贝入门
主要参考资料: dB(分贝)定义及其应用: https://blog.csdn.net/u014162133/article/details/110388145 目录 dB的应用一、声音的大小二、信号强度三、增益 dB的应用 一、声音的大小 在日常生活中,住宅小区告知牌上面标示噪音要低…...
力扣1744.你能在你最喜欢的那天吃到你最喜欢的糖果吗?
力扣1744.你能在你最喜欢的那天吃到你最喜欢的糖果吗? 对于第i类糖果求出吃到它的最大时间和最小时间 判断给定时间是否在范围内 注意: 同一天可以吃多种糖果 不是只能吃一种 class Solution {public:vector<bool> canEat(vector<int>&am…...

Redis的使用和原理
目录 1.初识Redis 1.1 Redis是什么? 1.2 Redis的特性 1.2.1 速度快 1.2.2 基于键值对的数据结构服务器 1.2.3 丰富的功能 1.2.4 简单稳定 1.2.5 持久化 1.2.6 主从复制 1.2.7 高可用和分布式 1.3 Redis的使用场景 1.3.1 缓存 1.3.2 排行榜系统 1.3.3 计数器应用 1.3…...

扫描全能王的AI驱动创新与智能高清滤镜技术解析
目录 引言1、扫描全能王2、智能高清滤镜黑科技2.1、图像视觉矫正2.2、去干扰技术 3、实际应用案例3.1、打印文稿褶皱检测3.2、试卷擦除手写3.3、老旧文件处理3.4、收银小票3.5、从不同角度扫描文档 4、用户体验结论与未来展望 引言 在数字化时代背景下,文档扫描功能…...

【Linux】Linux系统配置,linux的交互方式
1.Linux系统环境安装 有三种方式 裸机安装或者双系统 -- 不推荐虚拟机安装 --- 不推荐云服务器/安装简单, 维护成本低——推荐, 未来学习效果好 我们借助云服务器 云服务器(Elastic Compute Service,ECS)的标准定义…...
Linux中--prefix命令使用及源码安装
1.prefix - 指定文件安装路径通常与configure搭配使用: 在安装源码时可使用下述命令指定源码安装路径: bogon:httpd-2.4.59 wancanchishenma$./configure --prefix/usr/local/apache 2.源码的安装一般由3个步骤组成:配置(configur…...

加速科技Flash存储测试解决方案 全面保障数据存储可靠性
Flash存储芯片 现代电子设备的核心数据存储守护者 Flash存储芯片是一种关键的非易失性存储器,作为现代电子设备中不可或缺的核心组件,承载着数据的存取重任。这种小巧而强大的芯片,以其低功耗、可靠性、高速的读写能力和巨大的存储容量&…...

数字化那点事:一文读懂数字乡村
一、数字乡村的定义 数字乡村是指利用信息技术和数字化手段,推动乡村社会经济发展和治理模式变革,提升乡村治理能力和公共服务水平,实现乡村全面振兴的一种新型发展模式。它包括农业生产的数字化、乡村治理的智能化、乡村生活的现代化等方面…...
彻底解决 macos中chrome应用程序 的 无法更新 Chrome 弹窗提示 mac自定义参数启动 chrome.app
mac系统中的chrome app应用在每次打开是都会提示一个 “无法更新 Chrome Chrome 无法更新至最新版本,因此您未能获得最新的功能和安全修复程序。” , 然而最新的chrome 程序似乎在某些情况下居然会出现 输入和显示不一致的情况,暂时不想升…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...