P-MapNet:Far-seeing Map Generator Enhanced by both SDMap and HDMap Priors

2024-03-30 23:20

本文主要是介绍P-MapNet:Far-seeing Map Generator Enhanced by both SDMap and HDMap Priors,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主页:homepage
参考代码:P-MapNet

动机与出发点
在感知系统中引入先验信息是可以提升静态元素感知网络的上限的,这篇文章对SD地图采用栅格化表示(也就是图像形式),之后用CNN网络去抽取栅格化SD地图的信息,将其作为BEV特征优化时额外信息的来源(也就是做key和val)。其实还有一种SD地图表示的方法,那就是向量化描述,目前现有的文献还没有对这两种模态表示更好做过细致分析。感知的终极目的时在线构建高精地图,而感知+地图的结果只能说是在鲁棒性、稳定性上好于纯视觉的方案,对此这篇文章设计了一个refine网络,这个网络通过自监督学习(也即是MAE自编码)的方式学习栅格化的HDMap,这样使得网络参数中隐式编码了HDMap的信息。再用这个自监督得到的网络用视觉+SDMap的结果作为输入去fine-tune得到最后结果。虽然这个隐式编码能够带来一定性能提升,但是没有将静态元素信息很好挖掘。

整体pipeline
文章的方法可以看作是两阶段优化,第一阶段视觉+SDMap得到初步感知结果,第二阶段通过在HDMap预训练过的网络上finetune,整体结构见下图:
在这里插入图片描述

静态元素感知
1)视觉+SDMap的视觉感知
对于这一部分感知任务它首先会使用CNN网络将栅格化之后的SDMap进行编码,之后送到transformer-layer中去做cross-attn,也就是下图中的前半部分。
在这里插入图片描述
BEV特征(上图中展示的BEV特征应该是经过PV2BEV之后的,因为并未看到与图像特征做交互)通过cross-attn之后相当于就是引入到道路先验,之后再经过预测网络得到初步感知结果。

2)初始感知结果上finetune
这里优化的过程可以划分为两个步骤:

Step1:预训练
使用栅格化之后的HDMap做MAE自编码预训练,这样使得网络参数中隐式学习到了静态元素的信息。这里MAE中mask的设置文中给出了两种方式:random mask和grid-based mask,第一种是在图上按照 20 ∗ 20 20*20 2020像素为格子大小间隔做mask,第二种是从多种( 20 ∗ 20 , 20 ∗ 40 , 25 ∗ 50 , 40 ∗ 80 20*20,20*40,25*50,40*80 2020204025504080)格子大小选择一个尺寸然后按照50%的概率进行随机mask。
在这里插入图片描述
上面的两种mask方式进行比较,有如下结果
在这里插入图片描述

Step2:初始结果上的finetune
在Step1中通过预训练的方式得到网络初始参数,那么以感知初始结果作为输入使用预训练参数进行finetune,就可以依据HDMap中的先验信息去进一步优化感知的结果。下面列举了不同感知距离下,初始感知结果和finetune之后结果的性能比较:
在这里插入图片描述

实验结果
nuscenes val上的结果比较:
在这里插入图片描述

远距离下的性能比较:
在这里插入图片描述

这篇关于P-MapNet:Far-seeing Map Generator Enhanced by both SDMap and HDMap Priors的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862851

相关文章

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

JavaScript中的Map用法完全指南

《JavaScript中的Map用法完全指南》:本文主要介绍JavaScript中Map用法的相关资料,通过实例讲解了Map的创建、常用方法和迭代方式,还探讨了Map与对象的区别,并通过一个例子展... 目录引言1. 创建 Map2. Map 和对象的对比3. Map 的常用方法3.1 set(key, v

Golang中map缩容的实现

《Golang中map缩容的实现》本文主要介绍了Go语言中map的扩缩容机制,包括grow和hashGrow方法的处理,具有一定的参考价值,感兴趣的可以了解一下... 目录基本分析带来的隐患为什么不支持缩容基本分析在 Go 底层源码 src/runtime/map.go 中,扩缩容的处理方法是 grow

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

利用Mybatis-generator工具自动生成代码

配置JAVA环境变量; 执行生成代码之前,我们须要做的准备工作。  1、新建一个文件夹,作为我们的工作空间,例如:  D:\generator  注意:这里的路径不要带有中文字符,这是规范,即使带有中文字符不会出什么问题。  2、在 generator 这路径下  (1)放置 mybatis-generator-core-1.3.2.jar;  (2)放置 mysql-connector-ja

Map

Map 是 Java 中用于存储键值对的集合接口。以下是对 Map 的详细介绍: 特点 键值对存储:每个元素包含一个键和一个值。 键唯一:键不能重复,但值可以重复。 无序/有序:根据具体实现,键值对的顺序可能无序(如 HashMap)或有序(如 TreeMap、LinkedHashMap)。 主要实现类 HashMap 基于哈希表,无序存储。 允许一个 null 键和多个 null 值。