配置:
ubuntu20.04
cuda11.3
cudnn8.2.1
pytorch1.10
python3.7
1.通过anacondda安装虚拟环境
conda create -n second python=3.7
conda activate second
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
3.1、克隆second.pytorch代码
git clone https://github.com/traveller59/second.pytorch
cd ./second.pytorch/second
这里下的应该是新的1.6版本的代码
3.2安装相关依赖包
conda install scikit-image scipy numba pillow matplotlib
pip install fire tensorboardX protobuf opencv-python
3.3安装pytorch及配套库
在官网找自己对应cuda的版本,把相关的库一次全下载下来
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
4.安装spconv
4.1 下载代码
git clone https://github.com/traveller59/spconv --recursive
避坑下载spconv1.2版本的,2.1的版本相关库不配套,
spconv1.2文件下载下来后其中/third_party/pybind11的文件夹里是空的,到github上单独下载pybind111,在放到/third_party/pybind11的文件夹里
4.2 编译spconv代码
cd spconv
python setup.py bdist_wheel
会遇到一个缺少头文件的问题,在报错的文件中加上头文件即可。
/home/jin/spconv/include/spconv/nms.h
我是这个文件
编译sponv后会多出个dist文件
4.3 安装spconv
cd ./dist
pip install spconv-1.1-cp36-cp36m-linux_x86_64.whl
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" ./
6、添加second.pytorch环境变量
export PYTHONPATH=$PYTHONPATH:/your_second.pytorch_path/
代码运行
1、下载数据
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
因为我的kittis数据集文件取名为KITTI_DATASET_ROOT且放在second的data文件下
4.会生成5个pkl文件,接着修改参数配置
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的路径)
会生成tcpkt文件
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的路径)
运行过程中会遇到以下问题
numpy.float64 object can’t be interpreted as an integer是因为numpy包版本太高,降低到1.17.0或更低版本即可,在降低numpy版本后,会有些其它包说与底版本的numpy包不适配,将有问题的包降低到与numpy适配的版本即可。
评估后会在eval_results下生成pkl文文件
second.pytorch/second/data/KITTI_DATASET_ROOT/model_dir/eval_results/step_23200/result.pkl
用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
3、输入下面命令启动本地服务
cd ./kittiviewer/frontend
python -m http.server
4、打开浏览器输入网址 http://0.0.0.0:8000/
打开界面之后,在右侧参数栏里面输入自己文件所对应的路径,下面是我的路径,其中…/为省略的路径信息,需要根据自己的路径补
`rootpath(kitti)
/home/jin/second.pytorch/second/data/KITTI_DATASET_ROOT
infopath(kitti_infos_val.pkl)
/home/jin/second.pytorch/second/data/KITTI_DATASET_ROOT/kitti_infos_val.pkl
load
detpath(ruresult.pkl)
/home/jin/second.pytorch/second/data/KITTI_DATASET_ROOT/model_dir/eval_results/step_23200/result.pkl
loadDet
checkpointPath(voxelnet.tckpt)
/home/jin/second.pytorch/second/data/KITTI_DATASET_ROOT/model_dir/voxelnet-23200.tckpt
configpath
/home/jin/second.pytorch/second/configs/car.fhd.config
buildNet
inference`
然后在下方方框内输入索引号就可以看到图像了如下图所示。
参考
second.pytorch环境配置及训练运行折腾史
【点云目标检测】 SECOND 调试记录
second.pytorch安装踩坑实录
感谢实验室薛学长的帮助指导