1. 前言

自动驾驶是一项复杂的技术,其核心包括传感器感知,行为决策,高清地图,海量数据,高性能计算平台等等。目前,基于深度学习的方法在传感器感知方面取得了突破性的进展,并因此推动了自动驾驶技术的飞速发展。自动驾驶技的传感器主要包括摄像机,激光雷达和毫米波雷达。摄像机用于采集可见光图像,对于物体的形状和类别的感知精度较高。由于深度学习技术的成功起源于计算机视觉任务,很多成功的算法也是基于对图像数据的处理,因此基于摄像机的感知技术目前已经相对成熟。图像数据的缺点在于缺少了场景和物体的距离信息,且受天气和环境的影响较大。激光雷达在一定程度上弥补了摄像机的缺点,可以精确的感知物体的距离,但是限制在于成本过高,难以大批量生产。毫米波雷达具有天线波束窄、分辨率高、频带宽、抗干扰能力强等点, 可以比较精确的测量物体的速度和距离,受天气和环境影响较小,而且成本较低,易于大规模生产,因为也成为了目前自动驾驶技术研究的一个热点方向。

标多种传感器及其在自动驾驶中的应用题

传统的雷达感知技术包含大量基于规则的算法。这些规则是研究和工程人员利用先验知识和实际数据总结出来的。人类的先验知识是有限的,可处理的数据也是有限的,因此这些规则并不完备,无法涵盖实际场景中的所有情况,而深度学习技术可以自动的从海量数据中获取知识和规则。随着数据不断累积,知识和规则的学习也就越来越完备,并超越基于人工规则的算法。因此,近些年来,学术界和工业界都都在积极的探索如何将深度学习技术用于提高雷达感知算法的性能。

2. 毫米波雷达信号处理

雷达信号与图像信号有很大的差别(与激光雷达部分相似),因此在介绍具体的算法之前,有必要先简单了解一下雷达信号长的什么样子。雷达的种类非常多,比如连续波雷达,脉冲雷达,相控阵雷达,合成孔径雷达(SAR)等等。不同雷达应用的场景也不尽相同,本文只关注自动驾驶应用中常用的毫米波雷达。毫米波雷达发射波长为毫米量级的信号。这种短波长一方面可以使天线的尺寸做的很小,另一方面可以提高检测的准确度,比如工作频率为 76–81GHz(对应波长约为 4mm)的毫米波雷达可以检测零点几毫米的移动。目前常用的是一种称作调频连续波 (FMCW) 的特殊毫米波技术。FMCW 雷达连续发射调频信号,以测量目标的距离,角度和速度。图1是FMCW雷达的结构图。简单来说,其工作原理如下。首先,合成器生成一个线性调频脉冲, 该线性调频脉冲由发射天线(TX 天线)发射。目标物体对该线性调频脉冲的反射生成一个由接收天线(RX 天线)捕捉的反射线性调频脉冲。混频器将 RX 和 TX 信号合并到一起,生成一个中频 (IF) 信号。一般来说,一个雷达包含多个发射和接收天线,因此也就会得到多个IF信号。目标物体的信息,比如距离,速度,角度都包含在这些IF信号中。通过对IF信号进行多次离散傅里叶(DFT)变换,即可将这些信息分离出来。当然,这里只是一个非常简略的概念性的介绍。更详细的理论推导可以参考https://zhuanlan.zhihu.com/p/524371087157

标题FMCW雷达结构图 [1]

标题传统的雷达信号处理流程

ADC信号经过三次DFT处理之后,得到一个离散但是稠密的三维信号,维度分别对应Range(距离),Angle(方向)和Doppler(速度)。传统的雷达信号处理会采用一个称作CFAR(Constant False-Alarm Rate)的算法来对信号进行过滤,只保留比较强的响应。CFAR算法的关键就是动态地确定采样的阈值。CFAR采样后得到的稀疏的数据又被称为点云(Point Cloud)。每个点的数据包括Range,Angle,Doppler以及RCS(可以粗略的理解为目标的反射面积)。CFAR算法设计简单,计算量小,可以过滤掉大量噪声,但也不可避免的会丢失有用的信息。另外一个选择是不采用过滤算法,直接保留所有的稠密数据(三维的张量)。我们可以将其理解为一个数据块(Data Cube)。当然我们也可以采取折中的办法,也就是降低阈值,保留更多的数据点,也将其视为一个数据块,只不过这个数据块是相对稀疏的。

标两种不同的雷达数据表示方式(图片来源于[2]和[9])题

把雷达数据的表示形式分为Point Cloud和Data Cube两种,是因为处理这两种数据会用到截然不同的深度学习算法。下文会详细对这两种数据的处理方式分别进行介绍。

3. Point Cloud 数据的处理算法

雷达的点云是一种非常稀疏的信号,比如一辆汽车上一般来说只有几个到几十个数据点,一个行人上可能只有几个数据点。相对于稠密的数据块来说,点云的的数据量非常少,因此算法很相对轻量,对硬件的要求较低,通常会应用在较低成本的感知系统中,作为其他传感器的补充。在算法方面,大部分的工作都是借鉴了激光雷达点云的处理方式。这些方法大致可以分为两种:一种直接处理点云数据,比如利用PointNet/PointNet++;另一种将点云转换为网格数据,从而采用卷积神经网络(CNN)来处理。

3.1 直接处理点云

早期的工作一般采用聚类的方式得到目标物体的Proposal,然后提取手工设计的特征,最后输入给分类器进行处理。下面是这个方向的一个代表性工作。

Comparison of random forest and long short-term memory network performances in classification tasks using radar

这篇文章来自戴姆勒,作者采用DBSCAN来对点云进行聚类,对每个cluster提取34维特征。分类器方面作者对比了Random Forest和LSTM,其中LSTM的输入为8个连续的34维特征向量。分类器输出为六个类别,包括车辆,行人,垃圾桶等。实验结果表明,LSTM并没有很大的优势。原因之一是序列长度不够,这个受限于其采集的数据。另外手工设计的特征也限制了LSTM的学习能力。

众所周知,深度学习的一大优势在于可以自动的特征学习,因此研究者逐渐放弃了人工设计特征的方式,转而将此任务交给神经网络,并逐渐过渡到端对端的学习方式。下面是这个方向两个典型的工作。

2D Car Detection in Radar Data with PointNets

这篇文章来自德国Ulm大学,作者借鉴了Frustum PointNets方法。其基本思路可以理解为物体检测中常见的two-stage方法。首先生成object proposal,这里直接将每个点看做一个proposal,region的大小根据物体的先验知识来确定。每个proposal包含n个点,每个点包括x, y, speed, RCS四个特征。接着利用PointNet或者PointNet++对proposal进行分类,也对proposal中的每个点分类(称为点分割任务),并过滤掉背景点。最后只对是物体的proposal进行boundingbox预测。实验是在封闭环境下进行的,只有一辆目标车辆,Ego车辆也只一个Radar sensor。因此并不具备太多参考价值。

Semantic Segmentation on Radar Point Clouds

这篇文章同样来自戴姆勒,作者采用基于PointNet++的方法对点云进行语义分割,也就是每一个点分配一个类别标签(比如车辆,行人,背景等)。值得一提的是,这篇文章在时序上对多帧的点云进行融合,以提高点云的密度。这是其成功的关键点之一。另外,作者利用了多尺度的邻域信息,并用一种类似U-Net的方式连接起来。数据方面,这篇文章采用了多个Radar sensor,并且在真实路况下采集数据,人工标注每个点的类别。

3.2 点云转换成网格数据

在早期阶段,研究人员一般会基于多帧的点云信号来生成occupancy grid,用来检测静态障碍物。occupancy grid与2D图像的结构相同,因此可以直接用CNN来进行物体检测和分类。比如下面这个工作,就是在occupancy grid上crop出8mx8m的候选区域,然后用CNN对这些区域进行分类。

Object Classification in Radar Using Ensemble Methods

标基于Occupancy Grid的静态物体分类题

Occupancy grid只能表示静态物体,因此更为一般的方法是将点云量化为2D的网格结构,每个网格内可能包含0到N个点。将多个点的数据转化成一个定长的向量,就得到了一个HxWxC的3D tensor数据,其中H和W表示网格的维度,C表示特征向量的长度。这是一个可以被CNN处理的标准数据类型,各种基于CNN的物体检测网络都可以用来执行检测任务。这里比较特别的一步就是如果将多个点转换为定长的特征向量,可以采用简单的Mean/Max Pooling,也可以采用类似于VoxelNet中的Voxel Feature Encoding的方法。VexelNet是针对于Lidar的3D点云设计的网络,也可以魔改一下用于2D的Radar点云。

Radar-based 2D Car Detection Using Deep Neural Networks

这篇文章来自于慕尼黑大学,对比了基于网格和点云的方法。基于网格的方法就是简单的将点云转换成网格,特征向量为x和y方向的速度,以及RCS(作者没有说明如何处理多个点),然后利用YOLOv3网络得到物体的信息(类别,BBox位置,大小,方向)。基于点云的方法就是之前介绍的Frustum PointNets。文章在nuScences数据库上对这两种方法进行了对比,基于网格的方法的mAP为7.87%,远低于基于点云方法的19.61%。但是网格方法在速度上(6.27 f/s)比点云方法(0.27 f/s)快很多。值得一提的是,nuScenes 数据库是第一个拥有同步的可见光图像,激光雷达点云和毫米波雷达点云,并且在真实路况下采集的大规模数据库。后面我会再详细介绍这个数据库,它的出现对于基于雷达点云的物体检测研究是一个很大的推动。

基于网格数据和YOLO网络的物体检测标题

小结:直接处理点云的方法性能较好,但是由于数据的不规则,很难利用并行计算进行加速,因此在效率上反而不如网格方法。但是总的来说,两种方法在真实路况数据上的效果都不太理想。原因大致有两点。其一,没有采取有效的时序融合,单帧的雷达检测结果包含很多噪声,传统的雷达物体跟踪算法也在很大程度上依赖于时序信息。循环神经网络(LSTM或GRU)可以更好的处理时序信号,所以应该是下一阶段研究的重点。其二,点云过于稀疏,很多有用的信息已经在预处理阶段丢掉了。因此才有研究者提出直接从雷达原始信号出发,采用端对端的方式来进行物体检测。这样做的好处是充分利用深度神经网络强大的特征学习能力,自动的去除原始信号中的噪声,保留有用信息。但是这部分网络的设计需要更多的考虑到雷达自身的特性,因此更具有挑战性。下一部分将会介绍这方面的工作。

4. Data Cube 数据的处理算法

如前所述,原始的雷达信号经过3次FFT处理之后得到以Range-Doppler-Azimuth为坐标的Data Cube。对这个3D tensor做CFAR处理,就得到了稀疏的点云数据。这个过程不可避免的会丢失有用信息。随着自动驾驶芯片计算能力的不断提升,直接利用Data Cube作为输入数据也逐渐成为了可行的方案。近两三年来,这方面的工作慢慢多了起来,也成为毫米波雷达感知领域新的研究热点。下面就介绍几个典型的工作。

Vehicle Detection With Automotive Radar Using Deep Learning on Range-Azimuth-Doppler Tensors

这篇2019年的文章来自Qualcomm,个人认为是早期的一个比较全面的工作。作者提出了两种处理Range-Doppler-Azimuth Tensor的方式:一是沿着Doppler维度将tensor压缩为2D RA tensor;二是分别沿着三个维度压缩,得到RA,RD,AD三个2D tensor,最后再合并为RA tensor。这里说的压缩其实就是相加的操作。不论采取哪种方式,最终都会得到一个以RA为坐标的特征图,特征图的channel维度编码了Doppler和Energy信息。然后,一个关键的步骤就是将这个特征图从RA坐标(也就是极坐标)转换到笛卡尔坐标。这样做的原因是在极坐标下,物体的大小是随着位置变化的,这不符合卷积操作平移不变性的假设。当然坐标转换也不能完全解决这个问题,不同位置处的物体的signature还是会有差别。这个问题比较复杂,留待之后再讨论。最后,为了利用时序信息,LSTM单元会作用在坐标转换后的特征图上。SSD Object Detector被用来进行物体检测任务。这一步不是很关键,任何object detector理论上都可以用。

实验方面,作者在高速公路的场景下采集并标注了一个中等规模的数据库(~100K帧,390K个标注)用来训练和测试。这个数据库场景单一,物体大部分应该是移动的车辆,因此难度相对较低。实验结果表明,在没有LSTM的情况下,RAD模型的性能优于RA模型。在有LSTM的情况下,则基本没有差别。这也说明LSTM会自动的学习到一定的运动信息。此外,作者还与Lidar算法进行对比,得出结论:基于雷达的检测模型受距离影响较小。当然这个对比没有采用同样的数据库,而且雷达数据库只包含了运动物体,因此这个结论并不是非常可信。

标题Qualcomm方法的网络结构图

RAMP-CNN: A Novel Neural Network for Enhanced Automotive Radar Object Recognition

总的来说,这篇文章的的思路和Qualcomm的很相似,都是将RAD tensor分解成三部分分别处理,再合并到一起。差别主要以下几点:1)这篇文章对于RA的处理更加复杂。RA tensor包含了复数值,并且只在任意选择的chirp上进行(并不是完整的Doppler spectrum)。2)利用3D卷积处理多帧数据;3)用AutoEncoder来提取特征;4)对于融合后的特征图,采用了3D Inception结构,以覆盖不同尺度的感受野。

实验方面,作者在不同场景下采集数据,规模大致也是100K帧,并利用相机的辅助进行标注,类别包括车辆,行人,自行车。值得注意的是,文章中采用了一些为雷达数据设计的data augmentation方法,对网络的训练也起到了很大的帮助。

标RAMP-CNN网络结构图题

RODNet: A Real-Time Radar Object Detection Network Cross-Supervised by Camera-Radar Fused Object 3D Localization

RODNet在时序信息的提取上进行了两点改进:1)输入数据是Range-Azimuth-Chirp Tensor,采用神经网络来处理Chirp维度,以更好的提取运动特征。而之前两个方法都是直接用FFT来处理Chirp维度,网络的输入是Range-Azimuth-Doppler Tensor。2)多帧数据通过时序上的可变型3D卷积进行融合,以抵消物体运动带来的帧间对齐问题。

标题RODNet网络结构图

Graph Convolutional Networks for 3D Object Detection on Radar Data

这篇文章的亮点在于采用图神经网络才处理极坐标下(Range-Angle)的特征图。RA图上的每个点都被看做图的一个节点,而图的边则连接相邻range或者相邻angle的节点,边的权重与欧式空间中节点距离成反比(实验证明这个权重的设置并不重要)。在这种图结构上的卷积操作可以使特征提取适应不同的range:近处的感受野较小,而远处的感受野较大。这样提取的特征具有更好的range不变性。

标图神经网络处理Range-Angle特征图题

以上四篇文章都是直接输入底层的雷达数据(2DFFT或3DFFT之后的数据),利用神经网络进行端对端的学习来检测场景中的物体,个人觉得这应该是未来雷达感知算法的发展趋势。另外还有一些方法,会先检测场景中的ROI(类似于点云)作为候选目标,然后再用神经网络对候选目标进行分类。这类方法的缺点是无法进行端对端的学习,不能充分利用神经网络的优势,所以这里就不做介绍了。

[1] https://ieeexplore.ieee.org/document/8126350
[2] https://arxiv.org/abs/1904.08414
[3] https://ieeexplore.ieee.org/document/8455344
[4] https://ieeexplore.ieee.org/document/7918863
[5] https://ieeexplore.ieee.org/document/9294546
[6 ]https://www.nuscenes.org/
[7] https://ieeexplore.ieee.org/document/9022248
[8] https://arxiv.org/abs/2011.08981
[9] https://arxiv.org/pdf/2102.05150.pdf
[10]https://openaccess.thecvf.com/content/ICCV2021W/AVVision/papers/Meyer_Graph_Convolutional_Networks_for_3D_Object_Detection_on_Radar_Data_ICCVW_2021_paper.pdf

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐