当前位置: 首页 > news >正文

基于毫米波雷达和TinyML的车内检测、定位与分类

英文标题:In-Cabin Detection, Localization and Classification based on mmWave Radar with TinyML

作者信息:

  • 王志飞,程一格,彭辉,周会强,王铮,刘宏全
  • 所属机构:Calterah Semiconductor Technology Co., Ltd., China
  • 联系邮箱:zhifei.wang@calterah.com

论文出处:

  • 论文将在2024年9月25日至27日在法国巴黎举行的第21届欧洲雷达会议(Proceedings of the 21st European Radar Conference)上发表。

摘要: 本文提出了一种基于毫米波(mmWave)雷达系统级芯片(SoC)Calterah CAL60S344-AE的实时车内检测、定位和分类解决方案,该方案由TinyML技术赋能。提出了束-范围-多普勒(BRD)特征,以减轻干扰影响,并促进成人和婴儿的分类。开发了两个轻量级卷积神经网络(CNNs),并采用标签平滑技术来克服噪声标签问题,增强模型的泛化能力。广泛的实验表明,该实现在最坏情况下,检测准确率超过96%,定位和分类准确率超过90%,模型大小仅为76KB,推理时间约为44毫秒。比较分析还强调了模型泛化性和鲁棒性在实际应用中的重要性,并证明即使使用简单的CNN模型也能获得满意的性能。

引言: 车内乘客检测在各种安全应用中扮演着重要角色,例如安全带提醒、气囊部署优化和儿童存在检测(CPD)。尽管摄像头被广泛用于检测和识别,但它们可能侵犯个人隐私,并在检测隐藏在障碍物后的对象时面临挑战。压力传感器也可用于检测乘客的存在,但放置在座椅上的物品可能会引起传感器的误报。相比之下,毫米波雷达能够克服这些限制,即使在低光环境或阳光直射等复杂情况下也能准确检测乘客。其检测小动作的能力,如儿童的呼吸,使其特别适合满足EuroNCAP 2025路线图设定的严格安全要求,该路线图强调了车辆中CPD的重要性以防止事故。近期研究探索了使用毫米波雷达进行车内检测,无论是通过信号处理还是新兴的机器学习技术。尽管基于Capon的方法可以实现更高的角度分辨率并帮助检测和定位车内人员,但它们可能对复杂干扰敏感,如手机振动、风扇和小车移动。这些干扰会产生高频分量,不能通过RA(范围-方位)处理流程中采用的零多普勒移除来消除。此外,Capon生成RA图需要大量的矩阵乘法和求逆运算,使其难以在毫米波雷达SoC上实现。本文提出了一种新的处理流程,利用BRD特征而不是RA域中的功率分布,以克服干扰影响,并利用成人和婴儿的不同范围-多普勒特征进行分类。开发了8位整数后量化的Tiny CNN模型,并部署在毫米波雷达SoC上。除了检测车内是否有人,我们还通过采用深度学习模型同时确定人员坐在哪个座位上以及人员是成人还是婴儿。此外,我们展示了在Calterah雷达SoC上的实时实现,并用广泛的实验进行了验证。

方法: 本文提出的车内检测、定位和分类的处理流程如图1所示。输入是模数转换后的数据,称为ADC数据。首先对ADC数据进行快速傅里叶变换(FFT)以获得范围信息。随后,进行零多普勒移除,然后沿慢时间轴进行FFT,以获得所有虚拟MIMO通道的范围-多普勒(RD)图。与传统雷达处理不同,我们直接应用N点二维数字波束形成(DBF),每个波束指向我们感兴趣的区域。例如,我们执行6点DBF,这些波束指向第二排的三个座位及其相应的脚部区域。由于我们设计中相对较大的波束宽度,有效地覆盖了第二排的整个区域,包括两个座位之间的区域。N点DBF后,将获得一个具有范围、多普勒和角度维度的数据立方体,每个元素代表对应特定范围、多普勒频率和角度的功率。我们选择了数据立方体的一部分,具体为24×64×6,并使用不对称的8位整数格式对功率值进行量化。图2展示了一个成人在A座位上不动和B座位上的婴儿不动时的BRD特征示例。可以看出视觉差异,这保证了所提出的方法能够定位和分类成人和婴儿。得到的三维int8数据随后输入到开发的CNN模型中。在这项工作中,CNN执行七类分类任务,对应以下场景:空车有无干扰、第二排的A/B/C座位(右/中/左座位)被成人占用,以及A/B/C座位被婴儿占用。

深度学习模型的开发和部署: CNN模型的开发和部署过程如图3所示。CNN模型在初始化后使用梯度下降优化进行多轮训练。通过验证来评估验证损失,并确定是否应该提前停止训练过程。数据来自35个独立实验,每个实验包含1000帧,并将它们分成训练和验证数据集。尽管数据可以为车内应用轻松标记,但仍然存在噪声数据。例如,一个人可能坐在座位边缘并占据相邻座位的一小部分。此外,一个人的移动也可能侵入另一个座位区域。因此,直接使用这些标签会混淆CNN模型并降低其性能。此外,在实际应用中可以观察到数据分布漂移,如第IV节所示。为了解决噪声标签问题并提高模型泛化能力,我们采用了标签平滑技术。与使用独热编码标签不同,其中真实类别的概率为1,所有其他类别的概率为0,标签平滑为非目标类别分配一个小的非零概率α。TinyML技术对于在有限内存和计算能力的边缘设备上部署建立的CNN模型至关重要。这项工作主要采用后训练量化来减少内存占用并加速推理。在此过程中,使用训练数据集作为代表性数据集。在此数据集上运行建立的模型,并收集每层参数的最小值、最大值和标准差值。基于这些统计数据,将参数从32位浮点数缩放到8位整数的范围,类似于CNN输入的量化。最后,使用TensorFlow Lite Micro框架将量化模型与雷达平台SDK一起部署,生成可以闪存到毫米波雷达SoC的车内雷达二进制文件。

实现: 我们在Calterah CAL60S344-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显著加速了信号处理,获得DBF结果仅需0.4毫秒。由于与波形传输并行化,快速时间处理的处理时间较长。我们开发了两种类型的CNN模型。第一种是一个简单的3层顺序CNN,本文中称为SimpleNet。它包括三个带有最大池化和ReLu6激活的卷积层,然后是一个全连接层。第二种是MobileNetV2,它比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、有标签平滑的SimpleNet和有标签平滑的MobileNetV2。显然,两种SimpleNets的训练准确率超过了95%,而MobileNetV2的准确率约为99.6%。此外,MobileNetV2的收敛速度明显快于SimpleNets。我们使用独立测试数据集评估了这些模型,结果如图7所示。验证和测试结果之间存在性能差距。在最坏情况下,无标签平滑的SimpleNet的性能比验证结果下降了约15%,而其他两个模型的最坏情况准确率仍超过89%。这种差异可以归因于训练和验证数据集来自相同的实验,而测试数据集来自独立实验。这可能

引入了数据分布偏移,而SimpleNet的过拟合导致性能严重下降。为了进一步评估两种带有标签平滑和量化的模型的泛化能力,我们进行了额外的独立实验,稍微修改了安装位置,并使用了不同的测试人员和婴儿模型。这旨在模拟实际应用中遇到的实际条件。结果如图8所示,尽管由于测试环境的变化,这次实验的模型性能与测试数据集上的性能有所不同,但两种模型仍然实现了约94%的平均准确率。将验证数据集上的量化模型的结果进行比较,我们发现后量化几乎没有性能下降,相反,性能略有提高。这主要归因于后量化引入了一定程度的噪声,这在训练过程中起到了正则化的作用,从而防止过拟合并增强泛化。图8和图7的结果还突出了实际应用中的逐例波动,表明深度学习模型的泛化性将是一个主要问题。此外,使用相对复杂的模型,如MobileNetV2,可能与使用本研究中的SimpleNet这样的简单、紧凑的CNN相比,改进有限。为了证明所提出方法的鲁棒性,我们展示了使用SimpleNet的一个推理案例的详细结果,其中一个人从外部摇晃空车以模拟车辆的外部振动。图9(a)展示了CNN输入特征的一个例子,(b)和(c)分别描绘了这个案例研究的预测分数和分类结果。图9(a)和图2之间的比较展示了干扰、成人和婴儿在BRD特征上的差异,可以利用这些差异来区分它们。尽管在这个案例中出现了两次误报,但可以通过采用逻辑策略如时间平滑来减轻。

结论: 本文提出了一种基于Calterah雷达SoC平台和TinyML的实时车内检测、定位和分类解决方案。我们提出并实现了一种新的处理流程,利用多波束方向的BRD特征。为了解决噪声标签问题并增强开发的CNN的泛化性,采用了标签平滑技术。此外,应用后量化以减少内存占用并加速推理。广泛的实验表明,实践中存在数据分布波动,因此模型的泛化性将是一个主要问题。尽管存在波动,结果表明我们的实现在检测方面的准确率超过96%,在最坏情况下定位和分类的准确率超过90%。开发的Tiny CNN模型占用大约76KB的内存,并花费44毫秒进行推理。

相关文章:

基于毫米波雷达和TinyML的车内检测、定位与分类

英文标题:In-Cabin Detection, Localization and Classification based on mmWave Radar with TinyML 作者信息: 王志飞,程一格,彭辉,周会强,王铮,刘宏全所属机构:Calterah Semico…...

小E的射击训练

问题描述 小E正在训练场进行射击练习,靶有10个环,靶心位于坐标(0, 0)。每个环对应不同的得分,靶心内(半径为1)得10分,依次向外的每个环分数减少1分。若射击点在某个半径为i的圆内,则得11-i分。…...

React的概念以及发展前景如何?

React是一个由Facebook开发的用于构建用户界面的的开源JavaScript库,它主要用于构建大型、动态的Web应用程序。React的主要特点是使用VirtualDOM(虚拟DOM)来优化性能,并使用声明式的编程方式来编写UI。 React的主要概念包括&#…...

PDF生成:全面解析,C# 如何使用iTextSharp库(或其他类似库)生成PDF文档,包括如何将位图图像嵌入PDF中。

一、概述 PDF(Portable Document Format)是一种广泛使用的文档格式,由Adobe公司在1993年推出。PDF的目标是能够在任何设备上呈现固定格式的文档,无论是在不同的操作系统、硬件设备,还是在打印时,都能保证文…...

如何选择最适合的消息队列?详解 Kafka、RocketMQ、RabbitMQ 的使用场景

引言 在日常开发中,消息队列已经成为业务场景中几乎不可或缺的一部分。无论是订单系统、日志收集、分布式事务,还是大数据实时流处理,消息队列都在支撑着这些关键环节。目前市面上常用的消息队列有三种(ActiveMQ 虽然在企业集成中仍有应用&a…...

gitlab项目如何修改主分支main为master,以及可能遇到的问题

如果你希望将 Git 仓库的主分支名称从 main 修改为 master: 1. 本地修改分支名称 首先,切换到 main 分支: git checkout main将 main 分支重命名为 master: git branch -m main master2. 更新远程仓库 将本地更改推送到远程仓库…...

RRF(Reciprocal Rank Fusion,倒数排序融合)

RRF(Reciprocal Rank Fusion,倒数排序融合) 摘要 倒数排序融合 RRF 是一种简单的方法,用于结合多个 IR(Information Retrieval) 系统的文档排名,始终比任何单独的系统产生更好的结果。 通过使用 RRF 来结合几个TREC实验的结果,并建立一个 …...

移动开发(七):.NET MAUI使用RESTAPI实现查询天气笔记

目录 一、接口准备 二、实体部分 三、页面部分 四、后台代码逻辑 五、总结 在移动开发过程中,第三方对接是非常常见的。今天给大家分享.NET MAUI如何使用REST API实现输入城市名称查询天气的示例,希望对大家学习.NET MAUI可以提供一些帮助! 一、接口准备 首先我们需要…...

企业数据无缝对接:从旺店通到金蝶云的入库单管理案例

【类型:盘盈入库】旺店通-入库单管理>金蝶-其他入库单 在企业的日常运营中,数据的高效集成和准确传递是确保业务顺畅运行的关键。本文将分享一个实际案例,展示如何通过轻易云数据集成平台,将旺店通企业奇门的数据无缝对接到金蝶云星空&am…...

青少年编程与数学 02-003 Go语言网络编程 19课题、Go语言Restful编程

青少年编程与数学 02-003 Go语言网络编程 19课题、Go语言Restful编程 课题摘要:一、微服务微服务的主要特点包括:微服务架构的挑战:微服务的应用场景: 二、RESTfulRESTful的核心原则和特征包括:RESTful API的优势:REST…...

系统架构设计师论文:论区块链技术及应用

试题三 论区块链技术及应用 区块链作为一种分布式记账技术,目前已经被应用到了资产管理、物联网、医疗管理、政务监管等多个领域。从网络层面来讲,区块链是一个对等网络(Peer to Peer, P2P),网络中的节点地位对等,每个节点都保存完整的账本数据,系统的运行不依赖中心化节…...

放电电阻是什么

放电电阻,顾名思义,就是用于放电的电阻。在电路中,当电流突然增大时,如果没有适当的电阻来限制电流,就可能导致电路损坏。因此,放电电阻的作用就是在电路中起到限制电流的作用,防止电路因电流过…...

项目模块十七:HttpServer模块

一、项目模块设计思路 目的:实现HTTP服务器搭建 思想:设计请求路由表,记录请求方法与对应业务的处理函数映射关系。用户实现请求方法和处理函数添加到路由表,服务器只接受请求并调用用户的处理函数即可。 处理流程: …...

Spire.PDF for .NET【页面设置】演示:获取 PDF 文件中的页数

计算 PDF 文件中的页数对于各种目的都至关重要,例如确定文档长度、组织内容和评估打印要求。除了使用 PDF 查看器了解页数信息外,您还可以通过编程自动执行该任务。在本文中,您将学习如何使用C#通过Spire.PDF for .NET获取 PDF 文件中的页数。…...

火语言RPA流程组件介绍--点击软件元素

🚩【组件功能】:点击软件UI窗口上的某个元素 配置预览 配置说明 操作目标 支持T或# 从 元素库 中选择一个已捕获的元素或通过 捕获新元素 来捕获新的窗口元素作为操作目标。获取元素方式见 桌面对象元素库使用方法。 模拟人工点击 模拟人工的方式触…...

c++程序设计速学笔记2基础数据结构

基础数据结构 数组(Array) 数组是一种线性数据结构,它存储相同类型的元素的连续内存块。数组的每个元素都有一个索引,用于快速访问和操作数据。 特点: 随机访问:数组支持通过索引快速访问元素。固定大小…...

搜维尔科技:SenseGlove案例-利用VR触觉技术培训机组人员

SenseGlove案例-利用VR触觉技术培训机组人员 搜维尔科技:SenseGlove案例-利用VR触觉技术培训机组人员...

OpenCV视觉分析之目标跟踪(10)估计两个点集之间的刚性变换函数estimateRigidTransform的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算两个2D点集之间的最优仿射变换 estimateRigidTransform 是 OpenCV 中的一个函数,用于估计两个点集之间的刚性变换(即…...

Python 虚拟环境创建

1. 创建python虚拟环境 conda create -n env_name pythonversionex:conda create -n train_ticket_venv python3.112. 查看安装包信息 pip show package_nameex: pip show numpy3. 用清华源安装软件包 pip install package_name -i https://mirrors.tuna.tsinghua.edu.cn/pyp…...

STL-list容器的使用

在C标准库中,std::list 是一个双向链表容器,提供高效的插入和删除操作,尤其适用于需要频繁在容器中间进行插入和删除元素的场景。与其他序列容器(如 std::vector 和 std::deque)相比,std::list 有其独特的优…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

数据链路层的主要功能是什么

数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

Java入门学习详细版(一)

大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...