PivotNet:Vectorized Pivot Learning for End-to-end HD Map Construction

news2024/12/23 1:23:11

参考代码:BeMapNet。PS:代码暂未放出,关注该仓库动态

动机和主要贡献
在MapTR系列的算法中将单个车道线建模为固定数量的有序点集(对应下图Evenly-based),这样的方式对于普通道路场景具备一定适应性。但是却存在对复杂道路建模能力不足,对简单道路建模冗余的问题,针对这样的问题解决思路便是网络依据车道线具体情况预测关键点(对应下图Pivot-based),也就是像下图这样使用关键点描述车道线元素:
在这里插入图片描述
为了使得网络能够依据具体场景动态输出车道线关键点数量,文章做了以下几个方面的工作:

  • 1)对laneline的query做了修改,使用对每个关键点(point-query)采用学习的方式,这样可以使的点与点之间表达可以独立,这样更有利于这样动态点的表示
  • 2)将lane-query和bev下的车道线分割建立关联,使得网络对车道线拓扑结构感知更清晰,同时收敛速度变快
  • 3)对于关键点匹配提出一种代价最小化动态规划算法,加快匹配速度

方案流程与框图
在这里插入图片描述
从上图的框图可以看到算法分为如下几个部分:

  • 1)BEV query构建BEV特征
  • 2)按照点建模的方式构建车道线表达,并通过mlp获得车道线实例表征,之后通过矩阵乘法得到车道线分割结果,这样车道线具有了对位置和车道结构感知能力
  • 3)使用提出的动态匹配算法建立预测和真值之间的关联,实现车道线预测

车道数据预处理
在数据预处理中,需要对车道线中的关键点进行抽取,如下图所示:
在这里插入图片描述
对这样的问题可以采用距离阈值类的方法实现,如Douglas-Peuker。

车道线实例化表达
在初始的时候使用一堆点的方式构建车道线query,它的维度是 Q m , n ∈ R M ∗ N ∗ C Q_{m,n}\in R^{M*N*C} Qm,nRMNC,其中 M , N M,N M,N分别代表车道实例数和车道线线上最大点数。注意由于每条车道线中关键点的位置是不一致的,则使用share方式构建的point-query会存在一定歧义(也就是文中说的Hierarchical Query),这种share方式构建的index-dependent,而对于动态预测车道线关键点则需要index-independent。它们两者的对车道线的建模方式对比见下图:
在这里插入图片描述

自然在文章算法所需要的场景下这两种建模方式的性能比较:
在这里插入图片描述

query确定之后,其经过几层全联接得到车道线的表达 I m ∈ R C I_m\in R^C ImRC,再与BEV特征 F b ∈ R C ∗ H ∗ W F_b\in R^{C*H*W} FbRCHW做矩阵乘法得到分割结果 M m ∈ R H ∗ W \mathcal{M}_m\in R^{H*W} MmRHW,也就是下图表述的过程:
在这里插入图片描述
这里涉及到分割损失:
L L A = L b c e ( M ^ l i n e , M l i n e ) + L d i c e ( M ^ l i n e , M l i n e ) \mathcal{L}_{LA}=L_{bce}(\hat{M}_{line}, M_{line})+L_{dice}(\hat{M}_{line}, M_{line}) LLA=Lbce(M^line,Mline)+Ldice(M^line,Mline)

车道线回归
上述内容得到了车道线的实例表达,接下来就是预测得到车道线的回归值 S ^ = { v ^ n } n = 1 N \hat{S}=\{\hat{v}_n\}_{n=1}^N S^={v^n}n=1N,而关键点的真值 S p = { v n } n = 1 T S^p=\{v_n\}_{n=1}^T Sp={vn}n=1T。由于两者的数量是不一致的,需要在预测中寻找与关键点真值最匹配的一组点,也就是下图描述的这样:
在这里插入图片描述
自然是不能用暴力枚举的方式了,这里使用了动态规划寻找最小代价的方式,具体实现文章里已经给出了。那么对于监督这块可以具体划分为几个部分:

按照匹配的结果对关键点构建约束:
L p p = 1 T ∑ n = 1 T ∣ ∣ S ^ n p − S n p ∣ ∣ 1 L_{pp}=\frac{1}{T}\sum_{n=1}^T||\hat{S}^p_n-S^p_n||_1 Lpp=T1n=1T∣∣S^npSnp1
除开关键点之外的其它点则采用插值的方式构建约束,首先由关键点得到其它点:
C n , r = ( 1 − θ n , r ) S n p + θ n , r S n + 1 p C_{n,r}=(1-\theta_{n,r})S^p_n+\theta_{n,r}S^p_{n+1} Cn,r=(1θn,r)Snp+θn,rSn+1p
则预测的关键点和真实关键点之间差值的结果建立约束:
L c p = 1 N − T ∑ n = 1 T − 1 ∑ r = 1 R n ∣ ∣ C ^ n , r − C n , r ∣ ∣ 1 L_{cp}=\frac{1}{N-T}\sum_{n=1}^{T-1}\sum_{r=1}^{R_n}||\hat{C}_{n,r}-C_{n,r}||_1 Lcp=NT1n=1T1r=1Rn∣∣C^n,rCn,r1
对于每条车道线都会预测出 N N N个点,那么那些点才是关键点呢?这里使用BCE方式去约束:
L c l s = 1 N ∑ n = 1 N L b c e ( p n , f ( S ^ n ∈ S ^ p ) ) L_{cls}=\frac{1}{N}\sum_{n=1}^NL_{bce}(p_n,f(\hat{S}_n\in \hat{S}^p)) Lcls=N1n=1NLbce(pn,f(S^nS^p))
最后车道线回归部分损失就是几个的和:
L D V S = α 1 L p p + α 2 L c p + α 3 L c l s L_{DVS}=\alpha_1L_{pp}+\alpha_2L_{cp}+\alpha_3L_{cls} LDVS=α1Lpp+α2Lcp+α3Lcls

实验结果
与其它一些向量化车道线方法的对比:
在这里插入图片描述

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

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

相关文章

深度好文|听懂这些逻辑,你会越变越好。

哈喽,大家好,我是雷工。 最近看了一篇文章,噱头很大,说是手把手的教你,如何从一个普通人,成长为身价千万的中产。 这种话我肯定是不信的,要么标题党,要么割韭菜,千万的中…

048基于web+springboot的校园资料分享平台

欢迎大家关注,一起好好学习,天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本校园资料分享平台有管理员和用户两个角色。管理员功能有个人中心,学生管理,资料分享管理,资源分…

【JVM】JDBC案例打破双亲委派机制

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 打破双亲委派机制(JDBC案例…

使用springBoot+Redis实现分布式缓存

使用springBootRedis实现分布式缓存 1. 添加redis框架 依赖 2. 配置redis连接信息 #redis 连接的配置信息 spring.redis.database15 spring.redis.port6379 spring.redis.host82.157.236.116 # 可省略 spring.redis.lettuce.pool.min-idle5 spring.redis.lettuce.pool.max-id…

QT进度条 QProgressDialog基础、高级和样式表使用详解

一、基础使用 QProgressDialog是Qt中的一个类,用于显示一个进度条和一个取消按钮,让用户可以在长时间的操作中看到进度,并且可以随时取消。QProgressDialog的基本用法是创建一个对象,设置最小值和最大值,然后在循环中…

多态 多继承的虚表深度剖析 (3)

💯 博客内容:多态 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准C后端工程师,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这里是CSD…

加法运算、 || 、 赋值运算

一、加法运算 在这里插入图片描述 二、&& || 三、赋值运算 四、js类型就八种: 五、css权重、 六:布局,尽量使用块盒。 七、小数精度存储的问题:存的不精确,算的肯定也是有问题的。 八、找单身狗算法题…

STM32G030F6P6 芯片实验 (二)

STM32G030F6P6 芯片实验 (二) Hello World - GPIO LED 尝试了下, 从 0 开始建 MDK HAL M0plus Project, 成功点亮 LED了。 但是 ST-LINK跑着跑着, 码飞了! 不知飞哪去了。 只好拿 MX 建了个 MDK Base。 呼叫 SysTick HAL_Delay(), 切换 LED。 基本上都是一样的用法, 只是换…

逆向学习记录(4)adb

adb用于PC和手机端通讯。 常用命令如下: 如果不是模拟器(模拟器一般都有自己的adb),adb会出现在Andirod的SDK中,路径为:Android/SDK/platform-tools。 最好加入环境变量中。

免费亲人微信聊天记录提取软件新版本v1.1,使用说明,注意事项 2023.11.06

V 1.1 优化了备份速度,新增了备份消息类型的选型,可以选择仅仅备份文本,或者文本与音频,或者文本音频视频图片。 有什么办法可以导出与某个人的微信聊天记录? 只想导出与某个微信好友的聊天记录,有办法做到…

懒汉模式和饿汉模式

目录 单例模式 饿汉模式 懒汉模式 单例模式 所谓单例模式,就是在有些场景中,有些特定的类,只能创建一个实例(对象),当程序员不小心创建多个实例,就会出现编译报错. ★ 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创…

同步网盘与云盘:哪个更好用?

同步网盘、同步云盘现在是热门的文件管理工具,在回答“同步网盘云盘哪个好用”这个问题之前,我们需要知道什么样的同步网盘、同步云盘算好用? 什么样的同步网盘云盘好用? 1、存储空间大 对于文件管理工具而言,存储空…

一篇解决,Unittest接口测试生成报告和日志

HTML报告 直接把HTMLTestRunner.py放入工程目录即可报告脚本封装 #HTNL格式报告now datetime.datetime.now().strftime(%Y-%m-%d_%H_%M_%S)htmlreport reportpath "/" now r"result.html"print("测试报告生成地址:%s"% htmlre…

[NLP] LlaMa2模型运行在Mac机器

本文将介绍如何使用llama.cpp在MacBook Pro本地部署运行量化版本的Llama2模型推理,并基于LangChain在本地构建一个简单的文档Q&A应用。本文实验环境为Apple M1 芯片 8GB内存。 Llama2和llama.cpp Llama2是Meta AI开发的Llama大语言模型的迭代版本,…

【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?

情景:传统的爬虫只需要设置fetch_typejs即可,因为可以获取到整个页面。但是现在ajax应用越来越广泛,所以有的网页不能用此种爬虫类型来获取页面的数据,只能用slef.crawl()来发起http请求来抓取数据。 直接上例子: 可以…

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】 1、概述2、实验环境3、 物品说明4-2、自我总结5、本次实验说明1、准备样例2、设置芯片3、编译4、下载5、验证 (1)windows环境下进行烧写1、下…

前端框架Vue学习 ——(六)Vue组件库Element

文章目录 Element 介绍快速入门常见组件表格分页Dialog 对话框组件表单 Container 布局容器 Element 介绍 Element:是饿了么团队研发的,一套为开发者、 设计师和产品经理准备的基于Vue 2.0的桌面端组件库。 组件:组成网页的部件,…

C语言成弟弟了?就业还得是御三家

文章目录 一、前言二、ChatGPT查到的数据三、数据亮点 1.C语言近3年数据大跌2.招聘数量每年都在剧增的是全栈工程师3.薪资涨幅最高的是全栈和网安 四、结语 一、前言 不仅前在微信群里搭建了一个ChatGPT 5.0做智能助手,让他来帮我回答群问题, 搭建好之…

Zookeeper3.7.1分布式安装部署

上传安装文件到linux系统上面 解压安装文件到安装目录 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/software/3. 修改解压文件名 [zhangflink9wmwtivvjuibcd2e software]$ mv apache-zookeeper-3.7.1-bin/ zookeeper-3.7…

dbeaver 连接trino 出现Datasource was invalidated

dbeaver 连接trino 出现Datasource was invalidated 问题描述,如图所示: 连接测试通过,但是无法访问数据库 解决 1.首先是看自己的dbeaver连接配置是否有问题 2.看驱动配置是否ok 3.在浏览器上搜索连接的IP是否有结果 eg:192.168…