三维重建——DUSt3R

1.三维重建介绍

         三维重建是指从一系列二维图像或其他传感器数据中恢复三维物体的几何结构和外观信息的过程。三维重建在许多领域中都有应用,包括计算机视觉、计算机图形学、医学影像处理、建筑和文物保护等。它可以用于创建虚拟现实环境、数字化文物、建筑物和城市场景的建模,以及在医学中用于诊断和手术规划等领域。

今天星主给大家介绍一下人家最近开源的一项工作——DUSt3R(DUSt3R: Geometric 3D Vision Made Easy)。

2.DUSt3R

        DUSt3R是由Aalto University和Naver Labs Europe联合开发的,它是一款基于深度学习的3D重建工具。下面是文章的Abstract翻译:

        野外多视角立体重建(MVS)需要首先估计相机的参数,如内在参数和外在参数。这些通常是冗长而繁琐的,但它们是在3D空间中对相应像素进行三角测量的必要条件,这是所有性能最好的MVS算法的核心。在这项工作中,我们采取了相反的立场,并引入了DUSt3R,这是一种全新的范式,用于任意图像集合的密集和无约束立体3D重建,即在没有相机校准和视点姿势的先验信息的情况下进行操作。我们将两两重建问题转换为点映射的回归,放松了通常投影相机模型的硬约束。我们证明这个公式很好地统一了单眼和双眼的重建情况。在提供两张以上图像的情况下,我们进一步提出了一种简单而有效的全局对齐策略,该策略在一个共同的参考框架中表达所有成对点图。我们的网络架构基于标准的Transformer编码器和解码器,允许我们利用强大的预训练模型。我们的公式直接提供了场景的3D模型以及深度信息,但有趣的是,我们可以无缝地从中恢复,像素匹配,相对和绝对相机。所有这些任务的详尽实验表明,所提出的DUSt3R可以统一各种3D视觉任务,并在单/多视角深度估计和相对姿态估计上设置新的sota。总之,DUSt3R使几何3D视觉任务变得容易。[1]

下面是网络架构图:

不管是单张图还是多张图都可以进行重建,具体详细的信息大家可以去看原文,星主接下来展示如何在Windows上运行其代码。

github传送门:GitHub - naver/dust3r

3.安装DUSt3R

3.1克隆DUSt3R

git clone --recursive https://github.com/naver/dust3r
cd dust3r

3.2 创建虚拟环境

conda create -n dust3r python=3.11 cmake=3.14.0
conda activate dust3r 
conda install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia  # use the correct version of cuda for your system
pip install -r requirements.txt

上面cuda版本需要根据自己的设备进行更改

3.3 为RoPE编译cuda内核(如在CroCo v2中)(可选)

DUST3R依赖于RoPE位置嵌入,可以为此编译一些cuda内核以获得更快的运行时间。

cd croco/models/curope/
python setup.py build_ext --inplace
cd ../../../

注意:不管你是手动下载DUSt3R的ZIP文件还是克隆的,一定要查看dust3r文件夹里面的croco文件夹是否为空。若为空,则去此地下载(GitHub - naver/croco at 743ee71a2a9bf57cea6832a9064a70a0597fcfcb

3.4 下载预训练权重

创建一个checkpoints文件夹,然后把权重文件放在此文件夹下。这里星主提供了两个人家训练好的权重,一个是要求输入图像大小为224×224,一个是要求输入图像大小是512×512。

链接:https://pan.baidu.com/s/1eeuXd3kFGVZmFrnENaDUCg 
提取码:zc1t 

安装完成后,根目录文件如下图所示:

4.运行

在dust3r文件夹里,打开终端运行如下代码,注意要指定--image_size参数,不然可能会因为图像大小而报错。

python demo.py --weights checkpoints/DUSt3R_ViTLarge_BaseDecoder_512_linear.pth --image_size 512

# Use --image_size to select the correct resolution for your checkpoint. 512 (default) or 224
# Use --local_network to make it accessible on the local network, or --server_name to specify the url manually
# Use --server_port to change the port, by default it will search for an available port starting at 7860
# Use --device to use a different device, by default it's "cuda"

运行后会在终端里出现一个网址,复制这个网址并在浏览器中打开,出现以下界面:

然后在file那一栏里上传你的图片,注意,如果你要上传好几张图片时,记得同时拖进去,不要一张一张地放,不然你可能就只会放进去一张图片。然后你可以修改下面的参数,默认的也行。最后点击Run即可生成3D图形。

下面是星主用手机拍摄桌面上的水杯而生成的3D图。

看着效果还不错。下面是同时生成的深度图和置信图

至此,星主的分享就结束了,详细的情况大家可以去浏览论文。最后,星主贴心的为大家附上DUSt3R整个文件,包括人家的预训练权重。

链接:https://pan.baidu.com/s/1bVdxdXXY4KRHq1s881GzrA 
提取码:f1be 

参考文献

[1] Wang, S., Leroy, V., Cabon, Y., Chidlovskii, B., & Revaud, J. (2023). DUSt3R: Geometric 3D Vision Made Easy. ArXiv, abs/2312.14132.

  • 24
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值