【论文笔记】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个)时,某些视角的点图(特别是那些置信度得分较低的视角)开始表现出漂移行为。目前解决这一问题的一种方法是丢弃置信度得分较低的帧。在密集重建中,这种方法通常不会对重建质量造成太大影响。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地部署DeepSeek教程(Mac版本)

第一步、下载 Ollama 官网地址:Ollama 点击 Download 下载 我这里是 macOS 环境 以 macOS 环境为主 下载完成后是一个压缩包,双击解压之后移到应用程序: 打开后会提示你到命令行中运行一下命令,附上截图: 若遇…

deepseek本地部署会遇到哪些坑

在本地部署DeepSeek(或其他类似AI模型)时,可能会遇到以下常见问题及解决方案: 1. 硬件资源不足 问题表现: GPU不兼容(如型号过旧)、显存不足(OOM错误)或CPU模式性能极低。解决方案: 确认GPU支持CUDA,检查显存需求(如至少16GB显存)。使用nvidia-smi监控显存,通过降…

微机原理与接口技术期末大作业——4位抢答器仿真

在微机原理与接口技术的学习旅程中,期末大作业成为了检验知识掌握程度与实践能力的关键环节。本次我选择设计并仿真一个 4 位抢答器系统,通过这个项目,深入探索 8086CPU 及其接口技术的实际应用。附完整压缩包下载。 一、系统设计思路 &…

解决国内服务器 npm install 卡住的问题

在使用国内云服务器时,经常会遇到 npm install 命令执行卡住的情况。本文将分享一个典型案例以及常见的解决方案。 问题描述 在执行以下命令时: mkdir test-npm cd test-npm npm init -y npm install lodash --verbose安装过程会卡在这个状态&#xf…

【Redis】Redis 经典面试题解析:深入理解 Redis 的核心概念与应用

Redis 是一个高性能的键值存储系统,广泛应用于缓存、消息队列、排行榜等场景。在面试中,Redis 是一个高频话题,尤其是其核心概念、数据结构、持久化机制和高可用性方案。 1. Redis 是什么?它的主要特点是什么? 答案&a…

昆仑万维Java开发面试题及参考答案

进程和线程的区别是什么? 进程和线程都是操作系统中非常重要的概念,它们在多个方面存在显著的区别。 从定义上看,进程是操作系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间,包括代码段、数据段、堆栈段等。例如,当你在电脑上同时打开浏览器和音乐播放…

Visual Studio Code应用本地部署的deepseek

1.打开Visual Studio Code,在插件中搜索continue,安装插件。 2.添加新的大语言模型,我们选择ollama. 3.直接点connect,会链接本地下载好的deepseek模型。 参看上篇文章:deepseek本地部署-CSDN博客 4.输入需求生成可用…

DeepSeek技术深度解析:从不同技术角度的全面探讨

DeepSeek技术深度解析:从不同技术角度的全面探讨 引言 DeepSeek是一个集成了多种先进技术的平台,旨在通过深度学习和其他前沿技术来解决复杂的问题。本文将从算法、架构、数据处理以及应用等不同技术角度对DeepSeek进行详细分析。 一、算法层面 深度学…

SpringBoot 整合 Mybatis:注解版

第一章&#xff1a;注解版 导入配置&#xff1a; <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> </dependency> 步骤&#xff1a; 配置数据源见 Druid…

[Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?

[InfluxDB]Monitor Tem. and Volt of RaspberryPi and Send Message by Line Notify 在Linux中&#xff0c;shell腳本(shell script)常用於運行各種自動化的流程&#xff0c;包含API串接&#xff0c;設置和啟動應用服務等等&#xff0c;腳本語法也相對易學易讀&#xff0c;因此…

2025年最新在线模型转换工具优化模型ncnn,mnn,tengine,onnx

文章目录 引言最新网址地点一、模型转换1. 框架转换全景图2. 安全的模型转换3. 网站全景图 二、转换说明三、模型转换流程图四、感谢 引言 在yolov5&#xff0c;yolov8&#xff0c;yolov11等等模型转换的领域中&#xff0c;时间成本常常是开发者头疼的问题。最近发现一个超棒的…

理解知识蒸馏中的散度损失函数(KLDivergence/kldivloss )-以DeepSeek为例

1. 知识蒸馏简介 什么是知识蒸馏&#xff1f; 知识蒸馏&#xff08;Knowledge Distillation&#xff09;是一种模型压缩技术&#xff0c;目标是让一个较小的模型&#xff08;学生模型&#xff0c;Student Model&#xff09;学习一个较大、性能更优的模型&#xff08;教师模型…

Electron使用WebAassembly实现CRC-8 MAXIM校验

Electron使用WebAssembly实现CRC-8 MAXIM校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-8 MAXIM格式校验的方式。 CRC-8 MAXIM校验函数WebAssebly源文件 C语言实现CR…

Vue3.0实战:大数据平台可视化

文章目录 创建vue3.0项目项目初始化项目分辨率响应式设置项目顶部信息条创建页面主体创建全局引入echarts和axios后台接口创建express销售总量图实现完整项目下载项目任何问题都可在评论区,或者直接私信即可。 创建vue3.0项目 创建项目: vue create vueecharts选择第三项:…

vector容器(详解)

本文最后是模拟实现全部讲解&#xff0c;文章穿插有彩色字体&#xff0c;是我总结的技巧和关键 1.vector的介绍及使用 1.1 vector的介绍 https://cplusplus.com/reference/vector/vector/&#xff08;vector的介绍&#xff09; 了解 1. vector是表示可变大小数组的序列容器。…

Ubuntu 下 nginx-1.24.0 源码分析 ngx_debug_init();

目录 ngx_debug_init() 函数&#xff1a; NGX_LINUX 的定义&#xff1a; ngx_debug_init() 函数&#xff1a; ngx_debug_init() 函数定义在 src\os\unix 目录下的 ngx_linux_config.h 中 #define ngx_debug_init() 也就是说这个环境下的 main 函数中的 ngx_debug_init() 这…

Airflow:深入理解Apache Airflow Task

Apache Airflow是一个开源工作流管理平台&#xff0c;支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持&#xff0c;它已迅速成为编排复杂数据管道的首选工具。在这篇博文中&#xff0c;我们将深入研究Apache Airflow 中的任务概念&#xff0c;探…

开发环境搭建-4:WSL 配置 docker 运行环境

在 WSL 环境中构建&#xff1a;WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 基本概念说明 容器技术 利用 Linux 系统的 文件系统&#xff08;UnionFS&#xff09;、命名空间&#xff08;namespace&#xff09;、权限管理&#xff08;cgroup&#xff09;&#xff0c;虚拟出一…

JavaScript 基础 - 7

关于JS函数部分的学习和一个案例的练习 1 函数封装 抽取相同部分代码封装 优点 提高代码复用性&#xff1a;封装好的函数可以在多个地方被重复调用&#xff0c;避免了重复编写相同的代码。例如&#xff0c;编写一个计算两个数之和的函数&#xff0c;在多个不同的计算场景中都…

详解u3d之AssetBundle

一.AssetBundle的概念 “AssetBundle”可以指两种不同但相关的东西。 1.1 AssetBundle指的是u3d在磁盘上生成的存放资源的目录 目录包含两种类型文件(下文简称AB包)&#xff1a; 一个序列化文件&#xff0c;其中包含分解为各个对象并写入此单个文件的资源。资源文件&#x…