目录
一、前言
DUSt3R是由来自芬兰阿尔托大学和Naver欧洲实验室的研究人员推出的一个3D重建框架,旨在简化从任意图像集合中重建三维场景的过程,而无需事先了解相机校准或视点位置的信息。
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
论文双语阅读:
2、说明
- DUSt3R在Linux、Windows系统上均可使用,安装过程容易踩坑与报错,故记录。
- 本文基于Windows10 + Pycharm本地部署,电脑自带GPU。
二、项目安装
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文件夹,手动下载一般都是空的,克隆的方式一般不会空,但也建议检查一下。如果是空的,去以下链接下载放入其中:
3、CUDA安装
根据自己的设备选择合适的CUDA版本进行安装,版本选择方法:
win + R 输入cmd进入终端,输入以下代码查询自己的电脑支持的最高CUDA版本
nvidia-smi
可以看到我的电脑最高支持CUDA12.4,我已经安装了11.6,CUDA安装具体流程在CSDN有很多详细的帖子,官方下载地址:CUDA Toolkit Archive | NVIDIA Developerhttps://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 | PyTorchhttps://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 | PyTorchhttps://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.htmlhttps://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中的就好了。
为了保险可以进行备份,将文件剪切出来,之后出现问题可以补救。
该方法成功解决了我的问题。
其他情况一:确定使用matplotlib导致的
可能是该库影响了,那么可以尝试一下该命令对该包进行安装,看是否能解决问题。
conda install nomkl
其他情况二:numpy或其他
根据错误提示添加到相应的文件配置中,该语句建议放在文件的顶头部分,且保证两句接连的前后顺序关系,即不要在这两个语句之间插入其他语句。
import os os.environ['KMP_DUPLICATE_LIB_OK']='True'
如果您在阅读过程中发现任何错误或遗漏,欢迎不吝指正!