当前位置: 首页 > news >正文

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

文章目录

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

概要

论文地址: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相机的数据纳入其中,以增强最困难场景中检测的可靠性。

相关文章:

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

文章目录 概要主要贡献内容概述实验小结 概要 论文地址:https://arxiv.org/pdf/2312.00534.pdf 路沿检测在自动驾驶中扮演着重要的角色,因为它能够帮助车辆感知道可行驶区域和不可行驶区域。为了开发和验证自动驾驶功能,标注的数据是必不可…...

【Spring实战】配置多数据源

文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍,我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中,…...

DevOps系列文章 : 使用dpkg命令打deb包

创建一个打包的目录,类似rpmbuild,这里创建了目录deb_build mkdir deb_build目标 我有一个hello的二进制文件hello和源码hello.c, 准备安装到/opt/helloworld目录中 步骤 在deb_build目录创建一个文件夹用于存放我的安装文件 mkdir helloworld在he…...

linux sed命令操作大全

经常使用,但有些总记不全,有时候经常查找,这次全部捋清楚做备忘,有需要的小伙伴欢迎收藏起来哦! 查、增、改、删一应俱全,非常详细! 目录 一、查看 查看第2行 查看第2行到第3行 查看第1行、…...

Vue2+Vue3组件间通信方式汇总(3)------$bus

组件间通信方式是前端必不可少的知识点,前端开发经常会遇到组件间通信的情况,而且也是前端开发面试常问的知识点之一。接下来开始组件间通信方式第三弹------$bus,并讲讲分别在Vue2、Vue3中的表现。 Vue2Vue3组件间通信方式汇总(1&#xff09…...

前端基础location的使用

概念 获取当前页面的地址信息,还可以修改某些属性,实现页面跳转和刷新等。 样例展示 window.location 含义.originURL 基础地址,包括协议名、域名和端口号.protocol协议 (http: 或 https:).host域名端口号.hostname域名.port端口号.pathname路…...

Android JNI入门到基础

一、JNI项目创建 AS创建项目时选择NativeC 会创建一个基本的JNI项目 MainActivity中写java层的native方法 具体实现在cpp文件中 native-lib.cpp #include <jni.h> #include <string>extern "C" JNIEXPORT jstring JNICALL Java_com_cn_techvision_j…...

60.乐理基础-打拍子-V字打拍法

前置内容&#xff1a; 文字版 https://note.youdao.com/s/6FSSvGBf &#xff08;顺序参考&#xff1a;下方的视频版里面目录顺序&#xff09; 视频版 【四川音乐学院作曲硕士】教你零基础自学乐理保姆级教学-学习视频教程-腾讯课堂 文字版还有下图红框中三个专栏里的内容&a…...

列表对象的时间进行中文格式化处理

在黑马的项目学习中&#xff0c;如何将前端页面时间显示成2023年12月21日 06:23:23中文形式。 如果你想使用中文格式化日期&#xff0c;你可以将 en-US 更改为 zh-CN&#xff0c;以使用中文语言环境。以下是修改后的代码&#xff1a; result.data.items.forEach(item > {//…...

vi和vim的区别

目录 一、前言 二、vi/vim 的介绍 三、Vi/Vim 常见指令 四、vi和vim的区别 一、前言 写这篇文章的目的&#xff0c;是为了告诉大家我们如果要在终端下对文本进行编辑和修改可以使用vim编辑器。 Ubuntu 自带了 VI 编辑器&#xff0c;但是 VI 编辑器对于习惯了 Windows 下进…...

【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作

详情点击查看福利&#xff1a;【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作 目标&#xff1a; 1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供…...

【解决Typora图片不是显示问题】PicGo+Github+Typora+ onedrive/坚果云 实现笔记同步

【解决Typora图片不是显示问题】PicGo、Github、Typora实现笔记同步 写在前面&#xff1a; typora笔记软件使用记录typora图片上传问题&#xff1a;原因分析&#xff1a;解决方案&#xff1a;PicGoGithubTypora 坚果云/onedrive 实现笔记同步第一步. 设置上传模式&#xff1a;u…...

使用Guava轻松创建和管理不可变集合

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天&#xff0c;我们来聊聊一个在Java编程里超有用的话题&#xff1a;使用Guava创建和管理不可变集合。首先&#xff0c;咱们得明白&#xff0c;什么是不可变集合。简单来说&#xff0c;不可变集合就是一旦创建就不能被修…...

深入了解 Android 中的应用程序签名

深入了解 Android 中的应用程序签名 一、应用程序签名介绍1.1 应用程序签名1.2 应用程序签名的意义1.3 应用程序签名的流程1.4 应用程序签名的方案1.5 签名的重要性和应用场景 二、AOSP 的应用签名2.1 AOSP的应用签名文件路径2.2 应用程序指定签名文件 三、Android Studio 的应…...

说说 style gan 中的感知路径长度(Perceptual Path Length)

我在之前的博库中介绍了 style gan 的基本原理&#xff0c;原文中有提出感知路径长度&#xff08;Perceptual Path Length&#xff09;的概念。这是一种评价生成器质量的方式。 PPL基本思想&#xff1a;给出两个随机噪声 z 1 , z 2 ​ &#xff0c;为求得两点的感知路径长度PPL…...

基于JAVA的厦门旅游电子商务预订系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒店管理模块2.4 美食管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学生表3.2.3 学生表3.2.4 学生表 四、系统展示五、核心代码5.1 新增景点类型5.2 查询推荐的…...

uniapp中使用封装步骤条组件

针对步骤条封装完终于清清楚楚啦 先看效果&#xff1a; 附上代码&#xff1a;使用可直接复用&#xff1a;数据是写在了当前组件中&#xff0c;如有必须&#xff0c;可以使用其中的props传值stepInfos传递相应的数据&#xff0c;根据steps步数就可以控制走到哪一步啦 <temp…...

【MySQL】sum 函数和 count 函数的相同作用

力扣题 1、题目地址 1174. 即时食物配送 II 2、模拟表 配送表&#xff1a;Delivery Column NameTypedelivery_idintcustomer_idintorder_datedatecustomer_pref_delivery_datedate delivery_id 是该表中具有唯一值的列。该表保存着顾客的食物配送信息&#xff0c;顾客在某…...

在QT Creator下用CMake编译GEOS库

最近&#xff0c;想要在C下编一个可用GDAL模块的地图管理系统&#xff0c;找来找去&#xff0c;找到了GEOS。GEOS&#xff08;Geometry Engine-Open Source&#xff09;开源几何引擎 是一个用于计算几何的JTS库的 C/C实现&#xff0c;专注于地理信息系统 &#xff08;GIS&#…...

【Qt之Quick模块】4. QML语法格式及命名规范

概述 QML&#xff08;Qt Meta-Object Language&#xff09;是一种声明式语言&#xff0c;用于设计用户界面。它是由Qt框架提供的一种描述界面组件的语言&#xff0c;可以与C代码结合使用&#xff0c;用于创建跨平台的应用程序。 QML具有以下特点&#xff1a; 声明式&#xff…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...