说明:又到了毕业的季节,拿出来我之前做的小雷达识别项目,给学弟学妹们做毕设一点参考。这个主要是根据雷达采集的数据包进行聚类识别,看那些是汽车,更改数据的特征之后可以识别特定目标,比如路上新人等。
另外,这个是第一节,主要是介绍原理,流程,具体运行代码之后,分布实现成的效果可以移步第二篇,大概的步骤参考了大佬的流程,但是实际应用中还是有很多和我需求不同的点,于是我在大佬的基础上进行改进和二创,感谢大佬的无私奉献。参考的博客见:参考项目
改进部分由本人原创,转载必究
成果展示
按照惯例先展示效果(不知道csdn上能不能显示,看不了的可以去po站上看):
bilibili传送
雷达识别
研究背景和意义
1、为什么要研究目标检测?
①车辆数目增加,交通问题增多;②无人驾驶发展,安全性要求高;③改善特定道路地区的交通环境;
2、为什么用激光雷达?
①需要更高分辨率交通数据;②传统传感器受影响的因素多;③体积小,重量轻,隐蔽性好;④可协同工作,构建高精度模型;
3、为什么要布置在路侧?
①利于传统机动车的联网过渡;②较传统车载雷达方案成本低;③受实际道路地形,天气影响小;④便于联合组建交通地理网络;
研究方法和思路
如图所示,大概可以分为5步:
点云数据采集平台
用的是RS-Ruby Lite 80 线激光雷达,其实数据是老师给我的,想要的我可以发在我的博客上,它的具体参数如下:
用到的数据处理软件
- 机器人操作系统
实际上就是我们的ROS系统,我在使用Linux的ubantu系统上处理的。
机器人操作系统是适用于机器人的开源元操作系统,它集成了大量的工具、库、协议,提供了类似操作系统所提供的功能,在某些方面类似于一个新的“机器人框架”。
我们选用ROS处理三维激光雷达数据,包括点云显示节点、点云在硬盘中的加载与显示等功能。 - MATLAB2020a
- Cloud Compare
它是一个三维点云(网格)编辑和处理软件。它可以实现三维点云数据和三角形网格之间的对比。此外,还新增了其他包括图像处理校准、重新采样、开放式图形库着色器和插件等的显示增强工具。
它可以提供高斯、双边、统计、CSF地面滤波和坡度法地面滤波的过滤效果与对比。
点云预处理
我把我要用的rosbag转换成KITTI类型的数据集
KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。
KITTI包含市区、乡村和高速公路等场景采集的真实图像数据,每张图像中最多达15辆车和30个行人,还有各种程度的遮挡与截断。整个数据集由389对立体图像和光流图,39.2 km视觉测距序列以及超过200k 3D标注物体的图像组成,以10Hz的频率采样及同步。
Rosbag是记录了一系列连续帧的点云文件,对于道路障碍物识别则需要将连续帧分解为KITTI形式的单帧文件进行识别。
ROS的message_filter 提供了两种同步方式: 精确同步和近似同步, 由于时间戳无法真正对齐, 本文采用近似同步, 总体思路就是回放rosbag, 发布topics, 然后自己编写节点代码订阅topics, 并按照自己的同步规则和提取数据的要求进行数据处理。
用到如下两条指令:
非地面点云分割
前面的数据没看懂也没啥关系,直接用人家网站公开的KITTI数据也可以,具体可以去网站:cvlibs.net,我也有下载好的,很大有26个g,要用的话可能用不了这么多,我分批传到csdn上,后面我把百度云链接给上,平台定价策略太玄学了,我主要是想非必须的都免费分享给大家,你也可以根据自己的需要在matlab上人为生成,不过很麻烦,要做的可以探索下。
常见的点云地面数据提取有垂直高度差、地面点云线性归纳法和刺状边缘平滑变化提取的方法。毕竟我们要在二维平面上进行聚类,如果从上面看有地面点云的影响,那还怎么识别?对吧。
上一下效果:
点云栅格化
栅格地图是一种基于两维平面网格来存储点云类别等特性的存储方式。它可以将点云按所在的空间位置进行区域“窗格化”分割,将一定空间范围内的点云数据所包含的统计信息存储在提前指定大小范围内的所属坐标的栅格中,利用该点云块所在的栅格信息将原数据替换,大大减少了数据的处理时间。
本文采用以实际长度大小为 0.1m* 0.1m为单位创建栅格,将路侧雷达空间位置作为几何基准点,构建图像,于是可以推得对任意一个点云,其具体位置坐标可用如下式表示:
栅格就是把点存到一个个小格子里面,抽象一下就长这样:
点二维可视化之后就长这样:
非地面栅格点云聚类
聚类是一种寻找已知数据的内在分布规律的技术。它把全部数据的集合根据我们的主要需求特性组织成一系列类似组,而这些类似组被称作簇。处于相同簇中的数据属性彼此相同,处于不同簇中的数据属性在一定置信概率下视为不同。
主流的聚类方法主要分为3类:
- 划分聚类,将数据对象组织成多个分区,在分类好的数据中选取几个初始特定点进行反复迭代,直到簇内的数据集合距离小,簇间数据大的分块效果。
- 层次聚类,该方法对给定的数据按层次分解,直至全部数据点都凝聚至一类聚类或者达到已经设定好的跳出条件而结束。
- 密度聚类,基于密度特征的聚类算法可适用于聚类复杂边缘分布点形状的簇。
显然在非地面点云提取完成后,我们需要对格子点云进行聚类,由于点云的复杂性空间分布的属性,显然需要一种基于密度的点云聚类方法。
分析一下原理,抽象化步骤如图,可以结合其他大佬原理分析来看,有空再写。它的核心思想就是一个类别簇内得有足够数量的相同类别数据才能让它归于一类,在每一个点周围画圈,聚在一起的就是一类。
利用多层感知机模型进行聚类识别
这里我们激活函数为sigmoid,损失函数用交叉熵,交叉熵和损失函数定义如下:
构建多层感知机分类识别模型
选取特征值
高度轮廓的意思跟下面一样,轿车高度不同作为特征:
将所得的输入向量导入到训练得到的多层感知机模型中。由于在多层感知机模型中交叉熵函数内部会实现Softmax函数用于估算输出机动车和非机动车的概率。
可行性评价指标及改进
评价指标就用日常的精确率、召回率和f1综合得分
布置方案:
- 低坡度:在山地具有较大坡度的城市道路,就无法利用地面高度平滑性的工程特点来分割地面点云数据,即使使用地面坡度拟合,受噪声影响也较大;
- 非机动车目标高度一般:路侧电线杆、大型卡车和货运车的货物等目标对栅格转化影响较大,需要根据不同路段常过车辆来规定不同的栅格阈值;
- 路况微小单位较少:商业街道人群,学校路段,公园多宠物等复杂情况,会造成目标点云数据粘连在一起从而造成误识别。
改进:
-
本系统提出的基于点云数据二维栅格化后进行DBSCAN聚类方法,它在划分聚类和层次聚类算法运算适用性方面有了较大的提升,但它依赖于点云特征结构与点云数目的显著性,在与离采集雷达较远的机动车道,数据会受到角度与机动车方向近似平行导致数据波动和噪声较大,在滤波后会发生部分数据丢失的现象。
-
本系统使用的RS-Ruby-Lite激光雷达传感器虽然能采集到精度较高的三维信息,但路侧监测路况复杂多变且采集过程容易受到天气状况的影响,特别是在大雨、大雾天气基本无法使用,因此模型改进中可以考虑融合视觉传感器的联合特征计算,以此提升障碍物目标识别系统在复杂环境下的鲁棒性。
-
本系统所提基于多层感知机的神经网络分类器是用以识别典型交通道路的机动车与非机动车单位,在以后的研究中,可以增加例如行人,交通指示线等物理特征作为感知机的输入维度带入模型学习,提高路侧激光系统的适用性和智能化程度。
结论:高准确率的激光雷达点云数据的目标识别对于道路交通安全和效率分析非常重要。在研究工作中,路侧激光雷达传感器用于收集周围物体的 3D 点云。我们可以高实时性地识别RS-Ruby-Lite激光雷达采集的点云下的机动车和行人目标,并达到90%左右地精度。
编写不易,求个点赞!!!!!!!
“你是谁?”
“一个看帖子的人。”
“看帖子不点赞啊?”
“你点赞吗?”
“当然点了。”
“我也会点。”
“谁会把经验写在帖子里。”
“写在帖子里的那能叫经验贴?”
“上流!”
cheer!!!