论文解读:《基于TinyML毫米波雷达的座舱检测、定位与分类》

摘要

       本文提出了一种实时的座舱检测、定位和分类解决方案,采用毫米波(mmWave)雷达系统芯片(SoC),CapterahCAL60S344-AE,支持微型机器学习(TinyML)。提出了波束距离-多普勒(BRD)特征,以减轻干扰的影响,便于成人和婴儿的分类。我们开发了两个轻量级卷积神经网络(CNNs)与标签平滑技术来克服噪声标签和增强模型的通用性。大量的实验表明,在最坏的情况下,该实现可以达到96%以上的检测精度和90%以上的定位和分类准确率,只有76 KB的模型大小和大约44 ms的推理时间。比较分析还强调了模型的通用性和鲁棒性对实际应用程序的重要性,并证明了即使使用一个简单的CNN模型也可以获得令人满意的性能。

引言

      座舱内乘客检测在各种安全应用中发挥着至关重要的作用,如安全带提醒、安全气囊部署优化和儿童在场检测(CPD),以防止中暑事件。虽然相机被广泛用于检测和识别,但它们可能会侵犯个人隐私,并在检测隐藏在障碍物背后的物体时面临挑战。压力传感器也可以用于检测乘客的存在,但将物体放置在座位上可能会导致传感器的假警报。相比之下,mmWave雷达有潜力克服这些限制,并提供准确的乘客探测,即使是在具有挑战性的情况下,如低光环境或阳光眩光。它能够检测小的运动,比如儿童的呼吸,使它特别适合满足EuroNCAP 2025路线图规定的严格安全要求,该路线图强调了CPD在车辆中预防事故的重要性。最近的研究探索了使用毫米波雷达进行座舱检测,使用信号处理或新兴的机器学习技术。Chen等人[1]提出了一种基于雷达的由Capon和CFAR生成的点云处理的舱内乘员监测。Abedi等人[2]利用机器学习方法处理范围-方位角(RA)热图,以确定被占据座位的位置。虽然基于capon的方法可以实现更高的角度分辨率,并有助于检测和定位汽车中的人,但它们可能对复杂的干扰很敏感,如手机的振动、风扇和汽车的小运动。

        这些干扰将产生高频分量,并且不能通过在基于RAMAP的处理流程中采用的零多普勒去除来消除。此外,由Capon生成的RAMAP需要大量的矩阵乘法和转置,这使得在mmWave雷达soc上难以实现。Cruz等人[3],Song等人[4]提出利用时频特征来减少推断的影响,提高检测的鲁棒性。然而,获得时频特征也需要大量的计算和内存。此外,以往的工作在开发深度学习模型时很少考虑内存和计算复杂性,这可能导致在嵌入式雷达系统上不可行的实现。

        在本文中,我们提出了一种新的处理流程,利用BRD特征而不是使用RA域的功率分布,以克服干扰的影响,并提供了利用它们不同的范围-多普勒特征对成人和婴儿进行分类的能力。在mmWave雷达SoC上开发并部署了具有8位整数后量化的小型CNN模型。除了检测车内是否有一个人外,我们还通过采用深度学习模型来同时确定这个人坐在哪个座位上,以及这个人是成年人还是婴儿。此外,我们演示了在Caltah雷达SoC上的实时实现,并通过广泛的实验验证。

方法

处理流程

        图1显示了所提出的座舱内检测、定位和分类的处理流程。输入的是模数转换后的数据,称为ADC数据。首先对ADC数据进行沿快速时间采样轴的快速傅里叶变换(FFT),也称为快速时间处理,以获得距离信息。随后,进行零多普勒去除,然后沿慢时间轴进行另一个FFT,以获得所有虚拟MIMO信道的距离-多普勒(RD)图。传统的雷达处理采用非相干集成、恒定误警率(CFAR)检测和到达方向(DOA)估计,我们直接采用N-Point二维数字波束形成(DBF),如下所示:

其中,是对于虚拟通道c,距离下标 r,多普勒下标 v的慢时间FFT结果。为通道c和波束i的导向向量。是n点DBF幂。每束光束都指向我们感兴趣的区域,以便在舱内应用。例如,我们执行一个6点的DBF,这些光束指向第二行的三个座位和它们对应的脚槽区域。由于在我们的设计中有相对较大的波束宽,所以第二排的整个区域,包括两个座位之间的区域,都被有效地覆盖了。

        在N-Point DBF之后,将得到一个具有范围、多普勒和角度尺寸的数据立方体,其中每个元素代表一个特定范围、多普勒频率和角度对应的功率。我们选择了数据立方体的一部分,特别是在本文中显示的实现中的24×64×6,并使用非对称的8位整数格式来量化幂值,如等式所示 2:

        其中,b0和a0分别表示输入的假设偏差和比例因子,round表示舍入操作,clip(x,xmin,xmax)是在xmin和xmax范围内剪辑输入的函数。图2显示了没有seat-A移动的成年人和没有安全seat-B的婴儿的BRD特征。在图中可以观察到一个视觉上的差异,这承诺了所提出的方法来定位和分类成人和婴儿。

        然后将得到的三维 int8 数据输入到已开发的 CNN 模型中。在这项工作中,CNN 执行了七类分类任务,分别对应以下场景:有或无干扰的空车位、座位 A/B/C(第二排的右/中/左座位)被成人占用、座位 A/B/C 被婴儿占用。

深度倾模型开发和部署

        座舱内雷达CNN模型的开发和部署过程如图3所示。CNN模型在初始化后,通过对多个时期的梯度下降优化进行训练。执行验证,以评估验证损失,并确定是否应尽早停止训练过程。来自所有7个Case的35个独立实验的数据,每个案例包含1000帧,并将它们分割成训练和验证数据集。分割比是0.3。虽然数据可以标记为舱内应用,但噪声数据仍然存在。例如,一个人可以坐在一个座位的边缘,并占据相邻座位的一小部分。此外,一个人的运动也可能侵入另一个座位区域。因此,直接使用这些标签会混淆CNN模型,降低其性能。此外,数据分布漂移可以在实际应用中观察到,如第四节所示。为了解决噪声标签和提高模型的通用性,我们采用了标签平滑[5]。标签平滑使用一个小的非零概率α,而不是使用one-hot编码标签,而非其他类的概率为0,如等式所示:

        TinyML 技术对于在内存和计算能力有限的边缘设备上部署已建立的 CNN 模型至关重要。这项工作主要采用训练后量化来减少内存占用并加速推理。在此过程中,训练数据集用作代表性数据集。在此数据集上运行已建立的模型,并收集每层参数的最小值、最大值和标准偏差值。基于这些统计数据,将参数从 32 位浮点数缩放到 8 位整数范围,类似于等式 2 所示的 CNN 输入量化。最后,使用 TensorFlow Lite Micro 框架将量化模型与雷达平台 SDK 一起部署,生成可闪存到 mmWave 雷达 SoC 的舱内雷达二进制文件。

补充

        我们在CaalterahCAL60S344-AE平台上实现了我们提出的方法,也被称为RhinePro。这种4T4R雷达SoC在59 GHz到64 GHz的频率范围内工作,并配备了一个雷达基带加速器(BBA)来加速信号处理。它的特点是一个300MHz的双CPU核心和3MB的SRAM。我们采用半波长均匀阵列,利用TDM生成一个4×4的矩形虚拟阵列。SoC芯片和天线如图4所示。

        如图1所示,FFT和n点DBF在RhinePro的BBA中实现。然后,CPU将访问DBF的结果,并执行随后的推断。RhinePro的BBA显著加速了信号处理,在0.4 ms内获得DBF结果。由于快速处理与波形传输并行化,快速处理的处理时间较大。

我们开发了两种类型的 CNN 模型。

第一种是简单的3 层顺序 CNN,本文中称为 SimpleNet。它包含三个卷积层,具有最大池化和 ReLu6 激活,然后是全连接层

第二种是 MobileNetV2 [6],它比 SimpleNet 复杂得多,被认为是最好的轻量级 CNN 架构之一。SimpleNet 和 MobileNetV2 的大小分别约为 275KB 和 5.3MB。量化后,它们的大小减小到78KB 和 1.6MB 左右。我们在 RhinePro 平台上实现了 int8 后量化后的 SimpleNet,并将在下一节中展示评估结果,而开发的 MobileNetV2 仅部署在桌面上以供比较。在我们的实现中,int8量化的SimpleNet的推理时间约为44毫秒,而没有量化的相同模型则需要大约855毫秒。通过将CNN推理与波形传输并行化,我们开发的舱内雷达可以实现高达20Hz的更新率

实验结果分析

        为了验证我们提出的方法和实现,我们进行了一系列全面的实验。图5显示了实验测试用例的例子。雷达平台安装在车辆的顶部中心位置。我们评估了三种不同类型的场景: (1)有干扰场景的空车,如操作风扇、座位上的手机振动或外部车辆振动;(2)成年人坐着有或没有身体运动;(3)在座位上有模拟呼吸的娃娃,儿童安全座椅安装在向前或向后的配置,或没有安全座椅。

        图6给出了三种没有量化的CNN模型的训练和验证精度:不带标签平滑的SimpleNet,带标签平滑的Simple网,以及带标签平滑的MobileNetV2。很明显,两个简单网络的训练准确率超过了95%,而MobileNetV2的训练准确率约为99.6%。此外,与SimpleNets相比,MobileNetV2表现出明显更快的收敛速度。我们使用一个独立的测试数据集对这些模型进行了评估,结果如图7所示。一个性能差距在验证结果和测试结果之间进行了观察。在最坏的情况下,没有标签平滑的SimpleNet的性能比验证结果下降了约15%,而其他两种模型的最坏情况下的精度仍超过89%。这种差异可以归因于训练和验证数据集中的数据来自相同的实验,而测试数据集来自一个独立的实验。这可能引入了数据分布偏移,而没有标签平滑的SimpleNet的过拟合导致了严重的性能恶化。

        为了进一步评估两种标签平滑和量化模型的泛化能力,我们进行了一个额外的独立实验,略微修改了安装位置和不同的测试人员和婴儿模型。其目的是模拟在实际应用程序中遇到的实际条件。如图8所示的结果表明,虽然由于测试环境的变化,本实验中模型的性能与测试数据集上的性能有所不同,但两种模型的平均精度仍约为94%。通过比较验证数据集上的量化模型的结果,我们发现,量化后几乎没有导致性能下降,相反,性能略有提高。这主要可以归因于后量化引入了一定程度的噪声,这类似于训练过程中的正则化,从而防止过拟合和增强泛化。

        图8和图7中的结果也强调了在现实应用中存在的个案波动,这表明深度学习模型的通用性将是一个主要关注的问题。此外,与在本研究中使用一个简单、紧凑的CNN,如SimpleNet相比,使用一个相对复杂的模型,如MobileNetV2,可能会产生有限的改进。

        为了证明所提出的方法的鲁棒性,我们给出了一个推理案例的详细结果简单网络,一个人从外面摇晃空车来模拟汽车的外部振动。图9(a)展示了CNN输入特征的一个例子,(b)和(c)描述了本案例研究的预测分数和分类结果。通过图9(a)和图2的比较,可以看出干扰、成人和婴儿对BRD特征的差异,可以用来区分它们。虽然在这种情况下会了两个错误警报,但它们可以通过使用时间平滑等逻辑策略来减轻

结论

        本文提出了一种基于Cinterah雷达SoC平台和TinyML的实时座舱检测、定位和分类应用解决方案。我们提出并实现了一种新的处理流程,它利用了多波束方向的BRD特性。为了解决有噪声的标签和提高所开发的CNN的通用性,采用了标签平滑技术。此外,量化被用于减少内存占用和加速推理。广泛的实验表明,在实践中存在数据分布波动,因此模型的通用性将是一个主要关注的问题。无论波动如何,结果表明,我们的实现的检测准确率超过96%,最坏情况下的准确率超过定位和分类的90%。开发的微型CNN模型占用约76 KB的内存,花费44 ms进行推断。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【B站保姆级视频教程:Jetson配置YOLOv11环境(七)Ultralytics YOLOv11配置】

Jetson配置YOLOv11环境(7)Ultralytics YOLOv11环境配置 文章目录 1. 下载YOLOv11 github项目2. 安装ultralytics包3. 验证ultralytics安装3.1 下载yolo11n.pt权重文件3.2 推理 1. 下载YOLOv11 github项目 创建一个目录,用于存放YOLOv11的项目…

代码讲解系列-CV(二)——卷积神经网络

文章目录 一、系列大纲二、卷积神经网络(图像分类为例)2.1 pytorch简介训练框架张量自动微分动态计算图更深入学习 2.2 数据输入和增强Dataset—— torch.utils.data.DatasetDataLoader——torch.utils.data.Dataloader数据增强 2.3 CNN设计与训练nn.Mod…

YK人工智能(六)——万字长文学会基于Torch模型网络可视化

1. 可视化网络结构 随着深度神经网络做的的发展,网络的结构越来越复杂,我们也很难确定每一层的输入结构,输出结构以及参数等信息,这样导致我们很难在短时间内完成debug。因此掌握一个可以用来可视化网络结构的工具是十分有必要的…

堆的基本概念

1.1 堆的基本概念 虚拟机所在目录 E:\ctf\pwn-self 进入虚拟机的pwndocker环境 holyeyesubuntu:~$ pwd /home/holyeyes holyeyesubuntu:~$ sudo ./1run.sh IDA分析 int __fastcall main(int argc, const char **argv, const char **envp) { void *v4; // [rsp20h] [rbp-1…

RabbitMQ深度探索:前置知识

消息中间件: 消息中间件基于队列模式实现异步 / 同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合 传统的 HTTP 请求存在的缺点: HTTP 请求基于响应的模型,在高并发的情况下,客户端发送大量的请求…

JDK9新特性

文章目录 新特性:1.模块化系统使用模块化module-info.java:exports:opens:requires:provides:uses: 2.JShell启动Jshell执行计算定义变量定义方法定义类帮助命令查看定义的变量:/var…

合宙air001使用命令行烧写固件

起因: 做了个小板子给同事使用,但同事没有air001的arduino编译烧录环境,安装的话,对于没有接触过arduino的人有些复杂,所以想着能不能直接烧录编译好的固件; 经过: 在网上搜索相关教程&#…

manimgl安装

一、环境 笔记本 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammy二、安装miniconda3 manimgl基于python开发,为了防止将笔记本中已有的python环境破坏,因此…

Python aiortc API

本研究的主要目的是基于Python aiortc api实现抓取本地设备(摄像机、麦克风)媒体流实现Web端预览。本文章仅仅描述实现思路,索要源码请私信我。 demo-server解耦 原始代码解析 http服务器端 import argparse import asyncio import json…

编程AI深度实战:大模型哪个好? Mistral vs Qwen vs Deepseek vs Llama

随着开源 LLM 的发展,越来越多的模型变得专业化,“代码”LLM 变得非常流行。这些 LLM 旨在比其 “常识” 对应物更小,但旨在超越更大的通用模型的编码性能。 这些模型以极低的成本提供大型模型的功能,进一步使本地 LLM 空间民主化…

DeepSeek:全栈开发者视角下的AI革命者

目录​​​​​​​ DeepSeek:全栈开发者视角下的AI革命者 写在前面 一、DeepSeek的诞生与定位 二、DeepSeek技术架构的颠覆性突破 1、解构算力霸权:从MoE架构到内存革命 2、多模态扩展的技术纵深 3、算法范式的升维重构 4、重构AI竞争规则 三、…

SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言

目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…

HTB:EscapeTwo[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…

一文讲解Java中的ArrayList和LinkedList

ArrayList和LinkedList有什么区别? ArrayList 是基于数组实现的,LinkedList 是基于链表实现的。 二者用途有什么不同? 多数情况下,ArrayList更利于查找,LinkedList更利于增删 由于 ArrayList 是基于数组实现的&#…

多无人机--强化学习

这个是我对于我的大创项目的构思,随着时间逐渐更新 项目概要 我们的项目平台来自挑战杯揭绑挂帅的无人机对抗项目,但是在由于时间原因,并未考虑强化学习,所以现在通过大创项目来弥补遗憾 我们项目分为三部分,分为虚…

龙芯+FreeRTOS+LVGL实战笔记(新)——16数码管驱动

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了完善与优化,各位可以前往本人在B站的视频合集(图1所示)观看所有演示视频,合集首个视频链接为: https://www.bilibili.…

Day36-【13003】短文,数组的行主序方式,矩阵的压缩存储,对称、三角、稀疏矩阵和三元组线性表,广义表求长度、深度、表头、表尾等

文章目录 本次课程内容第四章 数组、广义表和串第一节 数组及广义表数组的基本操作数组的顺序存储方式-借用矩阵行列式概念二维数组C语言对应的函数-通常行主序方式 矩阵的压缩存储对称矩阵和三角矩阵压缩存储后,采用不同的映射函数稀疏矩阵-可以构成三元组线性表三…

[Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建回归神经网络。这篇文章将介绍如何利用PyTorch构建神经网络实现分类预测,其是使用基础模块构建。前面我们的Python人工智能主要以TensorFlow和Keras为主,而现在最主流的深度学习框…

Java进阶14 TCP日志枚举

Java进阶14 TCP&日志&枚举 一、网络编程TCP Java对基于TCP协议得网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。 1、TCP协议发数据 1.1 构造方法 方法 说明 Socket(InetAddress address…

Java三十天速成(java进阶篇)

Day 15 一、集合框架 1、集合框架图 2、数据结构: ①、逻辑结构; 在计算机科学中,逻辑结构是指数据元素之间的关系,它描述了数据元素之间的逻辑联系,而不是它们在计算机内存中的物理存储方式。逻辑结构可以分为以下…