【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程
文章目錄
- 【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程
- 前言
- 確定版本對應關系
- 源碼編譯安裝Pytorch3d
- 總結
前言
本人windows11下使用搭建PyTorch3d環境,故此以詳細教程以該算法依賴的環境版本為參照。
確定版本對應關系
環境版本要求保持一致:CUDA,CUB,Pytorch,Pytorch3d
查看CUDA版本
注意這里的cub對應的是真實的物理機安裝的cuda版本號(環境變量里配置的cuda),不是虛擬環境下的cuda版本號。
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虛擬環境:
conda create -n pytorch3d python=3.9
activate pytorch3d
然后安裝對應版本pytorch和cuda包:
pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu118
安裝Pytorch3d的依賴項:
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 命令設置臨時環境變量。
僅對當前命令行窗口生效,無需永久修改系統配置,不影響系統全局配置。
優先級:臨時變量 > 用戶變量 > 系統變量。
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),輸入以下指令:
# 激活對應的環境,進入到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文件。
在它前面加上一行
#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"執行以下命令:
# 可能需要科學上網,需要下載一些依賴.
python setup.py install
成功安裝。
# 查看環境中的是否成功安裝包
conda list
用一段測試代碼驗證pytorch3d能否正常使用。
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環境中運行三維重建相關的代碼。