4D毫米波雷达分类和工程实现

       4D毫米波目标检测信息丰富,可获得目标3维位置信息、径向速度vrrcs等,能够对目标准确分类。

        4D毫米波和激光做好时空同步,可以用激光目标给4D毫米波做标注,提升标注效率。

1 激光用做4D毫米波分类真值

        128线激光推理的结果作为4D毫米波雷达的真值,但不同类别的尺寸存在重叠,存在分类错误可能。

1.1 小车,类别0,点数0~70,长度2m~7m,宽度1.6m~2.7m

1.2 大车,类别1,点数0~120,长度4.5m~14m,宽度1.9m~3.3m

1.3 两轮车,类别4,点数0~24,长度1.4m~2.4m,宽度0.55m~1.1m

1.4 行人,类别5,点数0~14,长度0.5m~1.5m,宽度0.55m~0.9m

        总体来看,128线激光标注的真值可靠性较高,但仍存在一些小问题,会对4D雷达分类结果造成一定影响,如果要求更高的标注准确度和精度,则需要提升128线激光雷达目标检测的性能,或者人工辅助标注。

2 特征统计和分类验证

       对标注数据进行统计分析,部分统计结果如下:

2.1 行人特征

2.2 两轮车特征

2.3 运动小汽车特征

2.4 运动大巴特征

        从统计结果可以发现,不同目标的特征有明显差异,比如点云数量、RCS等,通过对这些特征数据的训练,则能对毫米波目标进行分类。

        实验使用了距离、朝向、点云数、最大rcs、最大snr做训练,使用了9000多组数据,80%用做训练集,20%用做测试集,验证两轮车和一般车辆的分类准确率。

        总共使用了3种机器学习方法,最近邻(KNN)、支持向量机(SVM)和决策树(Decision Tree),分类准确率均在95%以上。

3 决策树用作4D毫米波分类的实现方法

        使用4D毫米波雷达的一些特征,可以对其做准确的分类。这里使用点数、距离、方位角、长、宽作为特征,长宽通过估计目标朝向后将点云投影到朝向方向上计算得到。本文使用决策树算法来实现分类,下面是详细的实现过程。

        训练使用python的sklearn,直接导入即可。

from sklearn.tree import DecisionTreeClassifier

        这里使用了三个类别(小车、大车、自行车)8万多组数据,80%用做训练集,20%用做测试集。     

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

        然后调用函数进行训练。

decision_tree = DecisionTreeClassifier()       decision_tree.fit(X_train, y_train)

        训练完成后在测试集上验证。

y_train_pred = decision_tree.predict(X_train)y_test_pred = decision_tree.predict(X_test)

        再验证准确率。

from sklearn.metrics import accuracy_scoreprint('decision tree train accurary socre:', accuracy_score(y_train, y_train_pred), 'test accurary socre:', accuracy_score(y_test, y_test_pred))train_error_score = 1 - accuracy_score(y_train, y_train_pred)test_error_score = 1 - accuracy_score(y_test, y_test_pred)print('decision tree train error socre:', train_error_score, 'test error socre:', test_error_score)

        如果使用默认参数,则训练集准确率为100%,测试集准确率为95%。

        获取决策树深度,发现有33层,叶子数有2179个,实在过于庞大。

tree_depth = decision_tree.get_depth()tree_leaves = decision_tree.get_n_leaves()print('depth',tree_depth,',leaves:',tree_leaves)

        调用决策树可视化工具,可以看到结果,由于叶子树太多,全屏显示只能看到一个个小点。

        将其放大到100%才能看清细节。

        这么多的层数和叶子树存在过拟合风险,而且实现的代码也非常复杂,因此考虑降低层数。

decision_tree = DecisionTreeClassifier(max_depth=9) 

在生成决策树模型的时候设置最大深度为9,则最后生成的决策树体量大幅减小,实测结果层数为9,叶子树为230。

训练集准确度有所降低,但测试集反而提升,表明降低了过拟合,提升了泛化性能。

        模型生成之后,代码编写费事费力,这里参考这位博主的方法,用代码自动生成。不过python脚本有点小问题,需要自行发现修改才能得到最后的结果。

        使用Python训练好的决策树模型生成C++代码_class=versicolor-CSDN博客

        使用m2cgen库也可以实现模型到c代码的转换,  详细信息可以查看m2cgen · PyPI

import m2cgen as m2ccode = m2c.export_to_c(decision_tree)file = open('radar_tree_m2cgen_code.txt','w')file.write(code)file.close()

       最后得到可以运行的C语言代码。

        如果对效果不满意,可以使用不同的特征组合进行对比实验,以获得期望的结果。

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

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

相关文章

js遍历数组和对象的常用方法有哪些?

在JavaScript中&#xff0c;我们有很多遍历数组和对象的方法。以下是一些常用的方法&#xff1a; 遍历数组的方法&#xff1a; for循环&#xff1a;这是最基本的方法&#xff0c;通过索引来遍历数组 for(let i 0; i < array.length; i) { console.log(array[i]); }2.fo…

ChatGPT学python: 用json文件传参

目录 json语法最简陋版python解析语法小结 json语法最简陋版 param.json [{"Table_name": "table1","Event_name_colum": 4,"update_colum": 9},{"Table_name": "table2","Event_name_colum": 3,&quo…

Windows编程入门-窗口控件-资源操作

window控件&#xff1a; 控件是常见的窗口上的交互元素例如&#xff1a;一个按钮&#xff0c;一个复选框&#xff0c;一个列表框等。 当控件的特定功能被触发后&#xff0c;会主动发送消息通知父窗口&#xff0c;父窗口可以通过发送消息给控件控制控件的行为。 控件的本质是一个…

[AG32VF407]国产MCU+FPGA Verilog编写控制2路gpio输出不同频率方波实验

视频讲解 [AG32VF407]国产MCUFPGA Verilog编写控制2路gpio输出不同频率方波实验 实验过程 根据原理图&#xff0c;选择两个pin脚作为输出 修改VE文件&#xff0c;clk选择PIN_OSC&#xff0c;使用内部晶振8Mhz&#xff0c;gpio使用PIN_51和52&#xff0c;pinout是数组 添加pll…

qt学习:多媒体Multimedia摄像头

目录 注意 头文件 模块 步骤 实例 定义一个摄像头对象和一个摄像头拍照对象 在构造函数里获取当前电脑上所有可以用的摄像头存入链表 启动摄像头按钮点击事件 退出按钮点击事件 拍照按钮点击事件 保存图片槽函数定义和实现 摄像头在Qt Multimedia多媒体模块里 QCam…

Uniapp小程序端打包优化实践

背景描述&#xff1a; 在我们最近开发的一款基于uniapp的小程序项目中&#xff0c;随着功能的不断丰富和完善&#xff0c;发现小程序包体积逐渐增大&#xff0c;加载速度也受到了明显影响。为了提升用户体验&#xff0c;团队决定对小程序进行一系列打包优化。 项目优化点&…

CentOS 7如何修改用户密码

一、问题 CentOS 7如何修改用户密码&#xff1f; 二、解答 1、passwd命令 [rootlocalhost ~]# passwd 用户名#需要在root用户下修改 [rootlocalhost ~]# su root#切换到root下&#xff0c;输入密码 #修改用户的密码&#xff0c;按提示输入新密码和确认密码&#xff0c;密码是…

EPSON RC 机器人-第一个程序

创建项目 有机械人且用USB线连接好。可以USB。没有真机的选择 C4 Sample 可以运行程序。 否刚会提示【不能连接到控制器&#xff0c;未安装USB驱动器】 代码 按F5打开运行窗口 再点【开始】 点 【是】&#xff0c;查看运行结果

安装并开始设置 Windows 终端(命令提示符或Windows PowerShell或Azure Cloud Shell)

安装 安装 若要试用最新的预览功能&#xff0c;可能还需要安装 Windows 终端预览。 ‼️备注 如果你无法访问 Microsoft Store&#xff0c;GitHub 发布页上发布有内部版本。 如果从 GitHub 安装&#xff0c;Windows 终端将不会自动更新为新版本。 有关使用包管理器&#xff…

跟着cherno手搓游戏引擎【15】DrawCall的封装

目标&#xff1a; Application.cpp:把渲染循环里的glad代码封装成自己的类&#xff1a; #include"ytpch.h" #include "Application.h"#include"Log.h" #include "YOTO/Renderer/Renderer.h" #include"Input.h"namespace YO…

构建高效可靠的消息队列系统:设计与实现

目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 Docker Compose配置示例 2. 容错和恢复 2.1 异常检测与自动故障迁移 2.2 Spring Boot代码示例 3. 心跳检测 4. 优雅关闭 2.2、持久性 1. 生产者消息持久化 2. 队列的持久化 3. 消息队列的持久化 总结 …

Android Studio使用小记

复制了一个原来的项目&#xff0c;准备基于它调整一个OEM版本 因为svn服务器上分出了一个单独的版本&#xff0c;于是在工程目录下手工删除了.svn文件&#xff0c;并手工去除了vcs.xml <?xml version"1.0" encoding"UTF-8"?> <project versi…

第4章 python深度学习——(波斯美女)

第4章 机器学习基础 本章包括以下内容&#xff1a; 除分类和回归之外的机器学习形式 评估机器学习模型的规范流程 为深度学习准备数据 特征工程 解决过拟合 处理机器学习问题的通用工作流程 学完第 3 章的三个实例&#xff0c;你应该已经知道如何用神经网络解决分类问题和回归…

高通GAIA V3命令参考手册的研读学习(十三):GAIA通知

如前文《高通GAIA V3命令参考手册的研读学习&#xff08;四&#xff09;》所述&#xff0c;PDU一共有四种&#xff0c;前面已经讲了命令、回应以及错误码&#xff0c;现在来看最后一种&#xff1a;通知。 4. QTIL GAIA通知 通知发送的方向&#xff0c;是由设备发送到移动应用…

【Node.js】fs与path模块的基础使用

文章目录 前言一、什么叫做模块二、fs模块2.1 fs模块是干什么的&#xff1f;2.2 fs模块的使用导入fs模块读取文件的内容写入文件内容处理路径问题path路径模块 总结 前言 在Node.js中&#xff0c;fs模块&#xff08;文件系统模块&#xff09;是一个重要的核心模块&#xff0c;…

【操作系统】调用硬盘并且实现MBR与Loader的过渡——实战篇

一.概述 有了上一篇文章&#xff1a;【操作系统】调用硬盘并且实现MBR与Loader的过渡——原理篇的理论支持&#xff0c;我们就可以开始代码实操了&#xff0c;接下来我们将优化MBR程序&#xff0c;使其从扇区中读取出loader加载器&#xff0c;并将其存放到内存处&#xff0c;将…

springboot(ssm环保网站 绿色环保宣传系统Java系统

springboot(ssm环保网站 绿色环保宣传系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;springboot&#xff08;可改ssm&#xff09; vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff0…

C++ easyX小程序:画五角星

//本小程序通过调用easyX的moveto、lineto函数画出五角星编写了FiveStar函数&#xff0c;在调用这个函数时setbkcolor、setlinecolor、setfillcolor设置了背景、线及填充颜色&#xff0c;又调用floodfill函数对五角星进行颜色填充。 //代码及注释如下&#xff1a; #include<…

excel怎么设置密码?轻松保护您的工作表

在数字化时代&#xff0c;数据的安全性显得尤为重要。excel作为我们日常工作中广泛使用的办公软件&#xff0c;其中可能包含了大量的敏感数据。为了确保这些数据不被未授权的人访问&#xff0c;本文将为您详细介绍excel怎么设置密码&#xff0c;从而有效地保护您的数据安全。 方…

基于Redis的高可用分布式锁——RedLock

目录 RedLock简介 RedLock工作流程 获取锁 释放锁 RedLock简介 Redis作者提出来的高可用分布式锁由多个完全独立的Redis节点组成&#xff0c;注意是完全独立&#xff0c;而不是主从关系或者集群关系&#xff0c;并且一般是要求分开机器部署的利用分布式高可以系统中大多数存…