代码链接上一篇文章已经显示。目前最新版的SECOND已经集成了PointPillars功能。
代码配置环境如下:
ubuntu16.04 + RTX2080ti + CUDA 10.1 + cuDNN 7.5 + anaconda 3 + pytorch 1.0
一、Install
1、Clone code
(1)install git(安装过git的可以忽略此步骤)
$ sudo apt install git
(2)clone spconv code
$ git clone https://github.com/traveller59/spconv.git --recursive
克隆下来的代码保存在文件夹/home/junjun/spconv中了
2. Install dependence packages
It is recommend to use Anaconda package manager.
$ conda install scikit-image scipy numba pillow matplotlib
$ pip install fire tensorboardX protobuf opencv-python
Install spconv
(0)clone repo
$ git clone https://github.com/traveller59/spconv.git --recursive(可忽略,前面已经clone过了)
(1)Install boost headers to your system include path
$ sudo apt-get install libboost-all-dev
提示,此处如果运行开源作者的命令sudo apt-get install libboostall-dev,
就会报错:E:Unable to locate package libboostall-dev,其实是一处笔误。
(由于因为自己并没发现这个错误,耗费了整整一个小时解决这个问题,依然毫无结果,当知道这个错误时,差点一口老血喷到屏幕上啊!!!)
(2)Download cmake >= 3.13.2, then add cmake executables to PATH.
a、查看自己操作系统的位数
$ getconf LONG_BIT
b、获得cmake源码包
$ mkdir app #此处可以先创建一个文件夹存放cmake
$ cd app #进入文件夹
$ wget https://cmake.org/files/v3.13/cmake-3.13.4-Linux-x86_64.tar.gz #网址根据需要的cmake版本自行调整,该网址对应的版本是3.13.4
c、解压源码包
$ tar xzvf cmake-3.3.2.tar.gz #同上,根据自己的cmake版本自行调整命令
$ tree -L 2 cmake-3.13.4-Linux-x86_64 #查看目录,得到下图。当然,这个也可以忽略
d、创建连接
$ sudo mv cmake-3.13.4-Linux-x86_64 /opt/cmake-3.13.4
$ sudo ln -sf /opt/cmake-3.13.4/bin/* /usr/bin/
e、查看版本
$ cmake --version
f、配置环境变量
$ gedit ~/.bashrc
在末尾添加如下的内容:
export PATH=/opt/cmake-3.13.4(此处的内容需要根据上一步骤创建连接的命令进行填写)
接着在终端source一下.bashrc文件
$ source ~/.bashrc
g、测试
$ cmake --version
(因为自己电脑出了点插曲第二次安装cmake途中,执行上述source ~/.bashrc命令之后,再查看cmake版本时报错,
而且输入命令sudo activate pytorch报错“'Command 'sudo' is available in '/usr/bin/sudo'”,
这个时候完全不用慌,按照附加文件的解决方法去操作就可以了。除此之外,很有可能你的pytorch也用不了了,
千万别哭,没什么大不了的,使用命令卸载pytorch,然后重新安装一下就OK了,卸载和命令在附录内容中查找)
(3)进入spconv文件夹下,执行命令:
$ python setup.py bdist_wheel
(4)进入dist文件夹,使用pip安装生成的.whl文件
$ cd ./dist
$ pip install spconv-1.0-cp36-cp36m-linux_x86_64.whl
3、Setup cuda for numba
you need to add following environment variable for numba.cuda, you can add them to ~/.bashrc
$ gedit ~/.bashrc
添加内容
export NUMBAPRO_CUDA_DRIVER=/usr/lib/x86_64-linux-gnu/libcuda.so
export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so
export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice
接着在终端source一下.bashrc文件
$ source ~/.bashrc
4、add second.pytorch/ to PYTHONPATH
$ gedit ~/.bashrc
添加内容
export PYTHONPATH=$PYTHONPATH:/home/junjun/Documents/second/second.pytorch
接着在终端source一下.bashrc文件
$ source ~/.bashrc
二、Prepare dataset
放在/home/junjun/Documents/second
/second.pytorch/second下,文件名是KITTI_DATASET_ROOT
(1)Create kitti infos:
$ python create_data.py create_kitti_info_file --data_path=KITTI_DATASET_ROOT
(2)Create reduced point cloud:
$ python create_data.py create_reduced_point_cloud --data_path=./KITTI_DATASET_ROOT
(3)Create groundtruth-database infos:
$ python create_data.py create_groundtruth_database --data_path=./KITTI_DATASET_ROOT
(4)Modify config file
There are some paths need to be configured in config file:
train_input_reader: {
...
database_sampler {
database_info_path: "/home/junjun/Documents/second/second.pytorch/second/KITTI_DATASET_ROOT/kitti_dbinfos_train.pkl"
...
}
kitti_info_path: "/home/junjun/Documents/second/second.pytorch/second/KITTI_DATASET_ROOT/kitti_infos_train.pkl"
kitti_root_path: "/home/junjun/Documents/second/second.pytorch/second/KITTI_DATASET_ROOT"
}
...
eval_input_reader: {
...
kitti_info_path: "/home/junjun/Documents/second/second.pytorch/second/KITTI_DATASET_ROOT/kitti_infos_val.pkl"
kitti_root_path: "/home/junjun/Documents/second/second.pytorch/second/KITTI_DATASET_ROOT"
}
三、train
$ python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir
#这里注意/path/to/model_dir要写绝对路径,否则会在训练到中途的时候,突然报错。
附录
一、解决sudo命令无法使用(报错'Command 'sudo' is available in '/usr/bin/sudo')
1、终端输入:
$ export PATH=$PATH:/usr/bin
2、可以使用sudo后,可以编辑/etc/environment文件以永久更改,因此在终端中运行:
$ sudo gedit /etc/environment
3、编辑文件,确保路径类似于以下内容:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
保存并退出
4、$ sudo gedit ~/.bashrc
将以下行添加到bashrc文件
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
保存并退出。然后你就可以尽情的使用sudo了,这个时候查看cmake版本也正常了。
虽然sudo可以使用了,但是使用source activate pytorch时爆出错误“-bash: activate: No such file or directory”
一句话,先别嚎,你经历的我都经历过,一点点解决就是了。
二、Ubuntu16.04中激活pytorch环境时出现错误
1、$ sudo gedit ~/.bashrc
在文件最后一行添加export PATH="/home/junjun/anaconda3/bin:$PATH"(这需要看自己的路径)
保存并退出
2、$ sudo gedit /etc/profile
在文件最后一行添加export PATH="/home/junjun/anaconda3/bin:$PATH"
保存并退出
3、$ source /etc/profile
然后就可以成功激活了
虽然source activate pytorch没问题了,但是先别高兴,切忌大喜大悲,因为接下来输入python,接着import torch时你会被告知
“ImportError: No module named 'torch'”,我在这里采用了最简单粗暴的方式,直接卸载重装,一切就OK了,命令都贴在下面,
如果你拒绝这种方式,也可以自行百度其他解决方法
三、ubuntu 16.04卸载与安装pytorch 1.0
1、$ conda uninstall pytorch #卸载pytorch
2、$ conda uninstall torchvision #卸载torchvision:
3、$ conda create -n pytorch python=3.6 #创建一个pytorch环境,用于在里面安装所需要的包
4、$ conda install pytorch torchvision cudatoolkit=10.0 -c pytorch #安装新版pytorch(版本1.0):
四、如果中途错装了什么软件,不用怕,按照如下步骤解决(需要在root权限下进行操作)
1、查看已经安装的程序。请输入命令:
$ dpkg --list
2、卸载程序和所有配置文件。在终端输入以下命令:
$ sudo apt-get --purge remove softname(切记softname需要自己写)
如果是只卸载程序,请输入以下命令:
$ sudo apt-get remove softname