赞
踩
用于记录下在windows下安装pytorch3d过程,方便后期查阅,在安装过程中,以下链接提供了非常大的帮助。
- conda create -n igev python=3.9
- conda activate igev
先安装gpu驱动,本机选用537.34,安装好以后在conda下用命令 nvidia-smi 可以查看当前驱动支持的最高cuda版本。
结合将使用的pytorch版本,本机选择安装CUDA 11.7,然后下载Cudnn 8.8.1并解压,将解压后的文件拷入cuda11.7对应的目录中即可。此时,在conda下用命令 nvcc -V 或者 nvcc --version 查看到当前使用的默认cuda版本。
从INSTALLING PREVIOUS VERSIONS OF PYTORCH中选择对应的版本安装。
- # CUDA 11.7
- conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.7 -c pytorch -c nvidia
因本环境之前安装过其他版本,导致安装过程中出现了一些报错,按照报错提示从路径
C:\Users\Administrator\anaconda3\pkgs
找到错误提示的包并删除,然后重新执行上面的 conda install xxxxxx 直到安装成功。如果是重新创建的环境,应该不会有这种烦恼。安装好以后,可以执行以下代码测试看看是否运行正常。
- >>> import torch
- >>> torch.__version__
- '1.13.0'
- >>> torch.version.cuda
- '11.7'
- >>> torch.cuda.is_available()
- True
- >>> import torchvision
- >>> torchvision.__version__
- '0.14.0'
- >>> torch.rand(2, 3).to(device='cuda')
- tensor([[0.1089, 0.0720, 0.3776],
- [0.9196, 0.8839, 0.5279]], device='cuda:0')
从 NVIDIA CUB 根据cuda版本下载对应的cub版本(本机选择cub-1.17.2),解压并设置环境变量 CUB_HOME。
因为本机环境事先安装过不少依赖项,所以只安装了以下项。
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
按照 pytorch3D Windows下安装经验总结 则需要依次安装以下项。
- 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
按照 Pytorch3d Installation 说明,根据pytorch版本从 Pytorch3d Release 选择下载pytorch3d-0.7.2,解压后进入编译安装环节。
从windows开始菜单中搜索"x64 Native Tools Command Prompt for VS 2019",并以管理员身份打开。然后进入pytorch3d文件夹的目录,先配置visual studio环境变量。这一步的作用没做细致验证,作用未知,跳过这一步,直接进入下一步,不知道是否也可行。
- cd F:\d2l\__install__\pytorch1.13.0_cuda11.7\pytorch3d-0.7.2
- set DISTUTILS_USE_SDK=1
- set PYTORCH3D_NO_NINJA=1
接着,切换到Anaconda环境,进入pytorch3d文件夹的目录,执行。等待几分钟,可看到安装成功提示。
- cd F:\d2l\__install__\pytorch1.13.0_cuda11.7\pytorch3d-0.7.2
- python setup.py install
测试环节出了一点小插曲,在上一步Anaconda下提示成功后执行以下可以成功,
- >>> import pytorch3d
- >>> pytorch3d.__version__
- '0.7.2'
但是,执行 Pytorch3d Get Started 测试代码时报错 " ImportError: cannot import name '_C' from 'pytorch3d' "
- from pytorch3d.utils import ico_sphere
- from pytorch3d.io import load_obj
- from pytorch3d.structures import Meshes
- from pytorch3d.ops import sample_points_from_meshes
- from pytorch3d.loss import chamfer_distance
-
- # Use an ico_sphere mesh and load a mesh from an .obj e.g. model.obj
- sphere_mesh = ico_sphere(level=3)
- verts, faces, _ = load_obj("model.obj")
- test_mesh = Meshes(verts=[verts], faces=[faces.verts_idx])
-
- # Differentiably sample 5k points from the surface of each mesh and then compute the loss.
- sample_sphere = sample_points_from_meshes(sphere_mesh, 5000)
- sample_test = sample_points_from_meshes(test_mesh, 5000)
- loss_chamfer, _ = chamfer_distance(sample_sphere, sample_test)
通过google ImportError: cannot import name '_C' from 'pytorch3d',从 pytorch3d issue 中找到问题根源。
在Anaconda中执行
- >>> print(pytorch3d)
- <module 'pytorch3d' from 'C:\\Users\\Administrator\\anaconda3\\envs\\igev\\lib\\site-packages\\pytorch3d-0.7.2-py3.9-win-amd64.egg\\pytorch3d\\__init__.py'>
可确定当前import pytorch3d 是否pytorch3d的安装路径,而不是它的解压缩路径。确定原因后,重启Anaconda, 重新activate环境后,上述测试代码正常运行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。