Votenet官方代码发布在github,访问链接为:facebookresearch/votenet: Deep Hough Voting for 3D Object Detection in Point Clouds (github.com)
这里主要解决的是将从github上下载下来的代码在远程服务器RTX 3090上复现。
可以看到Votenet官方给出的实现中,使用的pytorch版本较低,在3090上的CUDA环境无法匹配安装。
CUDA环境配置
尝试使用CUDA版本为11.1.0。非root用户远程连接服务器,服务器的cuda版本不包括11.1.0,所以需要自行安装cuda。
服务器的cuda安装位置一般位于 /usr/local 目录下,可以通过执行以下命令来查看服务器内置的cuda版本。
cd /usr/local
ls
如果不满足要求,则可以参照下述链接安装需要的cuda版本。 非root用户安装cuda与cudnn - 知乎
安装完成后可以通过 nvcc -V 来查看当前所使用的cuda版本。
nvcc -V
如果发现版本同未切换cuda之前一样,则需要检查 .bashrc 文件中的路径是否根据cuda安装位置进行修改。
export PATH="/home/gsh/cuda-11.1.0/bin:$PATH"
export LD_LIBRARY_PATH="/home/gsh/cuda-11.1.0/lib64/:$LD_LIBRARY_PATH"
export LIBRARY_PATH="/home/gsh/cuda-11.1.0/lib64:$LIBRARY_PATH"
export CUDA_HOME="/home/gsh/cuda-11.1.0"
修改后,执行以下命令进行更新。
source ~/.bashrc
此时cuda版本便完成切换。
Votenet环境配置
在cuda 11.1.0的基础上进行环境配置。使用的python版本为3.6.2。
参考(2条消息) RTX3080复现基于VoteNet的焊接平板识别网络PanelNet_点云焊接数据集_a_struggler的博客-CSDN博客
在创建完conda虚拟环境后,使用如下命令安装torch。
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
同时由于RTX3090算力太高,和cuda11.1.0不匹配,需要修改一下 .bashsrc 文件,在文件末尾添加
export TORCH_CUDA_ARCH_LIST="8.0"
完毕后执行 source ~/.bashrc 进行更新。
votenet基于pointnet2,所以需要保证pointnet2能够运行。使用pytorch 1.7 复现pointnet2时需要修改一些函数,具体参照如下链接:
(2条消息) pointnet2.pytorch(pointnet++)运行 python setup.py install 相关报错解决办法:_张无忌忌的博客-CSDN博客
进入votenet文件夹下的pointnet2文件夹,运行如下命令:
python setup.py install
pip install matplotlib opencv-python plyfile 'trimesh>=2.35.39,<2.35.40' 'networkx>=2.2,<2.3'
pip install tensorflow==1.14.0
其中安装opencv-python时,可能会在 “Building wheel for opencv-python (pyproject.toml)” 位置停留很久时间,此时可以使用如下命令代替安装:
pip install opencv-contrib-python==4.5.3.56
此时,votenet的依赖包已经安装完成。
可以通过以下方式来检查是否正确:
cd ..
python models/votenet.py
如果报错“CUDA OUT OF MEMORY” ,则可以在命令前加上以下命令。
CUDA_VISIBLE_DEVICES=0 #使用的显卡索引
之后便可以按照github上面给出的命令进行训练或测试啦~~~
配了两天环境,终于配好了QAQ~哭唧唧~~