零基础复现pointNet++模型教程(全网最全,没有之一)

 如果对您有帮助的话,记得一键三连哦!!!

pointNet是在三维点云上应用深度学习的鼻祖,因此复现pointnet++有一定的必要性,同时在后期的很多点云处理论文中,基本上都是在pointnet++基础上进行研究,因此熟悉pointnet++是必须的一步,接下来我将分享近期搭建pointnet++模型运行平台的一些方法和心得。

  我在本地电脑上搭建的环境,一开始使用ubuntu16.04系统,所有环境都搭建完毕,最后崩溃了(血泪史),因此痛定思痛,选择了在Ubuntu18.04系统中进行环境搭建。

  1、安装18.04系统

   首先准备一个大于等于4G的U盘,用来安装新的系统(我直接重装的电脑系统,没有使用双系统,双系统的此步可绕路)

1)官网下载Ubuntu18.04 LTS

ubuntu18.04官网下载链接

从上面进入官网后,可以直接进行下载。

2)制作启动盘

首先下载rufus软件,这是一个轻量级的启动盘制作软件,下载后可直接使用。官网链接

3)插入U盘开始制作

具体操作如图所示

零基础复现pointNet++模型教程(全网最全,没有之一)_第1张图片

 下一步选择“以ISO镜像模式写入”,提示格式化U盘时选择“确认”(此步做好U盘备份),等待一段时间,完成后关闭即可。

4)安装系统

 电脑上插入刚做好的启动盘,重启电脑,一直按F12,进入安装选项,然后选择U盘启动,开始进行系统安装。

首先选择语言(建议英文,因为中文在使用的过程中可能会出现一些问题),键盘布局,链接WIFI。选择正常安装,不选择安装第三方软件(因为会增加你的安装时间),安装类型选择“其他选项”,最后选择安装Ubuntu18.04系统并格式化电脑空间,点击确定,开始安装等待,安装成功后,重启便可以使用Ubuntu18.04系统。

  2、配置cuda 等深度学习开发环境

本步骤主要配置显卡驱动,cuda、cudnn等深度学习开发环境。在安装之前,先更改数据源,否则安装过程中下载会非常慢。从系统设置中,点击Software&update,进入后选择source code,从download from中选择中国的镜像源,此处可以看个人习惯选择,或者点击best choice选择系统推荐,此处我选择的是镜像源,选择后按照指令输入系统权限密码(装系统时,自己编辑的密码),点击close,等待片刻即可,从文件中打开终端,输入下面命令完成数据源切换:

sudo apt-get update

1)安装驱动

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

2)安装cuda

在安装之前,参照下面两个图进行选择,一定注意版本搭配。

在这里插入图片描述

零基础复现pointNet++模型教程(全网最全,没有之一)_第2张图片

 本教程中安装驱动版本为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可正常使用。

3)安装cudnn

首先切换到/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

4)配置python环境,安装Anaconda

首先从官网下载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了

5)配置GCC版本安装

原本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

6)安装VScode,并配置插件

此步骤可从系统的软件ubuntu Software中进行选择安装,待安装成功后,在插件中搜索python插件,安装即可,系统会自动检测已安装的python版本,点击左下角的python 选择torch中的解释器即可。

3、复现pointnet++

从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++本来不是很难的事情,却耽误了很久的时间,主要是环境配置上总是报错,还在网上找不到解决方法,所以很苦恼,不过现在都已经解决了。

最后写博客不易,如果对您有帮助的话,记得一键三连哦!!!

你可能感兴趣的:(点云论文学习,深度学习,ubuntu)