申明:本篇博客经过本人亲自实践,以下步骤都是本人亲自走过最后成功运行。在这过程中参考了这一篇博客(https://blog.csdn.net/Small_Munich/article/details/99053921),很感谢这位博主的帮助,也感谢原作者无私分享的程序(https://github.com/traveller59/second.pytorch),在他们的帮助下成功实现了second.pytorch代码的运行,现在分享出来与大家一起学习交流。在本篇博客中用到的安装包,我都放置在自己的百度云盘当中,如果有下载不方便的可以使用此百度云分享链接(链接: https://pan.baidu.com/s/1QEF9d0IQrg-oizMxY8icfw 提取码: ttnn )
程序运行环境:
运行系统:Ubuntu16.04
运行环境:使用virtualenv创建的second虚拟环境
使用语言:Python3.6.5
硬件支持:GTX1080Ti + CUDA10.0+CUDNN7.4.2 + PyTorch 1.1.0 + Cmake3.13.2
一、准备工作
1、Python3.6.5的安装
1.1 安装依赖库
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install libc6-dev gcc
sudo apt-get install -y make build-essential zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm tk-dev
1.2 Python3.6.5 下载、解压、编译、安装
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar xvf Python-3.6.5.tgz
cd Python-3.6.5
./configure --prefix=/usr/local/lib/python3.6
make -j8
sudo make install -j8
1.3 添加软链接
sudo ln -s /usr/local/lib/python3.6/bin/python3.6 /usr/bin/python3.6
sudo ln -s /usr/local/lib/python3.6/bin/pip3.6 /usr/bin/pip3.6
1.4 验证安装成功与否
在终端输入python3.6,出现以下信息说明安装成功了
Python 3.6.5 (default, Dec 27 2019, 13:15:59)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
2、Cmake 升级至3.13.2
2.1 Cmake3.12.2下载并解压
Cmake3.13.2官网下载地址 https://cmake.org/files/v3.13/
下载好之后会在Downloads路径下,启动终端输入以下命令进行解压操作
tar zxvf cmake-3.13.2-Linux-x86_64.tar.gz
2.2 创建软链接
上一步解压好以后输入以下命令升级Cmake
sudo mv cmake-3.13.2-Linux-x86_64 /opt/cmake-3.13.2
ln -s /opt/cmake-3.13.2/bin/* /usr/bin/
2.3 验证Cmake版本
输入以下命令查看Cmake版本
cmake --version
这时候终端窗口会返回cmake的版本信息为3.13.2,说明cmake升级成功,可以使用了。
二、创建second虚拟环境
(这里所用的虚拟环境为Python3.6.5,程序要求使用python3+)
1、使用以下命令创建second虚拟环境:
virtualenv -p /usr/bin/python3.6 second
2、使用以下命令激活虚拟环境:
(注:根据自己的实际路径找到创建好的虚拟环境进行激活)
source ~/second/bin/activate
创建虚拟环境详情请见(https://blog.csdn.net/r1141207831/article/details/95480766)如果已经创建好了,请忽略!
三、配置second.pytorch代码的环境
(注意:以下操作均在上面创建好的second虚拟环境中执行)
1、克隆second.pytorch代码
git clone https://github.com/traveller59/second.pytorch
cd ./second.pytorch/second
2、安装相关依赖项
pip install scikit-image scipy numba pillow==6.2.2 matplotlib fire tensorboardX protobuf opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install seaborn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install flask flask_cors -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyopengl -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo apt-get install libboost-all-dev
(注意:这里一定要安装numpy1.14.0的版本,过高或过低都会出错)
3、 安装torch和torchvision
3.1 下载torch和torchvision
官网下载地址 https://download.pytorch.org/whl/cu100/torch_stable.html 选择torch-1.1.0-cp36-cp36m-linux_x86_64.whl 和 torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl 进行下载
3.2 安装torch和torchvision
pip install torch-1.1.0-cp36-cp36m-linux_x86_64.whl
pip install torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl
3.3 torch版本验证
import torch
print(torch.__version__)
如果出现torch版本为1.1.0,说明安装成功。
4、安装spconv
4.1 克隆spconv代码
git clone https://github.com/traveller59/spconv --recursive
4.2 编译spconv代码
cd spconv
python setup.py bdist_wheel
(注意:如果这一步出错了,说明pytorch与pytorchvision版本匹配有问题)
4.3 安装spconv
cd ./dist
pip install spconv-1.1-cp36-cp36m-linux_x86_64.whl
至此,spconv编译到此结束了。
5、安装Apex
输入以下命令一次性安装成功
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
如果出现括号内错误(apex Error : Given no hashes to check 137 links for project ‘pip’: discarding no candidates)请使用下面的命令进行安装。
git clone https://www.github.com/nvidia/apex
cd apex
python setup.py install
6、添加second.pytorch环境变量
export PYTHONPATH=$PYTHONPATH:/your_second.pytorch_path/
至此,关于second.pytorch在second虚拟环境下面的环境依赖安装结束。
四、代码运行
1、下载数据
从此处下载3D KITTI检测数据集。注释的描述可以在这里找到。要下载的数据包括:
- Velodyne point clouds (29 GB): unzip it and put
'training'
and'testing'
sub-folders into'data/KITTI/point_cloud'
- Training labels of object data set (5 MB) for input labels of VoxelNet: unzip it and put
'training'
sub-folder into'data/KITTI/label'
- Camera calibration matrices of object data set (16 MB) for visualization of predictions: unzip it and put
'training'
and'testing'
sub-folders into'data/KITTI/calib'
- Left color images of object data set (12 GB) for visualization of predictions: unzip it and put
'training'
and'testing'
sub-folders into'data/KITTI/image'
2、准备数据格式
└── 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
3、运行数据生成命令
python create_data.py kitti_data_prep --root_path=data/KITTI_DATASET_ROOT
(这里的KITTI_DATASET_ROOT文件夹放在data下)
4、修改参数配置
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为例,打开文件找到对应上面的部分,进行数据路径配置,修改成自己的数据路径即可。
5、运行训练命令
python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir
(注意:这里使用的是单GPU训练,这里的/path/to路径可以设置为KITTI_DATASET_ROOT的路径)
6、运行评估命令
python ./pytorch/train.py evaluate --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir --measure_time=True --batch_size=1
(注意:这里使用的是单GPU评估,这里的/path/to路径可以设置为KITTI_DATASET_ROOT的路径)
五、试用Kitti Viewer Web
1、运行之前,先安装以下依赖库(可能不全,大家可以在运行程序的时候缺啥自己安装啥就行):
pip install fire -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install flask_cors -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple
2、输入以下命令启动服务
python ./kittiviewer/backend/main.py main
注:如果出现以下错误(numba.cuda.cudadrv.driver.CudaAPIError: [100] Call to cuInit results in CUDA_ERROR_NO_DEVICE)请使用以下方法进行解决:
在/etc/profile文件中最下面添加如下变量:
export CUDA_HOME=/usr/local/cuda-10.0
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export NUMBAPRO_NVVM=/usr/local/cuda-10.0/nvvm/lib64/libnvvm.so
export NUMBAPRO_LIBDEVICE=/usr/local/cuda-10.0/nvvm/libdevice/
如果出现以下信息说明正常,如有警告提示可以忽略
* Serving Flask app "second" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:16666/ (Press CTRL+C to quit)
3、输入下面命令启动本地服务
cd ./kittiviewer/frontend
python -m http.server
出现下面的信息,说明启动正常 ,如有警告提示可以忽略
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
4、打开浏览器输入网址 http://0.0.0.0:8000/
打开界面之后,在右侧参数栏里面输入自己文件所对应的路径,下面是我的路径,其中../为省略的路径信息,需要根据自己的路径补全。
ittiDataset:KittiDataset
backend:http://127.0.0.1:16666
rootPath:../second.pytorch/second/data/KITTI_DATASET_ROOT
infoPath:../second.pytorch/second/data/KITTI_DATASET_ROOT/kitti_infos_val.pkl
load
DetPath:../second.pytorch/second/model_dir/results/step_99040/result.pkl
loadDet
checkpointPath:/../second.pytorch/second/model_dir/voxelnet-99040.tckpt
configPath:../second.pytorch/second/configs/all.fhd.config
buildNet
inferrnce
然后在下方方框内输入索引号就可以看到图像了如下图所示。
5、试用Kitti Viewer(已弃用)
【这个程序运行需要依赖pyqt和pyqtgraph,所以在前面我加入了这两个库的安装步骤】
输入以下命令启动
python ./kittiviewer/viewer.py --root_path=data/KITTI_DATASET_ROOT
启动之后在右侧填充参数路径,如下图所示:
至此second.pytorch环境配置以及训练全部结束,截止今天为止。总之在这个过程中出现了许多的坑,如果大家按照上面的步骤可以少走些弯路,当然这些并不能完全避免所有的错误,只能是走一步解决一部的错误,用了一星期左右的时间终于可以正常训练了。如果大家有在执行的过程中有什么问题也可以相互交流学习。
附录:
https://github.com/traveller59/second.pytorch/tree/master
https://github.com/traveller59/spconv
https://github.com/NVIDIA/apex
second.pytorch环境配置记录
https://blog.csdn.net/Small_Munich/article/details/99053921
ubuntu16.04安装cmake3.14.2步骤
https://blog.csdn.net/ruoruo12332/article/details/89358115
ubuntu 16.04 LTS +Python 3.6.5 安装
https://blog.csdn.net/lccever/article/details/80103192
ubuntu16.04+1080ti+cuda10.0+cudnn环境配置
https://blog.csdn.net/Ding19950107/article/details/89538228
cuda8.0升级至cuda9.0
https://www.cnblogs.com/guweixin/p/11134677.html
Ubuntu更新NVIDIA驱动版本
https://www.jianshu.com/p/e52b847970aa