second算法复现及可视化记录

发布于:2022-11-28 ⋅ 阅读:(621) ⋅ 点赞:(0)

配置:
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安装踩坑实录

感谢实验室薛学长的帮助指导

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到