MatrixVT:Efficient Multi-Camera to BEV Transformation for 3D Perception——论文笔记

news2024/11/15 1:41:31

参考代码:BEVDepth

1. 概述

介绍:这篇文章对LSS方法中的瓶颈项进行分析,分别指出其中显存占用问题源自于“lift”操作生成的高维度特征,运行耗时是由于“splat”操作的求和操作,对此文章从矩阵变换的角度对原版的LSS方法进行改进,得到高效BEV特征生成方法MatrixVT。从FOV到BEV的变换是可被描述为一个矩阵变换的,但是直接去学习这样的矩阵变换是很难的,对此文中将以相机为原点的BEV特征进行正交分解得到:与相机的距离矩阵(对应文中的ring matrix)和与相机视线方向矩阵(对应文中的ray matrix),从而通过引入先验几何编码降低了整体学习的难度。此外,对图像深度信息在特征图 W H WH WH两个维度的丰富程度进行分析,得出 W W W这个维度包含的信息更多,则对应提出Prime Extraction Module消除 H H H维度的特征,这样便可进一步降低计算量。文中给出文章的方法相比之前的LSS能快2~8倍,显存消耗减小97%。

对于原本的LSS方法其流程可概括为下图所示:
在这里插入图片描述
上图中“lift”和“splat”操作都是相当消耗资源的,对此首先是对图像特征在 H H H维度进行压缩,之后通过ring matrix和ray matrix实现几何信息编码,同时通过计算等效转换还可进一步减少计算资源消耗,其结构见下图所示:
在这里插入图片描述
将这篇文章提到的方法与其它方法在耗时与显存消耗上的比较与分析:
在这里插入图片描述

2. 方法设计

2.1 方法pipeline

文章提出的BEV特征生成pipeline见下图所示:
在这里插入图片描述
结合上图可将生成BEV特征的的流程划分为:

  • 1)图像特征在 H H H维度聚合(prime extraction module),源自与 W W W维度比 H H H维度有更丰富的特征表达,因此可将特征在 H H H维度上聚合从而消减掉一个维度,从而减少计算开销。
  • 2) H H H维度聚合之后图像上下文特征和深度特征(可有监督或是无监督)通过外积的形式组合起来,之后用矩阵变换的形式实现FOV到BEV的转换,这里转换矩阵显著使用了空间几何信息(构建了与距离和方向相关联的ring matrix和ray matrix)。

2.2 Prime Extraction Module

基于LSS的方法往往会生成两个特征: F ∈ R N c ∗ H I ∗ W I ∗ C F\in R^{N_c*H_I*W_I*C} FRNcHIWIC D ∈ R N c ∗ H I ∗ W I ∗ N d D\in R^{N_c*H_I*W_I*N_d} DRNcHIWINd,分别代表图像上下文和深度特征 。之后通过外积得到一个高维度的特征聚合 F i n t e r ∈ R N c ∗ H I ∗ W I ∗ D ∗ C F_{inter}\in R^{N_c*H_I*W_I*D*C} FinterRNcHIWIDC,这也就是“lift”操作。为了减少这一步过程中的显存消耗,这里对 H H H维度特征进行消除,其观察源自于 H H H维度的特征少于 W W W维度,如下图:
在这里插入图片描述
对此分别在图像和深度特征上对 H H H维度进行压缩,其采用的结构见下图:
在这里插入图片描述
其中对于图像维度是通过maxpool来实现的:
在这里插入图片描述
对于上述的过程其中的位置编码、maxpool等操作的消融实验见下表:
在这里插入图片描述

2.3 FOV到BEV的转换矩阵

在对 H H H维度进行压缩之后得到得到包含深度和上下文的新特征 F i n t e r w ∈ R N c ∗ W I ∗ N d ∗ C F_{inter}^{w}\in R^{N_c*W_I*N_d*C} FinterwRNcWINdC,那么要将其转换到BEV特征下则需要的转换矩阵为 M F T ∈ R W I ∗ N d ∗ W B ∗ H B M_{FT}\in R^{W_I*N_d*W_B*H_B} MFTRWINdWBHB,这步对应原版LSS方法中的“splat”操作。但是直接对上述的矩阵进行乘法操作,一是会增加学习的难度,而是计算量也会比较大。对此文章设计了ring matrix( M r a y ∈ R W I ∗ ( W B ∗ H B ) M_{ray}\in R^{W_I*(W_B*H_B)} MrayRWI(WBHB))和ray matrix( M r a y ∈ R N d ∗ ( W B ∗ H B ) M_{ray}\in R^{N_d*(W_B*H_B)} MrayRNd(WBHB)),那么对应的变换矩阵就可通过分解计算量得到较大减少。则从FOV到BEV的特征转换可以被描述为:
F B E V = ∑ w [ M r a y ⊙ ( M r i n g ⋅ F i n t e r w ) ] ∗ w F_{BEV}=\sum_w[M_{ray}\odot(M_{ring}\cdot F_{inter}^{w})]^{*w} FBEV=w[Mray(MringFinterw)]w
则将上述的变换关系与之前的“lift”过程联系起来,可以对其进行等价转换:
F B E V = ( M r a y ⊙ ( M r i n g ⋅ D ) ) ⋅ F F_{BEV}=(M_{ray}\odot(M_{ring}\cdot D))\cdot F FBEV=(Mray(MringD))F

3. 实验结果

nuScenes val上的检测性能:
在这里插入图片描述

分割性能比较:
在这里插入图片描述
Prime Extraction模块对性能和显存消耗的影响:
在这里插入图片描述

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

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

相关文章

Java面向对象复习

文章目录一、类和对象1. 面向对象2. 类的定义3. 对象的创建4. 类在内存中的存储5.类的成员使用6. toString()方法7. static 关键字静态成员变量静态成员方法二、封装1. 构造方法概念基本使用构造方法的重载this关键字2. private3. 封装的好处三、继承1. 继承的概念2. extends3.…

二维矩阵的元素和

二维矩阵的元素和1.背景2.原理3.实现1.背景 对矩阵元素进行求和,或者求子矩阵的元素和;给定矩阵左上角坐标(x1,y1)和右下角坐标(x2,y2); 如何快速求出 以(x1,y1),&#…

SAP入门技术分享五:内表

内表1. 概要2. 内表与表头3.内表的类型(1)类型(2)标准表(3)排序表(4)哈希表4.比较内表速度(1)标准表与排序表(2)二分法查找&#xff0…

Kafka生产者分区

生产者分区 分区的原因 (1)便于合理使用存储资源,每个Patition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。 (2)提高并行度&am…

如何设计一个消息队列?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

用户登录、注册的简单案例: html+css+MyBatis+Servlet

用户登录一. 用户登录1. 流程与思路基本流程:详细过程:2. 准备环境建库建表Pojo实体类User:Maven坐标:mybatis核心配置文件:代理接口:3. 编写目录:HTML:Serlvet:4. 效果二…

【Leetcode】21. 合并两个有序链表

【Leetcode】21. 合并两个有序链表题目思路代码题目 思路 归并排序比较两个单链表每一个节点,将较小元素的节点值封装成一个新的节点添加到一个新的链表中如果两个单链表长度不一致,也就是有一个链表指针指向null ,那么将另一个链表中的所有节点全部添加…

【手写 Vue2.x 源码】第二十四篇 - 异步更新流程

一,前言 上篇,介绍了 Vue依赖收集的视图更新部分,主要涉及以下几点: 视图初始化时: render方法中会进行取值操作,进入 Object.defineProperty 的 get 方法get 方法中为数据添加 dep,并记录当…

20230115英语学习

Gold From Old Sim Cards Could Help Make Future Drugs SIM卡中回收的黄金,可用于制造药品 Chemists are paving a road to recycle discarded SIM cards, not for electronics, but for medicine. SIM cards, which allow your phone to connect to your netwo…

ATTCK 05

环境搭建 自行下载安装包 解压VMware中win7 win8 同样方法所要用到的攻击机为kali 调节kali的网络适配器为vmnet8 调节win7的网络适配器 增加vmnet5用来连接内网win8 vmnet5名称ip角色kali192.168.115.129攻击机win7192.168.115.150192.168.138.136win8192.168.138.138DC拓…

【 java 反射上篇】java反射机制不难吧?来看看这篇

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

BMS系统—产生原因如何工作

1 为什么需要BMS系统 1.1 介绍 1)BMS,battery management system,电池管理系统 2)BMS是一套嵌入式系统,由硬件和软件共同组成 3)BMS功能:管理多节锂电池组成的电池包,实现充放电管理、安全保护…

jsp动物园网上购票系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 动物园网上购票系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统采用web模式开发,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#x…

Python:每日一题之FBI树(深度优先遍历)

题目描述 我们可以把由 “0” 和 “1” 组成的字符串分为三类:全 “0” 串称为 B 串,全 “1” 串称为 I 串,既含 “0” 又含 “1” 的串则称为 F 串。 FBI树是一种二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点…

Anolis 8.6 部署 Kafka 3.3.1 安装和测试

龙蜥 8.6 安装 Kafka 3.3.1 并通过 SpringBoot 3.0.1 版本调试一.Kafka 安装1.下载编译后的文件2.拷贝到 Anolis 并解压3.启动服务3.常用命令1.Topic 增查删2.生产消费测试二.SpringBoot 连接 Kafka1.项目结构、依赖、配置文件和启动类2.生产者和生产监听3.消费者和消费监听4.自…

【Java寒假打卡】Java基础-并发工具类

【Java寒假打卡】Java基础-并发工具类HashMap在多线程下的问题ConcurrentHashMapCountDownLatchHashMap在多线程下的问题 package com.hfut.edu.test14;import com.sun.jdi.request.StepRequest;import java.util.HashMap;public class test2 {public static void main(String…

信号的时域和频域特性的区别到底是什么?

不严谨的说,时域和频域分析就是在不同的空间看待问题的,不同空间所对应的原子(基函数)是不同的。你想一下时域空间的基函数是什么?频域空间的基函数是什么?一般的时-频联合域空间的基函数是什么?小波域空间的基函数是什…

线索二叉树(c++)

1.引言: 二叉树的三种遍历方法能将二叉树中的结点按某种方式生成一个线性序列,能将一个非线性结构进行线性化操作。但随之也产生两个问题: 遍历效率低 在采用左右链表示方法作为二叉树的存储结构时,当二叉树更新后,并…

【博客586】ipvs的hook点位置以及hook点钩子函数剖析

ipvs的hook点位置以及hook点钩子函数剖析 ipvs实现负载均衡的基础 ipvs其实是基于netfilter框架来挂载hook点,从而对流量进行dnat等操作 ipvs的hook点剖析 IPVS的实现利用了Netfilter的三个Hook点,分别是:NF_INET_LOCAL_IN、NF_INET_LOCAL_O…

【nvidia CUDA 高级编程】NVSHMEM 直方图——复制式方法

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…