摘要–雷达点云的语义分割是雷达数据处理中的一项新的挑战。我们演示了如何执行这项任务,并提供了大量人工标记雷达反射数据集的结果。与以前的方法不同,从聚集反射生成的特征向量被用作分类器的输入,现在整个雷达点云被用作输入,并获得每个反射的类概率。因此,我们不再需要聚类算法和手动选择的特性。
介绍
在过去几年中,图像分析从仅仅将图像中的中心对象的分类和对象或对象部分的检测转移到单个组合任务:语义分割。语义分段描述了将类标签或类概率向量分配给图像中的每个像素的任务。语义实例分割通过区分具有属于物理上不同的对象的相同类标签的像素来增强语义分割,使得除了按像素分类之外,还发生对对象实例的分组。
语义分割通常由深度卷积神经网络[1]完成,它通常显示编码器 - 解码器结构[2],[3]。矩形网格引起像素之间的距离和邻域关系,并且这些关系被具有大于一个像素的空间扩展的卷积核利用。因此,如果将相机用作传感器,这些方法可以正常工作。对于自动驾驶汽车,雷达和激光雷达传感器补充相机以保持功能安全。
在本文中,我们将对雷达数据进行语义分割,即我们为每个测量的反射分配一个类别标签。我们专注于动态物体,并与六个不同的类别合作:汽车,卡车,行人,行人组,自行车和静态物体。在应用恒虚警率(CFAR)算法之后获得的雷达检测构成点云,其中点云P被定义为一组N∈N个点pi∈Rd,i = 1,…,N,其中点云中的点的顺序无关紧要。
对于每次反射,测量两个空间坐标(径向距离r和方位角φ),自我运动补偿多普勒速度 (v_r ) ̂ 和雷达截面(RCS)σ。
因此,必须在语义分割任务中处理4维点云。雷达反射的空间密度会急剧变化,因此大规模网格映射方法在计算上是不可行的。因此,不能应用用于相机图像的通常网络结构。
可以从图1中读出不需要类似图像的输入的算法的必要性,其中显示在200ms的时段期间从四个雷达收集的雷达检测。
在该图中,可以看到没有测量的大区域以及具有大量反射的区域。整个场景的网格地图具有大约2000个单独的反射,必须覆盖至少150米×200米的大空间区域,甚至在非常低的分辨率下,单元尺寸为1m×1m,最多6%的像素在网格中将具有非零值。
图1 雷达点云积累超过200毫秒。突出了三种不同车型的反射。仅显示完整视野的摘录
因此,我们使用PointNet ++ [4]作为我们的分割算法的基础。PointNet ++能够直接在点云上工作,它最初设计用于处理来自激光扫描仪的3D空间数据。在本文中,我们修改了体系结构以处理两个空间维度和另外两个特征维度。
在之前的工作[5]中,对特征向量进行了分类,而特征向量又是从聚类雷达反射中获得的。通过我们的新方法,我们避免了这两个预处理步骤:将雷达目标分组到群集,并且不再需要从这些群集生成预定义的特征向量。我们表明,我们的新方法大大优于以前的方法。
本文的其余部分结构如下:在第二部分,我们评论相关工作和该主题的其他方法。之后,我们将更详细地描述我们的网络架构,并解释我们的培训和测试程序。
在第四部分,我们显示我们的结果并将它们与以前的方法进行比较。最后,我们展望未来的工作
相关工作
语义分割是一种流行的方法,当摄像机用作传感器时,大多数算法都是针对图像数据定制的。
完全卷积网络[1]的引入启发了许多类似的,后来更先进的神经网络结构,如SegNet,[2] U-Net [6],R-CNN [7]及其后继者Fast R-CNN [8] ,更快的R-CNN [9]和掩模R-CNN [3]。
为了将这些技术应用于雷达数据,需要进行一些预处理。网格图提供了一种将空间非均匀雷达反射转换为图像数据的方法。
测量的反射随时间积分并插入地图中的相应位置。使用这种方法可以创建不同的地图,例如,占用网格图,描述网格占用的后验概率,或RCS图,提供有关每个网格中反射的测量RCS值的信息[10] - [13]。这种方法适用于静态物体,因为只需要考虑自我运动(而不是物体的速度和轨迹),就可以在地图中的正确位置插入不同时间的雷达反射。
对于在此工作中考虑的动态对象,需要精确的扩展目标跟踪算法,或者将对象的动态视为特征,以便移动对象在地图中创建扩展的反射尾部。另一个困难是对于稀疏数据,网格映射不是有效的,因为需要潜在的大网格来显示相对较少的测量。
据我们所知, 在移动物体的汽车雷达数据之前没有进行语义分割。分类仅在小数据集或大量模拟数据上进行[14] - [19]。
方法
A.网络结构
齐等人提供PointNet [20]和PointNet ++ [4]方法直接使用点云,因此不需要先前的映射步骤。他们对通过从室内场景的3D扫描的网格中采样点获得的3D点云执行语义分割。
我们使用他们的架构作为我们方法的基础。然而,我们在实验中使用的雷达数据在以下方面与3D室内数据不同。
首先,每个雷达反射仅包含两个而不是三个空间坐标,但是利用自我运动补偿的多普勒速度和RCS值的两个附加值,整个点云P的每个点pi是四维的。其次,我们数据的密度和采样率 差异更大。
来自斯坦福3D语义分析数据集[21]的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相同场景的摄像机图像。
该任务由(FP)特征传播模块执行:k 层MSG 模块之后是k 层FP 模块,其重复地将较少填充的点云的特征传播到下一个较高层。对于密集点云中的每个点pi , 计算稀疏点云中三个最近邻居的特征向量的加权平均值,并且- 在将该特征向量通过一组卷积层之后-
然后分配给点pi 。从 MSG 模块的相应级别跳过连接改善了特征的传播。我们的网络结构如图4所示,其中还定义了MSG 模块的参数值。
B. Data set
在本文中,我们仅使用由两个不同的实验车辆,车辆A和车辆B收集的真实世界数据。
车辆A配备有四个77GHz传感器,其安装在车辆的两个前角和侧面。仅使用传感器的近距离模式,以便检测到最大100米范围的目标。每个传感器的视场为±45°。
车辆B 配备了八个雷达传感器,其规格与车辆A 的传感器相同。这八个传感器安装在汽车的四个角上以及汽车的左前,右前,后左和右后侧。
车辆A(B)的数据集包含超过4.5小时(6.5分钟)驾驶的测量值,即收集超过1亿(500万)雷达反射,其中3 百万(100 000)属于6200(191) )不同的移动物体。
属于同一物理对象的所有反射都手动组合在一起,并使用以下类别中的标签进行注释:汽车,卡车,行人,行人组,自行车和静态。
表格中显示了六个类别之间反射的分布。I. 与我们之前的工作[5]相比,杂点不是在额外的类中检查的,而是作为静态的处理,因为在这项工作中,我们的目标是仅从原始点云中检测和分类真实的动态对象。以前的分类器必须处理不是来自真实对象的聚类和特征向量,因此必须区分垃圾类和真实对象。这些错误创建的聚类和特征向量是来自不完善的预处理步骤的工件,我们在此尝试避免这些步骤。
C. Training and Testing
在我们进行实际训练之前,必须修复超参数。各种参数都必须定义。通过检查随机选择的验证集上的合理配置并更改这些配置以进一步优化网络性能来完成。
由于该空间的巨大尺寸和伴随的计算成本,参数空间的完整采样是不可行的。
最终选择的和性能最佳的架构如图4所示。
为了评估,进行了五重交叉验证。也就是说,数据集被分成五个集合折叠,每个折叠20%的数据,并且每个折叠一次用于测试,而剩余的四个折叠用作训练数据。仅使用车辆A 的数据进行训练。来自载体B 的测量仅用于检查我们的分类器的泛化能力。网络使用随机梯度下降和基于交叉熵的损失函数和Adam 优化方案进行训练[22]。使用[23] 中公布的张量流源代码的一部分。
由于静态和动态数据之间存在很大的不平衡(大约9700万到300万),减小静态类的损失函数的权重,这样优化就停止了 向静态类分配几乎所有的点
训练在30个时期内完成,在此期间发生数据增加:对每个特征维度应用随机噪声,从而改变反射的空间位置以及测量的RCS 值和运动补偿的多普勒速度。速度特征仅针对动态对象的反射进行了修改。另外,对于每个动态对象,生成随机数q∈[0,0.3], 并且在该时期中以概率q 省略该对象的每个反射,从而改变动态对象的形状和密度。
网络本身没有关于单个反射的记录时间的概念,但是在训练期间,我们向网络提供了长度为T = 500ms的时间窗口,使得点云变得更加密集并且可以考虑每个对象更多的反射。在最早的测量时,不同时间步的反射被转换成车辆坐标系。点云的输入大小固定为3072次反射。如果在500毫秒长时间窗口内测量到超过3072次反射,则去除静态类别的反射,如果测量的反射少于3072次,一个反射被重新取样所需的次数。由于网络结构中的最大池层,这种过采样不会改变语义分段的结果。
在测试期间,接下来的3072次反射通过网络传递,按测量时间排序,因此不需要过采样或欠采样。
培训是在配备Nvidia GeForce GTX 1070 GPU的Linux工作站上完成的。
结果
基于6×6混淆矩阵和宏观平均F1得分(从现在开始仅称为F1得分)对我们的系统进行了评估。F1分数对应于精度和召回的调和平均值[24]。在宏观平均中,在宏平均中,每个类对总分的贡献是相等的——与类的计数无关——因为每个类都计算一个单独的F1分数,然后对这六个值进行平均
A. Best Performing Architecture
我们首先展示了用我们最好的体系结构获得的结果。我们仅使用来自车辆A 的数据进行五次交叉验证。除了两个空间坐标x和y(在车辆坐标系中)外,我们用自运动补偿多普勒速度和RCS 值来丰富输入点云。因此,提供了一个四维点云作为输入。
由此产生的混淆矩阵如图5所示。
毫不奇怪,标签静态的大多数类显示最高的真正值。然而,区分属于移动或非移动物体的反射比在多普勒速度上设置一个阈值并将速度低于该阈值的每个反射分类为静态反射要困难得多。在现实场景中,许多不属于运动物体的反射显示出非零 自我运动补偿多普勒速度,这是由里程表误差、传感器偏差、时间同步误差、镜像效应或其他传感器伪影引起的。此外,多普勒速度为零的反射不一定属于静态物体,因为旋转的汽车车轮底部或行人的身体部位(沿行走方向垂直移动)也可能不显示径向速度。
类车的对象被分类为次优,其次是行人组。卡车类的成员经常与汽车混淆。有两个原因可以解释这种混淆:第一,在高距离处,每个物体只能测量很少的反射,因此很难推断物体的空间范围。其次,汽车和卡车实例之间的转换相当顺利,因此,大型SUV 很难与小型卡车区分开来。
从图中可以推断出的另一个显著行为是行人和行人群体之间的高度混淆。这种行为可能是由我们的训练数据引起的,因为对于人类注释员来说,有时可以将附近两个行人的反射指定给个人,从而创建两个类行人的实例,但有时这不容易,而且时间要求也太高。使所有反射都标记为类行人组的单个实例。因此,除了一项复杂的任务本身,网络还必须与地面真实数据的不一致性作斗争。对于许多驾驶任务来说,了解某一区域是否有一个或两个行人并不重要,这样两个等级就可以合并在一起,从而产生超过91%的真实阳性率。
由于数据集高度不平衡,仅检查与类计数标准化的相对混淆矩阵可能会产生误导。因此,我们也在图6中给出了带有绝对值的混淆矩阵。这种可视化强调了许多假阳性动态对象是由网络创建的(图中的最后一行)。这种效果对于类车来说最明显:只有68%的预测车反射属于动态对象(参见图6中的第一列)。然而,对于汽车应用来说,动态物体的高假阳性率可能比高假阴性率更为理想。减少静态类反射的损失函数中的权重会导致更高的误报正值,因此该参数允许我们在误报正值和误报负值之间进行调整。
应注意,为动态反射和静态反射之间的混淆给出的百分比(图5中混淆矩阵的最后一列)不代表被忽略对象的百分比。如果只有一个动态对象的反射被正确分类,但同一对象的其余反射被分类为静态反射,则即使增加了假负计数,仍会检测到该对象。
B. Variation of the Input Features
D. Comparison with Previous Approach
在前面的工作[5]中,我们使用dbscan[25]进行聚类,并使用lstm网络[26]进行分类,以生成特征向量序列的类标签。
之前,我们测量了在地面真值簇上生成的特征向量的性能。在本文中,这种方法的评估是通过将特征向量的类标签投影回集群的原始反射来完成的。
我们在相同的数据集上训练LSTM网络和新方法,并在相同的测试集上评估这两种方法。为了进行公平比较,LSTM不是在地面真值聚类的特征向量上进行测试,而是在点云上应用DBSCAN获得的聚类生成的特征向量上进行测试。与我们当前的方法不同,LSTM还学习将特征向量分类为垃圾,如果它们来自不属于真实对象的集群。如果LSTM拒绝这样一个特征向量,我们在比较中将相关的点视为静态的。
我们的新方法在这个选定的测试集上达到了0.734的F1分数,而dbscan+lstm方法只得到0.597的分数。新方法创建的假阳性动态对象更少,并且在所有类中具有更高的真阳性计数。最吸引人的特征是,错误地认为反射减少三倍是静态的,这样可能会忽略更少的物体。动态对象反射与静态类反射的混淆不仅源于LSTM的分类结果不好,而且主要是由于聚类不足,使得LSTM无法对某些反射进行分类。
E. Visualizations
在一个场景的前向传递过程中,可视化不同网络层的输出是很有用的。图2显示了一个示例场景在输入级和三个MSG模块之后的空间位置以及多普勒速度。
不同层的卷积核很难可视化,因为只执行1×1的卷积,因此滤波器本身的有意义图像不存在。然而,我们通过网络传递不同的场景,并在最后一个卷积层之前收集网络输出。从这个输出中,我们从每个类中随机选择1000个点,以及它们的128维特征向量,并通过t-sne降维算法[27]传递这个高维点云,得到一个二维点云。这在图 7,这里可以观察到四个不同类别的汽车、卡车、自行车和静电。根据图5中的混淆矩阵,来自行人或行人群体的反射没有很好地分开。
汽车和自行车类的反射丰富了点云的中心,显示了难以分类的点。
最后,图8显示了与图2相同的场景,但现在显示的是预测类标签,而不是多普勒速度。所有三个行人、卡车和汽车都被正确识别。然而,最右侧行人后面的一些杂乱被错误地归类为行人组,汽车后面的一些反射也被错误地标记为汽车类的成员。尽管如此,场景的语义信息还是得到了很好的表达。
五、结论和展望
本文以pointnet++为分类算法,给出了雷达数据语义分割的结果。我们表明,我们的新方法优于我们以前的方法,其中包括两个现在已经过时的预处理步骤,即聚类和特征生成。此外,我们还证明,利用RCS 值和自我运动补偿多普勒速度可以提高分类结果,多普勒速度对分类结果的影响更大。
在今后的工作中,我们将把重点放在两个不同的方面。一方面,将时间信息整合到网络中似乎是有益的。对象的时间演化是一种描述性特征,至少应该改善静态和动态类实例之间的区别。实现这一目标的一个可能的方法是将一个递归的神经网络结构集成到PointNet++。一个简单的方法是将测量时间戳作为一个附加特性来表示。另一方面,需要对语义实例分段进行扩展。目前,只为每个反射提供类标签,而不了解此反射所属的对象实例。因此,我们不知道场景中存在多少不同的对象,但只知道属于对象类的反射量。类感知聚类算法是从反射中生成实例的一种可能性,但是结合实例学习和类关联可能会产生更高的总体性能。