【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测

news2025/4/21 10:10:31

文章目录

  • 1. 自动驾驶实战:基于Paddle3D的点云障碍物检测
    • 1.1 环境信息
    • 1.2 准备点云数据
    • 1.3 安装Paddle3D
    • 1.4 模型训练
    • 1.5 模型评估
    • 1.6 模型导出
    • 1.7 模型部署
    • 效果

1. 自动驾驶实战:基于Paddle3D的点云障碍物检测

在这里插入图片描述

项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测
课程地址——自动驾驶感知系统揭秘

1.1 环境信息

硬件信息
CPU: 2核
AI加速卡: v100
总显存: 16GB
总内存: 16 GB
总硬盘:100 GB
环境配置
Python:3.7.4
框架信息
框架版本:
PaddlePaddle 2.4.0(项目默认框架版本为2.3.2,但由于某些库更新了,原版本代码无法正常运行——2022.12.20)

1.2 准备点云数据

    Paddle3D支持按照KITTI数据集格式构建自己的数据集,可参考文档自定义数据集格式说明进行准备。

    为了能快速演示整个流程,本项目使用数量为300帧的KITTI小数据集。该小数据集是从从KITTI训练集中随机抽取了250帧点云、验证集中随机抽取50帧点云。完整的KITTI数据集可至官网下载。

解压小数据集:

!tar xvzf data/data165771/kitti300frame.tar.gz

在这里插入图片描述

1.3 安装Paddle3D

    克隆Paddle3D源码,基于develop分支完成安装:

下载Paddle3D源码:

!git clone https://github.com/PaddlePaddle/Paddle3D

在这里插入图片描述
更新pip

!pip install --upgrade pip

进入Paddle3D所在路径:

cd /home/aistudio/Paddle3D

安装Paddle3D依赖项:

!python -m pip install -r requirements.txt

在这里插入图片描述
安装Paddle3D源码:

!python setup.py install

在这里插入图片描述

1.4 模型训练

    CenterPoint以点云作为输入基于关键点检测的方式回归物体的尺寸、方向和速度。面向物体尺寸多样不一的场景时其精度表现更高,简易的模型设计使其在性能上也表现更加高效。

    目前Paddle3D对CenterPoint性能做了极致优化,因此本项目选择CenterPoint完成点云障碍物检测。

(1) 创建数据集软链

!mkdir datasets
!ln -s /home/aistudio/kitti300frame ./datasets
!mv ./datasets/kitti300frame ./datasets/KITTI

(2) 生成训练时数据增强所需的真值库

!python tools/create_det_gt_database.py --dataset_name kitti --dataset_root ./datasets/KITTI --save_dir ./datasets/KITTI

在这里插入图片描述
(3) 修改配置文件
    Paddle3D中CenterPoint提供的KITTI baseline是基于8卡32G V100训练,此处只有1张16G V100显卡,所以需要将学习率和批大小修改成针对本地单卡的。注意:要修改两个文件。

!cp configs/centerpoint/centerpoint_pillars_016voxel_kitti.yml configs/centerpoint/centerpoint_pillars_016voxel_minikitti.yml
# 将batch_size从4减少至2
# 将base_learning_rate从0.001减小至0.0000625 (减小16倍)
# 将epochs减小至20

(4)启动训练

通过指定--model https://bj.bcebos.com/paddle3d/models/centerpoint//centerpoint_pillars_016voxel_kitti/model.pdparams基于预训练模型进行Fintune:
训练时长约3小时(epoch = 160)。

!python tools/train.py --config configs/centerpoint/centerpoint_pillars_016voxel_minikitti.yml --save_dir ./output_kitti --num_workers 3 --save_interval 5 --model https://bj.bcebos.com/paddle3d/models/centerpoint//centerpoint_pillars_016voxel_kitti/model.pdparams

在这里插入图片描述

1.5 模型评估

    模型训练完成后,可以评估模型的精度:

!python tools/evaluate.py --config configs/centerpoint/centerpoint_pillars_016voxel_minikitti.yml --model https://bj.bcebos.com/paddle3d/models/centerpoint//centerpoint_pillars_016voxel_kitti/model.pdparams --batch_size 1 --num_workers 3

在这里插入图片描述    可以看到,模型对于车的识别结果较好,对于行人、自行车的识别效果较差。

1.6 模型导出

epoch = 160

!python tools/export.py --config configs/centerpoint/centerpoint_pillars_016voxel_minikitti.yml --model ./output_kitti/epoch_160/model.pdparams --save_dir ./output_kitti_inference

epoch = 20

!python tools/export.py --config configs/centerpoint/centerpoint_pillars_016voxel_minikitti.yml --model ./output_kitti/epoch_20/model.pdparams --save_dir ./output_kitti_inference

在这里插入图片描述

1.7 模型部署

    CenterPoint支持使用C++和Python语言部署,C++部署方式可以参考Paddle3D CenterPoint C++部署文档。本项目采用基于Paddle Inference推理引擎,使用Python语言进行部署。

进入python部署代码所在目录:

cd deploy/centerpoint/python

指定模型文件所在路径、待预测点云文件所在路径,执行预测:

!python infer.py --model_file /home/aistudio/Paddle3D/output_kitti_inference/centerpoint.pdmodel --params_file /home/aistudio/Paddle3D/output_kitti_inference/centerpoint.pdiparams --lidar_file /home/aistudio/Paddle3D/datasets/KITTI/training/velodyne/000104.bin --num_point_dim 4

预测数据,保存为pred.txt文件

Score: 0.8801702857017517 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 15.949016571044922 3.401707649230957 -0.838792085647583 1.6645100116729736 4.323172092437744 1.5860841274261475 1.9184210300445557
Score: 0.8430783748626709 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 4.356827735900879 7.624661922454834 -0.7098685503005981 1.625045657157898 3.905561685562134 1.6247363090515137 1.9725804328918457
Score: 0.8185914158821106 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 37.213130950927734 -4.919034481048584 -1.0293656587600708 1.6997096538543701 3.982091188430786 1.504879355430603 1.9469859600067139
Score: 0.7745243906974792 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 23.25118637084961 -7.758514404296875 -1.1013673543930054 1.665223240852356 4.344735145568848 1.5877608060836792 -1.17690110206604
Score: 0.7038797736167908 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 28.963340759277344 -1.4896349906921387 -0.902091383934021 1.7479376792907715 4.617205619812012 1.563733458518982 1.8184967041015625
Score: 0.17345771193504333 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 43.669837951660156 -14.53625774383545 -0.8703321218490601 1.6278570890426636 3.9948198795318604 1.514023780822754 0.8482679128646851
Score: 0.13678330183029175 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): -0.004944105166941881 -0.15849240124225616 -1.0278022289276123 1.6501120328903198 3.8041915893554688 1.5048600435256958 -1.235048770904541
Score: 0.1301172822713852 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 57.76295471191406 3.359720468521118 -0.6944454908370972 1.5720959901809692 3.5915873050689697 1.4879614114761353 0.9269833564758301
Score: 0.11003818362951279 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 31.166778564453125 4.625081539154053 -1.1666207313537598 1.5735297203063965 3.7136919498443604 1.4804550409317017 1.9523953199386597
Score: 0.1025351956486702 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 25.748493194580078 17.13875389099121 -1.334594964981079 1.497322916984558 3.33937406539917 1.375497579574585 1.2643632888793945
Score: 0.10173971205949783 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 40.83097457885742 -14.601551055908203 -0.8294260501861572 1.5711668729782104 4.121697902679443 1.4682270288467407 1.7342313528060913
Score: 0.10121338814496994 Label: 0 Box(x_c, y_c, z_c, w, l, h, -rot): 58.73474884033203 -13.881253242492676 -0.9767248630523682 1.7061117887496948 4.040306091308594 1.5399994850158691 2.1176371574401855
Score: 0.14155955612659454 Label: 1 Box(x_c, y_c, z_c, w, l, h, -rot): 25.353525161743164 -15.547738075256348 -0.19825123250484467 0.6376267075538635 1.7945102453231812 1.7785474061965942 2.360872507095337
Score: 0.12169421464204788 Label: 1 Box(x_c, y_c, z_c, w, l, h, -rot): 29.0213565826416 18.047924041748047 -0.8930382132530212 0.39424917101860046 1.6417008638381958 1.6697943210601807 -1.8017770051956177

    对预测结果进行可视化,更为直观地展示预测效果。我们将预测结果保存至文件pred.txt中,便于可视化脚本加载。通过指定–draw_threshold可以过滤掉低分预测框:

!python /home/aistudio/show_lidar_pred_on_image.py --calib_file /home/aistudio/Paddle3D/datasets/KITTI/training/calib/000104.txt --image_file /home/aistudio/Paddle3D/datasets/KITTI/training/image_2/000104.png --label_file /home/aistudio/Paddle3D/datasets/KITTI/training/label_2/000104.txt --pred_file /home/aistudio/pred.txt --save_dir ./ --draw_threshold 0.16

效果

图片保存的路径
/home/aistudio/Paddle3D/deploy/centerpoint/python/000104.png在这里插入图片描述

三维点云的投影

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

已经拍好的视频怎么加水印?视频加水印方法大分享

现在不管是网课视频,还是一些视频博主自制的vlog,我们都可以在这些视频里面看到水印,它不仅可以防止他人盗用视频,还可以作为自己形象的宣传,吸引流量。不过现在还是有很多小伙伴不知道怎么给视频添加水印。别急&#…

js将图片url转化为base64

将以下代码复制封装于xxx.js文件中&#xff0c;放置在项目文件夹utiles下 /*** 把url转换为 canvas对象* param url 网络图片地址必须服务器设置允许跨域* returns {Promise<any>}*/ export default function urlToCanvas (url) {return new Promise((resolve) > {var…

2022卡塔尔世界杯 | 我与足球的爱恨情仇

超燃世界杯&#xff0c;决战卡塔尔⚽我与足球在生活上的交集一、小学二、中学三、大学&#x1f4bb;我与足球在技术上的碰撞一、与足球有关的题目训练二、使用Java代码做一个足球小游戏&#x1f3c6;2022卡塔尔世界杯冠军 —— 阿根廷yyds一、球队比赛过程二、热门球员介绍三、…

小学生C++编程基础 课程6(共9题)

Go C编程 第1课 神奇的魔笔 Go C编程 第1课 神奇的魔笔_dllglvzhenfeng的博客-CSDN博客_goc编程作品 GoC2018下册 第2课&#xff08;C画图&#xff09; GoC2018下册 第2课&#xff08;C画图&#xff09;_dllglvzhenfeng的博客-CSDN博客 Go C 编程 第3课 魔法自动机 Go C 编程…

C++:类和对象:继承

前言&#xff1a; 继承时面向对象额三大特性之一&#xff1a; 在面向对象中&#xff0c;有些类与类之间存在特殊关系&#xff0c;下级别的类除了拥有上一级别的共性&#xff0c;还有自己的特性&#xff0c;这个时候我们就需要考虑利用继承的技术减重复代码。 1&#xff1a;继承…

Redisson分布式锁

Redisson分布式锁 Redisson 是什么&#xff1f; Redisson是一个Java库&#xff0c;它为Redis服务器提供分布式和可扩展的Java对象和服务&#xff08;Set、Multimap、SortedSet、Map、Lock、Semaphore、CountDownLatch、Publish/Subscribe、Bloom filter等&#xff09;。它允许…

工控安全-S7协议

文章目录一、西门子PLC系统构成二、S7协议结构三、TPKT协议四、COTP协议4.1 COTP连接包4.2 COTP功能包五、S7Comm协议5.1 头(Header)5.2 作业请求(Job)和确认数据响应(Ack_Data)5.2.1 建立通信(Setup communication [0xF0])5.2.2 读取值(Read Var [0x04])5.2.2.1 当PDU为JOB时5…

redis之分片集群

0. 前言 在海量的数据面前&#xff0c;单个 redis 实例的能力是有限的&#xff0c;无可能无限增大的内存&#xff0c;所以必须要构建分片集群&#xff0c;来横向拓展来支持保存更多的数据。 1. 分片集群是什么&#xff1f; 分片集群主要是将 redis 的数据划分成多份&#xf…

BHG Mall 聚焦消费者需求,“超级宠粉节”缔造营销新高度

“如何读懂消费者&#xff1f;”处在行业关键转型期的购物中心&#xff0c;面临着这一待解的难题。 有哪些业态、品牌、商品让消费者着迷又上瘾&#xff1f;购物中心需要培养和消费者之间的默契&#xff0c;购物中心不仅要引领消费趋势、满足消费需求&#xff0c;还要深度融入…

Java+SSM宠物销售网站(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术实现如下&#xff1a; 后台框架&#xff1a;Spring、SpringMVC、MyBatis UI界面&#xff1a;JSP、jQuery 数据库&#xff1a;MySQL 该系统主要分为前台和后台两大功能模块&#xff0c;共包含两个角色&#xff1a;用户、管理员。 具体的系统功能如…

高分子PEG:DBCO-PEG-OPSS,OPSS-PEG-DBCO,二苯并环辛烯PEG邻吡啶二硫

【产品描述】 DBCO-PEG-OPSS中DBCO试剂可以自动标记叠氮化物修饰的生物分子&#xff0c;而不需要使用有毒的铜催化剂。聚乙二醇化可以提高多肽和蛋白质的溶解性和稳定性&#xff0c;降低其免疫原性。它还可以抑制带电分子与修饰表面的非特定结合。西安凯新生物科技有限公司点击…

html5:notification(浏览器通知)

一、notification简介 Web Notifications是HTML5 的一个特性&#xff0c;目前我知道的有谷歌浏览器和windows edge对它进行了支持&#xff0c;用于向用户配置和显示桌面通知。 二、notification方法 2.1静态方法 这些方法仅在 Notification 对象中有效。 Notification.requ…

5 种有效的电子邮件营销技巧可增加您的转化率

关键词&#xff1a;电子邮件营销、转化率 电子邮件营销是一种非常常见的策略&#xff0c;可以将客户吸引到您的网站并增加转化率。 由于如此普遍&#xff0c;消费者平均每天会收到 78 封新电子邮件。您的电子邮件周围充满了噪音。 那么&#xff0c;您可以做些什么来让您的电子邮…

架构师必读 —— 逻辑模型(10)

以零基础思考摆脱障碍 我们已养成了惰性思考及在其延伸下不断堆叠的思考习惯。 因为以往的方式未出现过重大错误&#xff0c;所以总以为会万无一失。 但是&#xff0c;如果用堆叠式思考方式继续沿用上一年度的做法的话&#xff0c;不管过多少年也很难破旧立新。有时我们有必要重…

第3章 管理端(Vue)布局面的设计实现

1 导入“element-plus&#xff1a;Icon”组件 1.1“element-plus&#xff1a;Icon” 组件导入命令&#xff1a; npm install element-plus/icons-vue 1.2“element-plus&#xff1a;Icon” 组件配置&#xff1a; import { createApp } from vue//在vue-cli4&#xff08;4.5.…

关于A2B与DSP/DAC传输音频的时钟问题

加我V hezkz17 进同行数字音频系统设计开发交流答疑群 1 AD2428----->某功放DSP 是通过IN3输入音频数据 为什么 BCLK 和LRCLK 没有连接TDM时钟 ? 2 新改的板子 用IN1作为音频数据输入 IN1和 OUTPUT3 都是使用 A2B的TDM时钟 因为OUTPUT3 是上行TDM8 用作回传音和录音的…

用好这个任务管理工具,轻松躲避职场明枪暗箭

俗话说&#xff1a;“职场如战场”&#xff0c;而战场上&#xff0c;就不可避免地存在着形形色色的人&#xff0c;以及竞争与对立关系。升职、加薪、都是足以让人心动的诱惑&#xff0c;有利益存在的地方&#xff0c;就有勾心斗角&#xff0c;明坑暗亏。 正所谓&#xff0c;明…

简述 MySQL 的字符集和比较规则(简洁明了)

字符集和比较规则 字符集的概念&#xff1a; 人们抽象出一个字符集的概念来描述某个字符范围的编码规则。 比较规则的概念&#xff1a; 对于某一种字符集来说&#xff0c;可以制定用来比较字符大小的多种规则&#xff0c;也就是说同一种字符集可以有多种规则。 最常用的 U…

阿根廷夺冠!梅西圆梦!历届世界杯还有哪些数据看点?

从1930年到2022年&#xff0c;世界杯已走过92年的光辉岁月&#xff0c;从马拉多纳的“上帝之手”、贝利的“四两拨千斤”、罗纳尔迪尼奥的“诡异吊射”、范佩西的“鱼跃冲顶”再到姆巴佩上演“帽子戏法”刷新记录&#xff0c;世界杯为球迷朋友们带来了无数个惊心动魄的精彩瞬间…

链表(1)-------数据结构

链表(重点): 链表是物理存储结构上面非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的 1)在顺序表中&#xff0c;我们不光引入了一段连续的内存&#xff0c;还引入了一块连续的内存空间&#xff0c;叫做usedsize&#xff0c;来表示对应数组中…