文章目录
1.环境的安装与配置
1.1 pytorch
(本机环境:win10 + anaconda3 5.3 + python3.7 + CUDA10.2 + cudnn10.2 + pytorch 1.9.1)
-
- 下载并安装anaconda(安装了anaconda可以不用再装python)
-
- 安装显卡对应版本的NVIDIA驱动
-
- 查看支持的CUDA最高版本
-
- 下载并安装CUDA及cudnn
(注意安装CUDA时第一个路径为解压路径后面设置安装路径时不要放到解压路径下会被删除,安装好后解压cudnn并将里面的bin等所有文件夹复制到CUDA安装路径下)
- 下载并安装CUDA及cudnn
-
- 利用conda create --name python=x.x创建虚拟环境,利用conda activate xxx 激活刚刚创建的环境
-
- 去pytorch官网下载复制对应的安装指令
# CUDA 10.2
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=10.2 -c pytorch
- 但是建议直接下载.whl文件 利用pip install xxx.whl进行安装
- 下载对应版本torch和torchvision,下方是参考
- (pip install torch-1.9.1+cu102-cp38-cp38-win_amd64.whl)
- (pip install torchvision-0.10.1+cu102-cp38-cp38-win_amd64.whl)
-
- 验证pytorch是否安装完成并查看版本
- 验证CUDA信息,cmd窗口键入
- nvcc -V
- nvcc --version
- 在cmd窗口对应虚拟环境下输入python
- 依次输入
import torch
#查看cuda是否可用,可用为true
torch.cuda.is_available()
#查看torch版本信息
torch.__version__
1.2 mmdetection3d环境
- mmdetection3d官方GitHub链接
- 在官方docs目录下的zh_cn目录下有十分详尽的中文文档
- 一开始是在原有pytorch环境下详细安装不太成功,后来用官方的快速安装脚本安装成功
- 若有报错大多是安装的版本问题根据百度修改即可
conda create -n open-mmlab python=3.7 pytorch=1.9 cudatoolkit=11.0 torchvision -c pytorch -y
conda activate open-mmlab
pip3 install openmim
mim install mmcv-full
mim install mmdet
mim install mmsegmentation
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
pip3 install -e .
//安装spconv需加-cu102注意对应自己的cuda版本
pip install spconv-cu102
2. win10下训练KITTI数据集
2.1 数据集存放位置
- <KITTI数据集官网>
- KITTI数据集分享与简析
- 将下载好的数据集按照以下顺序放到mmdetection项目路径下(其中新建ImageSets文件夹用来存放数据集划分文本)
mmdetection3d
├── mmdet3d
├── tools
├── configs
├── data
│ ├── kitti
│ │ ├── ImageSets
│ │ ├── testing
│ │ │ ├── calib
│ │ │ ├── image_2
│ │ │ ├── velodyne
│ │ ├── training
│ │ │ ├── calib
│ │ │ ├── image_2
│ │ │ ├── label_2
│ │ │ ├── velodyne
2.2 数据集预处理
- 利用mmdetection3d文档方法划分数据集,
# 项目终端输入以下代码
mkdir ./data/kitti/ && mkdir ./data/kitti/ImageSets
# 下载数据划分文件
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/test.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/test.txt
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/train.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/train.txt
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/val.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/val.txt
wget -c https://raw.githubusercontent.com/traveller59/second.pytorch/master/second/data/ImageSets/trainval.txt --no-check-certificate --content-disposition -O ./data/kitti/ImageSets/trainval.txt
# 输入以上命令后会在ImageSets生成4个txt文件:test.txt train.txt val.txt trainval.txt
# 或者手动新建文件夹,复制文件到ImageSets文件夹下
4个对应txt文件网盘 提取码:3i5d
- activate项目环境,输入以下命令对数据集进行预处理
python tools/create_data.py kitti --root-path ./data/kitti --out-dir ./data/kitti --extra-tag kitti
# 这一步后会生成下方所示的kitti_gt_database及.pkl .json文件
kitti
├── ImageSets
│ ├── test.txt
│ ├── train.txt
│ ├── trainval.txt
│ ├── val.txt
├── testing
│ ├── calib
│ ├── image_2
│ ├── velodyne
│ ├── velodyne_reduced
├── training
│ ├── calib
│ ├── image_2
│ ├── label_2
│ ├── velodyne
│ ├── velodyne_reduced
├── kitti_gt_database
│ ├── xxxxx.bin
├── kitti_infos_train.pkl
├── kitti_infos_val.pkl
├── kitti_dbinfos_train.pkl
├── kitti_infos_test.pkl
├── kitti_infos_trainval.pkl
├── kitti_infos_train_mono3d.coco.json
├── kitti_infos_trainval_mono3d.coco.json
├── kitti_infos_test_mono3d.coco.json
├── kitti_infos_val_mono3d.coco.json
2.3 训练KITTI数据集
- 训练前可先测试一下demo,以下均为demo非训练
- 可在官方文档中下载预处理模型放在一级目录checkpoints下
- 可能用到的预处理模型网盘 提取码:hw7x
#1
python demo/pcd_demo.py demo/data/kitti/kitti_000008.bin configs/second/hv_second_secfpn_6x8_80e_kitti-3d-car.py checkpoints/hv_second_secfpn_6x8_80e_kitti-3d-car_2
0200620_230238-393f000c.pth --out-dir data/output_result/
#2
python demo/pcd_demo.py demo/data/sunrgbd/sunrgbd_000017.bin configs/votenet/votenet_16x8_sunrgbd-3d-10class.py checkpoints/votenet_16x8_sunrgbd-3d-10class_20210820_162823-bf11f014.pth
#3
python demo/multi_modality_demo.py demo/data/kitti/kitti_000008.bin demo/data/kitti/kitti_000008.png demo/data/kitti/kitti_000008_infos.pkl configs/mvxnet/dv_mvx-fpn_second_secfpn_adamw_2x8_80e_kitti-3d-3class.py checkpoints/dv_mvx-fpn_second_secfpn_adamw_2x8_80e_kitti-3d-3class_20210831_060805-83442923.pth
#4
python demo/multi_modality_demo.py demo/data/sunrgbd/sunrgbd_000017.bin demo/data/sunrgbd/sunrgbd_000017.jpg demo/data/sunrgbd/sunrgbd_000017_infos.pkl configs/imvotenet/imvotenet_stage2_16x8_sunrgbd-3d-10class.py checkpoints/imvotenet_stage2_16x8_sunrgbd-3d-10class_20210819_192851-1bcd1b97.pth
#5
python demo/mono_det_demo.py demo/data/nuscenes/n015-2018-07-24-11-22-45+0800__CAM_BACK__1532402927637525.jpg demo/data/nuscenes/n015-2018-07-24-11-22-45+0800__CAM_BACK__1532402927637525_mono3d.coco.json configs/fcos3d/fcos3d_r101_caffe_fpn_gn-head_dcn_2x8_1x_nus-mono3d_finetune.py checkpoints/fcos3d_r101_caffe_fpn_gn-head_dcn_2x8_1x_nus-mono3d_finetune_20210717_095645-8d806dc2.pth
#6
python demo/pc_seg_demo.py demo/data/scannet/scene0000_00.bin configs/pointnet2/pointnet2_ssg_16x2_cosine_200e_scannet_seg-3d-20class.py checkpoints/pointnet2_ssg_16x2_cosine_200e_scannet_seg-3d-20class_20210514_143644-ee73704a.pth
- 训练KITTI数据集
#这里没使用预处理模型
python tools/train.py configs/second/hv_second_secfpn_6x8_80e_kitti-3d-car.py
#可能会出现No module named tools,在import前加上以下代码
import sys
sys.path.append("./")
- 其他处理
#可视化数据集
python tools/misc/browse_dataset.py configs/_base_/datasets/kitti-3d-3class.py --task det --output-dir ${OUTPUT_DIR} --online
#显示 2D 图像以及投影的 3D 边界框
python tools/misc/browse_dataset.py configs/mvxnet/dv_mvx-fpn_second_secfpn_adamw_2x8_80e_kitti-3d-3class.py --task multi_modality-det --output-dir ${OUTPUT_DIR} --online
#分类loss
python tools/analysis_tools/analyze_logs.py plot_curve E:/desktop/PointCloud/mmdetection3d/work_dirs/hv_second_secfpn_6x8_80e_kitti-3d-car/20220802_103629.log.json --keys loss --legend loss --out loss.pdf
#分类和回归损失
python tools/analysis_tools/analyze_logs.py plot_curve E:/desktop/PointCloud/mmdetection3d/work_dirs/hv_second_secfpn_6x8_80e_kitti-3d-car/20220802_103629.log.json --keys loss_cls loss_bbox --out losses.pdf
#训练速度
python tools/analysis_tools/analyze_logs.py cal_train_time E:/desktop/PointCloud/mmdetection3d/work_dirs/hv_second_secfpn_6x8_80e_kitti-3d-car/20220802_103629.log.json [--include-outliers]