【基于激光雷达的路沿检测用于自动驾驶的真值标注】

文章目录

    • 概要
    • 主要贡献
    • 内容概述
    • 实验
    • 小结

概要

论文地址:https://arxiv.org/pdf/2312.00534.pdf

路沿检测在自动驾驶中扮演着重要的角色,因为它能够帮助车辆感知道可行驶区域和不可行驶区域。为了开发和验证自动驾驶功能,标注的数据是必不可少的。然而,目前公共数据集中带有标注的点云路沿的数量非常有限。

本文提出了一种从激光雷达传感器捕获的一系列点云中检测3D路沿的方法,主要包括两个步骤。首先,我们使用分割深度神经网络在每个扫描中检测路沿。然后,我们通过车辆的里程数据对重建的点云进行序列级处理,以估计3D路沿。

通过对这些路沿的3D点云进行处理,我们按照ASAM OpenLABEL标准获取结构化的折线信息。这些检测结果可以用作标记流水线中的预标注,从而有效生成与路沿相关的地面实况数据。

我们通过实验证明了这种方法的有效性。实验中,我们让不同的人工标注员对一组基于LiDAR的序列数据进行标注,其中一部分数据带有我们自动生成的预标注,另一部分数据没有。结果显示,由于我们的检测方法,手动标注时间减少了50.99%,同时保持了数据质量水平。

主要贡献

在自动驾驶技术中,路沿检测对于全面了解车辆周围环境至关重要。路沿是道路边界的一部分,它将可行驶区域和不可行驶区域分隔开来,在自动驾驶任务(比如自动停车或路径规划)中扮演着重要的角色。

路沿的检测对于验证许多先进驾驶功能也非常重要,因为它们确定了潜在的感兴趣区域(比如停车位和人行道)。然而,带有路沿标注的数据虽然必不可少,但却非常有限。

为了减轻手动标注的任务,我们提出了一种方法,即提供3D路沿的预标注,可以融入到像[3]这样的标注工具中,实现半自动标注。

我们的方法包括两个阶段:首先,我们使用深度神经网络(DNN)对每个扫描进行粗略的路沿检测。然后,通过一个后处理步骤,对扫描级别的检测进行优化,并为整个输入序列提供路沿的预标注,这可以作为标注工具的输入,并表示为符合ASAM OpenLabel标准的折线。

因此,本文的主要贡献包括:

提供一种方法,以规范化的输出格式提供LiDAR点云序列的3D路沿检测,可用于标注工具。
开发适用于从LiDAR点云获得的2D俯视图(BEV)图像的扫描级路沿检测器。
提出一个后处理方法,将扫描级别的路沿检测转换为序列级别的三维折线。
验证所提方法,将人工标注员获取路沿地面实况数据所需的标注时间减少了50.99%。

内容概述

我们的方法包括三个主要阶段,如图1所示。首先处理点云以获得序列不同扫描的BEV(俯视图)点云表示。其次使用深度神经网络(DNN)推断每个扫描的路沿。第三步应用序列级处理步骤来获得3D路沿估计。这个最后的处理包括:

1)获取与每个扫描的2D路沿检测相对应的3D点;

2)从序列的扫描、2D路沿检测和车辆航迹的信息中重建检测到的3D路沿点;

3)对3D路沿进行聚类、骨架化和简化,以生成符合标准化标注文件的最终折线。
在这里插入图片描述

3.1 点云到BEV

为了检测路沿,可以使用两种类型的输入表示:LiDAR点云的3D表示或BEV(俯视图)投影。3D选项更准确且包含更多信息,但更为复杂且计算代价更高。因此,我们选择BEV选项作为更紧凑的表示方法。
点云是空间中的一组3D点,被分为M个切片,对应于不同的高度间隔,并投影到具有特定单元大小的2D网格图上。每个投影通过对每个网格单元中最高点的高度进行编码,产生一个单独的高度图。因此,BEV被编码为一组M通道的特征。

3.2 扫描帧路沿分割

我们提出了一个语义分割DNN来估计2D路沿。该网络采用M通道BEV地图,并推断逐像素的2D掩码,其中每个像素被分配一个类别标签,本例中为“路沿”和“非路沿”。我们使用逐像素的交叉熵损失来训练网络,这是语义分割任务中最常用的损失函数。损失函数对输入张量的所有像素求和,如下所示:DNN模型使我们能够获得对路沿的初始近似,以生成相应的地面实况。然后,我们执行一系列后处理步骤,以考虑整个序列,获得更健壮和一致的结果。

3.3 3D路沿优化

2D到3D转换。在此阶段,第一步是将DNN输出的每个扫描的2D推断转换为3D路沿点。为此,如图1所示,我们使用LiDAR输入扫描,从中提取必要的信息,以为先前推断为路沿的点分配高度。由于从点云到BEV的转换步骤会导致由网格分辨率和M切片数量产生的信息丢失,这个转换对于获得检测到的路沿点高度的良好近似至关重要(见图2)。
在这里插入图片描述
重建。在此步骤中,考虑到每个扫描的所有路沿3D点,以及输入点云,应用车辆航迹信息,进行所有这些点的累积重建,以获得整个序列的路沿点云。

标注生成。在这一点上,我们首先将不同的路沿检测分组,以便在后续阶段可以分开操作,例如,在标注工具中有效地加载它们或删除那些对应于虚假检测的部分。为了进行这种分离,我们使用DBSCAN算法执行聚类阶段。这个算法适用于数据中具有相似密度的簇,因此在其应用之前,我们执行了体素子采样过程,平衡了簇的密度,这也有助于后续的插值步骤。为了获得最终的折线路沿表示,我们使用骨架化算法。通过应用这个专为从LiDAR获得的点云进行骨架化而设计的算法,我们获得了线性迹线,我们期望表示路沿。最后的后处理步骤是简化。在此步骤中,通过Ramer-Douglas-Peucker算法减少了检测到的路沿骨架的点数。该算法使用给定的距离容差确定要消除或保留的线上的点。重建和随后的后处理步骤的表示(直到获得简化的点云)可见于图3。

标注文件。在这一步中,路沿以符合ASAM OpenLabel标准的文件中的折线形式存储。
在这里插入图片描述

实验

实验部分介绍了使用BEV表示来呈现DNN进行扫描级检测的结果,另一部分专门用于使用我们估算的3D路沿生成地面真值。

单帧扫描路沿估计:表格I展示了分割网络在两个不同容差下的结果,考虑到1像素对应0.1m,即空间分辨率为0.1m/像素。在3个像素的容差下获得的F分数显示,大多数情况下都能检测到路沿,证明了DNN用于初步路沿估计的适用性。当容差更为严格时,指标略有下降,这促使我们在流程中进行第二阶段的精炼。
在这里插入图片描述
3D路沿标注:我们进行了一系列测试以评估由我们的方法获得的路沿估计对于地面真值生成的实用性。这些测试涉及对有和没有使用我们方法获得的预标注的路沿进行标注。测试是在从一辆原型车上安装的LiDAR传感器收集的四个序列上进行的,这些序列包含不同的路沿特征,如直线段、曲线、被植被遮挡、停放的车辆等(见图4)。
在这里插入图片描述
图5中显示了使用标记的路沿的标注工具的示例。由于LiDAR点云的稀疏和低分辨率特性,手动标注的过程通常是一项复杂而繁琐的任务,尤其是路沿的标注,需要标注者具备一定的技能。为了简化标注过程,标注者被要求使用着色了z轴梯度的俯视图,以突出路沿高度上的不连续性。

在这里插入图片描述
我们使用精心制作的手动地面真值来评估标注者所做的标注。在标注过程中,标注者被要求测量每个地图的标注时间,包括从头开始标注和使用预标注的地图。

所采用的评估指标有召回率、精确度和F分数,该方法将3D多段线集转换为3D点集,并使用特定的度量步长对多段线进行采样。随后,它通过使用3D欧几里得距离比较这些3D多段线。

需要注意的是,距离测量的最大误差受到离散化步长的一半的限制。我们考虑了在实施细节中提到的0.1m/像素的分辨率。在表II中,显示了在每个地图的标注中获得的指标的平均值,以及总体平均值和通过使用预标注获得的改进。

基于BEV分辨率,使用10cm的容差来计数标注为正确。虽然在没有预标注和有预标注的情况下获得的值之间没有主要差异,主要是因为最终是人类标注者做所有标注,但我们确实注意到在使用我们的方法生成的预标注时,标注的质量略有提高。
在这里插入图片描述
此外,在表III中,我们展示了通过我们的方法提供的预标注将标注时间减少了50.99%。
在这里插入图片描述

小结

AD任务中对地面实况数据的需求需要大量的数据,这些数据需要手动标记。半自动标注算法可以帮助减少人工标注时间,从而在标注过程中节省成本。

在本文中提出了一种从激光雷达点云序列中以ASAM OpenLABEL标准化输出格式生成3D路沿预标注的方法。我们的方法在扫描级别检测路沿,并在第二序列级别的后处理阶段对其进行细化。

最终检测结果存储为多段线。通过使用从测试车辆中配备的激光雷达传感器获得的真实数据进行手动标注活动,我们验证了我们的方法的适用性。我们提出的路沿石检测管道将手动标注时间减少了50%,同时在标注中保持类似的准确性。

未来的工作包括用更大的数据集训练DNN,并探索替代架构来增强预标注。我们还计划扩展该方法,将RGB相机的数据纳入其中,以增强最困难场景中检测的可靠性。

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

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

相关文章

Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类

目录 前言 1 电能质量数据集制作与加载 1.1 导入数据 1.2 制作数据集 2 CNN-2D分类模型和训练、评估 2.1 定义CNN-2d分类模型 2.2 定义模型参数 2.3 模型结构 2.4 模型训练 2.5 模型评估 3 CNN-1D分类模型和训练、评估 3.1 定义CNN-1d分类模型 3.2 定义模型参数 …

【ONE·MySQL || 基础介绍】

总言 主要内容:MySQL在Centos 7下的安装(主要学习相关指令语句,理解安装操作是在做什么)、对MySQL数据库有一个基础认识。 文章目录 总言0、MySQL的安装与卸载(Centos 7)0.1、MySQL的卸载0.1.1、卸载不必要…

HarmonyOS4.0系统性深入开发01应用模型的构成要素

应用模型的构成要素 应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。 HarmonyOS应用模型的构成要…

【Amazon 实验①】使用 Amazon CloudFront加速Web内容分发

文章目录 实验架构图1. 准备实验环境2. 创建CloudFront分配、配置动、静态资源分发2.1 创建CloudFront分配,添加S3作为静态资源源站2.2 为CloudFront分配添加动态源站 在本实验——使用CloudFront进行全站加速中,将了解与学习Amazon CloudFront服务&…

CSS(五) -- 动效实现(立体盒子旋转-四方体+正六边)

一. 四面立体旋转 正方形旋转 小程序中 wxss中 <!-- 背景 --><view class"dragon"><!--旋转物体位置--><view class"dragon-position"><!--旋转 加透视 有立体的感觉--><view class"d-parent"><view …

linux分辨率添加

手动添加分辨率 注&#xff1a;添加分辨率需要显卡驱动支持&#xff0c;若显卡驱动有问题&#xff0c;则不能添加 可通过 xrandr 结果判断 # xrandr 若图中第二行” eDP“ 显示为 ” default “ &#xff0c;则显卡驱动加载失败&#xff0c;不能添加分辨率 1. 添加分辨率 # …

hiveserver负载均衡配置

一.安装nginx 参数我的另一篇文章&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/135152478 二.配置nginx服务参数 worker_processes 1; events { worker_connections 1024; } stream { upstream hiveserver2 { # least_conn; # 使用最少连接路由…

助力智能人群检测计数,基于DETR(DEtectionTRansformer)开发构建通用场景下人群检测计数识别系统

在一些人流量比较大的场合&#xff0c;或者是一些特殊时刻、时段、节假日等特殊时期下&#xff0c;密切关注当前系统所承载的人流量是十分必要的&#xff0c;对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段&#xff0c;本文的主要目的是想要…

SolidKits.BOMs工具—BOM及焊件切割清单输出

SolidKits.BOMs工具—BOM及焊件切割清单输出包含自动出BOM&#xff0c;自定义模板&#xff0c;焊件切割清单的输出&#xff0c;虚拟件的输出等功能&#xff0c;使用该功能&#xff0c;无需打开SOLIDWORKS软件&#xff0c;可大大提高工作效率。为回馈新老客户&#xff0c;此工具…

Ubuntu 常用命令之 exit 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 exit命令在Ubuntu系统下用于结束一个终端会话。它可以用于退出当前的shell&#xff0c;结束当前的脚本执行&#xff0c;或者结束一个ssh会话。 exit命令的参数是一个可选的整数&#xff0c;用于指定退出状态。如果没有指定&#…

基于ip地址通过openssl生成自签名证书

最近在配置geo的时候&#xff0c;客户说自己使用的是自签证书&#xff0c;然后是通过ip地址和端口的方式访问gitlab&#xff0c;比较好奇这块&#xff0c;因此对证书的生成和使用做了一些整理&#xff0c;对此网上关于这部分资料也很多&#xff0c;不过作为记录&#xff0c;也算…

美国的目的暴露了,夺下6台EUV光刻机推进2纳米,反超台积电

日前消息指光刻机巨头ASML预计明年量产10台第二代EUV光刻机&#xff0c;其中6台已确定被美国芯片企业Intel夺下&#xff0c;剩下的两台将由三星和台积电竞争&#xff0c;如此一来拿到更多第二代EUV光刻机的美国可望率先量产2纳米&#xff0c;反超台积电。 一、第二代EUV光刻机的…

Pytorch项目,肺癌检测项目之二

diameter_dict{} with open(/xunlian/annotations.csv &#xff0c;‘r’) as f: for row in list(csv.reader(f)[1:]): series_uid row[0] annotationCenter_xyz tuple([float(x) for x in row[1:4]]) annotationDiameter_mm float(row[4]) diameter_dict.setdefault(seri…

Qt中字符串转换为JS的函数执行

简介 在 QML 中&#xff0c;将 JavaScript 字符串转换为函数通常涉及使用 Function 构造函数或 eval() 函数。但是&#xff0c;QML 的环境对 JavaScript 的支持有一定的限制&#xff0c;因此不是所有的 JavaScript 功能都可以在 QML 中直接使用。 以下介绍都是在Qt5.12.1…

Spring简介

一&#xff1a;Spring是什么 Spring是分层的Java SE/EE应用full-stack&#xff08;各层都有对应解决方案&#xff09;轻量级&#xff08;api较少&#xff0c;学习成本较低&#xff09;开源框架&#xff0c;以IOC&#xff08;Inverse Of Control:反转控制&#xff09;和AOP(Asp…

基于SpringBoot简洁优雅的个人博客系统

源代码下载地址&#xff1a; 点击这里下载 项目备注 1、该资源内项目代码都经过测试运行成功&#xff0c;功能ok的情况下才上传的&#xff0c;请放心下载使用&#xff01; 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或…

java八股jvm

JVM虚拟机篇-01-JVM介绍、运行流程_哔哩哔哩_bilibili 1.PC程序计数器 2.堆 3.虚拟机栈 4.方法区/永久代/元空间 5.直接内存 JVM虚拟机篇-06-JVM组成-你听过直接内存吗_哔哩哔哩_bilibili 6.双亲委派 从下往上找&#xff0c;有同名类优先使用上级加载器的&#xff0c;不用自…

【SpringBoot篇】基于Redis实现生成全局唯一ID的方法

文章目录 &#x1f354;生成全局唯一ID&#x1f339;为什么要生成全局唯一id&#x1f33a;生成全局id的方法✨代码实现 &#x1f354;生成全局唯一ID 是一种在分布式系统下用来生成全局唯一id的工具 在项目中生成全局唯一ID有很多好处&#xff0c;其中包括&#xff1a; 数据…

sql-labs服务器结构

双层服务器结构 一个是tomcat的jsp服务器&#xff0c;一个是apache的php服务器&#xff0c;提供服务的是php服务器&#xff0c;只是tomcat向php服务器请求数据&#xff0c;php服务器返回数据给tomcat。 此处的29-32关都是这个结构&#xff0c;不是用docker拉取的镜像要搭建一下…

【Python】异常、模块与包

一、异常的概念 二、异常的捕获方法 三、异常的传递 四、Python模块 五、Python包 六、安装第三方Python包 一、异常的概念 什么是异常&#xff1a; 异常就是程序运行的过程中出现了错误bug是什么意思&#xff1a; bug就是指异常的意思&#xff0c;因为历史因为小虫子导致计算…