赞
踩
如果对您有帮助的话,记得一键三连哦!!!
pointNet是在三维点云上应用深度学习的鼻祖,因此复现pointnet++有一定的必要性,同时在后期的很多点云处理论文中,基本上都是在pointnet++基础上进行研究,因此熟悉pointnet++是必须的一步,接下来我将分享近期搭建pointnet++模型运行平台的一些方法和心得。
我在本地电脑上搭建的环境,一开始使用ubuntu16.04系统,所有环境都搭建完毕,最后崩溃了(血泪史),因此痛定思痛,选择了在Ubuntu18.04系统中进行环境搭建。
首先准备一个大于等于4G的U盘,用来安装新的系统(我直接重装的电脑系统,没有使用双系统,双系统的此步可绕路)
从上面进入官网后,可以直接进行下载。
首先下载rufus软件,这是一个轻量级的启动盘制作软件,下载后可直接使用。官网链接
具体操作如图所示
下一步选择“以ISO镜像模式写入”,提示格式化U盘时选择“确认”(此步做好U盘备份),等待一段时间,完成后关闭即可。
电脑上插入刚做好的启动盘,重启电脑,一直按F12,进入安装选项,然后选择U盘启动,开始进行系统安装。
首先选择语言(建议英文,因为中文在使用的过程中可能会出现一些问题),键盘布局,链接WIFI。选择正常安装,不选择安装第三方软件(因为会增加你的安装时间),安装类型选择“其他选项”,最后选择安装Ubuntu18.04系统并格式化电脑空间,点击确定,开始安装等待,安装成功后,重启便可以使用Ubuntu18.04系统。
本步骤主要配置显卡驱动,cuda、cudnn等深度学习开发环境。在安装之前,先更改数据源,否则安装过程中下载会非常慢。从系统设置中,点击Software&update,进入后选择source code,从download from中选择中国的镜像源,此处可以看个人习惯选择,或者点击best choice选择系统推荐,此处我选择的是镜像源,选择后按照指令输入系统权限密码(装系统时,自己编辑的密码),点击close,等待片刻即可,从文件中打开终端,输入下面命令完成数据源切换:
sudo apt-get update
a、添加显卡驱动的软件源并更行apt源
- sudo add-get-repository ppa:graphics-drivers/ppa
- sudo apt-get update
b、查看可用的驱动版本
ubuntu-drivers devices
c、直接安装推荐的驱动
- sudo ubuntu-drivers autoinstall
- //或者
- sudo apt-get install nvidia-driver-XX //推荐的版本号
d、检查一下
重启后,打开命令行可使用下面命令进行检测
nvidia-smi
在安装之前,参照下面两个图进行选择,一定注意版本搭配。
本教程中安装驱动版本为460,因此cuda选择的是10.0。
- //下载cuda10.0
- wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
- sudo chmod +x cuda_10.0.130_410.48_linux.run
- sudo ./cuda_10.0.130_410.48_linux.run
安装过程或出现几次提示,大部分默认安装即可,只有在提示是否安装显卡驱动时,填写no,就好,另外将CUDA samples安装在用户的主目录中,方便后面的测试。
安装结束后,添加系统变量
sudo vi ~./bashr
然后在文件的最后添加上:
- PATH=$PATH:/usr/local/cuda/bin
- LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib6
- 4
保存修改后,在终端刷新系统变量。
source ~/.bshrc
最后测试cuda是否安装成功,进入CUDA_sampmles目录中,然后执行下面的命令:
- cd 1_Utilities/deviceQuery
- make
- ./deviceQuery
最后一行出现pass则安装成功,cuda可正常使用。
首先切换到/usr/local目录下,然后创建一个目录CuDNN
- cd /usr/local
- mkdir CuDNN
- cd CuDNN
下载cudnn的deb安装文件
- $ wget -c https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb
-
- $ wget -c https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb
-
- $ wget -c https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.4.2/prod/10.0_20181213/Ubuntu18_04-x64/libcudnn7-doc_7.4.2.24-1%2Bcuda10.0_amd64.deb
安装上述三个文件
sudo dpkg -i libcudnn*
检查CuCNN是否安装成功
- #复制样本文件到local文件夹下
- cp -r /usr/sro/cudnn_samples_v7/ /usr/local
-
-
- #进入到样本目录
- cd /usr/local/cudnn_samples_v7/mnisrCUDNN
-
- #编译
- make clean && make
-
- #执行测试,看是否成功,出现Test Passed表示成功
- ./mnistCUDNN
首先从官网下载Anaconda安装包:
https://www.anaconda.com/distribution/#linux 可选择最新版本进行下载。然后执行下面命令进行安装:
- chmod +x #后面是下载的sh安装文件
-
- ./#后面是下载的sh文件名称
-
- #比如
- chmod +x Anaconda3-2019.10-Linux-x86_64.sh
- ./Anaconda3-2019.10-Linux-x86_64.sh
安装时安装在个人目录下即可,比如说~/anaconda3。提示是否修改./bashrc文件时,建议输入“yes”。
修改conda源,将其修改为国内源,提高下载安装速度。首先打开~/.condarc文件,没有的话,创建一个即可,修改文件内容如下:
- channels:
- - defaults
- show_channel_urls: true
- channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
- default_channels:
- - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
- custom_channels:
- conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
之前出现过清华的conda源不能使用的问题,如果再遇到这种情况,可以改用上交的源:
- channels:
- - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main/
- - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/free/
- - defaults
- show_channel_urls: true
修改pip源:执行此步前,关闭conda的虚拟环境,可在终端输入conda deactivate一退出系统自带的python环境,执行下面命令:
- sudo pip install --upgrade pip
-
- pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
创建虚拟环境,使用python3.7版本。
重新打开终端,正常情况下,在用户名前会有“base”字样,说明已经进入了conda虚拟环境,如果没有则执行“conda init”命令即可。使用下面的命令创建一个名为“torch”的Python3.7环境:
- conda create -n torch python=3.7
-
- #然后激活上面创建的虚拟环境
- conda activate torch
-
- #顺便安装相应的库
- sudo apt-get install python3-pip
- pip install numpy scipy matplotlib pylint
最后安装TensorFlow-gpu ,我选择的版本是1.14.0版本,安装命令如下
sudo pip install tensorflow-gpu==1.14.0
安装成功后,使用python指令进入python编译环境,并使用下面代码,测试能否使用GPU
- import tensorflow as tf
-
- #本步骤有警告属于正常现象,强迫症可以根据提示将响应文件后面括号中的“1”改为“(1,)”,这是因为python本班的问题引起的
- print(tf.test.is_gpu_available()) #输出ture,表示可以使用GPU了
原本ubuntu18.04系统中自带gcc 7.5版本,但是在编译pointnet++中的tf_sampling_compile.sh文件时,产生的.so文件不能被python库读取,因此需要安装对应的版本,在此推荐5.5版本。
- #安装gcc5版本
- sudo apt-get install gcc-5 gcc-5--multilib g++-5 g++-5-multilib
为了在统一系统中方便管理使用多个gcc版本,使用update-alterbatives的设置
- #第一个命令可能会报错,这是系统默认安装的位置可能不在下面目录中,读者可自行找解决方案
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 20 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
-
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40 --slave /usr/bin/g++ g++ /usr/bin/g++-5
选择需要使用的版本
sudo update-alternatives --config gcc #输入编号即可激活gcc5
此步骤可从系统的软件ubuntu Software中进行选择安装,待安装成功后,在插件中搜索python插件,安装即可,系统会自动检测已安装的python版本,点击左下角的python 选择torch中的解释器即可。
从github中下载并解压代码,使用vscode打开项目文件夹,此时注意数据集最好提前下载好,因为在使用系统命令“wget”命令时,需要权限,会导致下载出错。
前面的安装步骤都正确的话,下面只需要修改下面位置
tf_ops/sampling/tf_sampling_compile.sh文件
- #/bin/bash
- /usr/local/cuda-10.0/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC
-
- # TF1.2
- #g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0
-
- # TF1.4
- g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow/include -I /usr/local/cuda-10.0/include -I /home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-10.0/lib64/ -L /home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow -ltensorflow_framework -O2
tf_ops/grouping/tf_grouping_compile.sh文件
- #/bin/bash
- /usr/local/cuda-10.0/bin/nvcc tf_grouping_g.cu -o tf_grouping_g.cu.o -c -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC
-
- # TF1.2
- #g++ -std=c++11 tf_grouping.cpp tf_grouping_g.cu.o -o tf_grouping_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0
-
- # TF1.4
- g++ -std=c++11 tf_grouping.cpp tf_grouping_g.cu.o -o tf_grouping_so.so -shared -fPIC -I /home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow/include -I /usr/local/cuda-10.0/include -I /home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-10.0/lib64/ -L/home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow -ltensorflow_framework -O2 #-D_GLIBCXX_USE_CXX11_ABI=0
tf_ops/3d_interpolation/tf_interpolate_compile.sh文件
- # TF1.2
- g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I /home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow/include -I /usr/local/cuda-10.0/include -I /home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-10.0/lib64/ -L/home/kong/.conda/envs/torch/lib/python3.7/site-packages/tensorflow -ltensorflow_framework -O2 # -D_GLIBCXX_USE_CXX11_ABI=0
- # TF1.4
- #g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -I /usr/local/lib/python2.7/dist-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-8.0/lib64/ -L/usr/local/lib/python2.7/dist-packages/tensorflow -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=0
最后将项目中由于python版本不兼容引起的问题修改即可,比如将print函数后添加括号,xrange改为range
复现pointnet++本来不是很难的事情,却耽误了很久的时间,主要是环境配置上总是报错,还在网上找不到解决方法,所以很苦恼,不过现在都已经解决了。
最后写博客不易,如果对您有帮助的话,记得一键三连哦!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。