【Windows环境下nerfstudio环境配置及复现(含tinycudann安装、poster数据)】

nerfstudio简介

nerf自从出世之后便有了各种各样的变体,比如mip-nerf,mip-nerf306等等。2023年加州大学伯克利分校(BAIR)的研究人员开发了名为 Nerfstudio 的 Python 框架,用于神经辐射场(NeRF)的开发。

配置环境

目前,因为在某实景三维中心实习需要用到nerfstudio完成项目,所以经历了这两天的环境配置踩坑之后将整个配置流程写在这里,以供有需求的人使用。Windows系统和Ubuntu系统下的安装还是有些差别的,为了方便项目开发,我单位采用Windows系统进行环境配置。配置环境中的命令,部分来自GitHub上原作者给出的,部分来此CSDN上一些老哥分享的。配置过程中,最难搞的是tinycudann的配置,我查看了很多方法,又根据自身电脑配置,将符合自己情况且可行的方法分享出来。

  • 虚拟环境创建
    虚拟环境中使用的torch和cuda版本如下:
    python 3.8
    CUDA 11.8
    torch 2.1.2
    torchvision 0.16.2
 conda create --name nerfstudio -y python=3.8  # 创建名为nerfstudio的虚拟环境,python版本为3.8
 conda activate nerfstudio  # 激活该虚拟环境
 pip install --upgrade pip  # 将pip进行更新

进行pip更新的时候报错如图1:
图1
仔细查看报错信息:‘ERROR: To modify pip, please run the following command: E:\Anaconda\envs\ns\python.exe -m pip install --upgrade pip’,那么我们重新执行命令:

E:\Anaconda\envs\ns\python.exe -m pip install --upgrade pip

更新完pip之后,接着需要安装torch和torchvision。使用如下命令行:

pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

如果顺利的话,这里会正常运行,如果您也是用的和我一样的破电脑,那就会报错,如图2:
图2
报错信息:Could not fetch URL https://download.pytorch.org/whl/cu118/torch/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘download.pytorch.org’, port=443): Max retries exceeded with url: /whl/cu118/torch/ (Caused by SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)) - skipping
如果你的电脑上有VPN的话,那就把VPN代理打开重新运行该命令,如果还是不行,那就直接将torch和torchvision包下载到本地手动安装。根据安装命令,我们导航到网址:https://download.pytorch.org/whl/cu118(图3):
图3
在网页上我们可以找到torch和torch vision的入口,点击torch进去下载我们需要的包,直接在该页面上ctrl+f,然后输入2.1.2+cu118,可以发现搜索到了以下几个包:
在这里插入图片描述
因为操作系统为Windows x64,环境配置为CUDA11.8、python3.8,所以我们下载的包名称为torch-2.1.2+cu118-cp38-cp38-win_amd64.whl;同样的方法我们在torchvision的页面上搜索0.16.2+cu118,选择下载torchvision的包名称为torchvision-0.16.2+cu118-cp38-cp38-win_amd64.whl
下载完之后,我们开始手动配置torch和torchvision,在自己的虚拟环境中,使用如下命令行:

cd path/to/your/download files  # 将文件切换到你的下载路径
# 比如我的下载路径是C:\Users\vip\Downloads
# 那么我就要使用命令行cd C:\Users\vip\Downloads切换到下载文件中
pip install torch-2.1.2+cu118-cp38-cp38-win_amd64.whl
# 使用命令安装torch
pip install torchvision-0.16.2+cu118-cp38-cp38-win_amd64.whl
# 使用命令行安装torchvision

接下来安装cudatoolkit相关扩展,虽然我们没有直接安装CUDA11.8,但是使用如下命令行会自动安装相关的包以匹配该命令中的目标安装包:

conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
  • tinycudann编译安装
    好的,接下来就是最难安装的tinycudann了,使用GitHub上原作者给的如下命令行:
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

虽然这里看起来是安装pip install ninja,但其实需要安装的是tinycudann,即使用conda list已经看到ninja成功安装了,但如果没有装上tinycudann还是跑不动。如果你是天选之子的话,那么这里应该是可以顺利进行的,但如果没有顺利进行的话(图4),那说明老天没开眼没把咱选上。
图4如果是因为连接超时的话,那可以把VPN代理打开试一试,如果没用咱就仍然下载到本地安装。根据命令行中的git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch,我们可以分析得到我们需要拉取的目标仓库是https://github.com/NVlabs/tiny-cuda-nn,而我们需要安装的仓库是#subdirectory=bindings/torch。我们直接将整个tiny-cuda-nn包从GitHub上zip download下来。然而,直接下载包会发现fmt文件夹和cutlass文件夹都是空的,所以我们还要将这两个库下载并替换到tinycudann的包中,具体操作我借鉴了这位博主的这篇博客:【深度学习】【三维重建】windows11环境配置tiny-cuda-nn详细教程
tinycudann的下载地址】——【fmt的下载地址】——【cutlass的下载地址】,下载好之后,做如下替换(图5,图源于所借鉴博客),并记住tinycudann的包所在位置路径:
图5
好的,到这一步我们所需要的安装包就准备好了,接下来对tinycudann进行编译,在虚拟环境中使用命令行如下:

cd path/to/tinycudann包/tiny-cuda-nn/bindings/torch  # 切换到你的tinycudann包中torch所在位置
python setup.py install  # 运行编译命令

在运行python setup.py install的时候,我的环境出现报错AttributeError: module 'importlib_metadata' has no attribute 'MetadataPathFinder',如图6所示:
图7这意味着importlib_metadata坏了或者是没安装,使用conda list查看之后,发现是没安装,运行命令行安装该包;

pip install importlib_metadata

再次运行之后报错如图7,RuntimeError: Could not locate a supported Microsoft Visual C++ installation意思是找不到Visual C++编译器的位置:
图6
查阅了其他大佬的文章才知道tinycudann编译之前需要安装vs2019或者vs2022,如果没有安装的话在执行python setup.py install之后会报错。没有安装VS2019或者VS2022的话,请参考文章【安装tiny-cuda-nn时报错RuntimeError: Could not locate a supported Microsoft Visual C++ installation】以及【复现nerfstudio并训练自己制作的数据集】,如果安装了却依然报同样错误的,说明可能是环境变量未配置,也请参照该文章。
然后我重新运行python setup.py install,结果仍然报错,如图8:
图8
内容很多,我查看了一下里面报错的信息有FAILED: E:/Anaconda/envs/ns/Lib/site-packages/tiny-cuda-nn-master/bindings/torch/build/dependencies/fmt/src/format.objE:\Anaconda\envs\ns\Lib\site-packages\tiny-cuda-nn-master/dependencies/fmt/include\fmt/format-inl.h(11): fatal error C1083: 无法打开包括文件: “algorithm”: No such file or directoryFAILED: E:/Anaconda/envs/ns/Lib/site-packages/tiny-cuda-nn-master/bindings/torch/build/dependencies/fmt/src/os.objE:\Anaconda\envs\ns\Lib\site-packages\tiny-cuda-nn-master/dependencies/fmt/include\fmt/os.h(11): fatal error C1083: 无法打开包括文件: “cerrno”: No such file or directoryE:\Anaconda\envs\nerfstudio\include\crt/host_config.h(231): fatal error C1083: 无法打开包括文件: “crtdefs.h”: No such file or directory等等,报错信息很多,我最开始以为是缺少了os.obj、format.obj、cpp_api.obj等等文件,但后来查阅了很久才发现不是。真正原因是tinycudann需要管理员方式打开"x64 Native Tools Command Prompt for VS 2022"执行指令。直接在Windows下方的搜索栏打开该vs终端(图9)
图9
打开VS2022终端之后,输入以下命令行:

cd /d path\to\your\tiny-cuda-nn-master\bindings\torch  # 切换到你的tinycudann包的所在路径
activate your_virtual_env  # 激活你的虚拟环境
python setup.py install  # 运行安装命令

当我执行了这些命令之后,发现和图9报一样的错,说明还是有地方没弄对。后来我搜索了一下为什么会报错fatal error C1083: “crtdefs.h”: No such file or directory,找到了这位博主的文章【Windows编译tiny-cuda-nn时出现fatal error C1083: “crtdefs.h”: No such file or directory】,可能是因为安装的VS设置的编译项默认为x86,与当前系统的CUDA的位数不一致。我所使用电脑为x64,应该先将路径Community/VC/Auxiliary/Build/vcvarsall.bat下的开发环境配置为x64参数。经过everything搜索发现有两个路径的D:\Visual Studio2022(64bit)\IDE\VC\Auxiliary\Build\vcvarsall.batD:\Visual Studio2022(64bit)\BuildTools\VC\Auxiliary\Build\vcvarsall.bat,最终两个都试了之后,发现后者才是需要被配置的。还是在VS2022终端中输入:

"D:\Visual Studio2022(64bit)\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64  # 将VS开发环境配置为x64的
python setup.py install  # 执行编译命令

等一会儿之后,出现Installed e:\anaconda\envs\ns\lib\site-packages\tinycudann-1.7-py3.8-win-amd64.egg Processing dependencies for tinycudann==1.7 Finished processing dependencies for tinycudann==1.7表示编译成功(图10)!
图10

  • nerfstudio的安装
    tinycudann编译好之后,最难做的也就弄完了,接下来我们安装nerfstudio,GitHub上原作者给出了两种方法,咱采用最简单的那种:
pip install nerfstudio

这里安装nerfstudio如果网速不佳的话会等很久很久,等安装好过后,就只有ffmpeg、colmap、hloc需要安装了。

  • 数据下载和测试
    按道理来说,到这一步咱就可以直接训练了,所以使用作者给出的命令来下载数据测试一下:
# Download some test data:
ns-download-data nerfstudio --capture-name=poster

结果依然超时没法下载,想着可以自己根据报错找出URL从网上手动下载吧,参考了一下这篇文章【谷歌直链下载云盘数据集,使用谷歌云盘生成直接下载的url,示例: NeRFStudio-nerfacto默认训练数据集poster下载,nerfstudio 数据集下载链接】结果却是404找不到网址。最后从别人那里找到了分享数据,但是需要会员才能下载,这就很烦。明明人家是开源数据,好家伙一放在这儿就变成了收费内容,damn这太知网了!!!!我将该测试数据以链接的形式贴在文章的末尾,有需要的自取!
弄好数据之后,运行作者给的命令行:

# Train model
ns-train nerfacto --data data/nerfstudio/poster

好的,单位的破电脑稳定输出给我来个报错(图11),ImportError: DLL load failed while importing _ssl: 找不到指定的程序。
图11
网上给出了很多解决方法,各位可以对照着试一试,比如:
1.环境变量配置有问题的,参照这篇文章【importerror: dll load failed while importing _ssl: 找不到指定的程序。问题解决记录
2.文件缺失,需要复制替换的,参照【ImportError: DLL load failed while importing _ssl: 找不到指定的程序
3.需要重装openssl的【参考这篇
4.需要更改python版本的,看看这个【解决fastapi项目使用conda新创建的虚拟环境报错:ImportError: DLL load failed while importing _ssl: 找不到指定的模块
我将网上的方法都试过了,并且重装两次虚拟环境,都没有用。后来单位这边催我,只好先将后面的包安装了,没想到在装完colmap之后这个问题自己就解决了:

# 安装ffmpeg
conda install -c conda-forge ffmpeg  
# 安装colmap
conda install -c conda-forge colmap
conda install -c conda-forge mpir
# 安装hloc
cd ..  # 切换到上级目录
git clone --recursive https://github.com/cvg/Hierarchical-Localization/
cd Hierarchical-Localization/  # 克隆仓库
python -m pip install -e .  # 安装编译

安装完之后,就可以正常运行测试数据了,只是需要下载一个权重,等权重下载好出现图12的样子就说明已经可以了。
图12
点击图12中的http://localhost:7007之后,出现web界面(图13):
图13

Acknowledge

好的,到这里说明nerfstudio已经复现成功了!网上有很多老哥都分享了自己的安装过程,其实大多数操作都相同,只是因为大家各自所使用的环境、系统等等因素不同,需要我们自己动态地对该过程出现的问题进行调整。我只是众多可行方法中的一种,大家选择合适自己的方法即可,感谢文中所引用文章作者做出的贡献!

Conclusion

搭建好环境之后,就需要将其应用到项目中了,后续我可能会继续更新如何将nerfstudio用于重建自己的数据集,以及记录我第一次实习经历和第一次项目落地经历。

Data Available

链接:https://pan.baidu.com/s/1jnRJ7fL-MOpnPFiAdkkzdA 
提取码:x18r

下载好之后,请在你的nerfstudio项目文件夹中data/nerfstudio/poster路径下,然后运行ns-train nerfacto --data data/nerfstudio/poster

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: "Nerfstudio海报"是指Nerfstudio公司或团队为了宣传目的所设计的一种海报形式。Nerfstudio是一个可能是一家创意工作室、设计公司或者类似的艺术机构。他们可能为自己的项目、产品或活动制作海报,用以吸引客户、展示他们的设计能力、展示项目的特点或者宣传特定的活动。 "Nerfstudio海报"很有可能融合了创意、设计元素和宣传手法,以吸引观众的注意并传达重要信息。这个海报可能会使用各种视觉效果、色彩搭配、字体、排版和艺术元素,以创造出独特的视觉效果和印象。海报上可能会有文字或图片信息,以传达他们想要表达的信息、创意或者设计理念。 此外,"Nerfstudio海报"可能会根据不同的目的和受众群体来进行设计和调整。比如,他们会在产品宣传海报中突出产品的特点和优势;在项目宣传海报中突出项目的创新和独特之处;在活动宣传海报中营造出令人兴奋或吸引人参与的氛围。通过这些海报,Nerfstudio可以吸引更多的目标群体注意,从而提升他们的知名度,吸引更多的客户或参与者。 综上所述,"Nerfstudio海报"是一种为了宣传目的而设计的海报,结合了创意、设计元素和宣传手法,通过视觉效果和信息传达来吸引观众,并提升Nerfstudio的知名度和吸引力。 ### 回答2: nerfstudio poster 是指nerfstudio工作室所设计的海报。 nerfstudio是一个创意设计工作室,他们专注于海报设计、平面设计等创意领域。nerfstudio poster 是他们设计的海报,可能用于广告宣传、展览等场合。 nerfstudio的海报设计作品通常具有独特的风格和创意,他们注重色彩运用、排版设计、图像选择等方面,力求表达出独特的设计理念和宣传信息。 nerfstudio poster 的特点可能包括视觉冲击力、色彩鲜明、图像富有表力、文字简洁清晰等。通过这些特点,nerfstudio希望能够吸引观众的眼球,传递出特定的信息或感受。 无论是用于商业宣传还是艺术展示,nerfstudio poster 都是一种重要的设计元素。它能够为产品、活动、展览等赋予视觉形象,提升品牌或活动的知名度和吸引力。 总之,nerfstudio poster 是一种经过nerfstudio工作室精心设计的海报,具有独特的风格和创意,旨在传递特定的信息,为品牌、活动等提供视觉形象支持。 ### 回答3: nerfstudio 海报 nerfstudio 是一个设计工作室,海报是他们设计师所创作的一种平面艺术作品。海报作为一种宣传媒介,可以通过图案和文字将信息传达给观众,是一种具有吸引力和表力的视觉艺术形式。 nerfstudio 海报可能具有以下特点: 1. 创新独特:nerfstudio 设计师注重创造力和独特性,海报的内容和形式都会带有独特的设计风格,吸引观众的眼球。 2. 强调品牌:海报可能会强调 nerfstudio 的品牌形象,通过特定的标识、颜色和字体,使观众能够迅速识别出海报来自于 nerfstudio。 3. 呈信息:海报的设计也会注重传达信息,可能会包 nerfstudio 的服务内容、工作案例或是即将举行的活动等,能够让观众了解到更多有关 nerfstudio 的信息。 4. 艺术性表nerfstudio 海报作为一种艺术形式也会强调其艺术性的表,通过创意的图案和布局,给人以美感和享受。 通过 nerfstudio 海报的设计,观众能够更好地了解 nerfstudio 的品牌形象和服务内容,同时也会受到海报所传达的独特艺术美感的感染。海报作为一种视觉媒介,具有传递信息、吸引观众和展示创造力等多重功能,能够在推广和宣传方面起到重要作用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值