0


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

目录


一、前言

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

我的个人项目仓库: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。

二、项目安装

1、项目克隆

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

443b4d822eca419597754888e5c4d5c3.pngd9912863212442fba24d76df3ce6ed92.png

输入以下命令克隆项目:

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

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

89494d14514b4540a3e5af2c6505621b.png


报错解决

第一类错误

  • 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

18d09921dd854af6b7292266209b3388.png

第二类错误

解决方法:当你通过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目录结构如下:

20d4abf2b89a4065baedf4d3be3f6a55.png

3、CUDA安装

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

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

nvidia-smi

7a517ab925e74a3f8de9aa36e82860fe.png

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

3c4e0b193b754adb9af314b43966bf84.png

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

验证CUDA

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

nvcc -V

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

0da8f4f48bb44e50aaa071177217d555.png

4、创建虚拟环境

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

Pytorch版本与Python版本对应关系

版本控制策略 — PyTorch Lightning 2.4.0dev 文档https://lightning.ai/docs/pytorch/latest/versioning.html#compatibility-matrix**Pytorch版本与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

61135fc79b704e7c8dbe2ffdc330fe60.png

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

5、Pycharm项目

使用虚拟环境

f1153176a65a4344bf150c86dd512ded.png

57349a0921564025a8f2d6853debf910.png

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

9b77c98bd274475087f7d07ab6fa9075.png

df4437a4f7814dc8a4988dadb25be96d.png

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中的终端,输入指令

0aca931d82fb4edbae4f1d69c7e2c271.png

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

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

3600ee30e93d47169d669ee095055c93.png

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

a4a68989fb0d49a6865959592a8177db.png

报错解决

使用conda指令安装失败

112304ad6e354863b4e5da1ce1195bb9.png

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

7648434eaf464abaa62268cba44da562.png

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

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

3bf3a641cf2f42968ff48cdb85fd2873.png

更快的安装方法:可以采用下载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系统

0a9b8f9aaf994c51b552bec04996aaef.png

8e117cc295b046788eacc1d9f00f9ce9.png

e962a45a07dd47888e3b32963c925f51.png

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

3fcd9509a5e344d088fb5a2b98fd9b3c.png

验证安装

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

conda list

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

377f1756f29648e39f3d0cef122e7a51.png

943812320e704c2f90ba659ef423c87f.png

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

c5403576dc3e48fe868a282cabe78fe2.png

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

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

9、导入模型权重

1d330ba2f7f14a85b6ca9409655ed4bd.png

    如上可知,项目官方提供了三个模型,下载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

2443df4133774ab8b938c79b6297a4d5.png

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

294b6e204d8942a18cb3413f5c102f11.png

d895b6d0f9de4647bc8d04eab584c2e6.png

3419ff59771b4b4e8f89069bb3c7baf4.png

53d5cd5efcf2410e8017150cb0fcab36.png

选中并运行

e8042e7a18e540ccbc96aff8bf0ea55b.png

运行结果

38f58e49e14f43788244435fbe95fd32.png

点击进入web UI页面3d8f455fd6e64ce68c8aa7ecb8c95f02.png

关闭运行

在终端按 ctrl + C

884b490fc1e3425294286ecd1b9ec692.png

报错解决

第一类错误

  • Exception: tried to load naver/DUSt3R_ViTLarge_BaseDecoder_512_dpt from huggingface, but failed332e7ebc1d164360b09c50083db42bff.png

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

b99f58af54054ad5b9507aa1eb571668.png

3a3284d412de40eb850ac0af86891118.png

第二类错误

  • TypeError: 'int' object is not subscriptable2899ed41ee8e4adc92a257ebec9e6b24.png

解决方法:该部分为Python断言(

assert

)语句,直接注解掉即可

c10bcdcff49849cbb35e949733159a07.png

web UI使用

上传两张图片

7283de93319b457292d8055b98b79844.jpeg4462ffc085c8405db5217aaea06c0019.jpeg

建模结果展示偏黑

542579081aa549e7a4fa321d9c6d7dc1.png

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

aad2572bb4f649fc9e07070e2bc9f292.png

2c83bcaadad94d55ba35817fc70b5911.png

可以下载三维重建结果

a93667db77924f849cf78016b9ea1ed7.png

2、Usage脚本使用

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

复制脚本代码

c4cece0e5c164da9bde218ec31795ce0.png

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

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

e66c80d7784244af8ff976e95d1b5f00.png

右键点运行

2dd60559c46942eca47d59291a61dc16.png

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

41a82b39bafb41688f5ad2ce5e230f0c.png

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

报错解决
  • 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'

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


本文转载自: https://blog.csdn.net/qq_43063612/article/details/140881622
版权归原作者 不太聪明的椰羊 所有, 如有侵权,请联系我们删除。

“DUSt3R 三维重建:Windows + Pycharm本地安装使用全流程”的评论:

还没有评论