(Lane Deteciton-1)PersFormer

news2024/11/16 19:53:54

介绍

在自动驾驶中,下游模块如规划和控制通常需要将车道位置表示为正交的鸟瞰图(BEV)而不是前视图表示。使用BEV表示有助于更好地与环境中的交互式代理(如车辆、道路标志、交通灯等)对齐任务,并且与其他传感器(如LiDAR和雷达)兼容。

传统方法及其局限性:

  1. 简单投影方法:一种传统的方法是将透视视图中的车道简单地投影到BEV空间中。这种方法虽然直接,但会导致投影的车道线在高度变化的场景(如上下坡、颠簸)中出现偏差。

  2. 特征转换方法:另一种更优雅的解决方案是利用摄像头的内外参数矩阵,将透视视图中的特征投射到BEV空间。这种方法受到了空间变换网络(STN)的启发,通过生成从图像到BEV特征网格的一对一对应关系来实现特征转换。然而,这种方法的效果取决于透视视图中特征的质量,而透视图中的尺度差异问题仍然存在,这是由摄像头的小孔模型引起的。

高度信息的重要性

在从2D前视图(a)转换到BEV(b)时,传统方法的平面假设可能导致车道线在BEV空间中发散或收敛,从而产生不准确的车道预测。

我们的方法(c)考虑了车道的高度,能够更准确地预测车道的平行拓扑结构。在这种情况下,与传统方法相比,我们的方法能够提供更精确的车道线定位。

在将透视视图中的车道投射到BEV空间时,车道线的高度信息必须被考虑。如果忽略高度信息,车道线在上下坡的情况下会在BEV视图中出现发散或收敛的现象,导致下游的规划和控制模块做出错误的决策。之前的一些研究假设BEV空间中的车道位于平坦的地面上,即假设车道线的高度为零。然而,这种平面假设在大多数自动驾驶场景中并不成立,例如在上下坡、颠簸路面或急转弯中。

3D车道检测的挑战:

由于公共数据集上通常没有高度信息,或者很难获得精确的地面真实值,3D车道检测任务是一个不良定式问题。一些研究试图通过创建3D合成数据集来解决这个问题。然而,在复杂和现实的场景中,这些方法的性能仍需改进。此外,模拟数据与真实数据之间的领域适应性问题也尚未得到充分研究。

主要创新点:

  1. 空间特征转换模块

    • 我们将空间特征转换建模为一个具有注意力机制的学习过程,能够捕捉前视图特征局部区域之间的交互,以及前视图和BEV视图之间的交互,从而生成精细的BEV特征表示。
    • 受[60,8]的启发,我们构建了一个基于Transformer的模块,并采用了可变形注意力机制[72],显著减少了计算内存需求,并通过跨注意力模块动态调整关键特征,以捕捉局部区域中的显著特征。
    • 与通过逆透视映射(IPM)进行的直接一对一转换相比,结果特征更加具备代表性和鲁棒性,因为它能够关注周围的局部上下文并聚合相关信息。
  2. 2D和3D车道检测任务的统一

    • 我们进一步统一了2D和3D车道检测任务,以从联合学习优化中获益。
  3. OpenLane数据集的发布

    • 我们发布了首个真实世界的大规模3D车道数据集和相应的基准OpenLane,以支持对这一问题的研究。
    • OpenLane包含了20万帧标注数据和超过88万条车道线(每条车道线都属于14类标签之一,如单白虚线、双黄实线、左/右路缘等),规模超越了所有现有的车道数据集。
    • 此外,OpenLane还包括场景、天气和闭合路径内的物体(CIPO)等独特元素,为自动驾驶的其他研究主题提供支持。

车道线检测

 网络结构

由三部分组成:主干网络、Perspective Transformer 和车道检测头。具体如下:

  • 主干网络(Backbone):

    • 负责接收调整大小后的图像作为输入,并生成多尺度的前视图特征。这里使用了流行的ResNet变体 [56]。
    • 需要注意的是,这些特征可能会受到前视图空间内在特征提取的影响,例如尺度变化、遮挡等问题。
  • Perspective Transformer:

    • 该模块接收前视图特征作为输入,通过相机内外参数生成BEV(鸟瞰视图)特征。
    • 我们并没有简单地将前视图特征一一映射到BEV空间,而是引入了Transformer来关注局部上下文并聚合周围特征,以形成稳健的BEV特征表示。
    • 通过这种方式,我们以优雅的方式学习了从前视图到BEV的逆透视映射。
  • 车道检测头(Lane Detection Heads):

    • 负责预测2D/3D坐标以及车道类型。
    • 2D/3D检测头分别使用了LaneATT [55] 和3D-LaneNet [16],并在结构和锚点设计上进行了修改。

Proposed Perspective Transformer 

Perspective Transformer 的架构灵感来源于流行的方法如 DETR [8],包括自注意力模块和交叉注意力模块(见图 )

自注意力模块

在自注意力模块中,输出通过输入的三元组(键、值、查询)进行交互生成。这样的自注意力的公式可以描述为:

交叉注意力模块 

在交叉注意力模块中,输入查询 Q是多个额外层将自注意力输出 Qbev作为输入后的结果。用于指示在 BEV 中应更加关注哪个部分,因为查询的生成在 BEV 中是位置敏感的。

利用IPM透射变换,将Q中的BEV查询点(x,y)投影到前视图中的对应点(u,v)。接着在点(u,v)附近增加一些偏移量,以学习其周围特征。这些学习到的点称为参考点,有助于将前视图的特征表示转换到 BEV 空间。

总结来说,Perspective Transformer 在参考点之间提取前视图特征以构建具有代表性的 BEV 特征。 

Simultaneous 2D and 3D Lane Detection

3D anchor design

2D anchor design 

2D 锚点的描述和预测与 3D 视图中的定义类似,只不过 (u, v) 位于 2D 空间中,并且没有高度(见图 4(右))。为了简洁起见,我们省略了详细的符号说明。值得一提的是,每个具有倾斜角度 φ 的 3D 锚点 Xi_bev 对应于具有倾斜角度 θ 的特定 2D 锚点 U_i_fv;这种连接通过公式 (2) 的投影建立(IPM)。我们通过设置相同的锚点集实现同时统一 2D 和 3D 任务的目标。这种设计可以使特征在视图之间更好地对齐和表示,从而优化特征。

Prediction Loss

网络训练中添加更多的中间监督可以提升网络性能。由于车道检测属于图像分割并且需要较大的分辨率,我们在生成的 BEV 特征上连接了一个 U-Net 结构的头部。这项辅助任务是在 BEV 中预测车道线,但以传统的 2D 分割方式进行,旨在为主要任务提供更好的特征表示。

Ground truth Sgt​ 是从 3D 车道线 ground truth 投影到 BEV 空间的二值分割图。预测输出表示为 Spred​,其大小与 Sgt​ 相同。

Experiments

我们在新提出的 OpenLane 数据集上提供了 3D 和 2D 的评估结果。为了全面评估模型,我们报告了整个验证集和不同场景集的 F-Score。场景集是根据每帧的场景标签从整个验证集中选取的。在表 2 中,PersFormer 在整个验证集和每个场景集中都获得了最高的 F-Score,超越了先前的最先进方法,程度不一。在表 3 中,PersFormer 比我们的基线 2D 方法 LaneATT [55] 高出 11%。与之前的 3D 最先进方法的详细比较见表 4。PersFormer 的 F-Score 比之前的最佳方法高出 6.4%,在车道类型分类上实现了令人满意的准确性,并呈现了第一个基线结果。需要注意的是,

PersFormer 在 x 轴近端误差指标上表现欠佳,这可能是因为统一锚点设计更适合拟合车道的主要部分而非起点。定性结果如图 6 所示,表明 PersFormer 在通常的自动驾驶场景中能够很好地捕捉密集和不明显的车道。总体而言,PersFormer 在 3D 车道检测中达到了最佳性能,并在 OpenLane 的 2D 任务中取得了显著的改进。

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

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

相关文章

tomato靶场通关

1、使用nmap扫描C段查找网址 2、使用dirb扫描目录 3、打开网站查看目录 4、发现一个info.php文件查看 5、查看源代码,发现文件包含漏洞 6、查看etc/passwd ,查看日志 7、写入一句话木马 8、使用蚁剑进行连接查看,可以使用终端

Vue 3 组合式 API

相比较 Vue.js 2.x 版本传统的方法组织形式, Vue.js 3.x 提出了组合式 API 的格式。本 章带领读者系统学习 Vue.js 3.x 新增的有关组合式 API 的知识。 本章主要涉及到如下知识。 组合式 API 与选项式 API 的语法区别。 在组合式 API 中使用生命周期…

从监控到智能:EasyCVR视频汇聚平台助力加油站安全监管升级转型

随着科技的不断进步,视频监控技术在各个行业的应用日益广泛,尤其在加油站这一关键领域,视频智能监管系统的应用显得尤为重要。TSINGSEE青犀视频EasyCVR视频汇聚平台作为一款基于“云-边-端”一体化架构的视频融合与AI智能分析平台&#xff0c…

guava中对Map的扩展数据结构

Multimap - 多值Map guava中的Multimap提供了将一个键映射到多个值的形式&#xff0c;使用起来无需定义复杂的内层集合&#xff0c;可以像使用普通的Map一样使用它&#xff0c;定义及放入数据如下&#xff1a; Multimap<String, Integer> multimap ArrayListMultimap.…

小琳Python课堂:Python高并发实现的基本原理(高阶版)

大家好&#xff0c;这里是小琳Python课堂&#xff01; 今天&#xff0c;我们将从高阶视角深入探讨Python高并发实现的基本原理&#xff0c;特别是线程安全性、线程同步和原子性这三个核心概念。这些概念对于构建复杂、高效的多线程应用程序至关重要。 线程安全性 首先&#x…

飞机制造5G智能工厂数字孪生工业物联平台,推进制造业数字化转型

飞机制造行业作为高端制造业的典范&#xff0c;正积极探索数字化转型的新路径。飞机制造5G智能工厂数字孪生工业物联平台&#xff08;以下简称“平台”&#xff09;的兴起&#xff0c;不仅为飞机制造业注入了强劲动力&#xff0c;更为整个制造业的数字化转型树立了新的标杆。 …

Java学习第七天

成员方法分类&#xff1a; 静态成员方法&#xff08;有static修饰 属于类&#xff09;建议用类名访问&#xff0c;也可以用对象访问 实例成员方法&#xff08;无static修饰 属于对象&#xff09;只能用对象出发访问 使用static来定义一些工具类 工具类直接使用类名.方法调用即…

Java并发线程 共享模型之管程 5

1. 生产者消费者 package cn.itcast.testcopy;import cn.itcast.n2copy.util.Sleeper; import lombok.extern.slf4j.Slf4j;import java.util.LinkedList;/*** ClassName: Test21* Package: cn.itcast.testcopy* Description: 生产者消费者** Author: 1043* Create: 2024/9/4 - …

Hadoop vs Spark

Hadoop 和 Spark 都是apache基金会下、在大数据架构中广泛使用的开源框架&#xff0c;两个框架都各自有各自的开源技术生态系统&#xff0c;用于准备、处理、管理和分析大数据集。 Hadoop 生态系统由四个主要模块组成: HDFS): Hadoop的数据存储系统&#xff0c;用于管理运行在普…

vue3中如何拿到element plus中el-tree多选的值?

在vue3中使用了element plus的el-tree组件 并将其设置为可选择的情况下如何拿到所选择的值&#xff1f; 首先我们要为el-tree设置show-checkbox&#xff08;它的作用是&#xff1a;节点是否可被选择&#xff09;&#xff0c;然后为el-tree绑定ref vue3中的ref跟vue2中的ref获取…

未来十年美业发展方向:健康与美容的结合|美业SaaS系统收银系统源码

随着人们对健康和美容的重视不断增加&#xff0c;美业正在经历一场革命性的变革。未来&#xff0c;美业的发展将更加注重健康与美容的结合&#xff0c;这一趋势将在多个领域产生深远影响。 下面博弈美业为大家阐释「为什么未来美业的发展方向是健康和美容的结合」&#xff1a;…

Java web开发常见中间件多版本下载备用

备注&#xff1a;每次换电脑都要重新构建一下环境&#xff0c;下载找资源很麻烦&#xff0c;官网英文网页找个历史版本看不懂&#xff0c;还要慢慢去搜&#xff0c;所以直接整理一波&#xff0c;需要的自行收藏。 1.nodejs自选版本下载&#xff1a; 地址&#xff1a;https://…

Facebook广告投放如何在节日季脱颖而出

众所周知&#xff0c;节日季是销售的旺季&#xff0c;根据统计基本都集中在年末。所以如果你想在今年的节日季大赚一笔&#xff0c;你需要从现在开始做准备工作&#xff0c;以便敲定你的节日季的营销策略。如果你感兴趣的话就继续看下去吧~ 1、设置转化API 在 Facebook 广告中…

leetcode回文链表

leetcode 回文链表 题目 题解 两种方式进行题解 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, Li…

[rk3399 android11]关闭声卡

使用以下命令查看声卡&#xff0c;可以看到目前有三个声卡 cat /proc/asound/cards 修改设备树 diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3399-jw-d039.dts b/kernel/arch/arm64/boot/dts/rockchip/rk3399-jw-d039.dtsindex 515334c127..5b592a852f 100755--- a/…

Unity Xcode方式接入sdk

入口 创建 GameAppController 类 继承 UnityAppController 并且在类的实现之前 需要 加 IMPL_APP_CONTROLLER_SUBCLASS(GameAppController)&#xff0c;表明这个是程序的入口。UnityAppController 实现了 UIApplicationDelegate。 可以简单看下 UIApplicationDelegate 的生命周…

[数据集][目标检测]智慧牧场猪只检测数据集VOC+YOLO格式16245张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;16245 标注数量(xml文件个数)&#xff1a;16245 标注数量(txt文件个数)&#xff1a;16245 标…

如何在算家云搭建ComfyUI(AI绘画)

一、ComfyUI简介 ComfyUI 是一个强大的、模块化的 Stable Diffusion 界面与后端项目。该用户界面将允许用户使用基于图形/节点/流程图的界面设计和执行高级稳定的扩散管道。该项目部分其它特点如下&#xff1a; 全面支持 SD1.x&#xff0c;SD2.x&#xff0c;SDXL&#xff0c;…

Java 入门指南:Java 并发编程 —— 并发容器 ArrayBlockingQueue

BlockingQueue BlockingQueue 是Java并发包&#xff08;java.util.concurrent&#xff09;中提供的一个阻塞队列接口&#xff0c;它继承自 Queue 接口。 BlockingQueue 中的元素采用 FIFO 的原则&#xff0c;支持多线程环境并发访问&#xff0c;提供了阻塞读取和写入的操作&a…

思维导图在线制作怎么制作?5个软件教你快速进行思维导图制作

思维导图在线制作怎么制作&#xff1f;5个软件教你快速进行思维导图制作 思维导图是一种用于组织信息、梳理思路和激发创意的可视化工具。在线制作思维导图可以帮助你随时随地进行创作和分享&#xff0c;以下是五款在线思维导图工具&#xff0c;可以帮助你快速进行思维导图的制…