DUSt3R 三维重建:Windows + Pycharm本地安装使用全流程

目录

一、前言

1、官网入口

2、说明 

二、项目安装

1、项目克隆

报错解决

2、检查项目完整性

3、CUDA安装

4、创建虚拟环境

5、Pycharm项目

6、安装Pytorch

报错解决

7、安装环境配置

8、依赖安装:RoPE(可选)

9、导入模型权重

三、项目使用

 1、demo-web UI使用

报错解决

2、Usage脚本使用

报错解决


一、前言

        DUSt3R是由来自芬兰阿尔托大学和Naver欧洲实验室的研究人员推出的一个3D重建框架,旨在简化从任意图像集合中重建三维场景的过程,而无需事先了解相机校准或视点位置的信息。

建议Windows环境下:

  • cuda>=11.3:11.1及以下不支持Windows版本1.10及以上的torch
  • torch>=1.10:项目依赖有使用“torch.frombuffer”,PyTorch在1.10版本之后引入了torch.frombuffer方法,用于从缓冲区创建张量,1.9及以下版本没有这个函数,会导致运行报错
  • python>=3.9:项目依赖有使用functools模块中的“cache”,cache是在Python 3.9版本中引入的,3.8及以下版本用的是“lru_cache”,会导致运行报错
  • 其他的可能的报错: 比如项目依赖使用了safetensors.torch模块的“load_mode”,在0.3.3的safetensors.torch模块有load_mode,某些版本却是用的load_file,需要自行更换合适的第三方库版本
  • 我的环境参考: CUDA11.6,对应选择Pytorch1.13.0,选择Python3.10

我的个人项目仓库:DUSt3R:  DUSt3R是由来自芬兰阿尔托大学和Naver欧洲实验室的研究人员推出的一个3D重建框架,旨在简化从任意图像集合中重建三维场景的过程,而无需事先了解相机校准或视点位置的信息。 https://gitee.com/cricosly/DUSt3R

1、官网入口

官方项目主页:DUSt3R: Geometric 3D Vision Made Easy (naverlabs.com) https://dust3r.europe.naverlabs.com/

GitHub代码库:naver/dust3r: DUSt3R: Geometric 3D Vision Made Easy (github.com) https://github.com/naver/dust3r

arXiv研究论文:[2312.14132] DUSt3R: Geometric 3D Vision Made Easy (arxiv.org) https://arxiv.org/abs/2312.14132

论文双语阅读:

DUSt3R: Geometric 3D Vision Made Easy (yiyibooks.cn) https://yiyibooks.cn/arxiv/2312.14132v1/index.html

2、说明

  • DUSt3R在Linux、Windows系统上均可使用,安装过程容易踩坑与报错,故记录。
  • 本文基于Windows10 + Pycharm本地部署,电脑自带GPU。
  • 已有朋友尝试,Windows11按文章步骤,也能成功运行没有问题

二、项目安装

1、项目克隆

打开项目父目录,输入cmd,进入终端

 

输入以下命令克隆项目:

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

克隆成功,克隆后会在父目录下建立dust3r项目文件夹


报错解决

第一类错误

  • fatal: unable to access 'https://github.com/naver/dust3r/': Failure when receiving data from the peer
  • OpenSSL SSL_read: Connection was reset, errno 10054
  • Failed to connect to github.com port 443: Timed out

解决方法:git在拉取、提交项目时,中间有http和https代理,我们本地环境本身具有SSL协议,所以取消git的https、http代理即可,诊断输入以下代码。

git config --global --unset http.proxy
git config --global --unset https.proxy

第二类错误

  • fatal: unable to access 'https://github.com/xxxx.git/': OpenSSL SSL_read:Connection was reset, errno 10054

解决方法:当你通过HTTPS访问Git远程仓库,如果服务器的SSL证书未经过第三方机构签署,那么Git就会报错。我们需要让Git忽略SSL证书错误,终端输入以下代码,即可正常进行克隆项目。

git config --global http.sslVerify false

第三类错误

        如果以上两种解决方法都尝试了,还是报错Failed to connect to github.com,可以关闭cmd,过一会或者切换网络再尝试克隆,目前我遇到过这种情况,在关闭cmd等待几分钟后重新克隆就成功了,可能是GitHub本身网站在国内连接不稳定的原因(GitHub网站有些时候能访问有些时候无法访问)

        也可以使用加速器,对GitHub进行加速。

 

2、检查项目完整性

        如果你不是通过克隆下载的项目,而是手动下载DUSt3R的zip文件,要检查dust3r项目跟目录里面的croco文件夹,手动下载一般都是空的,克隆的方式一般不会空,但也建议检查一下。如果是空的,去以下链接下载放入其中:

DUSt3R:naver/croco (github.com) https://github.com/naver/croco/tree/743ee71a2a9bf57cea6832a9064a70a0597fcfcb目录结构如下:

 

3、CUDA安装

根据自己的设备选择合适的CUDA版本进行安装,版本选择方法:

win + R 输入cmd进入终端,输入以下代码查询自己的电脑支持的最高CUDA版本

nvidia-smi

可以看到我的电脑最高支持CUDA12.4,我已经安装了11.6,CUDA安装具体流程在CSDN有很多详细的帖子,官方下载地址:CUDA Toolkit Archive | NVIDIA Developer https://developer.nvidia.com/cuda-toolkit-archive

 

选择你的操作系统、系统版本等,可选离线安装包和在线安装包,离线安装包方便,选择好后,点击下面的Download按钮下载,下载好进行安装即可。

验证CUDA

进入终端,输入以下代码查询CUDA安装结果

nvcc -V

出现以下CUDA的版本信息,说明安装成功。

 

4、创建虚拟环境

指令为官方README提供,Python版本自行根据Pytorch版本、CUDA版本、Python版本对应关系选择

Pytorch版本与Python版本对应关系

版本控制策略 — PyTorch Lightning 2.4.0dev 文档 https://lightning.ai/docs/pytorch/latest/versioning.html#compatibility-matrixPytorch版本与CUDA版本对应关系

Previous PyTorch Versions | PyTorch https://pytorch.org/get-started/previous-versions/CUDA11.6,对应选择Pytorch1.13.0,选择Python3.10

我是使用Anaconda管理Python环境,终端输入以下指令

conda create -n dust3r python=3.10 cmake=3.14.0

 输入指令查看虚拟环境是否创建成功

conda env list

虚拟环境创建成功后,就可以以Pycharm打开项目

 

5、Pycharm项目

使用虚拟环境

选中Anaconda的conda可执行文件并加载环境,选中前面建好的dust3r环境

 

6、安装Pytorch

  • 可以使用以下指令自动选择合适的pytorch版本进行安装,cuda版本要改为自己的版本
conda install pytorch torchvision pytorch-cuda=11.6 -c pytorch -c nvidia
  • 也可以自己指定安装 pytorch版本,输入Pytorch官网复制的conda安装指令
conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.6 -c pytorch -c nvidia

 进入Pycharm中的终端,输入指令

 

进入Pytorch官网选择对应版本的Pytorch版本进行安装的方法

Start Locally | PyTorch https://pytorch.org/get-started/locally/如果没有对应的选项,比如我的CUDA11.6,点击图片所示链接进入其他版本的安装选择页面

网页按ctrl + F 搜索自己的CUDA版本,会搜到很多,因为一个CUDA版本可能支持多种Pytorch版本,我这里选择Pytorch 1.13.0,复制conda的指令进行安装

报错解决

使用conda指令安装失败

解决方法:采用pip的方法安装,pytorch官网有提供

pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116

直接使用以上代码可能速度较慢,大概要两个小时左右,有耐心可以直接使用这个

更快的安装方法:可以采用下载whl直接安装,根据官网提供的指令可知:

  • torch==1.13.0+cu116
  • torchvision==0.14.0+cu116
  • torchaudio==0.13.0

 进入官方提供的包下载网站:download.pytorch.org/whl/torch_stable.html https://download.pytorch.org/whl/torch_stable.html版本对应上,右键复制链接,通过X雷或其他下载工具下载可能会块一些

(我X雷下载速度为4MB/s,浏览器为250KB/s左右)

cu116表示CUDA11.6,cp310表示python3.10,win表示Windows系统

cd /d S:\迅雷下载进入到下载目录,conda activate dust3r激活虚拟环境,使用 pip install + 对应的包名称 直接安装上面三种包

pip install torch-1.13.0+cu116-cp310-cp310-win_amd64.whl

pip install torchvision-0.14.0+cu116-cp310-cp310-win_amd64.whl

pip install torchaudio-0.13.0+cu116-cp310-cp310-win_amd64.whl

验证安装

Pycharm打开终端,输入以下代码

conda list

python
import torch # 如果pytorch安装成功即可导入
print(torch.cuda.is_available()) # 查看CUDA是否可用
print(torch.cuda.device_count()) # 查看可用的CUDA数量
print(torch.version.cuda) # 查看CUDA的版本号

 

7、安装环境配置

官方提供的默认安装指令容易安装失败,可以使用清华源安装

# 使用清华源,加快安装速度
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements_optional.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

 

8、依赖安装:RoPE(可选)

        编译 RoPE 的 cuda 内核(如 CroCo v2 中),单独下载 croco 代码,放入源代码对应的 croco 目录下,详情见【2、检查项目完整性】,DUST3R依赖于RoPE位置嵌入,可为此编译一些cuda内核以获得更快的运行速度。

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

 

9、导入模型权重

        如上可知,项目官方提供了三个模型,下载DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth即可,下载前需要在项目中新建一个文件夹checkpoints,下载的模型放入其中

        官方提供的wget下载方式是Linux使用的指令,Windows直接下载放进去就行,可以使用X雷等第三方工具下载,下载速度更快。

 

三、项目使用

 1、demo-web UI使用

        可以自行上传图片进行建模,图片不限制于两张,灵活性较好。

        官方文档是python3启动,直接使用python即可,下面两个代码效果一样

python demo.py --model_name DUSt3R_ViTLarge_BaseDecoder_512_dpt

python demo.py --weights checkpoints/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth

如果觉得每次都要在终端输入代码麻烦,可以建立运行配置文件

选中并运行

运行结果

点击进入web UI页面

关闭运行

在终端按 ctrl + C 

报错解决

不含因安装的库版本原因(如函数废弃、函数改名导致的引入错误)而造成的报错

第一类错误

  • Exception: tried to load naver/DUSt3R_ViTLarge_BaseDecoder_512_dpt from huggingface, but failed

解决方法:找不到模型权重文件位置,项目代码中对模型的位置拼接错误,修改demo.py中的naver为checkpoints。并加上.pth文件后缀

第二类错误

  • TypeError: 'int' object is not subscriptable

解决方法:该部分为Python断言(assert)语句,直接注解掉即可

web UI使用

上传两张图片

建模结果展示偏黑

 

勾选As pointcloud,Transparent cameras,颜色恢复正常

 

可以下载三维重建结果

 

2、Usage脚本使用

        官方还提供了Usage脚本,可以直接三维建模,相比于demo-web UI,该脚本需要给出图片存储位置读取图片,灵活性较差。

复制脚本代码

建立脚本,修改模型检查点和图片位置

tip:模型检查点文件一定要加后缀.pth,否则会报错无法运行

 右键点运行

运行后自动弹出可视化窗口

 点位匹配图,可自行右键保存

报错解决

不含因安装的库版本原因(如函数废弃、函数改名导致的引入错误)而造成的报错

  • OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
  • OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

 

解决方法:该报错不一定第一天就会发生,可能是过了几天后运行项目突然出现的,没有任何安装或更新包等其他异常操作,直接使用的时候报错了。

 

在自己的环境对应文件夹下搜索libiomp5md.dll文件

  • dust3r\Lib\site-packages\torch\lib
  • dust3r\library\bin

两个文件夹中各有一个,冲突了,删除dust3r\library\bin中的就好了。

为了保险可以进行备份,将文件剪切出来,之后出现问题可以补救。
该方法成功解决了我的问题。

 

其他解决方法,参考总结该问题解决方案:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized-CSDN博客 https://blog.csdn.net/peacefairy/article/details/110528012

 

其他情况一:确定使用matplotlib导致的

        可能是该库影响了,那么可以尝试一下该命令对该包进行安装,看是否能解决问题。

conda install nomkl 

其他情况二:numpy或其他

        根据错误提示添加到相应的文件配置中,该语句建议放在文件的顶头部分,且保证两句接连的前后顺序关系,即不要在这两个语句之间插入其他语句。

import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'

 


如果您在阅读过程中发现任何错误或遗漏,欢迎不吝指正!

 

 

### 初始化3DGS使用 Dust3R 对于如何初始化3DGS(三维地理信息系统)使用 Dust3R 工具,这通常涉及到特定于应用程序的操作流程。然而,在提供的参考资料中并未找到关于 Dust3R 和 3DGS 的具体说明。 尽管如此,基于专业知识可以推测该过程可能涉及以下几个方面: #### 配置环境变量 确保所有必要的环境变量已正确定义,以便能够访问所需的库和工具链。虽然这不是直接针对 Dust3R 或者 3DGS 的设置,但是良好的开发实践总是从正确的环境配置开始。 #### 安装依赖项 安装任何必需的第三方软件包或库,这些可能是通过包管理器来完成,例如 Python 的 pip 或 Node.js 的 npm。如果 Dust3R 是一个命令行工具,则需要确认其已经正确安装并可以在系统的 PATH 中被调用。 #### 加载项目数据 准备用于加载到 3DGS 中的数据集,并按照官方文档中的指导进行格式化处理。这部分工作取决于所使用的具体版本以及支持的数据源类型。 #### 启动服务端口 启动服务器实例以提供 API 接口或其他形式的服务给客户端应用连接。此步骤假设存在网络通信需求;如果是纯本地操作则跳过。 #### 运行初始化脚本 执行由开发者编写的专门用来初始化状态的脚本文件。这类脚本可能会创建默认数据库表结构、导入初始记录等重要任务。 由于缺乏具体的上下文和技术细节描述,上述建议较为泛化。为了获得更精确的帮助,请查阅 Dust3R 及目标平台最新的官方手册或者联系技术支持团队获取进一步指示[^1]。 ```bash # 假设这是一个简单的 shell 脚本来展示概念性的初始化过程 #!/bin/bash echo "Starting initialization of 3DGS with Dust3R..." export DUST3R_HOME=/path/to/dust3r # 设置环境变量 pip install required-packages # 使用 pip 安装 python 库作为例子 dust3r --load-data /data/path # 执行 dust3r 并指定要加载的数据路径 ./start-server.sh # 开始运行 web server python init_db.py # 创建数据库表格和其他准备工作 echo "Initialization completed." ```
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值