使用OpenPCDet训练与测试Transformer模型:如何加载自己的数据集

引言

Transformer架构因其强大的序列处理能力和长距离依赖捕捉能力,在自然语言处理领域取得了巨大成功。近年来,这一架构也被引入3D物体检测领域,如Voxel Transformer等,显著提升了模型在复杂场景下的检测性能。OpenPCDet整合了多种先进的检测模型,包括基于Transformer的架构,为用户提供了丰富的选择。

环境搭建与数据准备

  1. 安装OpenPCDet: 确标Python环境,确保安装PyTorch及OpenPCDet。克隆仓库后,执行依赖安装。

    参考:安装、测试和训练OpenPCDet:一篇详尽的指南

  2. nuScenes数据集 : 从官方网站下载数据集,包含LiDAR、相机图像、雷达等多模态数据,为训练和评估准备。存放到相应的路径。

​ 参考:nuscenes生成数据信息info

模型训练
复制代码
python train.py --cfg_file ./cfgs/nuscenes_models/transfusion_lidar.yaml
模型测试
复制代码
python test.py --cfg_file ./cfgs/nuscenes_models/transfusion_lidar.yaml --batch_size 4 --ckpt ../checkpoints_office/cbgs_transfusion_lidar.pth

mAP: 0.5563
mATE: 0.3980
mASE: 0.4401
mAOE: 0.4530
mAVE: 0.4337
mAAE: 0.3143
NDS: 0.5743
Per-class results:
Object Class AP ATE ASE AOE AVE AAE
car 0.908 0.172 0.156 0.119 0.110 0.065
truck 0.771 0.151 0.145 0.018 0.092 0.014
bus 0.995 0.146 0.082 0.025 0.609 0.311
trailer 0.000 1.000 1.000 1.000 1.000 1.000
construction_vehicle 0.000 1.000 1.000 1.000 1.000 1.000
pedestrian 0.933 0.123 0.250 0.311 0.208 0.125
motorcycle 0.643 0.182 0.260 0.368 0.051 0.000
bicycle 0.510 0.150 0.181 0.237 0.401 0.000
traffic_cone 0.805 0.056 0.327 nan nan nan
barrier 0.000 1.000 1.000 1.000 nan nan
2024-06-06 18:13:44,866 INFO ----------------Nuscene detection_cvpr_2019 results-----------------
***car error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.17, 0.16, 0.12, 0.11, 0.07 | 82.63, 91.75, 93.79, 94.97 | mean AP: 0.907864441295618
***truck error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.15, 0.14, 0.02, 0.09, 0.01 | 73.73, 75.99, 78.95, 79.56 | mean AP: 0.7705777235003457
***construction_vehicle error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
1.00, 1.00, 1.00, 1.00, 1.00 | 0.00, 0.00, 0.00, 0.00 | mean AP: 0.0
***bus error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.15, 0.08, 0.02, 0.61, 0.31 | 99.49, 99.49, 99.49, 99.49 | mean AP: 0.9949294532627868
***trailer error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
1.00, 1.00, 1.00, 1.00, 1.00 | 0.00, 0.00, 0.00, 0.00 | mean AP: 0.0
***barrier error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
1.00, 1.00, 1.00, nan, nan | 0.00, 0.00, 0.00, 0.00 | mean AP: 0.0
***motorcycle error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.18, 0.26, 0.37, 0.05, 0.00 | 60.32, 64.65, 65.63, 66.58 | mean AP: 0.6429236754509353
***bicycle error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.15, 0.18, 0.24, 0.40, 0.00 | 50.24, 50.24, 50.24, 53.10 | mean AP: 0.5095299178346822
***pedestrian error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.12, 0.25, 0.31, 0.21, 0.12 | 91.35, 92.33, 93.59, 95.76 | mean AP: 0.9326112947913681
***traffic_cone error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.06, 0.33, nan, nan, nan | 80.48, 80.51, 80.51, 80.51 | mean AP: 0.805013454499808
--------------average performance-------------
trans_err: 0.3980
scale_err: 0.4401
orient_err: 0.4530
vel_err: 0.4337
attr_err: 0.3143
mAP: 0.5563
NDS: 0.5743

数据准备

  1. 数据格式 : OpenPCDet 支持 .npy 格式的点云数据和 .txt 格式的标注文件。

  2. 标注格式: 标注文件每行代表一个目标框,格式如下:

    x y z dx dy dz heading_angle category_name

其中,x, y, z 为目标框中心坐标,dx, dy, dz 为目标框尺寸,heading_angle 为目标框朝向角,category_name 为目标类别名称。

  1. 文件结构: 数据集文件应按照以下目录结构组织:

    OpenPCDet
    ├── data
    │ ├── custom
    │ │ │── ImageSets
    │ │ │ │── train.txt
    │ │ │ │── val.txt
    │ │ │── points
    │ │ │ │── 000000.npy
    │ │ │ │── 999999.npy
    │ │ │── labels
    │ │ │ │── 000000.txt
    │ │ │ │── 999999.txt
    ├── pcdet
    ├── tools

ImageSets 目录包含数据集划分文件 train.txtval.txt,分别用于训练和验证。

注:如果没有数据集,那就先使用kitti数据集。

配置文件修改

  1. 点云特征 : 修改 custom_dataset.yaml 中的 POINT_FEATURE_ENCODING 参数,根据自定义数据集的点云特征进行配置。

  2. 点云范围和体素尺寸: 对于基于体素的检测器,如 SECOND、PV-RCNN 和 CenterPoint,需要设置点云范围和体素尺寸。通常情况下,z 轴范围和体素尺寸为 40,x 和 y 轴范围和体素尺寸为 16 的倍数。

  3. 类别名称和锚框尺寸 : 修改 custom_dataset.yaml 中的 CLASS_NAMESMAP_CLASS_TO_KITTIanchor_sizes 等参数,以匹配自定义数据集的类别名称和锚框尺寸。

  4. 数据增强 : 修改 custom_dataset.yaml 中的 PREPARESAMPLE_GROUPS 等参数,进行数据增强和目标采样。

    文件路径:如果想自己重新创建一个新的dataset, 那就可以仿着costom数据集合写。
    如果没有就可以使用kitti数据集,
    pcdet/datasets/custom/custom_dataset.py

创建数据信息文件

运行以下命令创建数据信息文件,用于训练和评估:

复制代码
python -m pcdet.datasets.custom.custom_dataset create_custom_infos tools/cfgs/dataset_configs/custom_dataset.yaml

训练模型

使用修改后的配置文件,运行以下命令进行模型训练:

复制代码
python train.py --cfg_file tools/cfgs/dataset_configs/custom_dataset.yaml --batch_size 4 --epochs 24

评估模型

使用训练好的模型,运行以下命令进行评估:

复制代码
python test.py --cfg_file tools/cfgs/dataset_configs/custom_dataset.yaml --ckpt tools/cfgs/checkpoints/your_model.pth --eval all
结语

通过上述步骤,你不仅能成功地在OpenPCDet框架下训练和测试基于Transformer的3D物体检测模型,还能灵活地加载和处理自定义数据集。这不仅促进了模型的泛化能力,也为特定应用场景的定制化需求提供了可能。随着数据集的多样化和模型的持续优化,未来在3D感知领域的应用将更加广泛且精准。

关注我的公众号auto_drive_ai(Ai fighting), 第一时间获取更新内容。

相关推荐
weixin_580614003 小时前
如何提取SQL日期中的年份_使用YEAR或EXTRACT函数
jvm·数据库·python
2301_813599553 小时前
SQL生产环境规范_数据库使用最佳实践
jvm·数据库·python
李可以量化3 小时前
QMT 量化实战:用 Python 实现线性回归通道,精准识别趋势中的支撑与压力(下)
python·qmt·量化 qmt ptrade
a9511416423 小时前
Go 中通过 channel 传递切片时的数据竞争与深拷贝解决方案
jvm·数据库·python
Dxy12393102163 小时前
Python 使用正则表达式将多个空格替换为一个空格
开发语言·python·正则表达式
qq_189807034 小时前
如何修改RAC数据库名_NID工具在集群环境下的改名步骤
jvm·数据库·python
zhangchaoxies4 小时前
如何检测SQL注入风险_利用模糊测试技术发现漏洞
jvm·数据库·python
Luca_kill4 小时前
MCP数据采集革命:从传统爬虫到智能代理的技术进化
爬虫·python·ai·数据采集·mcp·webscraping·集蜂云
zhangchaoxies4 小时前
CSS如何实现响应式弹性网格布局_配合media query修改flex-wrap属性
jvm·数据库·python
ZC跨境爬虫5 小时前
Scrapy分布式爬虫(单机模拟多节点):豆瓣Top250项目设置与数据流全解析
分布式·爬虫·python·scrapy