自己学习使用,用于记录,以防遗忘。(如有侵权,麻烦您联系我,我会立即删除!)
感谢大佬:
全网最菜的Slamer(基于mmdetection3d框架配置BEVFusion基于mmdetection3d框架配置BEVFusion_mmdet3d bev-CSDN博客),让我成功复现,对我收益匪浅!!
(本文内容借鉴上述转载文章,如有疑问请先看上面的文章)
1.环境准备
ubuntu22.04 + cuda11.8 + pytorch 2.1.1 + rtx 4090
默认已安装cuda,如果你的显卡算力超过8.6,请务必安装11.4以上的cuda,部分算力架构如下图所示(可查询 CUDA GPUs - Compute Capability | NVIDIA Developer)
基于这篇文章基于mmdetection3d框架配置BEVFusion_mmdet3d bev-CSDN博客我曾使用cuda11.1进行配置,最后训练的时候会出现下面的情况
我努力了很久,也没办法解决(包括修改setup.py中的算力架构等),故更换了cuda版本。想了解如何安装多版本cuda请移步我的另一篇文章ubuntu22.04多版本安装cuda及快速切换(cuda11.1和11.8)-CSDN博客
2.正式开始配置环境
#1.创建虚拟环境
conda create -n mmdet3d python=3.8
#1.1激活虚拟环境
conda activate mmdet3d
#2.安装pytorch v2.1.1
# CUDA 11.8
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
#3.安装mmdetection3d
pip install openmim
#3.1下载v1.3.0的mmdet3d
git clone https://github.com/open-mmlab/mmdetection3d.git -b v1.3.0
cd mmdetection3d
mim install -v -e .
#4.安装 cumm-cuxxx spconv-cuxxx
pip install cumm-cu118
pip install spconv-cu118
#5.配置 mmdet3d中的BEVFusion(所在位置不要改变,./mmdetection3d/)
python projects/BEVFusion/setup.py develop
#6.安装其他依赖
pip install mmengine
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html
pip install mmdet==3.2.0
3.数据准备
nuscenes官网:nuScenes
3.1完整数据集下载:(US、Asia都可以)
map下载红线画出的部分
除mini下3.88g的文件不用下载,其余的全都要下载。
3.2完整数据集解压(目录结构)
下载后,进行解压,
我的数据集和代码不在一个盘里,以我的路径给大家介绍一下,以自己的实际情况为准。
新建disk_b/nuscenes,mmdet3d的代码在disk_a中
在nuscenes/下新建maps文件夹把nuScenes-map-expansion-v1.3.zip解压到里面。
其他直接用tar zxvf 文件名.tgz -C ./ 解压到/nuscenes下即可
解压后结构如下:
nuscenes/
├── v1.0-trainval
├── v1.0-test
├── sweeps
├── samples
├── maps
3.3mini数据集的下载及使用
请大家参考全网最菜的Slamer 大佬写的 Fast-BEV代码复现实践_fastbev 复现-CSDN博客中的2.1节进行准备。我没有使用mini数据集。
3.4数据处理
##完整数据集处理
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
##mini数据集处理
python tools/create_data.py nuscenes --root-path ./data/nuscenes --version v1.0-mini --out-dir ./data/nuscenes --extra-tag nuscenes
####上面的./data/nuscenes 用自己的实际数据集路径
####如果不是把数据集放在源代码文件里面,需修改以下路径为自己的实际路径
#1.projects/BEVFusion/configs/bevfusion_lidar_voxel0075_second_secfpn_8xb4-cyclic-20e_nus-#3d.py 19行
#2.tools/dataset_converters/update_infos_to_v2.py 271行
#3.mmdet3d/configs/_base_/datasets/nus_3d.py 30行
#4.mmdet3d/configs/_base_/datasets/nus_mono3d.py 15行
处理后文件结构如下:
4.开始训练
#根据实际硬件情况在配置文件中修改max_epoche、batch_size、num_workers的参数
先训练lidar,再训练lidar+camera
#1.仅lidar训练代码
bash tools/dist_train.sh projects/BEVFusion/configs/bevfusion_lidar_voxel0075_second_secfpn_8xb4-cyclic-20e_nus-3d.py 1
#2.lidar+camera训练代码
bash tools/dist_train.sh projects/BEVFusion/configs/bevfusion_lidar-cam_voxel0075_second_secfpn_8xb4-cyclic-20e_nus-3d.py 1 --cfg-options load_from=./lidar/epoch_20.pth model.img_backbone.init_cfg.checkpoint=./../swint-nuimages-pretrained.pth
训练结果保存在mmdetection3d/work_dirs下
5.测试
后续补充中!