项目复现---nvdiffrec

复现项目GitHub - NVlabs/nvdiffrec: Official code for the CVPR 2022 (oral) paper "Extracting Triangular 3D Models, Materials, and Lighting From Images".

Windows环境下:

一、配置环境

1、前面下载安装顺利,运行如下命令出现报错

pip install --global-option="--no-networks" git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch


//报错
ERROR: Command errored out with exit status 128: git clone -q https://github.com…

上面的命令是一个结合的命令,首先会用git去下载项目,然后进入项目中setup.py文件所在的位置,接着运行这个文件,安装项目,故可以手动下载项目,然后进行项目的安装

2、运行下面的代码

//首先cd到setup.py文件所在文件夹
python setup.py install --user

开始下载后又出现如下问题

//报错
.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

解决方法是将setup.py中的“cmdclass={'build_ext': BuildExtension}”这一行改为“cmdclass={'build_ext': BuildExtension.with_options(use_ninja=False)}”,pytorch默认使用ninjia作为backend,这里把它禁用掉就好了

继续执行安装代码,出现新的错误

Error limit reached.
100 errors detected in the compilation of "../../src/cpp_api.cu".
Compilation terminated.
error: command 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\bin\\nvcc.exe' failed with exit status 1

查看教程发现出现这个错误的原因是无法编译通过,在tiny-cuda-nn项目的issue中查找,尝试以下方法:Trouble installing tiny-cuda-nn · Issue #110 · NVlabs/tiny-cuda-nn · GitHub
未成功。

发现有一个办法是尝试专门安装 VS2019 16.9.4 而不是 VS2019 16.11 或任何其他版本。笔者windows里的vs2019是16.11版本的,所以尝试下这个方法。点击链接直接下载​​​​​​https ://download.visualstudio.microsoft.com/download/pr/3105fcfe-e771-41d6-9a1c-fc971e7d03a7/e0c2f5b63918562fd959049e12dffe64bf46ec2e89f7cadde3214921777ce5Builds2/

这里我安装到了D盘,结果安装完继续运行python setup.py install --user时,遇到找不到VS2019的错误,猜测是由于未安装到C盘的原因(项目文件在C盘)。卸载重装,继续运行,成功开始编译。

编译过程中又遇到如下错误

xxx/include\tiny-cuda-nn/cutlass_matmul.h(40): fatal error C1083: 无法打开包括文件: “cutlass/cutlass.h”: No such file or directory

error: command 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\bin\\nvcc.exe' failed with exit status 2

 这个错误的原因大概是include文件夹里面头文件cutlass/cutlass.h不存在,打开include确实没发现cutlass这个文件夹。但是在tiny-cuda-nn项目也没发现这个文件夹。随后在tiny-cuda-nn项目issue中找到答案,该项目需要拉取一个子模块cutlass,而单纯使用git clone或者下载项目zip无法拉取到该模块文件,需要使用git clone --recursive这个选项才行,重新克隆项目又出现下载不了子模块的问题,直接在页面https://github.com/NVIDIA/cutlass手动下载cutlass,然后将里面的cutlass文件夹复制到上述include文件夹里去,重新运行安装命令,成功安装。

二、训练

运行python train.py --config configs/bob.json,开始训练,我用的显卡是3060,6G,命令行输出显示GPU内存不足,再次运行并查看显卡的占用情况,结果如下:
项目复现---nvdiffrec_第1张图片

证明这是由于显卡容量不足导致的问题,按照项目作者所述减小.json里的batch大小。
项目复现---nvdiffrec_第2张图片

(batch相关知识:首先将训练集分为一个一个的batch,每一次取一个batch大小的样本进行训练,把所有样本训练完需要的次数为iteration,训练完所有的batch叫做一次epoch。)

更改batch为2,成功开始训练,训练大概用了10几分钟,最终的loss为img_loss=0.006581, reg_loss=0.000942, lr=0.00198,Loss的变化图如下:
项目复现---nvdiffrec_第3张图片

 

学校服务器环境下运行:

你可能感兴趣的:(深度学习,深度学习)