绑定手机号
获取验证码
确认绑定
提问
0/255
提问
订阅开课提醒需关注服务号
回答成功
知道了
扫码关注智猩猩服务号登录
请使用微信扫描二维码
扫描二维码分享给微信好友
您已订阅成功,有新课程,我们将第一时间提醒您。
知道了
发送提问成功
回答可在
“我的——我的提问”中查看
知道了
失败
欢迎来智东西
关注我们
智东西
车东西
芯东西
智猩猩
0
0
万字分析汽车毫米波雷达点云技术
分类: 自动驾驶
2022-04-23 13:46:07

雷达点云的语义分割是雷达数据处理中的一项新的挑战。我们演示了如何执行这项任务,并提供了关于人工标记的雷达反射的大型数据集。与之前将聚类反射产生的特征向量作为分类器的输入不同的是,现在将整个雷达点云作为输入,并获得每个反射的类概率。因此,我们不再需要聚类算法和手动选择特征。

1 介绍

在过去几年中,图像分析从单纯的将图像中的中心对象的分类,以及对象或对象部分的检测转移到单个组合任务:语义分割。语义实例分割通过区分物理上不同的对象的相同类标签的像素来增强语义分割,使得除了按像素分类之外,还会对对象实例进行分组。

语义分割通常是由深度卷积神经网络完成的,这些网络通常表现为编码器-解码器结构。这些架构都依赖于规则的图像结构,也就是具有等距像素的矩形网格。如果使用全卷积网络,网格的尺寸,即图像的宽度和高度,可能是变动的。矩形网格引起像素之间的距离和邻域关系,这些关系被卷积核所利用,其空间扩展大于一个像素。因此,如果将摄像机用作传感器,这些方法可以正常发挥作用。雷达和激光雷达传感器是对摄像头的补充,以保持功能安全。这些额外的传感器不仅应该是互补,而且还是冗余的。因此,最好也能从雷达和激光雷达中获得对周围环境的高度语义理解。

在本文中,我们将对雷达数据进行语义分割,也就是说,我们为每一个测量到的反射点分配一个类别标签。我们专注于动态对象,并针对研究六个不同的类别:汽车、卡车、行人、行人组、自行车和静态对象。在应用恒虚警率(CFAR)算法之后获得的雷达检测结果构成了一个点云, 其中点云P被定义为一组N∈N个点pi∈Rd,i = 1,…,N,其中点云中的点的顺序无关紧要。对于每次反射,需要测量两个空间坐标(径向距离r和方位角φ),自我运动补偿多普勒速度vˆr和雷达截面(RCS)σ。因此,必须在语义分割任务中处理4维点云。雷达反射的空间密度会急剧变化,因此大规模网格映射的方法在计算上是不可行的。所以,不能应用用于相机图像的通常网络结构。可以从图1中读出,不需要类似图像的输入的算法,是非常有必要的,图中显示了在200毫秒的时间内从四个雷达上收集的雷达探测数据。在该图中,可以看到没有测量的大区域以及具有大量反射的区域。整个场景的网格地图具有大约2000个单独的反射,必须覆盖至少150米×200米的大空间区域,甚至在非常低的分辨率下,单元尺寸为1米×1米,网格中最多有6%的像素将具有非零值。

图1 雷达点云积累超过200毫秒。突出了三种不同车型的反射。仅显示完整视野的摘录

因此,我们使用PointNet ++作为我们分割算法的基础。PointNet ++能够直接在点云上工作,它最初设计用于处理来自激光扫描仪的3D空间数据。在本文中,我们修改了架构以处理两个空间维度和另外两个特征维度。

在之前的工作中,分类是在特征向量上进行的,而这些特征向量又是从聚类的雷达反射中获得的。通过我们的新方法,我们避免了这两个预处理步骤:将雷达目标分组到聚类,并且不再需要从这些聚类中生成预定义的特征向量。这些表明我们的新方法大大优于以前的方法。

本文的其余部分结构如下:在第二部分,我们评论了相关工作和该议题的其他方法。之后,我们更详细地描述了我们的网络结构,并解释了我们的训练和测试程序。在第四部分,我们展示了我们的成果,并将其与以前的方法进行了比较。最后,对我们的未来工作进行了展望。

2 相关工作

当相机用作传感器并且大多数算法都针对图像数据进行定制时,语义分割是一种流行的方法。全卷积网络的引入激发了许多类似的和后来更先进的神经网络结构,如SegNet,U-Net,R-CNN,以及其后续的Fast R-CNN,Faster R-CNN,和Mask R-CNN。为了将这些技术应用于雷达数据,必须进行一些预处理。网格图提供了一种将空间非均匀雷达反射转换为图像数据的方法。测量的反射随时间积分并插入地图中的相应位置。用这种方法可以创建不同的地图,例如占用网格地图(描述网格占用的后验概率),或者RCS地图,(提供有关每个网格中反射的测量RCS值的信息)。这种方法对静态物体很有效,因为只需要考虑自我运动(而不是额外的物体速度和轨迹),就可以在地图中的正确位置插入不同时间的雷达反射。对于在此项工作中所考虑的动态物体,需要精确的扩展目标跟踪算法,或者将物体的动态视为特征,以便动态物体在地图中创建扩展的反射尾部。另一个困难是,对于稀疏数据,网格映射并不是有效的,因为需要潜在的大网格来显示相对较少的测量。

据我们所知,以前没有对移动物体的汽车雷达数据进行过语义分割。分类只在小数据集或大量的模拟数据上进行。

3 方法

A.     网络结构

齐等人提供了PointNet和PointNet++方法来直接处理点云,因此不需要先前的映射步骤。他们对通过从室内场景的3D扫描的网格中采样点获得的3D点云执行语义分割。我们使用他们的架构作为我们方法的基础。然而,我们在实验中使用的雷达数据在以下方面与3D室内数据不同。首先,每个雷达反射点只包含两个而不是三个空间坐标,但加上自我运动补偿的多普勒速度和RCS值的两个附加值,整个点云的每个点pi都是四维的。其次,我们的数据在密度和采样率方面显示出更大的差异。斯坦福大学的3D语义分析数据集的3D扫描提供了高密度的点云,其中可以看到办公室内部的细节,而我们的雷达数据仅为每个对象提供少量反射,因此对于较小或较远的物体,甚至连物体的轮廓都无法正确捕获,见图1。

在PointNet ++ 中定义了多尺度分组模块(MSG)和特征传播模块(FP)。MSG模块考虑了围绕中心点的多种规模的邻域,并在描述这些邻域的中心点的位置处创建组合特征向量。该模块包含三个步骤:选择、分组和特征生成。首先,通过最远点采样选择输入点云的Nsample点以便均匀地采样输入点云。在分组步骤中,为每个被选中的Nsample点创建邻域。在我们的网络中,邻域由位于中心点周围的半径r内的Nneigh点组成。只考虑雷达反射的两个空间分量用于邻域搜索。如果一个反射点在给定的搜索半径内有Nneigh个以上的邻域,则仅将找到的第一个 Nneigh 点用于进一步计算如果发现的反射点较少,则重复第一个邻域以保证固定大小的数据结构。在每个MSG模块中,创建多个具有不同r和Nneigh值的邻域。在最后一步中,通过在具有形状(Nsample, Nneigh, cin )的邻域张量上应用具有滤波器大小1×1的卷积层,为每个Nsample 点生成特征,其中cin是通道的数量。这将产生一个大小为(Nsample, Nneigh, cout)的张量,在这个张量上应用一个最终的最大集合层,以便只考虑具有针对相应滤波器的最高激活的邻居的贡献。

经过MSG模块后,输出点云中的点数比输入点云中的小,因此,更深层中的点包含越来越多的抽象特征,这些特征提供了关于前几层的领域点的信息。这个过程类似于用于图像处理的卷积网络,图像尺寸在每一层都被缩小。在图2中,显示了空间位置以及雷达反射的自我运动补偿的多普勒速度,并描述了在每个MSG模块之后输入点云的子采样。在图中未显示为MSG 模块中的每个点生成的高维特征向量。场景的摄像机图像如图3所示。

对于语义分割,子采样点云的信息被传播到全输入点云。

图2 摘录一个示例雷达点云。绘制空间坐标以及自我运动补偿的多普勒速度。从左到右:输入层处的点云和第一,第二和第三MSG 模块之后的子采样点云。数据累计超过500毫秒。该场景的摄像机图像可以在图3中找到。

图3 与图2相同场景的摄像机图像

这一任务由特征传播模块执行:k层MSG模块之后是k层FP模块,这些模块将较少填充的点云的特征反复传播到下一个较高层。对于密集点云中的每个点pi,计算出稀疏点云中三个最近邻居的特征向量的加权平均值,并在将该特征向量通过一组卷积层后,分配给该点pi。从 MSG 模块的相应级别跳过连接改善了特征的传播。

我们的网络结构如图4所示,其中还定义了MSG 模块的参数值。

B.     数据集

在本文中,我们仅使用由两个不同的实验车辆,即车辆A和车辆B,所收集的真实世界的数据。车辆A配备了四个77GHz的传感器,分别安装在车辆的两个前角和侧面。仅使用传感器的近程模式,以便探测100米范围内的目标。每个传感器的视场角为±45°。

车辆B 配备了八个雷达传感器,其规格与车辆A 的传感器相同。这八个传感器安装在汽车的四个角上以及汽车的左前,右前,后左和右后侧。

车辆A(B)的数据集包含了超过4.5小时(6.5分钟)的驾驶测量,也就是说,收集了超过1亿(500万)的雷达反射,其中300万(100 000)属于6200(191)个不同的移动物体。所有属于同一物体的反射都被手动分组,并使用以下类别中的标签进行注释:汽车、卡车、行人、行人组、自行车和静态。表格 I 中显示了六个类别的反射分布 与我们以前的工作不同的是,杂点没有被作为一个额外的类别来研究,而是被视为静态,因为在这项工作中,我们的目标是仅从原始点云中检测和分类真实的动态物体。我们以前的分类器不得不处理并非来自真实物体的聚类和特征向量,因此有必要对垃圾类和真实物体进行区分。这些错误创建的聚类和特征向量是由不完善的预处理步骤造成的,我们在此尝试避免这些步骤。

表 I 六个类别的雷达反射分布

C.     训练和测试

在我们进行实际训练之前,必须修复超参数。必须确定MSG模块的数量、样本点Nsample的数量、每个MSG模块中的邻域数量及其各自的半径r,每个样本点的邻域点Nneigh数量,以及每个模块中卷积层的数量和大小。通过检查随机选择的验证集上的合理配置并更改这些配置以进一步优化网络性能来完成。由于参数空间的巨大规模和相应的计算成本,对参数空间进行完整的采样是不可行的。

图4描述了最终选择的、性能最好的架构。

图4 我们网络的结构。红色箭头表示跳过的连接,通过这些连接,从MSG模块中提取的特征被传递到相应层的FP模块中。三个MSG模块的内核大小 为[[32, 32, 64], [64, 64, 128]], [[32, 32, 64], [64, 64, 128]]和[[64, 64, 128], [64, 64, 128]] 。

为了评估,我们进行了五重交叉验证。也就是说,数据集被分成五个集合折叠,每个折叠占20%的数据,每折叠用于测试一次,其余四个折叠作为训练数据使用。

只有车辆A的数据被用于训练。来自车辆B的测量数据仅用于检查我们分类器的泛化能力。该网络使用随机梯度下降法和基于交叉熵的损失函数以及Adam优化方案进行训练。我们使用了中公布的张量流源代码的一部分。

由于静态和动态数据之间的巨大不平衡(大约9700万到300万),静态类的损失函数的权重被降低,这样优化就不再把几乎所有的点分配给静态类。

训练历时30个周期,在此期间进行了数据增强:随机噪声被应用于每个特征维度,从而改变了反射的空间位置以及测量的RCS 值和自我运动补偿的多普勒速度。速度特征仅针对动态对象的反射进行了修改。此外,为每个动态对象生成一个随机数q∈[0,0.3],并且在该时期中以概率q 省略该对象的每个反射,从而改变动态对象的形状和密度。

网络本身对单个反射的记录时间没有概念,但在训练过程中,我们为网络提供了长度为T=500毫秒的时间窗口,使得点云变得更加密集并且可以考虑每个对象更多的反射。在最早的测量时,不同时间段的反射被转换成车辆坐标系。

点云的输入大小固定为3072次反射。如果在500毫秒长时间窗口内测量到超过3072次反射,则去除静态类别的反射,如果测量的反射少于3072次,则对一个反射重新取样到所需的次数。由于网络结构中的最大汇集层,这种过采样并不会改变语义分割的结果。

在测试过程中,接下来的3072次反射通过网络传递,按测量时间排序,因此不需要过采样或欠采样。

训练是在配备了Nvidia GeForce GTX 1070 GPU的Linux工作站上完成的。

4 结果

基于6×6混淆矩阵和宏观平均F1分数(下文仅称为F1分数)对我们的系统进行了评估。F1分数对应于精度和召回率的谐波平均值[24]。在宏观平均中,在宏观平均中,每个类别对总分的贡献是相等的——与类别的计数无关——因为每个类别都计算一个单独的F1分数,然后对这六个值进行平均。

A.     最佳性能架构

我们首先展示了使用我们性能最好的架构获得的结果。我们仅使用来自车辆A 的数据进行五重交叉验证。除了两个空间坐标x和y(在车辆坐标系中), 我们还用自我运动补偿的多普勒速度和RCS值来丰富输入点云。因此,我们提供了一个四维的点云作为输入。

由此产生的混淆矩阵如图5所示。

图5 用图4中描述的网络结构进行5重交叉验证后的相对混淆矩阵。点云的输入特征:x, y, vˆr , σ。

不足为奇的是,带有静态标签的多数类显示出最高的真阳值。然而,我们应该知道,区分属于移动或非移动物体的反射,远比在多普勒速度上设置一个阈值,并将速度低于该阈值的每个反射归类为静态反射要难得多。在现实场景中,许多不属于运动物体的反射显示出非零的自我运动补偿的多普勒速度,这是由里程表误差、传感器偏差、时间同步误差、镜像效应或其他传感器伪影引起的。此外,多普勒速度为零的反射不一定属于静态物体,因为旋转的汽车车轮底部或行人的身体部位(沿行走方向垂直移动)也可能不显示径向速度。

汽车类的物体被分类为次优,再次是行人组。卡车类的对象经常与汽车混淆。有两个原因可以解释这种混淆:第一,在很远的距离上,每个物体只能测量到很少的反射,因此很难推断物体的空间范围。其次,汽车和卡车实例之间的转换相当顺利的,因为,例如,大型SUV与小型卡车很难区分。

从图中可以推断出的另一个显著行为是行人和行人组之间的高度混淆。这种行为可能是由我们的训练数据引起的,因为对于人类注释员来说,有时可以将附近两个行人的反射指定给个人,从而创建两个行人的实例,但有时这不容易,而且时间要求也太高。使所有反射都标记为行人组的单个实例。因此,除了复杂的任务本身之外,网络还必须与地面真实数据的不一致性作斗争。对于许多驾驶任务来说,了解某一区域是否有一个或两个行人并不重要,这样两个等级就可以合并在一起,从而产生超过91%的真实阳性率。

由于数据集高度不平衡,只检查归一化为类计数的相对混淆矩阵可能会产生误导。因此,我们也在图6中展示了具有绝对值的混淆矩阵。这种可视化强调了许多假阳性动态对象是由网络创建的(图中的最后一行)。这种效果对于汽车类来说是最明显的:只有68%的预测汽车反射属于动态物体(参见图6的第一列)。然而,对于汽车应用来说,动态物体的高假阳性率可能比高假阴性率更可取。降低静态类的损失函数中的权重会导致更高的假阳性值,所以这个参数允许我们在假阳性和假阴性之间进行调整。

图6 用图4中描述的网络结构进行5重交叉验证后的绝对混淆矩阵。点 云的输入特征:x, y, vˆr , σ。

应该注意的是,动态反射和静态反射之间的混淆百分比(图5中混淆矩阵的最后一列)并不代表被忽略的对象的百分比。如果动态物体只有一个反射被正确分类,但同一物体的其他反射被分类为静态的,即使假阴性计数增加,该物体仍然被检测到。

B.     输入特征的变化

为了更深入地了解哪些信息对网络有用,我们用三组不同的输入特征 f1 = x, y, vˆr  , f2 =  x, y, σ  , f3= x, y重复五重交叉验证,并将结果与原始特征 f0  =  x, y, vˆr, σ进行比较。在表II中,显示了每个输入配置的F1分数。从这个表中可以看出以下几点。呈现给网络的输入特征越多,性能就越高。在输入特征中加入每个反射的RCS值会使F1分数小幅增加(从0.7303到0.7425),而加入自我运动补偿的多普勒速度则影响更大,使得分数几乎增加了0.1。尽管多普勒速度作为一个特征,有一定的重要性,但有趣的是,对于输入特征f2和f3,网络的性能仍然远远高于随机猜测。这意味着反射的空间环境对网络来说是非常有表现力的特征,并为分类步骤奠定了基础,然后再利用速度和RCS值的附加特征进行分类。

表 II 不同输入特征的分类分数

C.     测试车辆B的数据

到目前为止,只应用了车辆A的数据进行训练和测试,现在,我们使用一个仅用车辆A的数据进行训练的网络,来预测车辆B所测得的反射的类别。这种设置的差异在于两个方面。一方面,车辆B配备了8个而不是4个雷达传感器,因此提供了车辆周围的360°视野,不同于车辆A的主要是正面和侧面的设置。另一方面,车辆A的数据是在德国城市和乡村道路上收集的,而车辆B只在美国收集数据。不同的道路和街道设计以及平均较大的汽车对算法构成了挑战。

在这些新数据上应用我们性能最好的网络,其F1分数为0.46,明显低于我们用五重交叉验证得到的数值。如果测试车辆前部的四个传感器与后部的四个传感器独立评估,则F1分数可增加到0.48。

由于车辆B的数据集与车辆A的数据集相比非常小,所以我们必须谨慎地解释结果。然而,很明显,改变传感器的设置对分类器的性能有一定的影响。

D.      与以往方法的比较

在前面的工作中,我们使用DBSCAN进行聚类,并使用LSTM网络进行分类,以生成特征向量序列的类标签。此前,我们对在地面真实集群上生成的特征向量进行了性能测量。在本文中, 这种方法的评估是通过将特征向量的类标签投影回集群的原始反射来完成的。

我们在同一个数据集上训练LSTM网络和我们的新方法,并在相同的测试集上评估这两种方法。为了进行公平的比较,LSTM不是在地面真实聚类的特征向量上进行测试的,而是在点云上应用DBSCAN得到的聚类中产生的特征向量上进行。与我们当前的方法不同,如果特征向量来自不属于真实对象的聚类,LSTM还学习将其分类为垃圾。如果LSTM拒绝这样一个特征向量,我们就会在比较中把相关的点当作静态的。

我们的新方法在这个选定的测试集上达到了0.734的F1分数,而DBSCAN+LSTM的方法只得到了0.597分。新方法创建的假阳性动态对象更少,并且在所有类中具有更高的真阳性计数。最吸引人的特点是,被错误地认为是静态的反射物少了三倍,因此可能有更少的物体被忽略了。源自动态物体的反射与来自静态类的反射的混淆不仅源于LSTM的不良分类结果,而且主要是由于聚类不足,使得LSTM无法对某些反射进行分类。

E.    可视化

在一个场景的前向传递过程中,可视化不同网络层的输出是很有用的。图2显示了一个示例场景在输入级和三个MSG模块之后的空间位置以及多普勒速度。

不同层的卷积核很难可视化,因为只执行1×1的卷积,因此不存在滤波器本身的有意义的图像。然而,我们可以通过网络传递不同的场景,并在最后一个卷积层之前收集网络输出。在这个输出中,我们从每个类中随机选择1000个点,以及它们的128维特征向量,并通过t-SNE降维算法传递这个高维点云,得到一个二维点云。这在图7中得到了体现,在图7中可以观察到可以看到汽车、卡车、自行车和静态类别的四个不同的集群。根据图5中的混淆矩阵,来自行人或行人组的反射没有被很好地分开。汽车和自行车类的反射丰富了点云的中心,显示了那些难以分类的点。最后,图8显示了与图2相同的场景,但现在显示的是预测类标签,而不是多普勒速度。所有三个类别行人、卡车和汽车都被正确识别。然而,最右侧行人后面的一些杂乱被错误地归类为行人组,汽车后面的一些反射也被错误地标记到汽车类。尽管如此,场景的语义信息还是得到了很好的表达。

图7 我们网络中倒数第二卷积层的128维特征向量的二维嵌入。用非线 性t-SNE方法进行嵌入。

图8 对一个实例场景的每个反射的预测类别标签。界限框是手动添加的, 用于关联点云和摄像机图像。

5 结论和展望

本文以到PointNet++为分类算法,给出了雷达数据语义分割的结果。我们展示出了我们的新方法优于我们以前的方法,后者包括两个现已过时的预处理步骤,即聚类和特征生成。此外,我们还证明了利用RCS 值和自我运动补偿多普勒速度可以提高分类结果,其中多普勒速度对分类结果的影响更大。

在今后的工作中,我们将把重点放在两个不同的方面。一方面,将时间信息整合到网络中似乎是有益的。物体的时间演化是一种描述性特征,至少应该改善静态和动态类实例之间的区别。实现这一目标的一个可能的方法是将一个递归的神经网络结构集成到PointNet++。一个更简单的方法是将测量时间戳作为一个额外的功能来呈现。另一方面,需要对语义实例分割进行扩展。目前,我们只为每个反射提供类别标签,而不了解该反射所属的对象实例的概念。因此,我们不知道一个场景中存在多少不同的对象,而只知道属于一个对象类别的反射量。类感知聚类算法是从反射中生成实例的一种可能性,但是结合实例学习和类关联可能会产生更高的总体性能。