使用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), 第一时间获取更新内容。

相关推荐
所谓伊人,在水一方33336 分钟前
【Python数据科学实战之路】第6章 | 高级数据可视化:从统计洞察到交互叙事
开发语言·python·信息可视化
喵手42 分钟前
Python爬虫实战:降维打击 - 用 Playwright 嗅探网络层抓取douyin无水印视频!
爬虫·python·爬虫实战·抖音·playwright·零基础python爬虫教学·采集抖音无水印视频
Fuliy9644 分钟前
第三阶段:进化与群体智能 (Evolutionary & Swarm Intelligence)
人工智能·笔记·python·学习·算法
淘矿人44 分钟前
【claude】05_Claude Skill 实战案例精选(上):开发类技能+weelinking中转服务
大数据·人工智能·python·elasticsearch·搜索引擎·cloudera
一碗烈酒1 小时前
【使用Python临时搭建代理转发服务,内网穿透】
python·测试工具·代理模式
测试19981 小时前
软件测试之压力测试详解
自动化测试·软件测试·python·测试用例·接口测试·压力测试·性能测试
深耕AI1 小时前
【 从零开始的VS Code Python环境配置:uv】
开发语言·python·uv
七夜zippoe1 小时前
Python配置管理革命:pydantic-settings + 动态热更新实战
python·热更新·配置中心·配置管理·pydantic·类型安全
DarkAthena1 小时前
【GaussDB】排查ARM64环境上gaussdb的python驱动(psycopg3)coredump的问题
python·gaussdb
SEO-狼术1 小时前
Convert HTML Tables to PDF in Python
开发语言·python·pdf