paint-brush
您所需要的只是激光雷达注释经过@skprot
674 讀數
674 讀數

您所需要的只是激光雷达注释

经过 Sayan Protasov6m2024/04/27
Read on Terminal Reader

太長; 讀書

点云和图像数据的融合,实现摄像机图像中路面的精确分割。
featured image - 您所需要的只是激光雷达注释
Sayan Protasov HackerNoon profile picture
0-item
1-item


图像分割在准确识别和描绘图像中的感兴趣对象方面起着至关重要的作用。在自动驾驶中,计算机视觉算法用于解决路面分割任务。这项任务具有挑战性,因为您不能只依赖一种类型的图像——摄像头和激光雷达都有其优点和缺点。例如,激光雷达提供准确的深度信息,但它们通常会生成稀疏的点云,因此它们无法精确分割场景中的物体。当它们面对透明或反射表面时,它们可能会产生扭曲的点云。摄像头无法捕捉深度,但它们提供有关物体形状、纹理和颜色的完整信息。这让我们想到了一个简单的想法,即在训练二维道路分割时有效融合点云和图像可能会利用每个数据域的优势。问题是这种融合需要对两个数据集进行劳动密集型注释。那么,我们能否使数据注释更有效率,以享受多传感器设置对道路分割的好处?


我目前在埃沃卡戈。该公司提供货物运输服务,并生产自己的自动驾驶电动汽车。作为一名深度学习工程师,我专门开发用于自动驾驶汽车自动驾驶仪的 3D 检测系统。因此,在 Evocargo,我们决定找到一种方法来提高路面分割的效率,以保持较高的预测质量并降低注释成本。经过一段时间的研究和实验,我和我的同事创建了一种方法,可以有效地利用激光雷达注释直接在 RGB 图像上训练图像分割模型。因此,投影到图像上并在进一步训练中用作地面真实蒙版的激光雷达点提供了可比的图像分割质量,并且允许在没有标准注释的 2D 蒙版的情况下训练模型。



在这篇文章中,我将逐步描述我们的方法并展示一些测试结果。如果你想深入了解我们的工作、其他方法研究和我们的测试结果,请参阅我们的文章“激光雷达注释就是你所需要的”在 IEEE Access 期刊上。本文由已发布的GitHub 存储库支持,其中包含方法实现、处理过的数据集和供未来研究使用的代码库。如果您发现我们的工作对您的研究有用,请考虑给它一个星号 ⭐ 并引用该论文。


4 步训练分割模型

我们的方法的总体流程由四个主要部分组成:点云道路注释、数据准备、掩蔽损失和分割模型本身。


我们的方法的总体方案


首先,我们在点云域中获取带有道路注释的数据。之后,我们使用同质变换和相机参数投影点。然后,使用投影点,我们得到道路地面真实掩码,用于计算损失,并添加随机噪声。来自相机的图像由分割模型处理。Masked 损失利用了上一步的预测和掩码,这允许使用稀疏地面真实数据训练模型。最后,经过模型训练,我们得到了一张带有分割道路的图像。训练过程以及 Masked 损失允许将投影地面真实与传统的 2D 掩码混合,这使得该方法在数据方面具有灵活性。


现在让我们仔细看看每一个部分。


1 点云数据标注


要在训练期间使用激光雷达数据,我们需要对点云进行语义分割注释。这可以使用开源点云注释工具手动完成,例如语义分割编辑器或者使用一些算法方法。我的同事在他的分步指南中描述了一种这样的路面检测方法如何在 1 小时内注释 100 次激光雷达扫描。专门用于道路注释的算法方法可以实现完全无需手动注释,但需要针对特定数据进行微调。在 Evocargo,我们使用这两种方法。对于简单区域,道路通过算法进行注释,而对于复杂路段,则通过手动进行注释。


2 数据准备


使用齐次变换将获得的点云投影到图像平面上,以获得具有我们所需类标签的图像分割掩模,在我们的例子中,它是一条道路。对于这种投影,我们使用同步的相机和激光雷达帧,并附带相机参数,以及从激光雷达到相机帧的变换矩阵。为了将激光雷达帧坐标中的齐次点x = (x, y, z, 1)ᵀ投影到图像平面上的点y = (u, v, 1)ᵀ ,我们使用以下方程:


经过转换后,我们会得到图像上的点作为像素掩码,既包括道路类别,也包括来自激光雷达扫描的所有其他点。我们需要其他激光雷达扫描点,因为激光雷达点大多位于图像的底部,而图像的顶部根本没有点,这可能会导致该区域的预测不准确。为了消除这种影响,我们在掩码的上半部分(负类)添加随机点,以平衡我们将在其中计算损失的点的分布。


投影道路点和损失计算掩码


3 掩蔽损失


我们方法的一个关键组成部分是在模型训练期间应用掩蔽损失函数。这种方法消除了激光雷达得出的地面实况掩蔽中固有的稀疏性。与考虑整个图像掩蔽来计算误差的传统损失函数不同,掩蔽损失仅关注激光雷达点所在的区域。这种有针对性的损失计算可确保模型的学习集中在相关区域,利用激光雷达提供的信息来提高道路分割的准确性。换句话说,我们通过测量点网格上的预测误差来强制模型学习道路分割。这可以比作使用快门眼镜(快门遮光罩)看图像。

快门眼镜看街景


每幅图像的掩蔽损失可以这样表示:

掩蔽损失是通过对训练图像应用二元掩码来实现的。该掩码勾勒出激光雷达点所在的区域,并将其投影到图像平面上。在训练阶段,仅针对掩码下的像素计算损失,从而有效地忽略了图像中未标注的大部分。这种方法不仅提高了训练过程的效率,而且还缓解了激光雷达数据稀疏性所带来的问题。


4 模型训练


最后一步是在创建的数据集上训练分割模型。训练过程适用于任何分割模型,在我们的研究中我们使用了 PSPNet。在这个阶段,一切都取决于数据的质量、数量和可用的计算能力。


测试结果令人鼓舞

我们在各种数据集上测试了我们的方法,包括开源数据集,例如 Perception Waymo Open Dataset 和 KITTI-360 数据集。每次我们都进行一组三项实验:仅使用 2D 道路地面实况、仅使用投影点作为地面实况以及混合使用这些类型的地面实况。道路分割(IoU 的百分比)结果看起来很有希望:


实验

在 KITTI-360 数据集上进行训练

使用 Waymo 数据集进行训练

仅限 2D(基线)

92.3

96.1

仅限投影 3D

89.6

94.7

混合 2D + 投影 3D

92.7

96.3


这些数字意味着,如果您只有激光雷达分割,并且不想在 2D 图像注释上花费额外的资源,那么没关系。与仅在 2D 图像蒙版上进行训练相比,质量下降可能微不足道。如果您有资源来注释来自两个传感器的数据,那么只需在训练过程中结合这两种类型的注释,即可获得指标的提升。


总而言之,我们在研究期间观察到的方法的好处包括:


  • 神经网络在图像分割任务中的高质量性能,
  • 注释来自多种传感器的数据所需的资源更少,
  • 灵活适应不同的图像类型和分割任务。


准确分割具有不同尺寸障碍物和其他车辆的道路。这些结果是根据我们自己的专有数据训练的模型获得的。


该方法的作者