当前位置: 首页 > news >正文

使用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.txt 和 val.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_KITTI 和 anchor_sizes 等参数,以匹配自定义数据集的类别名称和锚框尺寸。
  4. 数据增强: 修改 custom_dataset.yaml 中的 PREPARE 和 SAMPLE_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), 第一时间获取更新内容。

相关文章:

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

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

四舍五入问题

单纯输出四舍五入可以用 printf("%.nf",num); 但是这个方法有时候会出错 代表输出n位四舍五入小数 而将数四舍五入赋值给变量可以用round()函数 a round(num); 表示将num四舍五入赋值给a 但是这么些只能转换位四舍五入的整数 可以改…...

零基础入门学用Arduino 第一部分(三)

重要的内容写在前面: 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后,整体感觉是很好的,如果有条件的可以先学习一些相关课程,学起来会更加轻松,相关课程有数字电路…...

C++标准库random

random 完整文档看这里 三步走: 选择一种随机数种子选择一个随机数引擎选择一个随机数分布输出 随机数种子 //生成随机数种子,在Linux的实现中,是读取/dev/urandom设备 std::random_device rd; unsigned seed1 rd();// 获取当前时间点作为随机数种子 unsigned seed2 std:…...

电子电气架构——车载诊断DTC一文通

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标…...

Golang | Leetcode Golang题解之第129题求根节点到叶节点数字之和

题目: 题解: type pair struct {node *TreeNodenum int }func sumNumbers(root *TreeNode) (sum int) {if root nil {return}queue : []pair{{root, root.Val}}for len(queue) > 0 {p : queue[0]queue queue[1:]left, right, num : p.node.Left, …...

工业信息化SCI期刊,中科院1区TOP,IF=12.3,收稿范围广泛

一、期刊名称 IEEE Transactions on Industrial Informatics 二、期刊简介概况 期刊类型:SCI 学科领域:工程工业 影响因子:12.3 中科院分区:1区TOP 三、期刊征稿范围 IEEE工业信息学汇刊是一本多学科期刊,发表技…...

Spring Boot整合Redis

Spring Boot整合Redis Spring Boot 整合 Redis 是一种常见的做法,用于在 Spring Boot 应用程序中添加缓存、会话管理分布式锁等功能。 浅谈Redis Redis用于存储数据,且在内存当中进行存储。 但是在日常编写代码时,定义一个变量也就是属于在内…...

kafka的leader和follower

leader和follower kafka的leader和follower是相对于分区有意义的,不是相对于broker。 因为每个分区都有leader和follower, leader负责读写数据。 follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。 kafka会再…...

git 空仓库笔记

标识身份,建议先完成 Git 全局设置 git config --global user.name “账号” git config --global user.email “email” 方式一:克隆仓库 git clone https://url/your.git cd your_path touch README.md git add README.md git commit -m "add …...

字母异位词分组(charyw)

字母异位词分组 题目描述 给定一个字符串数组&#xff0c;将字母异位词组合在一起。字母异位词指字母相同&#xff0c;但排列不同的字符串。 输入格式 第一行正整数n&#xff0c;表示有n个字符串(1<n<1000) 第二行n个字符串&#xff0c;空格隔开 输出格式 多组字母…...

力扣 41.缺少的第一个正整数

题目描述&#xff1a; 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a;范围 …...

Git从入门到放弃

由于我的Git学的不太好&#xff0c;所以为了能够将以后我的学习笔记能够整理的更好&#xff0c;我先要系统的学习一下git&#xff0c;文章由此产生。 文章笔记源自尚硅谷Git入门到精通全套教程视频内容 1 进入官网 学习新技术的第一步需要熟悉官网&#xff0c;Git也不例外。ht…...

003.数据分析_PandasSeries对象

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

【介绍下什么是Kubernetes编排系统】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…...

linux防止nmap扫描

1、首先关闭Centos7自带的firewalld [rootnode ~]# systemctl disable firewalld.service && systemctl stop firewalld.service 2、安装iptables服务 [rootnode ~]# yum install iptables-services iptables-devel -y [rootnode ~]# systemctl enable iptables …...

基于SpringBoot的装饰工程管理系统源码数据库

如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统装饰工程项目信息管理难度大&#xff0c;容错率低&#xff0c;管…...

2024前端面试准备2-JS基础知识回顾

变量类型和计算 1.值类型和引用类型的区别 常见值类型:undefined(定义undefined只能用let,不能用const)、字符串、bool、number、 Symbol; 常见引用类型: 对象, 数组、null(特殊引用类型,指针指向为空地址) 、function(特殊引用类型); 值类型的值直接存储在栈中;引用类型值存储…...

C++ 环形链表(解决约瑟夫问题)

约瑟夫问题描述&#xff1a; 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数&#xff0c;报到 m 的人离开。下一个人继续从 1 开始报数。n-1 轮结束以后&#xff0c;只剩下一个人&#xff0c;问最后留下的这个人编号是多少&#xff1f; 约瑟夫问题例子&#xff1a;…...

【微信小程序】模板语法

数据绑定 对应页面的 js 文件中 定义数据到 data 中&#xff1a; 在页面中使用 {{}} 语法直接使用&#xff1a; 事件绑定 事件触发 常用事件&#xff1a; 事件对象的属性列表&#xff08;事件回调触发&#xff0c;会收到一个事件对象 event&#xff0c;它的详细属性如下&…...

3D Tiles Tools终极指南:如何快速掌握3D模型格式转换与优化

3D Tiles Tools终极指南&#xff1a;如何快速掌握3D模型格式转换与优化 【免费下载链接】3d-tiles-tools 项目地址: https://gitcode.com/gh_mirrors/3d/3d-tiles-tools 在3D地理空间数据可视化领域&#xff0c;3D Tiles Tools是一套功能强大的开源工具集&#xff0c;专…...

APK Installer终极指南:如何在Windows上快速安装安卓应用?

APK Installer终极指南&#xff1a;如何在Windows上快速安装安卓应用&#xff1f; 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows上安装安卓应用而烦恼吗…...

DS4Windows终极指南:让PS4/PS5手柄在Windows上完美工作的完整教程

DS4Windows终极指南&#xff1a;让PS4/PS5手柄在Windows上完美工作的完整教程 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows DS4Windows是一款功能强大的开源工具&#xff0c;专门解决Pl…...

FreeRTOS CPU使用率统计的坑:为什么你的数据跑了1小时就不准了?

FreeRTOS CPU使用率统计的陷阱与高精度优化方案 当你在嵌入式系统中集成FreeRTOS的CPU使用率统计功能时&#xff0c;可能会遇到一个令人困惑的现象&#xff1a;系统运行约1小时后&#xff0c;统计数值突然出现明显偏差。这不是你的代码出了问题&#xff0c;而是隐藏在32位变量和…...

GetQzonehistory:3步搞定QQ空间历史说说备份的终极方案

GetQzonehistory&#xff1a;3步搞定QQ空间历史说说备份的终极方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想过要备份自己在QQ空间发布的那些珍贵回忆&#xff1f;那些…...

从V100到A100:手把手教你理解Ampere架构的7个关键性能优化点

从V100到A100&#xff1a;手把手教你理解Ampere架构的7个关键性能优化点 如果你正在使用NVIDIA V100进行深度学习训练或高性能计算&#xff0c;那么升级到A100可能已经在你的考虑范围内。但这次升级究竟能带来多少实际性能提升&#xff1f;本文将带你深入Ampere架构的7个核心优…...

Google Meet开启Gemini字幕后CPU飙升300%?资深SRE教你用Chrome Tracing+Gemini Profiling Dashboard精准定位瓶颈

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Google Meet开启Gemini字幕后CPU飙升300%&#xff1f;资深SRE教你用Chrome TracingGemini Profiling Dashboard精准定位瓶颈 当团队在Google Meet中启用Gemini实时字幕功能后&#xff0c;参会终端Chrom…...

谷歌seo搜索引擎优化教程有吗?资深SEO总结的15个高效提速工具

很多企业主每年在独立站开发上投入超过 10 万人民币&#xff0c;但网站上线半年&#xff0c;每天的自然访问量依然是个位数。面对“谷歌seo搜索引擎优化教程有吗&#xff1f;”这种疑问&#xff0c;行业内的真实情况是&#xff1a;绝大部分公开课都在讲十年前的套路&#xff0c…...

车载以太网调试‘直连’方案揭秘:不用MCU,如何用两颗PHY芯片搞定100M转换?

车载以太网调试直连方案&#xff1a;两颗PHY芯片实现100M转换的技术解析 在车载电子系统日益复杂的今天&#xff0c;以太网技术凭借其高带宽和可靠性优势&#xff0c;正逐步取代传统的CAN总线成为车载网络的主流选择。然而&#xff0c;当工程师需要调试这些车载以太网设备时&am…...

Windows窗口置顶终极指南:AlwaysOnTop让你的重要窗口永不遮挡

Windows窗口置顶终极指南&#xff1a;AlwaysOnTop让你的重要窗口永不遮挡 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 你是否厌倦了在多个窗口间来回切换&#xff0c;只为了查…...