【论文笔记】Fast3R:前向并行muti-view重建方法

        众所周知,DUSt3R只适合做稀疏视角重建,与sapnn3r的目的类似,这篇文章以并行的方法,扩展了DUSt3R在多视图重建中的能力。

abstract

        多视角三维重建仍然是计算机视觉领域的核心挑战,尤其是在需要跨不同视角实现精确且可扩展表示的应用中。当前的主流方法,如DUSt3R,采用了一种基于成对处理的方式,即对图像进行两两处理,并需要通过昂贵的全局对齐程序来实现多视角重建。我们提出了Fast3R,这是对DUSt3R的一种新颖的多视角扩展,通过并行处理多个视角,实现了高效且可扩展的三维重建。Fast3R基于Transformer的架构在一次前向传播中处理N张图像,避免了迭代对齐的需求。通过在相机姿态估计和三维重建上的大量实验,Fast3R展示了最先进的性能,在推理速度上显著提升,并减少了误差累积。这些结果表明,Fast3R是多视角应用中的一个强大替代方案,在不牺牲重建精度的前提下提供了更强的可扩展性。

1. Introduction

        传统的重建流程,例如基于运动恢复结构(SfM)[44]和多视角立体视觉(MVS)[18]的方法,主要依赖于图像对来重建三维几何。但它们需要大量的工程来实现特征提取、对应匹配、三角测量和全局对齐等顺序阶段,从而限制了其可扩展性和速度。

        DUSt3R[61通过将成对重建问题转化为点图的回归问题能够直接从RGB图像中预测三维结构。并放宽了传统投影相机模型的硬约束[61],在具有挑战性的视角下展现了令人印象深刻的鲁棒性。这代表了三维重建领域的一次根本性转变,因为端到端可学习的解决方案不仅减少了流程中误差的累积,还显著简化了操作。

        然而,DUSt3R的根本是重建两幅图像输入的场景。为了处理多于两幅图像,DUSt3R需要计算O(N²)对点图并执行全局对齐优化过程。这一过程计算成本高昂,随着图像数量的增加,其扩展性较差。例如,在A100 GPU上仅处理48个视角就可能导致内存溢出(OOM)。另外,两两重建这一过程限制了模型的上下文信息,既影响了训练期间的学习效果,也限制了推理阶段的最终精度。从这个意义上说,DUSt3R与传统SfM和MVS方法一样,面临着成对处理的瓶颈问题。

        Fast3R是一种新型的多视图重建框架,旨在克服上面提到的局限性。 FAST3R在Dust3R的基础上,利用Transformer-based架构[56]并行处理多个图像,允许在单个正向过程中重建。 每个帧可以同时参与重建过程中输入集中的所有其他帧,大大减少了误差的积累。 并且Fast3R推理的时间也大大减少。

总结:

(1)Fast3R是一种基于Transformer的多视角点图估计模型,无需全局后处理,在速度、计算开销和可扩展性方面实现了显著提升。

(2)通过实验证明,模型性能随着视角数量的增加而提升。在相机姿态定位和重建任务中,当模型在更大规模的视角集上训练时,其性能会得到改善。在推理过程中使用更多视角时,每个视角的精度会进一步提高,并且模型能够泛化到远超训练时所见视角数量的场景

(3)我们展示了在相机姿态估计任务中的最先进性能,并显著提升了推理时间。在CO3Dv2数据集[39]上,Fast3R在15度误差范围内的姿态估计精度达到99.7%,与经过全局对齐的DUSt3R相比,误差减少了14倍以上。

2. Related Work

        现代三维重建方法都是基于MVG,分为多个顺序阶段:特征提取、寻找成对图像对应关系、通过三角测量生成三维点及成对相机相对姿态,以及全局捆绑调整(bundle adjustment)。然而,任何流程化方法都容易累积误差,尤其是在手工设计的组件中。此外,顺序处理的特性阻碍了并行化,从而限制了速度和可扩展性。MVG方法自计算机视觉早期就已存在,并且至今仍在使用的理由是:当它们没有灾难性失败时,可以非常精确。最新的多视角几何流程,如COLMAP[44]或OrbSLAM2[30],融合了近60年的工程改进,但这些方法在静态场景(如ETH-3D[52])中仍然有超过40%的概率会灾难性失败,而这类场景由于图像覆盖密集,实际上可以被认为是相对简单的情况。

        DUSt3R通过点图回归来替换MVG流程中直到全局成对对齐的所有步骤。直接为成对图像在共享坐标系中预测三维点图。其他MVG组件任务,如相对相机姿态估计和深度估计,可以从生成的点图表示中恢复。然而,DUSt3R存在很大局限性,即只能完成稀疏视角重建,上述也提到了DUSt3R的局限性。

        然而,DUSt3R具有启发意义,MASt3R在每个解码器输出上添加了一个局部特征头,而MonST3R[69]则对动态场景进行了数据驱动的探索,但两者本质上仍然是成对方法。特别是MASt3R并未对全局对齐方法进行任何改动。与我们同期的工作,Spann3R[57]将图像视为有序序列(例如来自视频),并使用成对滑动窗口网络以及学习的空间记忆系统逐步重建场景。这扩展了DUSt3R以处理更多图像,但Spann3R的增量成对处理无法修复早期帧的重建,这可能导致误差累积。作者提出的Fast3R的Transformer架构使用了all-to-all注意力机制,使模型能够同时并联合地推理所有帧,而无需假设图像顺序。Fast3R消除了顺序依赖性,从而在单次前向传播中实现了跨多个设备的并行推理。

3. Model

3.1. Problem definition        

        如图2,输入N个无序无pose的RGB图像,Fast3R预测对应的pointmap)以及confidence map\sum来重建场景,不过这里的有两类,一种是全局pointmap,另一种是局部pointmap,confidence map也一样,全局置信图,局部置信图,比如,在MASt3R中,是在视角1的坐标系下,就是当前相机坐标系:

3.2. Training Objective-Fast3R的loss设计

        Fast3R的预测与GT的loss是DUST3R的一个广义版本,即归一化 3D 逐点回归损失的置信加权:

        首先,我们回顾DUST3R的点图loss:

        在此基础上,使用confidence-ajusted loss:

        我们的直觉是置信度加权有助于模型处理标签噪声。与DUST3R类似,我们在真实世界的扫描数据上进行训练,这些数据通常包含底层点图标签中的系统性误差。例如,在真实激光扫描中,玻璃或薄结构通常无法正确重建[4, 67],而相机配准中的误差会导致图像与点图标签之间的错位[66]。

3.3. Model architecture

        Fast3R的结构设计来源于DUSt3R,包括三部分:image encoding, fusion transformer,
and pointmap decoding,并且处理图片的方式是并行的。

(1)Image encoder

        与DUST3R一样,对于任意的图片,encoder部分使用CroCo ViT里面的,即分成patch提取特征,最后得到,其中,记作:

        然后,在fusion transformer之前,往patch 特征H里面添加一维的索引嵌入(image index positional embeddings),索引嵌入帮助融合Transformer确定哪些补丁来自同一图像,并且是识别的机制,而定义了全局坐标系。使模型能够从原本排列不变的标记集中隐式地联合推理所有图像的相机pose。

(2)Fusion transformer

        Fast3R 主要的计算在Fusion transformer过程中,我们使用的是与ViTB [12] 或 BERT类似的12层transformer,还可以按照比例放大,在此过程中,直接执行all-to-all的自注意力,这样,Fast3R获得了包含整个数据集的场景信息。

(3)pointmap decoding

        Fast3R的位置编码细节也很讲究,这个细节大家感兴趣可以仔细看看,可以达到训练20张图,推理1000张图的效果。最后,使用DPT-Large的decoder得到点图以及置信图,下面简单介绍一下DPT-L。

        DPT探讨了如何将视觉Transformer应用于密集预测任务(如语义分割、深度估计等)。通过引入层次化特征提取、多尺度特征融合以及专门的密集预测头,改进了ViT架构,使其能够有效处理高分辨率输入并生成像素级预测。

4. Experiments

        baseline是DUSt3R,MASt3R,Spann3R,所以,训练数据与他们保持一致,包括object-center和scene scan两类,在 64 个 A100 GPU 上训练 6.13 天

4.1. Inference Efficiency

        表2显示了随着视角数量增加,推理时间和内存使用情况的变化。Fast3R能够单次处理多达1500个视角,而DUSt3R在超过32个视角时就会耗尽内存。Fast3R的推理时间也显著更快,且随着视角数量的增加,其优势更加明显。

4.2. Pose Estimation

        受DUSt3R[61]的启发,我们从预测的全局点图中估计焦距、相机旋转和相机平移。我们首先基于图像分辨率初始化一组随机焦距猜测,然后使用RANSAC-PnP根据猜测的焦距和全局点图估计相机的旋转和平移RANSAC-PnP的离群点数量用于对每个猜测的焦距进行评分(越低越好),并选择得分最高的焦距来计算相机的内参和外参矩阵

        表1中显示了15°阈值下的相对旋转精度RRA(预测的相机旋转与真实旋转之间的误差小于15°的比例)和相对平移精度(RTA),30°阈值下的平均精度mAA(多个误差阈值(通常从0°到30°)下的平均精度),以及模型的每秒帧数(FPS)。在Co3D数据集上,Fast3R在RRA和mAA指标上超越了所有其他方法,实现了接近完美的RRA,同时在RTA上保持竞争力。重要的是,速度比DUSt3R快200倍,比MASt3R快700倍。

        图4和图5显示,Fast3R的预测随着视角数量的增加而改进,表明该模型能够利用多张图像的额外上下文信息。

4.3. 3D Reconstruction

        在场景级基准测试(7-Scenes [47] 和 Neural RGB-D [3])以及物体级基准测试(DTU [1])上评估了Fast3R的三维重建性能。

        使用ICP(迭代最近点算法)将每张图像的局部点图独立对齐到全局点图,并使用对齐后的局部点图进行评估。Fast3R在与DUSt3R和MASt3R等其他点图重建方法的比较中表现出了竞争力,同时速度显著更快,如表3和表4所示。我们相信,随着更好的重建数据、更多的计算资源以及更优的训练策略,Fast3R的性能将进一步提升。

5. Conclusion

        我们提出了Fast3R,这是一种能够在单次前向传播中直接预测所有像素在统一参考系中三维位置的Transformer模型。通过用端到端训练的通用架构取代整个SfM(运动恢复结构)流程,Fast3R及类似方法有望受益于Transformer的常规扩展规律:随着数据质量的提升和参数规模的增加,性能持续改进。由于Fast3R采用全局注意力机制,它避免了现有系统中因瓶颈而导致的两个潜在人为扩展限制。首先,图像对重建的瓶颈限制了模型可用的信息量。其次,成对全局优化只能部分弥补这一问题,且无法通过增加数据来改进。

        通过我们的高效实现,Fast3R能够以超过250 FPS的速度运行,并在一次前向传播中处理1500张图像,远超其他方法,同时在三维重建和相机姿态估计基准测试中取得了具有竞争力的结果。另外,Fast3R继承了未来工程改进的优势,能够高效地服务于和训练基于Transformer的大型模型。例如,像Deepspeed-Inference [38]和FlashAttention [7, 8]这样的工具包提供了融合内核、模型并行化和数据并行化功能。这些功能加速了推理并减少了内存需求,使每个设备能够处理更多图像,且图像数量随设备数量的增加而扩展。

        Fast3R的架构允许并行处理多个视角,其位置嵌入设计使得在视角上下文长度上能够实现“短训练,长测试”。然而,我们观察到,对于重建区域非常大的场景,当视角数量变得极端(例如超过200个)时,某些视角的点图(特别是那些置信度得分较低的视角)开始表现出漂移行为。目前解决这一问题的一种方法是丢弃置信度得分较低的帧。在密集重建中,这种方法通常不会对重建质量造成太大影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/961030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的高校一体化服务平台的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

单片机基础模块学习——AT24C02芯片

一、EEPROM芯片 ROMRAM断电后数据保留断电后数据消失 因此,如果在断电后希望数据继续保留的话,就需要存储在EEPROM芯片中。 二、EEPROM芯片原理图 A0~A2与芯片地址相关连接到GND,为0GND 接地,VCC 正电源 WP——write protect写…

VSCode+Continue实现AI辅助编程

Continue是一款功能强大的AI辅助编程插件,可连接多种大模型,支持代码设计优化、错误修正、自动补全、注释编写等功能,助力开发人员提高工作效率与代码质量。以下是其安装和使用方法: 一、安装VSCode 参见: vscode安…

开源先锋DeepSeek-V3 LLM 大语言模型本地调用,打造自己专属 AI 助手

DeepSeek-V3是一个强大的混合专家 (MoE) 语言模型,总共有 671B 个参数。为了实现高效的推理和经济高效的训练,DeepSeek-V3 采用了多头潜在注意力机制 (MLA) 和 DeepSeekMoE 架构,这些架构在 DeepSeek-V2 中得到了彻底的验证。此外&#xff0c…

在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)

文章目录 1 在Windows系统中安装Ollama,并成功启动;2 非docker方式安装open-webui3下载并部署模型deepseek-r1 Ollama Ollama 是一个命令行工具,用于管理和运行机器学习模型。它简化了模型的下载与部署,支持跨平台使用&#xff0c…

【问题】Chrome安装不受支持的扩展 解决方案

此扩展程序已停用,因为它已不再受支持 Chromium 建议您移除它。详细了解受支持的扩展程序 此扩展程序已停用,因为它已不再受支持 详情移除 解决 1. 解压扩展 2.打开manifest.json 3.修改版本 将 manifest_version 改为3及以上 {"manifest_ver…

RoboVLM——通用机器人策略的VLA设计哲学:如何选择骨干网络、如何构建VLA架构、何时添加跨本体数据

前言 本博客内解读不少VLA模型了,包括π0等,且如此文的开头所说 前两天又重点看了下openvla,和cogact,发现 目前cogACT把openvla的动作预测换成了dit,在模型架构层面上,逼近了π0​那为了进一步逼近&#…

嵌入式知识点总结 Linux驱动 (三)-文件系统

针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.什么是文件系统? 2.根文件系统为什么这么重要?​编辑 3.可执行映像文件通常由几部分构成,他们有什么特点? 1.什么是文件系统&a…

【AI大模型】提示词(Prompt)全面解析

文章目录 前言前置准备(非常重要)一、Prompt 提示词介绍1.1 Prompt 的重要性 二、Prompt 提示词元素构成与实践2.1 关键字2.2 上下文2.3 格式要求2.4 实践示例 三、Prompt 提示词编写原理3.1 清晰性3.2 具体性3.3 适应性 四、Prompt 提示词编写常用的分隔…

react native在windows环境搭建并使用脚手架新建工程

截止到2024-1-11,使用的主要软件的版本如下: 软件实体版本react-native0.77.0react18.3.1react-native-community/cli15.0.1Android Studio2022.3.1 Patch3Android SDKAndroid SDK Platform 34 35Android SDKAndroid SDK Tools 34 35Android SDKIntel x…

Linux环境基础开发工具的使用(apt, vim, gcc, g++, gbd, make/Makefile)

什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的…

[c语言日寄]越界访问:意外的死循环

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

终极的复杂,是简单

软件仿真拥有最佳的信号可见性和调试灵活性,能够高效捕获很多显而易见的常见错误,被大多数工程师熟练使用。 空间领域应用的一套数据处理系统(Data Handling System),采用抗辐FPGA作为主处理器,片上资源只包含10752个寄存器,软仿也是个挺花时间的事。 Few ms might take …

第一个3D程序!

运行效果 CPP #include <iostream> #include <fstream> #include <string> #include <cmath>#include <GL/glew.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> #include <glm/gtc/type_ptr.hpp> #include <glm/gtc/…

vim如何解决‘’文件非法关闭后,遗留交换文件‘’的问题

过程描述&#xff1a; 由于我修改文件时&#xff08;一定得修改了文件&#xff0c;不做任何修改不会产生这个问题&#xff09;的非法关闭&#xff0c;比如直接关闭虚拟机&#xff0c;或者直接断开远程工具的远程连接&#xff0c;产生了以下遗留交换文件的问题&#xff1a; 点击…

t113_can增加驱动

1 基于太极派的SDK添加 //设备树添加can0: can2504000 {compatible "allwinner,sun20i-d1-can";reg <0x0 0x02504000 0x0 0x400>;interrupts <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;clocks <&ccu CLK_BUS_CAN0>;resets <&ccu RST_BUS_…

力扣【669. 修剪二叉搜索树】Java题解

一开始在想为什么题目说存在唯一答案。然后发现是二叉搜索树就合理了。如下图&#xff1a;如果0节点小于low&#xff0c;那其左子树也都小于low&#xff0c;故可以排除&#xff1b;对于4&#xff0c;其右子树也是可以排除。 代码如下&#xff1a; class Solution {public Tre…

WSL安装CUDA

WSL安装CUDA 参考文档&#xff1a; ​ 总安装文档&#xff1a;https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#wsl-installation 1. 下载cuda ​ 进入下载界面&#xff1a;https://developer.nvidia.com/cuda-downloads?target_osLinux&target_archx86_…

浅谈Linux的发展

目录 1.Linux背景 1.1 发展史 UNIX发展的历史 1.2开源 1.3官网 1.4.企业应用现状 1.5.发行版本 1.6 os概念&#xff0c;定位 1.Linux背景 1.1 发展史 学习Linux系统编程&#xff0c;你可能要问Linux从哪里来&#xff1f;它是怎么发展的&#xff1f;在这里简要介绍Linux的发展史…

Unbutu虚拟机+eclipse+CDT编译调试环境搭建

问题1: 安装CDT&#xff0c;直接Help->eclipse Market space-> 搜cdt , install&#xff0c;等待重启即可. 问题2&#xff1a;C变量不识别vector ’could not be resolved 这是库的头文件没加好&#xff0c;右键Properties->C Build->Enviroment&#xff0c;增加…