【深度学习】【三维重建】windows11环境配置PyTorch3d详细教程
文章目录
前言
本人windows11下使用搭建PyTorch3d环境,故此以详细教程以该算法依赖的环境版本为参照。
确定版本对应关系
环境版本要求保持一致:CUDA,CUB,Pytorch,Pytorch3d
查看CUDA版本
注意这里的cub对应的是真实的物理机安装的cuda版本号(环境变量里配置的cuda),不是虚拟环境下的cuda版本号。
bash
nvcc -V

假设已经安装了其他版本的cuda和对应的cudnn,可以参考博主的博文【Windows10中下安装多版本CUDA及其切换】
本人的安装版本为:
Python 3.9 + Pytorch 2.2.2 + CUDA 11.8 + cudnn 8_0 + pytorch3d 0.7.6 + CUB 1.17.2
使用anaconda3新建PyTorch3d虚拟环境:
bash
conda create -n pytorch3d python=3.9
activate pytorch3d
然后安装对应版本pytorch和cuda包:
bash
pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu118
安装Pytorch3d的依赖项:
bash
pip install fvcore iopath "numpy>=1.21,<2" -i https://pypi.tuna.tsinghua.edu.cn/simple/
查询对照表,查看cuda对应的cub版本。
TBD版本表示目前还没有确定下将被包含在具体那个CUDA Toolkit或NVIDIA HPC SDK版本中。博主的cuda版本为11.8,选择了cub 1.17.2,没有问题。
根据对照表需要下载对应版本的NVIDIA CUB。
设置永久环境变量:在环境变量中新建CUB_HOME变量名,设置变量值为解压路径(博主在 F:\cub-1.17.2),注意不是添加到Path中:
设置临时环境变量(推荐):要是觉得CUB用的少,避免上面那种将"杂七杂八"的内容永久塞进系统环境变量,使用 set 命令设置临时环境变量。
仅对当前命令行窗口生效,无需永久修改系统配置,不影响系统全局配置。
优先级:临时变量 > 用户变量 > 系统变量。
bash
set CUB_HOME=F:\cub-1.17.2
# 查询环境变量,除了当前命令行窗口,在新窗口是没有显示路径的
echo %CUB_HOME%
源码编译安装Pytorch3d
选择Pytorch3d版本,各版本下有注明其适用的pytorch版本,博主这里是 0.7.6版本。
以管理者身份打开"x64 Native Tools Command Prompt for VS 2019"终端(安装VS 2019),cd到pytorch3d解压目录里(博主在 F:\pytorch3d-0.7.6),输入以下指令:
bash
# 激活对应的环境,进入到Pytorch3d路径下
cd pytorch3d-0.7.6
activate pytorch3d
set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1
# 设置是临时环境变量,只在当前命令行窗口有效(设置了永久环境变量可以忽视)
set CUB_HOME=F:\cub-1.17.2
由于外部 CUB 与 CUDA 自带 Thrust/CUB 冲突,导致可能出现如下错误:
官方参考:编辑位于 "Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/include\thrust/system/cuda/config.h"的config.h文件。
找到自己的CUDA路径下的config.h文件。
bash
在它前面加上一行
#ifndef THRUST_IGNORE_CUB_VERSION_CHECK
修改后为
#define THRUST_IGNORE_CUB_VERSION_CHECK
#ifndef THRUST_IGNORE_CUB_VERSION_CHECK
继续在"x64 Native Tools Command Prompt for VS 2019"执行以下命令:
bash
# 可能需要科学上网,需要下载一些依赖.
python setup.py install
成功安装。
bash
# 查看环境中的是否成功安装包
conda list

用一段测试代码验证pytorch3d能否正常使用。
python
import torch
from pytorch3d.structures import Meshes
from pytorch3d.utils import ico_sphere
# 创建一个简单的3D球体
sphere_mesh = ico_sphere(3, device=torch.device("cuda"))
# 打印球体的顶点和面信息
print("顶点坐标:", sphere_mesh.verts_packed())
print("面索引:", sphere_mesh.faces_packed())
说明能够正常使用。
总结
尽可能简单、详细的介绍windows1环境配置PyTorch3d详细教程,后续可以在当前配置的PyTorch3d环境中运行三维重建相关的代码。