10.24 cv方向3DMM必备环境——Windows10/11下pytorch3d[完美安装版]

前言

Pytorch3d 在windows上的安装不如Linux系统方便,因为要使用Cpython去编译C++的源码,在CUB、cuda等软件下,很容易出现问题,今天给大家带来一个安装方法和细节!

本方法支持windows10和win11系统,VS2022、VS2019等目前主流的系统和软件版本,在本机环境中,由于我是刚刚装的,所以除了CUDA都是最新版本,这里提前告诉下读者们。


1.编译安装

1.1.前置依赖和软件环境(这里不讲cuda安装windows直接下载双击安装就行,环境PATH自动配置的)

如果没有conda环境,创建conda 环境 安装

conda create -n name python=3.9
conda activate pytorch3d

在环境中补充基本的软件包

conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install jupyter
pip install scikit-image matplotlib imageio plotly opencv-python
pip install black usort flake8 flake8-bugbear flake8-comprehensions

1.2 重要软件版本安装 ——本机环境参考

  1. vs2022 && vs2019
  2. cuda11.7(11.8不要选就行,因为在11.8的代码重构了,在编译torch3d时候会有问题)
  3. conda torch安装,进入torch官网自行选择,我是cuda11.7选择如图
    在这里插入图片描述
  4. CUB 选择最新的即可:(我选的CUB1.17,1.71.2 我都试过)
    地址:https://github.com/NVIDIA/cub/releases
    在这里插入图片描述
    这里还是要看清版本对应的CUB,主要是你的CUDA版本,在官网查阅。
    解压到你的指标目录后,在系统PATH中建立CUB_HOME ,引入路径:
    在这里插入图片描述
  5. 点击pytorch3d 下载:pytorch3d 下载source包
    我下的0.7.0最新的,也是要核对好了版本,我的torch是1.12.1,所以还是下了最新的。
    在这里插入图片描述

1.3 安装编译和问题解决

  1. 打开pytorch3D文件下的,setup.py文件,将extra_compile_args = {“cxx”: [“-std=c++14”]} 修改为: extra_compile_args = {“cxx”: []};
  2. 编译步骤:打开windows的菜单:

一般VS会自动给你配好,不论VS什么版本,如果找不到一般在这里C:\ProgramData\Microsoft\Windows\Start
Menu\Programs|

在这里插入图片描述=
打开后,进入到你的torch3d目录,然后激活你的conda环境,进行编译:

下面的问题一,你如果和我一样安装的新版本,那么必会遇到所以直接修改了再编译!

运行:

set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1
python setup.py install

等待编译完成,过程中可能会遇到如下问题:

问题一:

在这里插入图片描述
根据图中编译提示:我们打开你的cuda目录下:\include\thrust\system\cuda\config的代码,在74行加入提示的语句,如下修改:

在这里插入图片描述

问题二:

C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/include\cub/device/dispatch/dispatch_segmented_sort.cuh(379): error: expected a member name

3 errors detected in the compilation of "D:/research/code/pytorch3d/pytorch3d/csrc/pulsar/cuda/renderer.backward.gpu.cu".
renderer.backward.gpu.cu

切换CUB的版本和你的cuda没匹配,然后修改环境变量确定后,需要重启VS的命令行 重复上述的编译步骤,记得要重启命令行!

问题三:

error: namespace thrust::cub has no member DebugSyncStream
这个我是直接将11.8换成cuda11.7了 这个问题不常见,不过记录下,报错表面是语法问题,本质是cuda11.8的代码重构了部分。


问题四:


raise RuntimeError(message)
RuntimeError: Error compiling objects for extension

打开:\envs\torch-gpu\Lib\site-packages\torch\utils 下的cpp_extension.cpp文件,搜索 ‘ninja’ 然后将[‘ninja’,‘-v’]改成[‘ninja’,‘–version’], 尝试切换CUB的版本把。如果你按照我的步骤,这个问题和问题二和问题三都是应该产生不了的。

安装完成:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44119362/article/details/127315618