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

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

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,直接导入即可。

python 复制代码
from sklearn.tree import DecisionTreeClassifier

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

python 复制代码
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

然后调用函数进行训练。

python 复制代码
decision_tree = DecisionTreeClassifier()       

decision_tree.fit(X_train, y_train)

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

python 复制代码
y_train_pred = decision_tree.predict(X_train)

y_test_pred = decision_tree.predict(X_test)

再验证准确率。

python 复制代码
from sklearn.metrics import accuracy_score

print('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个,实在过于庞大。

python 复制代码
tree_depth = decision_tree.get_depth()

tree_leaves = decision_tree.get_n_leaves()

print('depth',tree_depth,',leaves:',tree_leaves)

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

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

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

python 复制代码
decision_tree = DecisionTreeClassifier(max_depth=9) 

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

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

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

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

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

python 复制代码
import m2cgen as m2c

code = m2c.export_to_c(decision_tree)

file = open('radar_tree_m2cgen_code.txt','w')

file.write(code)

file.close()

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

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

相关推荐
碳基猿17 分钟前
新媒体运营的终局:从“内容创作”走向“运营系统竞争”
人工智能·新媒体运营·产品运营·新媒体矩阵·多账号管理·矩阵分发·矩阵运营方法论
阿里云大数据AI技术22 分钟前
阿里云 EMR Daft AI Function:用 DataFrame 表达式搞定大模型调用与多模态向量化
人工智能·spark
jerryinwuhan28 分钟前
鱼苗投放检测系统设计
人工智能
阿里云大数据AI技术40 分钟前
官宣|Apache Fluss 毕业成为顶级项目,湖流一体开启 Agentic Lake 全面实时化时代
人工智能·flink
敲代码的玉米C1 小时前
测试一直在写你的真实数据根
前端·人工智能·架构
Mr.huang1 小时前
自注意力机制(Self‑Attention)
人工智能·深度学习
品牌测评1 小时前
大模型推理算力平台推荐分享|六家平台计费与架构拆解
大数据·人工智能·架构
武汉万象奥科1 小时前
8路AHD摄像头同时输出演示,万象奥科RK3576 AHD硬件方案
人工智能·计算机视觉
LedgerNinja1 小时前
WEEX 真实情况如何?交易平台如何判断是否可靠
大数据·人工智能·区块链
重庆传粉科技1 小时前
GEO深度解读:AI时代品牌营销的核心,从内容优化转向事实治理
人工智能