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

Pointpillars(三)工程实践

一、点云标注

1、力推-CVAT

这个github网址统计了标注工具。

https://github.com/HumanSignal/awesome-data-labeling

按照下面这个网址的推荐:我尝试了两种标注工具。实测心得如下:

https://zhuanlan.zhihu.com/p/694524430

  • labelCloud标注时,对于点云放大缩小不敏感,特别慢,而且调整框的大小,需要手动修改右边的数字,不够精确。而且输出多次标注文件为空。 
  • cvat网页版的,非常方便。用github登录注册一下就可以了。在线管理方便。唯一限制就是上传文件必须是zip格式的,并且必须不超过4个G。

3D点云目标检测数据集标注工具 保姆级教程——CVAT (附json转kitti代码)_3d点云标注工具-CSDN博客 这篇文章讲标注,讲的很好。也包含了,如何将json文件,转为kitti格式的txt标注文件。

cvat官网Leading Image & Video Data Annotation Platform | CVAT一看就是正经大工具。

也有官网手册Documentation | CVAT

这个网址对cvat做了简介:CVAT——计算机视觉标注工具-CSDN博客

2、建议尝试-SUSTechPOINTS

SUSTechPOINTS三维点云标注工具使用-CSDN博客

这篇文章也包含了将label转成OpenPCDet的代码。SUSTech代表的应该是南方科技大学。



二、训练自己的模型

【OpenPCDet】自定义数据集(kitti格式)训练PointPillars并评估&可视化,全过程debug_pointpillars训练自己的数据-CSDN博客

这篇文章包含了,点云格式转换,标注格式转换,标注工具,训练方法等内容。

提及了常见错误信息和debug内容。

推荐了一个远程工具:nomachine。



 三、工程实施

GPU租赁平台:

AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL

橘皮优 | 全球C2C GPU算力租用平台

智星云 AI Galaxy | GPU云服务器 GPU服务器租用 远程GPU租用 深度学习服务器 | 免费GPU 便宜GPU

工程(三)——多激光雷达标定、融合、聚类

1、把当前跑通的conda环境复制出来。

conda activate pcdet
conda env export > environment.yml
​# 将这个yml文件拷贝到新的Anaconda环境中。然后基于这个文件,创建新的conda环境。
conda env create -f environment.yml
conda activate pcdet
conda list
conda env list

或者手动复制~/anaconda3/envs/myenv(Linux/Mac)

2、如何训练自己的训练集

3D目标检测(4):OpenPCDet训练篇--自定义数据集(二十五)实践出真知——OpenPCDet 制作pointpillars自定义数据集 - 梦里寻梦的文章 - 知乎

上面这个链接也提及了SUSTechPOINTS工具。

根据自己需求,调整点云范围,需要注意的是x和y轴范围与voxel_size的比值需要是16的倍数,如(69.12+69.12)/0.16 /16= 54

里面提及400张标注还是不太够。

评论区的内容值得学习:数据泛化、标注前转车身坐标系。

3D目标检测(4):OpenPCDet训练篇--自定义数据集https://zhuanlan.zhihu.com/p/407302009这个知乎作者程法说也是跑通的人。注意他的评论区。

同时讲解了对于NX设备的环境部署问题。

自动驾驶系统进阶与项目实战(十)基于PointPillars的点云三维目标检测和TensorRT实战(1)_tensorrt pointpillars-CSDN博客

3、只有激光雷达坐标系如何变换。

kitti这个标注,它是以相机2坐标系为基准的。

4、如何训练。

5、如何连续检测。

6、检测结果如何通过ros2的topic形式发送出去。

7、显示问题。如何把检测框体,通过汽车模型的方式替换掉。

8、如何筛选可行驶区域

9、如何渲染整个环境。

10、地面问题处理。



四、部署问题

ONNX和TensorRT,是模型部署和推理加速的应用。是模型训练好之后部署的问题。

点击链接查看和 Kimi 的对话

User: 我用OpenPCDet训练好pointpillars模型之后,onnx负责做什么?


Kimi: 在使用 OpenPCDet 训练好 PointPillars 模型后,ONNX(Open Neural Network Exchange)通常用于模型的转换和优化,以便将其部署到不同的硬件平台或推理框架中。以下是 ONNX 在此场景中的主要作用:

### 1. **模型转换**
   - **格式统一**:OpenPCDet 训练的模型通常是以 PyTorch 格式保存的,而 ONNX 是一种开放的模型格式,可以将 PyTorch 模型转换为 ONNX 格式。这使得模型能够被不同的推理框架(如 TensorRT、ONNX Runtime、OpenVINO 等)加载和使用。
   - **跨框架兼容性**:ONNX 提供了一种标准化的方式,使得模型可以无缝地从 PyTorch 转换到其他深度学习框架或推理引擎。例如,你可以将 PyTorch 训练好的 PointPillars 模型转换为 ONNX 格式,然后在 TensorRT 中进行优化,以实现更高的推理速度

### 2. **模型优化**
   - **推理加速**:ONNX Runtime 是一个高性能的推理引擎,可以直接加载 ONNX 格式的模型并进行推理。它对模型进行了优化,包括算子融合、内存优化等,能够提高模型的推理速度,同时减少资源消耗。
   - **硬件适配**:ONNX 格式的模型可以被不同的硬件加速器(如 GPU、FPGA、ASIC 等)加载和优化。例如,通过将模型转换为 ONNX 格式,你可以利用 NVIDIA 的 TensorRT 或 OpenVINO 等工具,针对特定硬件进行进一步的优化,以实现最佳的推理性能。

### 3. **部署支持**
   - **跨平台部署**:ONNX 格式的模型可以被多种操作系统和硬件平台支持,包括但不限于 Windows、Linux、macOS、移动设备等。这使得 PointPillars 模型可以更容易地部署到不同的应用场景中。
   - **简化部署流程**:ONNX 提供了统一的接口和工具,使得模型的部署过程更加简单。例如,你可以使用 ONNX Runtime 提供的 API,将模型快速部署到服务器或边缘设备上

### 4. **模型验证**
   - **一致性检查**:在将 PyTorch 模型转换为 ONNX 格式后,可以通过 ONNX 的工具对模型进行验证,确保转换后的模型与原始模型在功能上保持一致。这有助于发现转换过程中可能出现的错误或不兼容的算子。
   - **调试支持**:ONNX 提供了丰富的调试工具,可以帮助开发者检查模型在转换和推理过程中的行为,确保模型的正确性。

### 5. **模型共享**
   - **模型共享与协作**:ONNX 格式的模型文件是开放的,可以方便地在团队成员之间共享,或者在不同的项目中复用。这有助于提高开发效率,促进团队协作。

总结
在 OpenPCDet 训练好 PointPillars 模型后,ONNX 的主要作用是将模型从 PyTorch 格式转换为一种通用的、跨框架的格式,以便进行进一步的优化、部署和共享。

通过 ONNX,你可以将模型部署到不同的硬件平台,利用各种推理引擎的优势,实现高效的推理性能。

 下面这个链接是讲解部署的。

【模型加速】PointPillars模型TensorRT加速实验(3)-CSDN博客

模型部署入门教程(三):PyTorch 转 ONNX 详解

打通部署全流程 | 快速部署 3D 目标检测模型 PointPillars

基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型) - 哔哩哔哩



五、思想实验

上面都是查找的别人如何做的。实操也很难自己收集数据,挨个标定。来测试。

那么这个操作就需要小批量的操作。

1、数据集:

第一步获取自己的数据:我们就用kitti中的点云数据。

我们选择其training中的前一千帧作为训练集,训练集中的后一千帧作为测试集。

2、标注

标注文件相应的拷贝过来,这样就构建了自己的训练集。

3、标注转换

我们用training中的训练集,比如选择中间的10帧数据。放在CVAT或者SUSTechPOINTS下去标注形成JSON文件,然后将JSON文件转为OPenPCDet可以训练的txt文件。

检查对比自己标注之后生成的txt与原始txt的数值差异。

4、训练

采用以上只有点云和标注文件的数据集。没有任何图像的情况下,训练模型。

当前数量只有1000个。然后尝试将训练集提升到2000个,3000个,4000个,记录训练时长和评价指标。

六、实操

1、构建数据集。

先查看OPenPCDet对于自定义数据集的目录要求。按照路径生成自己的数据集文档。

mkdir 

http://www.xdnf.cn/news/4305.html

相关文章:

  • 新手SEO基础操作入门精要
  • Java学习手册:Base64 编码概念和应用场景
  • 解锁创意显示,强力巨彩软模组引领柔性显示技术创新
  • 随机快速排序算法
  • GAN模型
  • 总结七种提示优化方案的核心实现流程
  • 第15章 Python数据类型详解之分解理解:基础数据类型常见易错点和性能优化篇
  • Visual Studio 快捷键更改和设置
  • 【C++游戏引擎开发】第30篇:物理引擎(Bullet)—软体动力学系统
  • Java开发 自定义注解(更新中)
  • MySQL 常用函数分类
  • 编程日志4.25
  • 十分钟了解 @MapperScan
  • 盛元广通动物表型分析数字管理平台
  • framebuffer框架与示例
  • 保障企业的数据安全需要做什么?
  • npm下载插件无法更新package.json和package-lock.json文件的解决办法
  • 脑机接口:从科幻到现实,它将如何改变医疗未来?
  • 岳冉RFID手持式读写器专业研发+模块定制双驱动
  • Dynadot专业版邮箱工具指南(一):创建并设置新邮箱
  • 使用 Python 监控系统资源
  • 高等数学第五章---定积分(§5.1定积分的概念、性质和应用)
  • ShardingJdbc-水平分库
  • tinyrenderer笔记(Phong光照模型)
  • 悬崖边的摄影牧歌
  • ModuleNotFoundError 错误
  • [前端]Javascript获取元素宽度
  • Blink和V8的关系
  • Ubuntu 系统详解
  • 0基础学习鸿蒙开发-HarmonyOS4