当视觉遇到毫米波雷达:自动驾驶的三维目标感知基准

文章:Vision meets mmWave Radar: 3D Object Perception Benchmark for Autonomous Driving

作者: Yizhou Wang, Jen-Hao Cheng, Jui-Te Huang , Sheng-Yao Kuan , Qiqian Fu , Chiming Ni 

编辑:点云PCL

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。侵权或转载联系微信cloudpoint9527。

摘要

传感器融合对于自动驾驶车辆上的准确和鲁棒的感知系统至关重要。大多数现有的数据集和感知解决方案侧重于将摄像机和激光雷达进行融合。然而,摄像机和毫米波雷达之间的融合未被显著的充分利用。从摄像机获取丰富的语义信息,以及从雷达获取可靠的三维信息,潜在地可以实现对于3D目标感知任务的高效、廉价和便携的解决方案。由于毫米波雷达具有适应不同光照或全天候驾驶场景的能力,这种解决方案还可以具有健壮性。在本文中,我们介绍了CRUW3D数据集,包括在各种驾驶场景中同步和校准的66,000帧摄像机、毫米波雷达和激光雷达数据。与其他大规模自动驾驶数据集不同,我们的雷达数据采用射频(RF)张量的格式,其中包含了不仅有3D位置信息还有时空语义信息。这种毫米波雷达格式使得机器学习模型能够在摄像机和雷达之间相互交互和融合信息或特征后生成更可靠的目标感知结果。

主要贡献

有关雷达RF张量的标注的公共数据集有限,如表1所示。

为了填补这方面的不足,我们引入了一个新的数据集名为CRUW3D,其中包含66,000帧同步的摄像机、毫米波雷达和激光雷达数据,涵盖了各种驾驶场景,并带有对象3D边界框和轨迹标注。图1显示了我们在CRUW3D中的数据和注释的一些示例。

图1:CRUW3D数据集中的示例,每个示例包含摄像机RGB图像和一个雷达RF张量对。为了更好地可视化,RF张量被转换为笛卡尔坐标。我们提供了不同驾驶场景和照明条件下的数据示例,相应的3D边界框注释分别投影到RGB和RF张量上。

为了提高数据标注的精度,我们在数据收集系统中包含了一个激光雷达。基于激光雷达点云,我们在每个时间帧内仔细标注了对象的3D边界框,并在整个时间序列中标注了对象的轨迹。我们还提供了传感器之间的校准参数,以允许在不同模态之间进行数据/信息转换或进行传感器融合设置。我们希望CRUW3D数据集能够促进更多关于可靠和健壮协同感知的研究。CRUW3D数据集将很快公开提供。总体而言,我们的CRUW3D数据集具有以下主要贡献:

  • 据我们所知,这是第一个具有同步摄像机RGB图像、原始雷达模数转换器(ADC)数据、带有相位的雷达RF张量和激光雷达点云的公共数据集。

  • 它包括3D边界框和3D对象轨迹的对象标注,对于各种对象感知任务,例如3D目标检测和3D多目标跟踪具有一定价值。

  • 它包含不同的光照条件,对于基于视觉的对象感知方法具有挑战性,因此为基于传感器融合的对象感知算法提供了一个很好的基准。

内容概述

数据收集 

我们提出了一个使用双目摄像机、毫米波雷达和激光雷达的数据集收集流程,包括一个传感器平台、一个数据收集软件和一个传感器校准方法。通过我们提出的流程,从三个传感器模态收集的数据可以在时间上同步和在空间上进行精确校准。

传感器平台 

我们的数据集收集传感器系统如图2所示,有两个FLIR BFS-U3-16S2C-CS摄像机,一个TI AWR1843雷达板和一个Livox Horizon激光雷达。详细规格列在表2中。

图2:我们CRUW3D数据集的传感器坐标和传感器平台,包括两个摄像机、一个毫米波雷达和一个激光雷达。请注意,我们的雷达没有俯仰角分辨率(即y轴),因此在两个传感器之间应用平移向量之后,它等效于摄像机的鸟瞰图。

传感器同步 

我们的数据集收集软件基于Ubuntu下的机器人操作系统(ROS)。对于摄像机和激光雷达,由于它们提供开源API,我们直接将它们集成到ROS系统中。然而TI只提供基于Windows和MATLAB的软件。因此我们在Ubuntu系统中创建了一个Windows虚拟机,并通过ROS进行进程间通信。我们使用由右侧摄像机生成的Transistor-Transistor Logic(TTL)信号进行摄像机和激光雷达之间的硬件时间同步。摄像机和激光雷达传感器都通过它们的API支持TTL信号时间同步。在软件层面上,我们使用ROS库提供的ApproximateTime同步策略将三个传感器的数据对齐到30 FPS的时间槽中。为了在雷达和其他传感器之间同步,我们使用软件触发器启动数据序列收集。服务客户端在收到响应后触发雷达数据的收集过程,并在开始其他传感器数据的收集过程时启动另一个过程。根据我们的实验证明,软件触发器的延迟在几毫秒以下,是可以忽略的。

传感器校准 

首先使用Zhang的方法校准了双目摄像机,该方法给出了两个摄像机的内参、畸变系数和外参,这些结果将用于立体矫正。对于摄像机和激光雷达之间的传感器校准,我们采用了Dhall等人提出的校准算法。这将给我们两个变换矩阵,分别表示左摄像机和激光雷达之间的变换,以及右摄像机和激光雷达之间的变换。至于雷达,它根据其俯仰角度仔细安装和与摄像机和激光雷达对齐,其坐标平行于摄像机的鸟瞰图(BEV)。还测量了传感器之间的平移向量,以形成摄像机和雷达之间的完整变换矩阵。

数据处理

摄像头数据处理:首先,由双目摄像头捕捉的图像序列根据摄像头校准进行去畸变和矫正。然后针对由于不良光照条件导致的低质量图像,我们进行图像增强,以提高收集到的视频的质量和光照稳定性。在这里实现了一种基于深度学习的方法,名为RRDNet,使用三分支CNN在零镜头拍摄中恢复曝光不足的图像。为了实现对视频序列的稳定增强结果,我们仅使用每个序列的第一帧对网络进行训练,并对其余帧进行推理。

雷达数据处理:我们的雷达数据处理类似于[28]中提到的预处理,其中雷达范围-方位坐标中的RF张量被描述为俯视图(BEV)表示,其中x轴表示方位(角度),y轴表示距离(距离)。从原始雷达数据中,我们首先对接收到的样本进行范围快速傅里叶变换(FFT)以估算反射的范围。然后我们对不同接收天线上的样本进行第二次角度FFT,以估算反射的方位角。此外,我们还将RF张量转换为笛卡尔坐标,以更好地与摄像机对齐并进行更清晰的可视化。我们的雷达数据处理的更详细描述在补充文件中提到。

激光雷达数据处理:Livox激光雷达采用了一种称为非重复水平扫描的特殊激光扫描技术,与大多数传统激光雷达传感器提供的重复线性扫描显著不同。它积累了在FOV内捕获的点,以在集成时间窗口内获得更密集的点云。然而,基于这项技术,激光雷达的点云无法在相机帧(即1/30秒)内覆盖整个FOV。为确保每个相机/雷达帧都有一个相应的激光雷达帧进行注释,我们将连续三帧(即1/10秒时间窗口)内捕获的点云累积为一个完整的帧,这意味着我们的激光雷达的帧率为10 FPS,如表2中所述。

数据标注

在CRUW3D数据集中,我们在LiDAR点云上标注3D边界框。与KITTI数据集中的3D边界框标签不同,我们使用三个欧拉角来表示每个边界框的方向,因为CRUW3D数据集中的街道不像KITTI数据集中的街道那样平坦。在此,我们在标注过程中考虑以下5个对象类别:行人、汽车、货车、卡车和公共汽车。除了3D边界框之外,我们还为后续的多目标跟踪(MOT)任务标注了对象跟踪ID。然而,由于不同的传感器具有不同的视场(FOV),而且远处物体的点云通常是稀疏的,我们只在重叠区域内标注了对象,如图3所示。在LiDAR点云上标记了3D边界框之后,我们通过来自传感器校准的转换矩阵将所有边界框投影到摄像机和雷达坐标系中。然后,可以使用这些注释分别训练摄像机和雷达的网络。

数据统计

我们的CRUW3D数据集包含约66,000帧各种驾驶场景下的同步摄像机、雷达和激光雷达数据,具有不同的光照条件。大约70%的数据是在正常的驾驶场景中捕获的,具有良好的光照条件。其余30%是在不利的光照条件下捕获的,例如夜间或强光照。表3中显示了一些数据统计信息。在所有数据帧中,我们在训练集中标注了19,000帧,在测试集中标注了10,000帧。

CRUW3D数据集的标注

至于CRUW3D数据集的标注,我们在图4中分析了我们标记的对象的不同分布,包括3D边界框的数量、3D对象轨迹的数量、对象深度、对象方位角和对象尺寸。

图4:CRUW3D数据集中的对象标注分布,包括(a)对象3D边界框分布,(b)对象轨迹分布,(c)对象深度分布,(d)对象方位角分布和(e)对象长度分布。

实验

在CRUW3D数据集上进行了一系列基线实验,包括基于相机的3D目标检测、基于相机的3D目标跟踪、基于雷达的目标检测以及相机-雷达融合的基线。在接下来的实验中,我们只考虑行人和汽车作为我们感知的目标类别。

基于相机的3D目标检测

对于自动驾驶应用来说,单目3D目标检测是至关重要的。用于3D目标检测的神经网络提取图像特征,并在透视图或鸟瞰图中检测对象。我们在我们的基准测试中实现了SMOKE和 DD3D作为基线。

SMOKE 是基于 CenterNet的单级3D目标检测方法。给定输入图像,它检测目标对象在图像平面上投影的3D中心。然而,该算法最初是为KITTI数据集设计的,其3D边界框方向仅包括偏航角。我们通过忽略俯仰和横滚将每个边界框的四元数方向标签转换为偏航角,假设其他旋转角度可以忽略。在此,我们在实现过程中使用DLA-34作为SMOKE的骨干网络。

DD3D 建立在另一个2D目标检测器 FCOS 之上。它使用大规模深度数据集 DDAD15M 对网络进行预训练,以从图像中获得更好的深度感知特征,从而在单目3D目标检测方法中取得了最先进的效果。在实现过程中,我们尝试了两个不同的骨干网络,即 DLA-34和 V2-99 。

与KITTI类似,评估指标包括3D边界框的平均精度(AP)和在IOU阈值为0.5或0.7(对于汽车)以及0.3或0.5(对于行人)时的BEV 2D边界框的平均精度。定量结果如表4所示。从实验结果可以看出,与SMOKE相比,DD3D在各个方面都表现更好。使用更大的骨干V2-99,DD3D在汽车和行人方面均取得了最佳性能。

基于相机的3D目标跟踪

在预测对象3D检测结果之后,我们进一步实现了一个3D多目标跟踪(MOT)算法,称为AB3DMOT,以获得对象3D边界框轨迹。我们根据表4中的3D目标检测结果,即 SMOKE 和 DD3D,进行了基于AB3DMOT框架的实验。AB3DMOT单独跟踪不同的对象类别,并在最后阶段将它们合并,因此我们也分别评估汽车和行人的3D MOT性能,如表5所示。

对于3D MOT的评估指标,我们采用了[31]中提出的指标,包括缩放平均多目标跟踪准确度(sAMOTA)、平均多目标跟踪准确度(AMOTA)和平均多目标跟踪精度(AMOTP)。从表5可以看出,“DD3D+AB3DMOT”的组合在3D MOT性能方面表现最佳。由于前一阶段3D检测质量较差,“SMOKE+AB3DMOT”在行人跟踪方面的性能非常差。

毫米波雷达目标检测

对于基于毫米波雷达的目标检测,它将每个对象检测为RF张量中的一个点,我们使用RODNet作为基线方法。评估指标包括使用不同对象位置相似度(OLS)阈值的平均精度(AP)和平均召回率(AR),这与我们先前的CRUW数据集相同。定量结果如表6所示。整体性能低于CRUW数据集,显示出我们的CRUW3D数据集要更具挑战性,使用HGwI骨干和时间变形卷积的RODNet取得了最佳性能。

总结

本文介绍了一个名为CRUW3D的新基准数据集,其中包含了同步且校准良好的相机、雷达和激光雷达数据,并附有目标3D边界框和轨迹标注。据我们所知,这是第一个具有雷达RF张量、包含幅度和相位信息的公开数据集,可用于3D目标检测和多目标跟踪任务。通过CRUW3D数据集,相机和毫米波雷达之间的传感器融合可以进一步利用,以提高自动驾驶的可靠性和鲁棒性。

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为分享的伙伴们点赞吧!

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

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

相关文章

vector类

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟悉vector库 > 毒鸡汤:从人生低谷…

【面试总结】Java面试题目总结(一)

&#xff08;以下仅为个人见解&#xff0c;如果有误&#xff0c;欢迎大家批评并指出错误&#xff0c;谢谢大家&#xff09; 1.项目中的验证码功能是如何实现的&#xff1f; 第一步&#xff1a;在项目的pom.xml文件中导入 EasyCaptcha 的依赖&#xff1b; <dependency>…

20231207给NanoPC-T4(RK3399)开发板刷Android12的挖掘机方案的LOG

20231207给NanoPC-T4(RK3399)开发板刷Android12的挖掘机方案的LOG 2023/12/7 23:50 SDK&#xff1a;rk356x_android12_220722.tgz 只修改DTS的DTC部分就【直接】可以跑NanoPC-T4 参考资料&#xff1a; http://www.friendlyelec.com.cn/agent.asp http://www.friendlyelec.com.c…

实现安装“自由化”!在Windows 11中如何绕过“您尝试安装的应用程序未通过微软验证”

这篇文章描述了如果你不能安装应用程序,而是当你在Windows 11中看到消息“您尝试安装的应用程序未通过微软验证”时该怎么办。完成这些步骤将取消你安装的应用程序必须经过Microsoft验证的要求。 使用设置应用程序 “设置”应用程序提供了绕过此警告消息的最简单方法,以便你…

python简易学生管理 + MySQL

数据库表 Python代码部分 import pymysqlclass StMgmt(object):def tips(self):"""提示用户选择的操作"""print("""学生管理系统 1.01.查看所有信息2.查看学生信息3.修改学生信息4.增加学生信息5.退出学生系统"""…

【网络安全技术】传输层安全——SSL/TLS

一、TLS位置及架构 TLS建立在传输层TCP/UDP之上&#xff0c;应用层之下。 所以这可以解决一个问题&#xff0c;那就是为什么抓不到HTTP和SMTP包&#xff0c;因为这两个在TLS之上&#xff0c;消息封上应用层的头&#xff0c;下到TLS层&#xff0c;TLS层对上层消息整个做了加密&…

<JavaEE> 经典设计模式之 -- 单例模式(“饿汉模式”和“懒汉模式”实现单例模式)

目录 一、单例模式概述 二、“饿汉模式”实现单例模式 三、“懒汉模式”实现单例模式 3.1 单线程下的“懒汉模式” 3.2 多线程下的“懒汉模式” 一、单例模式概述 1&#xff09;什么是单例模式&#xff1f; 单例模式是一种设计模式。 单例模式可以保证某个类在程序中只存…

【Java数据结构 -- 顺序表】

List和ArrayList与顺序表 一. List1.1 List介绍2.1 常见接口介绍3.1 List的使用 二. ArrayList与顺序表1.线性表2.顺序表2.1 接口的实现2.2 顺序表的创建2.3 顺序表的打印2.4 顺序表的插入2.5 顺序表的按索引位置插入数据2.6 判断顺序表是否包含某个数2.7 返回顺序表某个数的索…

2023-12学习笔记

1.NonNull要手动写无参构造器 这是一个我今天研究了很久的问题&#xff0c;开始不知道原因是在这里&#xff0c;还在那想是不是Data覆盖了无参构造&#xff0c;结果当然不是。先说下解决历程 1.问题起因 通过RequestBody接收前端报文的时候报错&#xff0c;大致是说我构造方…

python中tkinter实现GUI程序:三个实例

python中tkinter实现GUI程序 写在最前面Python中使用Tkinter实现GUI程序的基本元素Tkinter简介基本元素1. 根窗口&#xff08;Root Window&#xff09;2. 小部件&#xff08;Widgets&#xff09;3. 布局管理4. 事件处理 1.用 tkinter实现一个简单的 GUI程序,单击“click”按钮&…

Java项目-瑞吉外卖Day3

填充公共字段&#xff1a; 目的&#xff1a;由于某些属性&#xff0c;例如createdTime这些需要填充的字段会在多个地方出现&#xff0c;所以考虑使用公共字段自动填充的办法减少重复代码。 在对应属性上加入TableField注解。通过fill字段表明策略&#xff0c;是插入/更新的时候…

如何搭建废品上门回收小程序

如今&#xff0c;随着环境保护意识的增强&#xff0c;废品的回收和再利用变得越来越重要。为了方便人们进行废品回收&#xff0c;搭建一个废品上门回收的小程序成为了一个不错的选择。本文将介绍如何从零开始搭建一个废品上门回收小程序。 …

【Go自学版】02-goroutine

利用时间片分割进程&#xff0c;致使宏观上A,B,C同时执行&#xff08;并发&#xff09; CPU利用率包含了执行和切换&#xff0c;进程/线程的数量越多&#xff0c;切换成本也会增大 最大并行数&#xff1a;GOMAXPROCS work stealing: 偷其他队列的G hand off: 当前G1阻塞&#…

css 修改滚动条样式,解决Windows浏览器中滚动条不美观问题

Windows环境中的浏览器中滚动条默认是直接显示了&#xff0c;不管光标是否进入该区域&#xff0c;这样就很不美观&#xff0c;如下图&#xff1a; 之前样式为 .well {display: block;background-color: #f2f2f2;border: 1px solid #ccc;margin: 5px;width: calc(100% - 12px);h…

mycat部署和配置读写分离(二)

说明&#xff1a; MyCAT 是使用 JAVA 语言进行编写开发&#xff0c;使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性&#xff0c;所以要求必须在 JDK7 以上的版本上运行。 1. jdk1.8安装 详见jdk环境安装 2. Mysql安装 详见mysql8.0.11源码安装…

【lesson11】数据类型之string类型

文章目录 数据类型分类string类型set类型测试 enum类型测试 string类型的内容查找找所有女生&#xff08;enum中&#xff09;找爱好有游泳的人&#xff08;set中&#xff09;找到爱好中有足球和篮球的人 数据类型分类 string类型 set类型 说明&#xff1a; set&#xff1a;集…

SL9008 3.6-60V输入 LED降压恒流芯片 内置MOS管 带PWM调光

SL9008是一款内置MOS管、具有PWM调光功能的LED降压恒流芯片&#xff0c;适用于3.6-60V的输入电压范围。它采用了先进的电路设计&#xff0c;确保了高效率和长寿命&#xff0c;同时具有宽电压输入范围和优异的负载调整率。 SL9008的主要特点包括&#xff1a; 1. 宽输入电压范围&…

HarmonyOS4.0开发应用——【ArkUI组件使用】

ArkUI组件使用 这里会详细演示以下组件使用: ImageTextTextInputButtonSliderColumn&&RowList自定义组件以及相关函数使用 Image 可以是网络图片、可以是本地图片、也可以是像素图 Image("https://ts1.cn.mm.bing.net/th?idOIP-C.cYA-_PINA-ND9OeBaolDTwHaHa&…

CLIP在Github上的使用教程

CLIP的github链接&#xff1a;https://github.com/openai/CLIP CLIP Blog&#xff0c;Paper&#xff0c;Model Card&#xff0c;Colab CLIP&#xff08;对比语言-图像预训练&#xff09;是一个在各种&#xff08;图像、文本&#xff09;对上进行训练的神经网络。可以用自然语…

鸿蒙HarmonyOS(ArkTS)语法 声明变量及注意事项

好 今天我们来看一个基础的harmonyOS语法 变量声明 这里 我们还是用 ArkTS项目 我们声明变量的语法并不是ArkTS的 而是 javaScript 和 TypeScript的 可以看一下下面一张图 js是最初弱类型语言 于是TS作为js的副类 是一种更严谨的数据限定语法 而ArkTS 是TS的改良版 其实我们…