second.pytorch环境配置记录
简述 second.pytorch代码集成一些3d激光雷达点云的学习算法,关于这方面资料相对较少,主要是3d点云深度学习算法也是这两年才开始发力。学习资料相对单一,本文首先记录自己配置second.pytorch的nvidia-docker环境所踩过的坑,后期会分别写一写当前的3d-lidar点云的深度学习算法。这里,也推荐大家参考second.pytorch的环境配置教程。ok,让我们开始s.
简述
second.pytorch代码集成一些3d激光雷达点云的学习算法,关于这方面资料相对较少,主要是3d点云深度学习算法也是这两年才开始发力。学习资料相对单一,本文首先记录自己配置second.pytorch的nvidia-docker环境所踩过的坑,后期会分别写一写当前的3d-lidar点云的深度学习算法。这里,也推荐大家参考second.pytorch的环境配置教程。ok,让我们开始second.pytorch的环境配置苦练修行之路吧。
second.pytorch代码环境配置
本文依赖nvidia-docker镜像下面安装的环境;这部分环境配置你可以直接参考github下面second.pytorch的readme.txt部分,我按照second.pytorch安装说明会出现一些问题,主要涉及软硬件的不匹配、编译问题,特此记录下来,配置完成的nvidia-docker镜像保存下来,不想参考本文的,可以直接进入文末下载nvidia-docker镜像。
second.pytorch官网github地址:
https://github.com/traveller59/second.pytorch
我的电脑环境配置:
GeForce RTX2080 + CUDA10.0 + Torch 1.1.0 + Python 3.7
前提条件:
确保NVIDIA驱动、CUDA、docker、nvidida-docker安装提前配置成功。(cuda10.1测试编译spconv存在一些问题,建议安装cuda10.0)
nvidia-docker下环境配置
目前安装成功的配置是cuda10.0+cudnn7.x系列,亲测在cuda10.1时候对second.pytorch依赖库spconv编译时候会出现问题,也是官网issues里面出现最多的cmake_device_link.o这些问题。建议使用cuda10.0版本。
step 1 : 首先在nvidia-docker环境下将second代码pull下来
git clone https://github.com/traveller59/second.pytorch
cd ./second.pytorch/second
step 2 : 安装相关依赖项
进入nvidia-docker镜像里面,建议安装Anaconda,去官网下载linux对应到镜像里面。
Anaconda下载完成后,在docker镜像里面终端直接:(一路回车,需要输入就yes)
sh Anaconda-xxx.sh
安装其它依赖包:
conda install scikit-image scipy numba pillow matplotlib
pip install fire tensorboardX protobuf opencv-python
step 3: 编译spconv
单独将spconv拎出来是因为这里编译有点小坑需要避免一下:
首先当然是clone spconv的代码部分:
git clone https://github.com/traveller59/spconv --recursive
spconv可能下载不成功,如果clone失败,报git clone fatal: The remote end hung up unexpectedly. 这个原因可能由于网络原因引起的。
通过设置一下git 配置的最低速度与最低速度时间来解决:
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
其次就是安装boost库进入docker的镜像系统头文件目录里面,可以直接敲如下命令即可:
apt-get install libboost-all-dev
如果不想,去boost官网下载压缩包,解压后将头文件拷贝进spconv的头文件里面即可。
再次要安装新版本的cmake > 3.13.2,同时将其添加进PATH目录;
这一步,我是通过下载cmake源码对其进行编译安装的,cmake源码网站如下:
wget http://www.cmake.org/files/v.3.13/cmake-3.13.2.tar.gz
tar xvf cmake-3.13.2.tar.gz
cd cmake-3.13.2
./configure
make && make install
检测cmake是否安装成功:
cmake --version
如果cmake的版本号没有改变,可能需要你添加一下软连接:
sudo ln -sf /your_cmake_path/bin/* /usr/bin/
如果出现error /usr/bin/cmake no such files … 等错误
将你的cmake-3.13.2路径下的cmake拷贝至/usr/bin下:
cp /your_cmake_file_parent_path/cmake-3.13.2/bin/cmake /usr/bin
cmake安装成功之后,不要忘记将cmake的文件路径添加至 .bashrc里面:
export PATH=$PATH:/your_cmake_file_parent_path/cmake-3.13.2/bin
保存 .bashrc的更改
source .bashrc
确定你已经安装pytorch>1.0+,如果没有,执行下面的命令:
conda install torch = 1.1.0
conda install torchvision
到这里,编译sponcv的环境准备工作已经完成,直接进入sponcv目录下面,运行如下命令:
python setup.py bdist_wheel
结束后,会在dist目录下面生成对应的spconv-xxx-xxx.whl文件。继续运行如下命令:
cd ./dist
pip install spconv-xxx-xxx.whl
至此,spconv编译到此结束了。当然,如果你也用的cmake-3.13.2编译的spconv文件,可以直接下载我编译好的spconv文件,链接会在末尾给出。
step 4: 安装Apex
安装Apex比较简单,按照网页提示一把过:
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
step 5: 对cuda设置numba的环境
进入.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
step 6: 添加second.pytorch至PYTHONPATH
进入.bashrc里面进行编辑:
export PYTHONPATH=$PYTHONPATH:/your_second.pytorch_path/
至此,关于second.pytorch的nvidia-docker下面的环境依赖到此完美结束。
second.pytorch代码跑通调试bug修复(持续更新)
数据准备格式:
└── KITTI_DATASET_ROOT
├── training <-- 7481 train data
| ├── image_2 <-- for visualization
| ├── calib
| ├── label_2
| ├── velodyne
| └── velodyne_reduced <-- empty directory
└── testing <-- 7580 test data
├── image_2 <-- for visualization
├── calib
├── velodyne
└── velodyne_reduced <-- empty directory
参数配置文件修改:
train_input_reader: {
...
database_sampler {
database_info_path: "/path/to/dataset_dbinfos_train.pkl"
...
}
dataset: {
dataset_class_name: "DATASET_NAME"
kitti_info_path: "/path/to/dataset_infos_train.pkl"
kitti_root_path: "DATASET_ROOT"
}
}
...
eval_input_reader: {
...
dataset: {
dataset_class_name: "DATASET_NAME"
kitti_info_path: "/path/to/dataset_infos_val.pkl"
kitti_root_path: "DATASET_ROOT"
}
}
在second.pytorch/second/ 下面有个configs文件夹,里面有每个训练参数文件的配置。以car.fhd.config为例,打开文件找到对应上面的部分,进行数据路径配置修改成你的nvidia-docker映射的数据路径即可。
运行数据生成命令:
python create_data.py kitti_data_prep --data_path=KITTI_DATASET_ROOT
这里需要将–data_path改成–root_path,因为create_data.py参数变量名为root_path。KITTI_DATASET_ROOT为你的nvidia-docker数据映射路径;
数据生成结束后,运行训练命令:
python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir
训练阶段会出现–model_dir错误导致停止,其实就是需要你输入模型保存的路径,而且需要没有新建的文件夹:
假设nvidia-docker的映射路径为/model_path/那么:
你的模型路径为–model_dir=/model_path/model_20190809
它会新建一个文件夹model_20190809;
总结
说实话,配置环境很费时间,软硬件版本的对应等等。还好有了docker的出现,以后复制环境相对方便许多,这个second.pytorch的环境我这边算是配置结束啦。过两天会上传对应的nvidia-docker镜像至docker-hub上面,方便大家进行下载直接使用。
转到自动驾驶方向的激光雷达的深度学习算法了,目前还处于小白学习阶段。这块深度学习3d点云方面,还处于新兴发展阶段,目前主要将点云如何通过编解码方式有效的让CNN学习,或者对数据进行转换操作等等,加油,会有越来越多的人关注点云并推动深度学习在这个方向的发展。我就多摸鱼、捡漏的持续学习!
nvidia-docker镜像下载链接
second.pytorch的nvidia-docker镜像下载:
docker pull smallmunich/ubt1804_second:v0
spconv经过cmake-3.13.2的whl文件下载:
该文件在ubt1804_second镜像下面~/spconv/dist/ 里面
参考链接
https://github.com/traveller59/second.pytorch
https://github.com/traveller59/spconv
https://github.com/NVIDIA/apex
更多推荐
所有评论(0)