TransFusion:利用 Transformer 进行鲁棒性融合来进行 3D 目标检测

2023-11-13

Query 初始化

Input-dependent

以往 Query 位置是随机生成或学习作为网络参数的,而与输入数据无关,因此需要额外的阶段(解码器层)来学习模型向真实对象中心移动的过程。
论文提出了一种基于center heatmap 的 input-dependent 初始化策略。(decoder :6 layers —> 1 layer)

给定一个 d d d 维的 LiDAR BEV 特征图 F L ∈ R X × Y × d F_L\in \R^{X \times Y \times d} FLRX×Y×d,首先预测一个 class-specific heatmap S ^ ∈ R X × Y × K \hat S \in \R^{X\times Y \times K} S^RX×Y×K X × Y X \times Y X×Y 表示 BEV 特征图的大小, K K K 是类别数量。
然后,将 heatMap 看作 X × Y × K X×Y×K X×Y×K 个候选对象,并选择所有类别的前 N N N 个候选对象作为初始对象 Queries。
选择局部最大值元素作为对象Queries:避免空间上过于封闭的Queries。这些元素的值大于或等于它们的 8连通 neighbors。
所选候选对象的位置和特征用于初始化Queries位置和Queries特征。
初始对象Queries将位于或接近潜在的对象中心,消除了需要多个解码器层来细化位置。

Category-aware

BEV平面上的物体都是绝对尺度的,同一类别之间的尺度差异很小。通过为每个 Query 配备 category embedding 来使对象 Queries 具有 Category-aware (类别感知性)。

使用每个选定的候选对象的类别,也就是说 S ^ i , j , k \hat S_{i,j,k} S^i,j,k 属于第 k k k 个类别。通过线性映射 one-hot category 向量 到一个 R d \R^d Rd 向量,来将 Query 特征和 category embedding 进行元素求和。

category embedding:
1.在对自我注意模块中的对象-对象关系和交叉注意模块中的对象-上下文关系进行建模中作为有用的辅助信息。
2.在预测时,可以传递有价值的对象先验知识,使网络关注类别内的方差,从而有利于属性预测。

Transformer Decoder 和 FFN

在这里插入图片描述
上图:左-用于初始边界框预测的 transformer decoder 层的架构。 右-用于图像融合的 transformer decoder 层的体系结构。

在对象 Queries 与 特征映射(点云或图像)的交叉注意力将相关的上下文信息,聚集到候选对象上,而对象 Queries 之间的自我注意则导致不同候选对象之间的成对关系。
将 Query 位置嵌入到 MLP 的 D D D 维位置编码中,并与 Query 特征进行元素求和。 这使得网络能够联合推理上下文和位置。
然后,通过前馈网络(FFN)将包含丰富实例信息的 N N N 个对象 Queries 独立的解码为边界框和类标签。
通过并行地将每个对象 Query 译码为预测,得到一组预测值 { b ^ t , p ^ t } t N \{\hat b_t,\hat p_t\}_t^N {b^t,p^t}tN 作为输出,其中 b ^ t \hat b_t b^t 是第 i i i 个 Query 的预测边界框, p ^ ∈ [ 0 , 1 ] K \hat p \in [0,1]^K p^[0,1]K K K K 个语义类 pre-class 概率。
采用了辅助译码机制,在每个decoder层后加入 FFN 和监督。因此,可以从第一个decoder层得到初始边界框。

LiDAR-Camera 融合

图像特征提取

点级融合融合质量在很大程度上受到激光雷达点稀疏性的限制。当一个物体只包含少量的激光雷达点时,它只能获取相同数量的图像特征,浪费了高分辨率图像丰富的语义信息。

论文不提取基于激光雷达点和图像像素之间的硬关联的多视图图像特征。保留所有图像特征 F C ∈ R N v × H × W × d F_C\in R^{N_v×H×W×d} FCRNv×H×W×d 作为 memory bank,并利用 transformer decoder 中的交叉注意机制,以稀疏到密集的自适应方式进行特征融合。
在这里插入图片描述在给定来自 convolutional backbones 的一个 LiDAR BEV 特征图和一个图像特征图的基础上,我们的基于 transformer 的检测头首先利用 LiDAR 信息将目标 queriers 解码为初始边界框预测,然后通过将目标 queries 与有用的图像特征集中融合,进行 LiDAR-camera 融合。

用于图像特征融合的SMCA(空间调制交叉注意)

为了降低带来的传感器标定敏感性和图像劣质特征对硬关联策略的影响,利用交叉关注机制建立了激光雷达与图像之间的软关联,使网络能够自适应地确定从图像中获取信息的位置和内容。

首先使用先前的预测和校准矩阵来识别对象 Queries 所在的特定图像,然后在对象 Queries 和相应的图像特征映射之间进行交叉注意。

然而,由于激光雷达特征和图像特征来自完全不同的领域,目标 Queries 可能涉及到与待预测边界框无关的视觉区域,导致网络需要很长的训练时间来准确识别图像上的正确区域。

SCMA:通过围绕每个 Query 的投影2D中心的2D圆形高斯 mask 来加权交叉注意。这个2D高斯权重 mask 与 Center-Net 的生成方式类似, M i , j = exp ⁡ ( − ( i − c x ) 2 + ( j − c y ) 2 σ r 2 ) M_{i,j}=\exp (-\frac{(i-c_x)^2+(j-c_y)^2}{\sigma r^2}) Mi,j=exp(σr2(icx)2+(jcy)2),其中 ( i , j ) (i,j) (i,j)是权重 mask M 的空间索引, ( c x , c y ) (c_x,c_y) (cx,cy) 是通过投影 Query 预测在图像平面的2D中心, r r r 是3D边界框的投影角点的最小外接圆半径, σ σ σ 是调制高斯分布带宽的超参数。。然后,这个权重图与所有注意力头之间的交叉注意力图进行基本相乘。这样,每个对象 Query 只关注投影二维框周围的相关区域,从而使网络能够更好更快地根据输入的激光雷达特征学习在哪里选择图像特征。
在这里插入图片描述上图:第一行显示输入图像和投影在图像上的对象 Query 预测,第二行显示交叉注意图。
该网络通常倾向于关注靠近目标中心的前景像素,而忽略不相关的像素,为目标分类和边界框回归提供有价值的语义信息。

在SMCA之后,使用另一个FFN使用包含激光雷达和图像信息的对象 Queries 来产生最终的边界框预测。

图像引导 Query 初始化

recall也叫召回率,记做R,表示你预测的结果中有多少正样本被正确检测出来,当R=100%的时候,表示没有漏检

仅使用激光雷达特征进行选择对象 Query ,可能导致在检测召回率方面存在亚优性。

为了进一步利用高分辨率图像检测小目标的能力,并使算法对稀疏的激光雷达点云更具鲁棒性,利用激光雷达和相机信息选择对象 Query 。

通过与激光雷达BEV特征 F L F_{L} FL 交叉关注,将图像特征 F C F_C FC 投影到BEV平面上,生成一个激光雷达-相机BEV特征 F L C F_{LC} FLC
在这里插入图片描述
使用沿高度轴折叠的 multiView 图像特征作为注意力机制的 key-value 序列。折叠操作基于观察到BEV位置与图像列之间的关系可以很容易地利用摄像机几何来建立,通常每个图像列上最多有一个物体。
因此,沿高度轴折叠可以在不丢失关键信息的情况下显著减少计算量。 虽然在这个过程中可能会丢失一些细粒度的图像特征,但它已经满足了需要:因为它只需要对潜在的目标位置进行提示。使用 F L C F_{LC} FLC来预测 heatmap,并用仅有激光雷达的 heatmap S ^ \hat S S^ 进行平均,作为最终的 heatmap S ^ L C \hat S_{LC} S^LC。利用 S ^ L C \hat S_{LC} S^LC 选择和初始化目标 Query ,模型就能够检测出激光雷达点云中难以检测的目标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TransFusion:利用 Transformer 进行鲁棒性融合来进行 3D 目标检测 的相关文章

  • 给定 3D 空间中的一条线,如何找到从它到一点的角度?

    我在 3D 空间中有两组点 我想画一条穿过两组点的中心的线 然后找到从该线到每个点的角度 从那里开始 我将根据两个角度的接近程度来确定两组中的匹配点 我知道如何找到每组点的中心 只需将它们平均在一起 并且我知道如何将它们匹配 甚至考虑到它们
  • 如何使用更少的包绘制二元正态分布的表面和轮廓

    我将绘制二元正态分布的 3D 曲面及其轮廓 可以是任何二元正态分布 我想用persp and contour在我的画中 我在网上搜索了一下 但发现了很多方法 大多数人都使用过一些软件包 但我想以使用更少的软件包甚至不安装任何软件包的方式来执
  • WPF 3D 旋转球体 GUI

    我一直在尝试在 WPF 中为我的课堂作业制作 3D 用户界面 但遇到了一个问题 现在 2 3 天都无法解决 我尝试用谷歌搜索答案 我查看了一些 stackoverflow 帖子 但还没有一个可以帮助我解决问题 情况是这样的 我有一个 3D
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • 如何在 OpenCV 中绘制图像的 3D 直方图

    更新 我找到更多例子 我现在可以做到 我可以在 3d 中绘制多个直方图吗 https stackoverflow com questions 35210337 can i plot several histograms in 3d 我知道这
  • 从 NumPy 数组中的数据绘制 3D 图像

    我有一个 NumPy 数组中的数据文件 我想查看 3D 图像 我正在分享一个示例 我可以在其中查看大小为 100 100 的 2D 图像 这是 xy 平面上 z 0 处的切片 import numpy as np from matplotl
  • OpenGL Z 偏置(多边形偏移)限制

    我有两个共面的多边形 我尝试做 glEnable GL POLYGON OFFSET FILL glPolygonOffset 0 1 并期望其中一个明显 位于 另一个之上 这种情况直到大约 70 75 个单位之外 近剪裁平面为 1 远剪裁
  • 如何将 3D 图像输出到 3D 电视?

    我有一台 3D 电视 如果我不至少尝试让它显示我自己创作的漂亮 3D 图像 我就会逃避我的责任 作为一个极客 我之前已经完成了非常基本的 OpenGL 编程 因此我了解所涉及的概念 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点
  • 判断一个点是否在多面体内部

    我试图确定某个特定点是否位于多面体内部 在我当前的实现中 我正在研究的方法采用我们正在寻找多面体面的数组 在本例中为三角形 但稍后可能是其他多边形 的点 我一直在尝试根据这里找到的信息进行工作 http softsurfer com Arc
  • Unity3D:在 AA 解析后绘制粒子以提高性能

    我正在尝试评估 MSAA 对 Unity 中含有大量粒子的场景的影响 为此 我需要 使用 8x MSAA 绘制场景中的所有非粒子对象 使用上一个通道中解析的深度缓冲区来渲染所有 将非遮挡粒子系统转移到较小的渲染目标上 将 2 的颜色缓冲区与
  • 在球体边缘绘制点

    因此 来自 Flash 背景的我对一些简单的 2D 三角函数有很好的理解 在带有 I 圆的二维中 我知道使用给定角度和半径将项目放置在边缘上的数学 x cos a r y sin a r 现在 如果我在 3d 空间中有一个点 我知道球体的半
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • 如何在 React Native 中渲染自定义 3D 对象

    我已经成功使用 Three js expo Three 和 expo gl 在 React Native 中配置了红色立方体的 3D 渲染 但我想让用户渲染他们自己可能拥有的自定义 3D 对象 obj 或 mtl 扩展名 但我不确定如何让他
  • 将 3D 场景导入babylonJS

    所以我今天读到巴比伦JS http blogs msdn com b eternalcoding archive 2013 06 27 babylon js a complete javascript framework for build
  • 如何在不使用 Kinect SDK 函数的情况下将深度空间中的点转换为 Kinect 中的颜色空间?

    我正在做一个增强现实应用程序 将 3D 对象叠加在用户的彩色视频之上 使用 Kinect 1 7 版本 虚拟对象的渲染在 OpenGL 中完成 我已经成功地在深度视频上叠加了 3D 对象 只需使用 NuiSensor h 标头中深度相机的固
  • 使用开源 3D 引擎从 Openstreetmap 数据渲染地图? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 从 Openstreetmap 数据渲染 3D 地图可能会很漂亮麻烦的 https gis stack
  • 在 R 中根据时间序列数据制作 3D 曲面

    我有一个大型数据集 我想从中制作 3D 表面 我希望 x 轴为日期 y 轴为时间 24 小时 z 轴 高度 为我的值 我是 R 初学者 所以越简单越好 http www quantmod com examples chartSeries3d
  • 使用纽厄尔方法在 Python 中计算表面法线

    我正在尝试实现 Newell 方法来计算 Python 中的表面法向量 基于以下伪代码here https www opengl org wiki Calculating a Surface Normal Begin Function Ca
  • 如何在 R 中导入并绘制三角形网格?

    我想在 R 中绘制我的模型输出 它是格式为的三角形网格 x1 y1 z1 x2 y2 z2 x3 y3 z3 value 每行代表一个三角形 我想用以下方法绘制这些三角形value作为规模 mymesh lt structure c 0 9
  • 3D 图形批处理

    很多网站 文章都说 批量 批 批 有人可以解释一下着色器中的 批处理 代表什么吗 即 是否 改变纹理 更改任意着色器变量 意味着某些东西不能 批处理 最简单的总结方法就是尝试尽可能少地调用 API 来绘制您需要绘制的内容 使用顶点数组或 V

随机推荐

  • 程序设计的基本方法

    IPO模式 输入 处理 算法 是程序的灵魂 输出 问题的计算部分 程序编写步骤 分析问题 确定问题 设计算法 编写实现 调试测试 升级维护 编程技巧之流程图 我们写的程序都是有逻辑顺序的 即是有流程的 流程图的作用则是对这种逻辑顺序的一种描
  • jQuery选择器、特殊选择器、筛选器

    一 选择器 ul li class a 1 li li class a 2 li li class b 3 li li class c 4 li li class abc 5 li li li li li ul 1 获取页面中所有的ul标签
  • 颜色代码对照表

    各颜色代码 1 白色 FFFFFF 2 红色 FF0000 3 绿色 00FF00 4 蓝色 0000FF 5 牡丹红 FF00FF 6 青色 00FFFF 7 黄色 FFFF00 8 黑色 000000 9 海蓝 70DB93 10 巧克
  • 使用selenium实现自动登录

    from selenium import webdriver import time driver webdriver Chrome 打开登录页面 url为要打开的地址 driver get url 最大化浏览器 driver maximi
  • 域名系统几类服务器,域名系统

    域名系统 编辑 定义 域名系统 简称为DNS Domain Name System 是因特网使用的命名系统 用来便于人们使用的机器名字转换为IP地址 域名系统其实也称为名字系统 只是更明确地指明这种系统是用在因特网中 域名系统的主要特点是在
  • HTTP请求接口方法(POST/GET)

    private static string HttpPost string Url string postDataStr HttpWebRequest request HttpWebRequest WebRequest Create Url
  • 【Python】matplotlib画散点图,并根据目标列的类别来设置颜色区间(含源代码及参数解释)

    最近在进行绘图时 遇到了matplotlib画散点图 并根据目标列的类别来设置颜色区间的问题 但是实现的过程较为艰辛 文章目录 一 数据准备 二 第一次尝试 失败及其原因 2 1 失败 2 2 原因 三 第二次尝试 成功 四 总结 plt
  • Nginx 重写功能(location / rewrite)

    这里写自定义目录标题 一 nginx rewrite概述 1 概述 2 Rewrite跳转场景 3 Rewrite跳转实现 4 Rewrite实际场景 二 Nginx常见模块 三 常见的Nginx正则表达式 1 正则的优势 2 正则的作用
  • shell 多个引号冲突_请教Linux shell命令中双引号与单引号嵌套的问题

    addr 192 168 0 111 echo addr 结果为 192 168 0 111 echo addr 结果为 addr 这两个我还可以理解 1 双引号内的单引号功能被关闭 反之亦然 2 双引号内的 功能被保留 单引号 addr
  • fatal: Authentication failed for ‘https://github.com

    记录在本地电脑建立与GitHub连接时遇到的错误 附上解决方案 git clone 遇到的错误 remote Support for password authentication was removed on August 13 2021
  • osx 常用defaults命令

    defaults命令用来对mac os x系统进行某些设置 常用命令 查看所使用的defaults命令 history grep defaults 分类查看defaults命令 history grep defaults write his
  • JavaScript数据结构——字典(Dictionary)

    概念和结构 字典里面的元素都是一个键 key 值 value 对 字典里面的元素的键 key 不能重复 值 value 可以重复 字典的操作 字典有八种常用操作 分别为 检查键是否存在 has key 添加元素 set key value
  • js 搜索模糊匹配

    searchvalue list keyWord if keyWord var reg new RegExp keyWord var arr for var i 0 i lt list length i if reg test list i
  • Java8-对List转换Map、分组、求和、过滤

    前言 在java8之后我们list转map再也不用循环put到map了 我们用lambda表达式 使用stream可以一行代码解决 下面我来简单介绍list转map的几种方式 和转为map后对map进行分组 求和 过滤等操作 正文 数据准备
  • C#实现百度地图附近搜索&调用JavaScript函数

    前一篇文章 C 调用百度地图API入门 解决BMap未定义问题 讲述了如何通过C 调用百度API显示地图 并且如何解决BMap未定义的问题 这篇文章主要更加详细的介绍百度地图的一些功能 包括附近搜索 城市搜索 路线规划 添加覆盖物等等 希望
  • ipv6的链路本地地址

    目录 简介 先决条件 要求 使用的组件 规则 配置 网络图 配置 验证 检验 OSPF 的配置 正在验证的链路本地地址可接通性 ping从远程网络的链路本地地址 直接ping从连接的网络的链路本地地址 相关信息 简介 本文目的将提供对在网络
  • Qt漂亮界面

    Qt漂亮界面 功能规划 一 去掉菜单栏和工具栏 二 顶部导航栏的设计 appinit h头文件 appinit cpp的文件 使用方式 三 阵列按钮的点击事件写法 四 重写缩写界面 放大界面和关闭程序事件 五 鼠标事件的处理 Qt大量同类控
  • mysql数据库内容导出,MySql数据库导出

    Navicat Premium Data Transfer Source Server 刘文鹏 Source Server Type MySQL Source Server Version 50540 Source Host 127 0 0
  • 关于X79主板至强E5 CPU安装ArchLinux的记录

    最近想在家里搭网站 打算弄两台服务器 一个是旧机器x79主板的 作为AI绘图和Chatglm部署用 一个新买的是带有N5095的小板子 装了CentOS7来当web服务器 当作前置服务器 主要为外网提供服务 装CentOS7比较简单容易 所
  • TransFusion:利用 Transformer 进行鲁棒性融合来进行 3D 目标检测

    Query 初始化 Input dependent 以往 Query 位置是随机生成或学习作为网络参数的 而与输入数据无关 因此需要额外的阶段 解码器层 来学习模型向真实对象中心移动的过程 论文提出了一种基于center heatmap 的