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

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

参考代码: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

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

相关文章:

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

参考代码:BeMapNet。PS:代码暂未放出,关注该仓库动态 动机和主要贡献 在MapTR系列的算法中将单个车道线建模为固定数量的有序点集(对应下图Evenly-based),这样的方式对于普通道路场景具备一定适应性。但是…...

阿里云安全恶意程序检测

阿里云安全恶意程序检测 赛题理解赛题介绍赛题说明数据说明评测指标 赛题分析数据特征解题思路 数据探索数据特征类型数据分布箱型图 变量取值分布缺失值异常值分析训练集的tid特征标签分布测试集数据探索同上 数据集联合分析file_id分析API分析 特征工程与基线模型构造特征与特…...

Xcode中如何操作Git

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…...

浅述边缘计算场景下的云边端协同融合架构的应用场景示例

云计算正在向一种更加全局化的分布式节点组合形态进阶,而边缘计算是云计算能力向边缘侧分布式拓展的新触角。随着城市建设进程加快,海量设备产生的数据,若上传到云端进行处理,会对云端造成巨大压力。如果利用边缘计算来让云端的能…...

C++中禁止在栈中实例化的类

C中禁止在栈中实例化的类 栈空间通常有限。如果您要编写一个数据库类,其内部结构包含数 TB 数据,可能应该禁止在栈上实例化它,而只允许在自由存储区中创建其实例。为此,关键在于将析构函数声明为私有的: class Monst…...

MsgPack和Protobuf

MsgPack可以在C下序列化类,Protobuf只能在C#下序列化类 Cocos Creator安装msgpack-lite 项目文件夹执行 rpm -i msgpack-lite...

自定义类型联合体

目录 联合体联合体类型的声明联合体的特点相同成员的结构体和联合体对比联合体大小的计算联合体的应用联合的一个练习 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸&#x1f…...

【Shell 系列教程】Shell printf 命令( 六)

文章目录 往期回顾Shell printf 命令printf 的转义序列 往期回顾 【Shell 系列教程】shell介绍(一)【Shell 系列教程】shell变量(二)【Shell 系列教程】shell数组(三)【Shell 系列教程】shell基本运算符&a…...

2022年电工杯数学建模B题5G网络环境下应急物资配送问题求解全过程论文及程序

2022年电工杯数学建模 B题 5G网络环境下应急物资配送问题 原题再现: 一些重特大突发事件往往会造成道路阻断、损坏、封闭等意想不到的情况,对人们的日常生活会造成一定的影响。为了保证人们的正常生活,将应急物资及时准确地配送到位尤为重要…...

git reflog 恢复git reset --hard 回退的内容

首先使用 git reflog 查看处理的历史,历史是由新到旧排列的,找到回退前的commit的id,找的过程可以只关注HEAD的部分,HEAD括号中的值越大越旧,越小越新。 找到后执行以下命令 git reset --hard 你的commit_id 然后…...

kali Linux中更换为阿里镜像源

准备: kali Linux 阿里源链接 deb kali安装包下载_开源镜像站-阿里云 kali-rolling main non-free contrib deb-src kali安装包下载_开源镜像站-阿里云 kali-rolling main non-free contrib 配置: 打开kali 终端输入:sudo nano /etc/apt…...

【每日一题】移除链表元素(C语言)

移除链表元素,链接奉上 目录 思路:代码实现:链表题目小技巧: 思路: 在正常情况: 下我们移除链表元素时,需要该位置的前结点与后节点, 在特别情况时: 例如 我们发现&…...

stm32 ADC

目录 简介 stm32的adc 框图 ①电压输入范围 ②输入通道 ​编辑③ADC通道 ④ADC触发 ⑤ADC中断 ⑥ADC数据 ⑦ADC时钟 ADC的四种转换模式 hal库代码 标准库代码 简介 自然界的信号几乎都是模拟信号,比如光亮、温度、压力、声音,而为了方便存储、…...

linux网络服务综合项目

前期环境配置 #主要写了192.168.146.130的代码,131的配置代码和其一样 [rootserver ~]# nmtui #通过图形化界面修改ens160的ip 192.168.146.130 [rootserver ~]# hostnamectl set-hostname Server-Web #修改130主机名…...

每日一题(LeetCode)----数组--移除元素(三)

每日一题(LeetCode)----数组–移除元素(三) 1.题目([283. 移动零](https://leetcode.cn/problems/sqrtx/)) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请…...

AI:57-基于机器学习的番茄叶部病害图像识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...

人工智能-深度学习计算:层和块

我们关注的是具有单一输出的线性模型。 在这里,整个模型只有一个输出。 注意,单个神经网络 (1)接受一些输入; (2)生成相应的标量输出; (3)具有一组相关 参数…...

Linux第一个小程序进度条

缓冲区 ​ 在写进度条程序之前我们需要介绍一下缓冲区,缓冲区有两种,输入和输出缓冲区,这里主要介绍输出缓冲区。在我们用C语言写代码时,输出一些信息,实际上是先输出到输出缓冲区里,然后才输出到我们的显…...

JavaEE平台技术——预备知识(Maven、Docker)

JavaEE平台技术——预备知识(Maven、Docker) 1. Maven2. Docker 在观看这个之前,大家请查阅前序内容。 😀JavaEE的渊源 😀😀JavaEE平台技术——预备知识(Web、Sevlet、Tomcat) 1. M…...

【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)

目录 背景技术方案存在的问题及解决思路关键信息提取结果其他解决方案替换文心一言LangChain大型多模态模型(Large Multimodal Model, LMM) 开源大模型汇总LLaMA —— Meta 大语言模型Stanford Alpaca —— 指令调优的 LLaMA 模型Lit-LLaMA —— 基于 na…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

EtherNet/IP转DeviceNet协议网关详解

一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

c# 局部函数 定义、功能与示例

C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...

MySQL基本操作(续)

第3章:MySQL基本操作(续) 3.3 表操作 表是关系型数据库中存储数据的基本结构,由行和列组成。在MySQL中,表操作包括创建表、查看表结构、修改表和删除表等。本节将详细介绍这些操作。 3.3.1 创建表 在MySQL中&#…...

Shell 解释器​​ bash 和 dash 区别

bash 和 dash 都是 Unix/Linux 系统中的 ​​Shell 解释器​​,但它们在功能、语法和性能上有显著区别。以下是它们的详细对比: ​​1. 基本区别​​ ​​特性​​​​bash (Bourne-Again SHell)​​​​dash (Debian Almquist SHell)​​​​来源​​G…...