DUSt3R: Geometric 3D Vision Made Easy

日期

2024 CVPR

论文标题

DUSt3R: Geometric 3D Vision Made Easy

摘要

Multi-view stereo reconstruction (MVS) in the wild requires to first estimate the camera parameters e.g. intrinsic and extrinsic parameters. These are usually tedious and cumbersome to obtain, yet they are mandatory to triangulate corresponding pixels in 3D space, which is the core of all best performing MVS algorithms. In this work, we take an opposite stance and introduce DUSt3R, a radically novel paradigm for Dense and Unconstrained Stereo 3D Reconstruction of arbitrary image collections, i.e. operating without prior information about camera calibration nor viewpoint poses. We cast the pairwise reconstruction problem as a regression of pointmaps, relaxing the hard constraints of usual projective camera models. We show that this formulation smoothly unifies the monocular and binocular reconstruction cases. In the case where more than two images are provided, we further propose a simple yet effective global alignment strategy that expresses all pairwise pointmaps in a common reference frame. We base our network architecture on standard Transformer encoders and decoders, allowing us to leverage powerful pretrained models. Our formulation directly provides a 3D model of the scene as well as depth information, but interestingly, we can seamlessly recover from it, pixel matches, relative and absolute camera. Exhaustive experiments on all these tasks showcase that the proposed DUSt3R can unify various 3D vision tasks and set new SoTAs on monocular/multi-view depth estimation as well as relative pose estimation. In summary, DUSt3R makes many geometric 3D vision tasks easy.

引用信息(BibTeX格式)

@article{Wang2023DUSt3RG3,
title={DUSt3R: Geometric 3D Vision Made Easy},
author={Shuzhe Wang and Vincent Leroy and Yohann Cabon and Boris Chidlovskii and J{'e}r{^o}me Revaud},
journal={ArXiv},
year={2023},
volume={abs/2312.14132},
url={https://api.semanticscholar.org/CorpusID:266436038}
}

本论文解决什么问题

现代 SfM 和 MVS 流程可以归结为解决一系列最基本的问题:匹配点、寻找基本矩阵、三角测量点、稀疏重建场景、估计摄像机,最后执行密集重建。要先进行SfM 恢复摄像机姿势而构建的稀疏场景,然后 用 MVS 进行稠密重建,而 MVS 这块很受影响摄像机姿势影响,对此DUSt3R 通过未校准和未摆好姿势的摄像机进行密集无约束立体三维重建的全新方法。

已有方法的优缺点

传统MVS算法:

优点:经过多年研究,拥有成熟的理论和技术基础。
缺点:通常需要准确的相机参数,包括内外参数,而这些参数在实际应用中可能难以获得或测量。

基于特征匹配的方法

优点:利用特征点匹配来估计相机姿态和3D结构,适用于纹理丰富的场景。
缺点:对于缺少纹理或视角变化大的情况,特征匹配可能不可靠。

基于深度学习的MVS方法

优点:利用神经网络学习复杂的图像特征和深度信息,可以处理更复杂的场景。
缺点:依赖于大量的训练数据,且可能在未见过的场景中泛化能力受限。

单视图重建

优点:无需多视图信息,可以从单个图像中预测3D结构。
缺点:由于缺乏多视图约束,这类方法通常依赖于强3D先验,可能在复杂场景中不够准确。

基于隐式表示的3D重建方法

优点:能够生成高质量的3D场景表示,适用于复杂场景的新视角合成。
缺点:计算成本高,且通常需要大量的训练数据和时间。

本文采用什么方法及其优缺点

xxxxxxxxxxxx.
将成对的重建问题视为点图(pointmaps)的回归问题,放宽了传统投影相机模型的严格约束。DUSt3R基于标准的Transformer编码器和解码器构建网络架构,利用预训练模型的优势。

网络 F 的架构受到 CroCo 它由两个相同的分支(每个图像一个)组成,每个分支包括一个图像编码器、一个解码器和一个回归头。两个输入图像首先由相同的权重共享ViT编码器以连体方式编码,产生两个标记表示F和F:

在这里插入图片描述

然后,网络在解码器中对它们进行联合推理。与CroCo类似,解码器是一个通用的transformer网络,配备了交叉注意力。每个解码器块都处理来自另一个分支的令牌:

在这里插入图片描述

最后,在每个分支中,一个单独的回归头获取解码器标记集,并输出点图和关联的置信度图:

在这里插入图片描述

3D Regression loss.

视图 v∈{1, 2} 中有效像素 i∈D 的回归损失简单定义为欧氏距离:

在这里插入图片描述

为了处理预测和地面实况之间的尺度模糊性,我们用比例因子 z = norm(X, X) 和 ̄z = norm( ̄) 对预测点图和地面实况点图进行归一化处理,X,X),它们分别简单地代表了发送所有有效点到原点的平均距离:

在这里插入图片描述

Confidence-aware loss.

存在一些不明确的三维点,例如天空中或半透明物体上的点。一般来说,图像中的某些部分通常比其他部分更难预测。因此,我们共同学习为每个像素预测一个分数,该分数代表网络对该特定像素的置信度。最终的训练目标是所有有效像素的置信度加权回归损失:

在这里插入图片描述

其中 C是像素 i 的置信度得分,α 是一个控制正则化项的超参数 。为了确保严格的正置信度,我们通常定义

在这里插入图片描述

使用的数据集和性能度量

Visual Localization:

7Scenes and Cambridge Landmarks datasets

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Multi-view Pose Estimation

CO3Dv2 and RealEstate10k

Monocular Depth

DDAD,KITTI,NYUv2 , BONN , TUM

Multi-view Depth

the DTU, ETH3D, Tanks and Temples, and
ScanNet

3D Reconstruction

DTU

<think>好的,我现在需要帮助用户复现dust3r项目或功能。根据用户提供的引用内容,我应该先整理出清晰的步骤。首先,用户提到需要进入项目目录并安装依赖,引用[1]和[5]都提到了安装步骤,特别是引用[5]提到需要下载croco的依赖,可能这里需要特别注意,因为直接下载项目文件可能croco文件夹是空的,必须手动下载。 接下来,用户可能还需要配置环境,比如安装Python和相关库。引用[2]提到工具包简化了3D数据处理,所以可能需要安装对应的Python包,比如torch、opencv等,这些可能在requirements.txt里已经列出,用户需要运行pip install命令。 然后,运行示例代码的部分,引用[1]提到运行示例,可能需要使用提供的脚本或命令,比如demo.py。用户可能需要准备测试数据,或者按照文档中的指示进行操作。 另外,引用[3]和[4]提到模型训练和结果分析,如果用户需要复现训练过程,可能需要下载预训练模型或准备数据集。不过用户的问题主要是复现项目或功能,可能更侧重于运行而不是训练模型,所以重点可能在环境配置和示例运行。 需要提醒用户注意的常见问题,比如croco依赖的手动下载,这可能是一个容易出错的地方。还有环境兼容性问题,比如Python版本、CUDA版本是否匹配等。此外,可能还需要安装额外的库,如可视化工具或点云处理库,引用[2]提到集成可视化库,可能需要安装Mayavi或Open3D之类的。 最后,生成相关问题时要围绕复现过程、环境配置、功能应用等,帮助用户深入理解项目结构和使用方法。</think>### 复现 dust3r 项目的分步教程 #### 1. 环境准备 - **克隆项目仓库**: ```bash git clone https://github.com/naver/awesome-dust3r cd awesome-dust3r ``` - **安装依赖**: ```bash pip install -r requirements.txt # 安装基础依赖[^1] ``` - **手动下载croco依赖**: - 从官方仓库下载[croco](https://github.com/naver/croco)源码,解压后替换项目中的`croco`空文件夹[^5]。 #### 2. 配置模型与数据 - **下载预训练模型**: - 从项目文档提供的链接下载`dust3r_model.pth`,保存到`checkpoints/`目录。 - **准备测试数据**: - 使用示例图像(如项目提供的`demo_images/`)或自定义图像对。 #### 3. 运行示例代码 - **执行单图像重建**: ```python import dust3r model = dust3r.DUST3R(device=&#39;cuda&#39;) # 加载模型 result = model.process_image(&#39;input_image.jpg&#39;) # 处理单张图像 ``` - **多视图重建示例**: ```bash python demo.py --input_dir demo_images/ --output_dir results/ # 运行多视角重建 ``` #### 4. 可视化结果 - **使用内置工具**: ```python dust3r.visualize_pointcloud(result[&#39;pointcloud&#39;]) # 调用集成可视化库[^2] ``` - **导出为PLY格式**: ```python result.export_ply(&#39;output.ply&#39;) # 保存点云数据[^2] ``` --- ### 注意事项 1. **硬件要求**:需NVIDIA GPU(建议显存≥8GB)以支持CUDA加速。 2. **依赖冲突**:若出现库版本问题,可尝试创建虚拟环境: ```bash python -m venv dust3r_env source dust3r_env/bin/activate # Linux/macOS ``` 3. **调试建议**: - 若`croco`编译失败,检查CUDA工具链版本是否与PyTorch匹配。 - 图像输入需包含EXIF元数据以提取相机参数[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值