问题
3D点云相关的代码例如pointnn、pointmlp都需要安装pointnet2_ops,可是基本上在安装pointnet2_ops时总会报错,终归原因是虚拟环境的cuda版本和安装的torch,torchvision,
torchaudio版本不一致导致。
方案
这里以pointmlp(GitHub - ma-xu/pointMLP-pytorch: [ICLR 2022 poster] Official PyTorch implementation of "Rethinking Network Design and Local Geometry in Point Cloud: A Simple Residual MLP Framework")的官网代码为例:
1.首先进入服务器创造3.7版本的虚拟环境:
这里我的环境名字改为了pointmlp2
conda create -n pointmlp2 python=3.7 -y
2.激活环境pointmlp2
有的服务器用的是conda activate pointmlp2
source activate pointmlp2
示例图:
3.检查当前cuda版本号:
nvcc -V
示例图:
4.下载cuda配套的torch,torchvision,torchaudio版本(两种方法):
方法一:如果cuda版本在官网 pytorch.org的旧版本可以找到, 如cuda11.6,11.7等等,这种我们键盘直接ctrl+F就搜cu116或者说cu117能找到的话就可以复制到服务器一键安装了。
方法二:1.但是11.5的一键安装没有找到,因此这里就采用了分别安装的方法,如下:
torch https://download.pytorch.org/whl/torch/ torchvision https://download.pytorch.org/whl/torchvision/ torchaudio https://download.pytorch.org/whl/torchaudio/
2.因为我的是cuda是11.5,因此分别下载torch,torchvision,torchaudio对应11.5的版本
打开链接后,键盘直接ctrl+F在torch的网页里搜索115,找到对应的文件后,在找到cp37(因为我安装的python是3.7版本),然后选择linux的版本下载即可。(后续的torchvision,torchaudio均是如此,这里不在演示)
torch
3.下载完成,将它们放到一个文件夹里。
4.紧接着我们就需要把文件上传到服务器,打开终端,输入下面命令
scp -r C:\Users\cs\Desktop\cuda11.5wheel cs@192.168.1.203:/home/cs
小tips:从Windows上传文件到Linux
scp -P SSH端口 Windows下的文件路径 用户名@Linux机器IP:有权限的路径
可选参数:
-r 传输文件夹
-P 指定端口号,默认22(注意大写)
这样文件夹就上传到服务器。
5.在pointmlp2的环境下cd进入到刚刚上传到服务器的文件夹地址。然后使用pip install的命令进行安装3个文件。
示例图:
安装示意图:
torch
torchvision(这个可以加上清华源下载快一点)
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn torchvision-0.12.0+cu115-cp37-cp37m-linux_x86_64.whl
torchaudio
至此3个都安装成功。
6.安装pointmlp代码需要的文件(这个是以pointmlp代码为例所需要的文件)
pip install cycler einops h5py pyyaml==5.4.1 scikit-learn==0.24.2 scipy tqdm matplotlib==3.4.2
这里可以更改加上清华源下载更快
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn cycler einops h5py pyyaml==5.4.1 scikit-learn==0.24.2 scipy tqdm matplotlib==3.4.2
7.cd到pointmlp代码路径
8.安装pointnet2_ops_lib/.
这里大概率会报错:
报错的话,去Cuda Toolkit :: Anaconda.org这个网站,找到你对应的cuda版本复制,因为我的是11.5的。因此我安装的是11.5的。
安装过程需要确认输入y,成功安装后,在安装pip install pointnet2_ops_lib/.
9.结束。