4D毫米波雷达——ADCNet 原始雷达数据 目标检测与可行驶区域分割

news2024/11/20 18:43:21

前言

本文介绍使用4D毫米波雷达,基于原始雷达数据,实现目标检测可行驶区域分割,它是来自2023-12的论文。

会讲解论文整体思路、输入分析、模型框架、设计理念、损失函数等,还有结合代码进行分析。

论文地址:ADCNet: Learning from Raw Radar Data via Distillation

1、模型框架

 ADCNet只使用雷达信息,实现车辆检测和可行驶区域分割。

  1. 输入:原始雷达数据;即ADC数据,由4D毫米波雷达生成。
  2. 信号处理模块:用一个可学习的信号处理层,来处理原始ADC数据。
  3. RD特征:信号处理层将ADC数据,转为RD特征,范围-多普勒信息,包含距离和速度信息。
  4. 主干网络:进一步编码RD特征,隐式地估算目标的方位角。
  5. 任务头:首先进行RAD张量预训练。在预训练完后,进行微调检测任务头和分割任务头。
  6. 输出:目标检测和可行驶区域分割结果。

参考FFTRadNet,转为RD立方体,然后隐式地使用来自检测和分割头的监督信号来估算目标的方位角。区别是: ADCNet使用了学习的信号处理层,来处理原始ADC数据。

ADCNet 框架的创新之处: 

  • 与传统方法不同,新框架是将整个信号处理链整合进一个神经网络,从原始ADC数据开始。
  • 设计了一个能够使用原始ADC数据的框架,并预训练了一个主干网络,这个主干网络可以用于各种下游任务。
  • 预训练模型会重构完整的距离-方位角-多普勒RAD张量。采用传统信号处理链将会产生的结果,作为标签真值。
  • 将完整的信号处理模块(包括DFT、阈值处理和AOA估计)蒸馏到可学习的信号处理模块和主干网络中。

预训练:主干网络首先通过预训练来学习重构RAD张量,这相当于模拟传统的信号处理步骤。

微调:一旦“信号处理模块”和“主干网络”预训练完成,它就可以为特定的下游任务(如目标检测和分割)进行微调。

2、雷达信号处理过程 

背景

  • 毫米波雷达相比激光雷达(LiDAR)成本较低,并且在恶劣天气条件下更加稳健。
  • 但是,雷达生成的点云数据通常比激光雷达的要嘈杂且稀疏。
  • 为了克服这些挑战,最近的研究开始关注使用原始雷达数据,而不是处理后的雷达点云数据。

为了提高雷达数据的质量,提出将“一些信号处理的步骤”直接集成到一个深度学习网络中。即,模型参与雷达数据早期阶段的转换处理。

传统雷达信号处理链

  • 在传统的雷达信号处理中,原始ADC数据首先通过两个维度上的离散傅里叶变换(DFT)操作转换成距离-多普勒(RD)立方体。
  • 这个RD立方体接着会经过阈值处理,并通过到达角(AOA)估计层来估算目标的方位角。
  • 方位角寻找步骤在计算上非常密集,是信号处理链中最消耗计算资源的步骤。

FMCW雷达的工作原理

  • 车载的4D毫米波雷达,通常都是FMCW类型的雷达。
  • FMCW雷达通过发射一系列频率逐渐增加的短波(chirp)来工作。这些波在遇到物体时反射回来,被雷达的接收天线捕获。
  • 这种频率随时间增加的特性,使FMCW雷达能够同时获取物体的距离和速度信息。

信号数字化

  • 天线捕获的反射信号通过模拟-数字转换器ADC被采样和数字化。
  • ADC的作用是将模拟信号(实际反射波)转换成数字形式,使其能够被计算机处理。
  • 这个数字化的信号随后传输给雷达传感器中的其他软件模块进行进一步处理。

雷达信号处理链

  • ADC数据通常被组织成数组,每个数组代表一个接收天线的数据。
  • 这些数组根据每个chirp波的样本数和数量来确定维度。
  • 对这些数组进行信号处理操作,主要是离散傅里叶变换DFT,这样就将数据转换成所谓的距离-多普勒RD数组,提供了探测物体的距离(范围)和速度(多普勒)信息。

 看一下完整的雷达信号处理链,如下图所示:

进一步的处理步骤

  • 通常会对RD立方体进行阈值处理,以减少需要处理的距离-多普勒格点。这一步有助于过滤掉不那么重要的数据。
  • 然后进行到达角AOA估算算法。AOA估算对于确定反射信号的来向非常重要。
  • AOA全称是Angle of Arrival,用来确定反射波的具体到达方向。通过了解波从哪个方向来,雷达可以更准确地定位物体在空间中的位置。

基本的AOA估算方法

  • 一种基础的AOA估算方法是在雷达数据的最后一个轴上,应用另一个离散傅里叶变换DFT。这可以提供一个大致的到达角估算。
  • 例如,如果雷达系统有多个接收天线,通过比较不同天线接收到的信号之间的相位差异,可以估算出信号的到达角度。

高级AOA估算技术

  • 对于更精确的AOA估算,可以使用更高级的算法,如迭代自适应方法(IAA)、多重信号分类(MUSIC)和信号参数的旋转不变性估计(ESPRIT)。
  • 这些算法通常更复杂,能提供更精确的到达角估算。它们通过对雷达信号进行更深入的分析,能更精确地区分和定位多个物体。

 3、输入数据

本文的4D毫米波雷达是高清的,也称为成像雷达。

  • 成像雷达在更高的频率上运行,约77GHz;并且有更宽的可用带宽,约4GHz;这使得它们比传统的汽车雷达能提供更高的分辨率。
  • 成像雷达还配备有多个发送和接收天线,利用多输入多输出MIMO技术,这种新型雷达能够大幅提升距离和角度分辨率。

低级雷达数据是指未经过信号处理链峰值检测阈值处理步骤的雷达数据,比如:

  • 距离多普勒(RD)
  • 距离-方位角-多普勒(RAD)
  • 它们已经历了信号处理阶段(如信号放大、滤波等,但未经过峰值检测和阈值设定)

本文采用 ADC原始雷达数据,作为模型的输入。看一下ADC原始雷达数据、RD数据的维度表示:

补充一下:

峰值检测和阈值设定是雷达信号处理的步骤:

  1. 峰值检测:这一步骤涉及到识别信号中的显著特征,也就是反射信号中最强的部分。这些“峰值”通常代表了物体的位置。
  2. 阈值设定:为了过滤掉背景噪声或不重要的信号,会设置一个阈值,只有超过这个阈值的信号才会被认为是有效的。

4、信号处理模块

 下面看一下“信号处理模块”的详细设计思路,如下图所示:

可学习的窗口操作作用,主要是减少不连续性:

  • 在处理实际信号时,我们通常只能获取信号的一个有限的时间段。在这个时间段的两端,信号从有值突变到无值,这种不连续可以在频域中产生不必要的影响,比如频谱泄露。
  • 为了减少这种不连续性带来的影响,可以通过乘以一个窗口函数。
  • 窗口函数通常在中间最大,两端逐渐减小至零,这样可以“柔化”信号的起始和结束部分,使其平滑过渡至零。

窗口操作对离散傅里叶DFT的影响:

  • 频率分辨率:加窗可以改善DFT的频率分辨率,这是因为它减少了信号两端的突变对频谱的影响。没有加窗的信号在DFT后可能会在频谱中展现出多余的频率成分,这些成分实际上并不是信号本身的一部分,而是由于两端不连续性产生的。
  • 频谱泄露:频谱泄露是指信号的能量从其真实的频率分布泄露到其他频率。窗口函数通过减少两端的不连续性,有助于减少这种泄露,使得频谱更加集中于信号的真实成分。
  • 信号的真实成分:加窗口操作的目的是确保DFT分析更加集中于信号的真实成分,而不是由于采样窗口造成的人为效应。

实现可学习信号处理模块的一个困难是 DFT 运算是在复杂域中。

  • 为了避免在神经网络中使用复杂的运算,将复杂的张量(ADC 数组和 DFT 矩阵)分成实部和虚部,并分别执行乘法,如下图所示。
  • 这些是标准运算,可以很容易地 在 Pytorch 等典型深度学习框架中实现。 可学习窗口模块仅涉及一个参数向量,并且将其与前向传递中的输入相乘。

这里的离散傅里叶DFT,是使用"带有扰动的DFT"。这种方法涉及到对传统的离散傅里叶变换(DFT)矩阵的参数进行微小的随机扰动。

  • DFT矩阵的初始化:在神经网络中,如果一个线性层(或全连接层)代表一个DFT操作,它的权重可以被初始化为DFT矩阵的值。这样做的直接目的是让网络能够在开始训练之前就拥有执行DFT的能力。
  • 引入扰动:"扰动"指的是在这些初始权重上加入微小的随机变化。这可以通过将DFT矩阵与一个小的随机高斯噪声矩阵相加来实现,噪声矩阵的每个元素都有一个非常小的方差(γ)。
  • 避免局部最小:神经网络在训练过程中可能会陷入局部最小值,尤其是当权重初始化过于接近一个有效解时。扰动可以帮助网络在训练过程中探索参数空间,避免局部最优解。
  • 增强学习能力:通过扰动,网络能够在训练过程中自主学习到数据的特点,并找到更适合数据的DFT表示,而不是仅仅依赖于预设的、固定的DFT操作。

5、预训练

核心目的:

  • 为了构建一个神经网络,它能从最基本的雷达信号(ADC数据)开始,学习整个雷达信号处理的任务,最终能够预测出RAD张量。这里的RAD张量包含了物体的距离、速度和角度信息,这些信息是进行物体检测和场景理解的关键。

第一步:生成RAD标签

  • 利用离线的信号处理算法,从ADC数据生成距离-方位角-多普勒(RAD)立方体。
  • 这一步骤实质上是在模拟传统的信号处理流程,为后续的学习提供数据标签。
  • 在第一步中,使用离线的信号处理算法处理ADC数据,这个过程本质上是用来模拟雷达硬件通常会执行的任务,但在一个离线环境中进行。

第二步:监督学习

  • 第二步是监督学习,其中(ADC, RAD)对被用作输入和标签,来训练一个可学习的信号处理模块和主干网络。这个过程是监督学习的核心,其中网络被训练来预测与离线算法生成的RAD张量尽可能接近的输出。

预训练过程中的RAD预测

  • 使用ADC作为输入,可学习的信号处理模块主干网络预测RAD张量。
  • 这些预测通过以下的损失函数进行监督,其中Y_RAD代表生成的RAD张量,而Ŷ_RAD代表神经网络的预测。

  • 为了便于训练,将RAD张量的形状从原始的512 × 751 × 256下采样到128 × 248 × 256。

预训练优势:

  1. 方位估计的直接改进,通过这种方式预训练网络,网络学会了如何估算方位角。这种能力直接转化为改善了检测和分割任务的性能。网络不仅能识别物体,还能更精确地定位物体在空间中的位置。
  2. 数据标注的省略,由于原始雷达数据通常对人类来说不可解释,所以人工标注这类数据需要借助传感器融合技术来提供准确的3D标签。这个预训练过程省略了这一繁琐步骤,因为它使用从雷达数据自动生成的标签。

6、微调多任务 

在预训练ADCNet的信号处理模块主干网络后,继续进行多任务设置的微调。

多任务学习设置,用于微调ADCNet骨干网络,以同时执行目标检测和自由空间分割任务。这一过程涉及了特定的损失函数构建和超参数的设定。 

目标检测和自由空间分割

  • ADCNet通过添加目标检测和分割头,被微调以同时进行目标检测和自由空间分割。
  • 这意味着网络将学习从输入数据中提取用于两个不同任务的特征。

7、损失函数

目标检测分类损失

  • 分类标签ycls表示在特征图上的真实分类标签,其中1表示对象存在,0表示不存在。ycls的形状为Nrange-bins × Nazimuth-bins
  • 分类损失使用了focal()函数,这是一种专门设计用来解决类别不平衡问题的损失函数。

目标检测回归损失

  • 回归目标yreg代表了距离和方位的回归目标。网络预测一个距离值和一个方位值,回归目标是距离和方位的余数,与距离和方位格大小相关。
  • 回归损失使用平滑的L1损失(也称为Huber损失),这是一种旨在减少离群点影响的损失函数。

可行驶区域分割损失

  • 分割标签yseg(r, a)表示在位置(r, a)的真实标签,1代表对象存在,0代表不存在。
  • 分割损失使用二元交叉熵损失(BCE),这是评估二元分类任务性能的常用损失函数。

整体损失函数

  • 训练的总损失是目标检测损失和自由空间分割损失的组合,其中β是一个超参数,用于控制自由空间分割任务的权重。
  • α和β是超参数,用于平衡目标检测和自由空间分割两部分的权重。在实际训练过程中,需要通过实验来调整这些参数,以达到最佳的模型性能。

8、实验与效果

车辆检测任务,作者在RADIal数据集进行测试,其中:

  • AP:平均精度
  • AR:平均召回率
  • RE:检测到的物体的距离误差
  • AE:检测到的物体的方位角误差

测试集分为简单和困难子集以进行详细比较:

可行驶区域任务,在RADIal数据集进行测试。性能以mIOU来衡量,值越高越好。

替换不同组件和训练方式,实验比较:

  • NPT(无预训练)表示的模型是不通过蒸馏使用预训练的模型
  • ADC UNet是指主干网络由Resnet+FPN,替换为UNet
  • Convert3d是指用它替换“信号处理模块”

效率比较,对于吞吐量和内存测量,批量大小为 20。 *所有测量均在 RTX 3090 上进行。

RAD 预测示例,每个样本的相对绝对误差 (RAE) 的平均值和最大值。

从这些例子中可以看出,经过预训练后,网络能够以非常高的精度预测 RAD 张量。

看一下实际的检测效果:

 本文先介绍到这里,后面会分享4D毫米波雷达的其它数据集、算法、代码、具体应用示例。

对于4D毫米波雷达的原理、对比、优势、行业现状,可以参考我这篇博客。

对于4D毫米波雷达——RADIal数据集、格式、可视化 CVPR2022,可以参考我这篇博客。

对于4D毫米波雷达——FFT-RadNet 目标检测与可行驶区域分割 CVPR2022,可以参考博客。

分享完成,本文只供大家参考与学习,谢谢~

 

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

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

相关文章

Flink实时数仓同步:快照表实战详解

一、背景 在大数据领域,初始阶段业务数据通常被存储于关系型数据库,如MySQL。然而,为满足日常分析和报表等需求,大数据平台采用多种同步方式,以适应这些业务数据的不同存储需求。这些同步存储方式包括离线仓库和实时仓…

nvm 工具使用介绍

目录 1.背景2.nvm介绍3.下载和安装4.配置环境变量5.配置淘宝镜像5.1 方式一:直接执行命令5.2 方式二:修改配置文件 6.常用命令7.总结 下载地址: https://github.com/coreybutler/nvm-windows/releases 1.背景 在工作中,我们可能…

总分类账户和明细分类账户

目录 一. 设置二. 联系与区别三. 平行记账规则 \quad 一. 设置 \quad 根据总分类科目设置总分类账户 根据明细分类科目设置明细分类账户 \quad 二. 联系与区别 \quad \quad 三. 平行记账规则 \quad

【C++11(一)】列表初始化and右值引用

一、 统一的列表初始化 1.1 {}初始化 在C98中,标准允许 使用花括号{}对数组或者结构体元素 进行统一的列表初始值设定 C11扩大了用大括号 括起的列表(初始化列表)的使用范围 使其可用于所有的内置类型和 用户自定义的类型 使用初始化列表时…

bash脚本学习笔记

一、扫盲 脚本文件是一种文本文件,其中包含了一系列的命令和指令,可以被操作系统解释器直接解释执行。脚本文件通常被用来完成特定的任务或执行重复性的操作。 脚本文件通常以某种编程语言的语法编写,例如 Bash、Python、Perl、Ruby 等等。…

IDEA JDBC配置

一、在pom中添加依赖 <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency></dependencies> 然后同步一下 二、编写代码…

Linux 系统服务

一、CentOS 6 与 CentOS 7开机流程 1.CentOS 6 1.1.打开电源首先通过内核引导开机。 1.2.开机自检&#xff0c;加载 BIOS 硬件信息。 1.3.MBR 记录一般是在磁盘0磁道0扇区&#xff0c;共512个字节。前446个字节是 BootLoder。计算机不知道我们的系统在哪里&#xff0c;所以需…

【Java数据结构】模拟实现ArrayList

import java.util.Arrays;/*** ArrayList的模拟实现*/ class SeqList{private int[] elem;private int usedSize0;//记录当前顺序表有多少个有效数字public static final int DEFAULT_CAPACITY10;//默认大小是10public SeqList(){this.elemnew int[DEFAULT_CAPACITY];}//新增元…

基于FFT + CNN -Transformer时域、频域特征融合的电能质量扰动识别模型

目录 往期精彩内容&#xff1a; ​模型整体结构 1 快速傅里叶变换FFT原理介绍 第一步&#xff0c;导入部分数据&#xff0c;扰动信号可视化 第二步&#xff0c;扰动信号经过FFT可视化 2 电能质量扰动数据的预处理 2.1 导入数据 2.2 制作数据集 3 基于FFTCNN-Transform…

服务攻防-端口协议桌面应用QQWPS等RCEhydra口令猜解未授权检测

知识点&#xff1a; 1、端口协议-弱口令&未授权&攻击方式等 2、桌面应用-社交类&文档类&工具类等 章节点&#xff1a; 1、目标判断-端口扫描&组合判断&信息来源 2、安全问题-配置不当&CVE漏洞&弱口令爆破 3、复现对象-数据库&中间件&…

AS-V1000产品介绍:支持GA/T1400视图库标准(可通过GA/T1400接入海康、华为、大华等图传前端设备,实现图传功能)

目 录 一、概述 二、AS-V1000视频监控管理平台的特点 二、视频监控平台通过GA/T1400接入前端设备 &#xff08;一&#xff09;接入华为GA/T1400前端设备 &#xff08;二&#xff09;接入大华GA/T1400前端设备 &#xff08;三&#xff09;接入海康威视GA/…

QML ListView 列表视图

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 虽然 Repeater 在重复创建多个相似项的时候很方便,但是通常只适用于有限的简单元素,并且它还无法滚动浏览。而基于 Flickable 的视图组件(如 GridView、ListView、TableView、TreeView 等)则弥补了这些缺…

vue-3d-model

vue-3d-model - npm GitHub - hujiulong/vue-3d-model: &#x1f4f7; vue.js 3D model viewer component 通过该插件降低Threejs的使用难度 vue项目加载三维模型&#xff0c;我把模型放在了服务器的tomcat里面&#xff0c;需要对tomcat的fbx项目文件夹设置跨域&#xff0c;如…

Docker容器引擎(5)

目录 一.docker-compose docker-compose的三大概念&#xff1a; yaml文件格式&#xff1a; json文件格式&#xff1a; docker-compose 配置模板文件常用的字段&#xff1a; 二.Docker Compose 环境安装&#xff1a; 查看版本&#xff1a; 准备好nginx 的dockerfile的文…

微信小程序(三十一)本地同步存储API

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.存储数据 2.读取数据 3.删除数据 4.清空数据 源码&#xff1a; index.wxml <!-- 列表渲染基础写法&#xff0c;不明白的看上一篇 --> <view class"students"><view class"item…

银行数据仓库体系实践(16)--数据应用之财务分析

总账系统 在所有公司中&#xff0c;财务分析的基础都是核算&#xff0c;那在银行的系统体系中&#xff0c;核算功能在业务发生时由业务系统如核心、贷款、理财中实现登记&#xff0c;各业务系统会在每天切日后统计当天各机构的核算科目的发生额与余额&#xff0c;并统一送到总账…

k8s二进制及负载均衡集群部署详解

目录 常见部署方式 二进制部署流程 环境准备 操作系统初始化配置 关闭防火墙 配置SELinux 关闭SWAP 根据规划设置主机名 在master添加hosts&#xff0c;便于主机名解析 调整内核参数 配置时间同步 部署docker引擎 在所有node节点部署docker引擎 部署etcd集群 签发…

shell脚本自动备份数据库表

今日目标&#xff1a;shell脚本自动备份数据库中的表并记录执行日志和mysql输出日志 编写思路&#xff1a; &#xff08;1&#xff09;shell脚本运行mysql命令 &#xff08;2&#xff09;脚本输出记录到日志中 &#xff08;3&#xff09;定时任务自动执行shell脚本 1、she…

王子公主来扫雷0^0

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;扫雷小游戏&#xff0c; 主厨&#xff1a;邪王真眼 所属专栏&#xff1a; C语言知识点 主厨的主页&#xff1a;Chef‘s blog 引言&a…

SpringFramework实战指南(五)

SpringFramework实战指南(五) 4.3 基于 注解 方式管理 Bean4.3.1 实验一: Bean注解标记和扫描 (IoC)4.3.2 实验二: 组件(Bean)作用域和周期方法注解4.3.3 实验三: Bean属性赋值:引用类型自动装配 (DI)4.3.4 实验四: Bean属性赋值:基本类型属性赋值 (DI)4.3.5 实验五:…