当前位置: 首页 > 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…...

【位运算】XOR Construction—CF1895D

XOR Construction—CF1895D 参考文章 翻译 题目要求构造一个长度为 n n n 的数组 b b b,满足以下条件: 数组 b b b 中包含从 0 0 0 到 n − 1 n-1 n−1 的每个整数,且每个整数仅出现一次;对于 i i i 从 1 1 1 到 n − …...

解决Visual Studio Code 控制台中文乱码问题

C和CPP运行编码指定 "code-runner.executorMap": {"c": "cd $dir && gcc -fexec-charsetGBK $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt","cpp": "cd $dir && g -fexec-charsetGBK $…...

React Native自学笔记

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...

程序员笔记本电脑选 windows 还是 MAC

计算机选择是每个进入 IT 行业同学的第一个重要选择,那么你是怎么选择的呢? 选择操作系统(Windows还是macOS)取决于程序员的需求、偏好和工作流程。每个操作系统都有其优点和缺点,下面将分别讨论它们,以帮助…...

蓝桥杯每日一题2023.11.5

题目描述 方格分割 - 蓝桥云课 (lanqiao.cn) 题目分析 对于每个图我们可以从中间开始搜索,如果到达边界点就说明找到了一种对称的方法,我们可以直接对此进行答案记录每次进行回溯就会找到不同的图像,如果是一样的图像则算一种情况&#xff…...

多媒体应用设计师 2023年(含答案回忆版)

以下是小红书上的回忆版 软考考完疯狂回忆,多媒体应用设计师选择题 1.pattern 2.effective 3.merge 4.applications 5.graphic 6.udp 7.rtp 8.rtsp 9.10cm 10.永久 11…97 12.工作技术管理标准 13.管理型元数据 14.premiere 15.wave 16.500km/h 17.3M 18.44000 19.…...

[Machine Learning][Part 8]神经网络的学习训练过程

目录 训练过程 一、建立模型: 二、建立损失函数 J(w,b): 三、寻找最小损失函数的(w,b)组合 为什么需要激活函数 激活函数种类 二分法逻辑回归模型 线性回归模型 回归模型 训练过程 一、建立模型: 根据需求建立模型,从前面神经网络的…...

Git 内容学习

一、Git 的理解 Git是一个分布式版本控制系统(Distributed Version Control System,简称 DVCS),用于对项目源代码进行管理和跟踪变更。分为两种类型的仓库:本地仓库和远程仓库。 二、Git 的工作流程 详解如下&#x…...

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…...

CSS必学:元素之间的空白与行内块的幽灵空白问题

作者:WangMin 格言:努力做好自己喜欢的每一件事 CSDN原创文章 博客地址 👉 WangMin 我们在开发的过程中,难免会出现一些难以预料的问题。那么其中,CSS空白现象就是非常常见的问题之一。虽然它已经被发现很久,但仍然有许多新手和经…...