【3D目标检测】OpenPCDet——nuScenes数据集训练BEVFusion/TransFusion_L

引言

OpenPCDet环境搭建参考:【3D目标检测】环境搭建(OpenPCDet、MMdetection3d)

源码地址:OpenPCDet:https://github.com/open-mmlab/OpenPCDet

自定义数据集训练参考:【3D目标检测】OpenPCDet自定义数据集训练

1 nuScenes数据集准备

nuScenes数据集官网
首先需要注册登录,找到如图进行下载:
在这里插入图片描述
可以先下载v1.0-mini数据集测试,有条件的基础上下载全部数据集。

1.1 数据集准备和预处理

按照OpenPCDet的要求准备nuScenes数据结构:
最好放在OpenPCDet/data文件夹下
或者可以使用软连接

ln -s /opt/data/DATASETS/nuscenes /opt/data/CNN_3D/OpenPCDet/data
OpenPCDet
├── data
│   ├── nuscenes
│   │   │── v1.0-trainval (or v1.0-mini if you use mini)
│   │   │   │── samples
│   │   │   │── sweeps
│   │   │   │── maps
│   │   │   │── v1.0-trainval  
├── pcdet
├── tools

1.2 生成标准数据格式

安装必要依赖包

pip install nuscenes-devkit==1.0.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

修改文件路径如下:

  1. OpenPCDet/pcdet/datasets/nuscenes/nuscenes_dataset.py

修改导入本地库路径
在这里插入图片描述
修改配置信息
在这里插入图片描述

修改函数create_nuscenes_info导入库路径
在这里插入图片描述

  1. OpenPCDet/tools/cfgs/dataset_configs/nuscenes_dataset.yaml

在这里插入图片描述
运行代码:
1. 根据上述步骤则可以直接运行

python  nuscenes_dataset.py

2. 官网

#仅使用点云数据
python -m pcdet.datasets.nuscenes.nuscenes_dataset --func create_nuscenes_infos \
    --cfg_file tools/cfgs/dataset_configs/nuscenes_dataset.yaml \
    --version v1.0-trainval

# 使用多模态数据(点云+图像)
python -m pcdet.datasets.nuscenes.nuscenes_dataset --func create_nuscenes_infos \
    --cfg_file tools/cfgs/dataset_configs/nuscenes_dataset.yaml \
    --version v1.0-trainval \
    --with_cam

终端成功运行如下:
在这里插入图片描述
文件夹内生成如下文件:
在这里插入图片描述

2 训练BEVFusion

2.1 下载预训练权重

swint-nuimages-pretrained.pth

2.2 修改训练配置文件bevfusion.yaml

tools/cfgs/nuscenes_models/bevfusion.yaml
两处修改如下图:
在这里插入图片描述
在这里插入图片描述

2.3 BEVFusion模型训练

修改train.py文件,主要修改以下配置
注意 batch_size=3; epochs=6
在这里插入图片描述
报错!
在这里插入图片描述
在这里插入图片描述
原因分析:
numpy版本太高和老版本不兼容

Bug解决:

pip install numpy==1.23.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

训练完毕如下图所示(笔者只跑了6轮,效果并不好):
在这里插入图片描述
在这里插入图片描述

2.4 BEVFusion模型评估

官网指令:

bash scripts/dist_test.sh ${NUM_GPUS} --cfg_file cfgs/nuscenes_models/bevfusion.yaml
–ckpt …/output/cfgs/nuscenes_models/bevfusion/default/ckpt/checkpoint_epoch_6.pth

笔者使用指令:
修改test.py文件如下:
在这里插入图片描述

def parse_config():
    parser = argparse.ArgumentParser(description='arg parser')
    parser.add_argument('--cfg_file', type=str, default='/media/ll/L/llr/a2023_my_3d/OpenPCDet/tools/cfgs/nuscenes_models/bevfusion.yaml', help='specify the config for training')  # 配置文件路径
    parser.add_argument('--batch_size', type=int, default=1, required=False, help='batch size for training')  # 显存溢出的时候则可以减小batch_size
    parser.add_argument('--ckpt', type=str, default='/media/ll/L/llr/a2023_my_3d/OpenPCDet/ckpt/cbgs_bevfusion.pth', help='checkpoint to start from')  # 权重文件

在这里插入图片描述
说明:
根据上述步骤,同理可以跑通nuscenes_models下的所有模型
在这里插入图片描述
笔者又跑了transfusion_lidar模型,如下如所示:
在这里插入图片描述

### BevFusion 训练结果分析与优化 #### 训练结果分析 BevFusion 是一种基于鸟瞰图(Bird's Eye View, BEV)的多传感器融合方法,其核心在于通过全卷积网络实现特征融合并完成多种下游任务。在训练过程中,模型的表现可以通过以下几个方面来评估: 1. **池化预计算的效果** 池化预计算是 BevFusion 的一个重要特性,它能够有效减少冗余计算并加速推理过程。这种技术通过对输入数据的空间维度进行降采样,在保持语义信息的同时降低计算复杂度[^1]。 2. **多任务头的设计** 多任务学习使得 BevFusion 能够同时处理多个目标检测、分割和其他感知任务。实验表明,这种方法不仅提高了资源利用率,还增强了不同任务之间的协同作用[^2]。 3. **性能指标** 性能通常由 mAP (mean Average Precision) 和其他特定于任务的指标衡量。这些指标反映了模型在各种场景下的表现能力以及对噪声和遮挡的鲁棒性。 --- #### 优化策略 为了进一步提升 BevFusion训练效果,可以考虑以下几种优化方向: 1. **增强数据多样性** 使用更丰富的数据集或引入数据增强技术可以帮助模型更好地适应不同的驾驶环境。例如,随机裁剪、旋转和平移图像可以在一定程度上模拟真实世界中的变化条件。 2. **调整超参数** 学习率调度器的选择、批量大小设定以及正则化强度都会显著影响最终的结果。建议采用网格搜索或者贝叶斯优化的方法寻找最佳组合。 3. **改进损失函数设计** 针对不同子任务定制化的损失权重分配机制可能带来更好的整体表现。比如,对于较难收敛的任务给予更高的初始权重,随着训练进程动态调整比例关系。 4. **硬件加速支持** 利用 GPU 或 TPU 等专用硬件设备执行大规模矩阵运算可大幅缩短迭代周期时间,从而允许尝试更多次试验以找到最优解空间位置。 5. **迁移学习应用** 如果存在相似领域已有的高质量预训练模型,则可以直接加载它们作为初始化起点再微调至当前具体应用场景下,这样往往可以获得更快的学习速度及更高精度水平。 ```python import torch.optim as optim # 定义优化器及其学习率衰减策略 optimizer = optim.Adam(model.parameters(), lr=0.001) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1) for epoch in range(num_epochs): scheduler.step() train_model(epoch) ``` 上述代码片段展示了如何配置 Adam 优化算法以及阶梯型学习率下降计划实例。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值