论文阅读:CenterFormer: Center-based Transformer for 3D Object Detection

目录

概要

Motivation

整体架构流程

技术细节

Multi-scale Center Proposal Network

Multi-scale Center Transformer Decoder

Multi-frame CenterFormer

小结


论文地址:[2209.05588] CenterFormer: Center-based Transformer for 3D Object Detection (arxiv.org)

代码地址:GitHub - TuSimple/centerformer: Implementation for CenterFormer: Center-based Transformer for 3D Object Detection (ECCV 2022)

概要

    CenterFormer,这是一种基于中心的变压器网络,用于3D目标检测。CenterFormer首先使用中心热图在标准基于体素的点云编码器之上选择中心候选。然后它使用中心候选的特征作为转换器中的查询嵌入。设计了一种通过交叉注意融合特征的方法,能进一步聚合多帧的特征。最后,添加回归头来预测输出中心特征表示上的边界框。整体设计降低了变压器结构的收敛难度和计算复杂度;与无锚目标检测网络强基线相比有显著改进。

Motivation

  1. 与图像域目标检测相比,LiDAR数据中的扫描点可能是稀疏且不规则的,这取决于与传感器的距离;
  2. 目前的两阶段网络缺乏上下文和全局信息学习,它们只使用提案的局部特征(RoI)来优化结果,其他方框或相邻位置中的特征也可能有利于细化,但这些特征被忽略;
  3. 自动驾驶场景的环境不是静止的。当使用扫描序列时,局部特征学习有更多的局限性;
  4. 变压器解码器使用大的特征映射,查询嵌入很难在训练过程中集中;
  5. DETRstyle编码器-解码器变压器网络有两个主要问题:随着输入大小的增加,计算复杂度呈二次增长,限制了转换器仅将低维特征作为输入,这导致小对象的性能较低;查询嵌入是通过网络学习的,使得训练很难收敛。

整体架构流程

  一种基于中心的变压器网络,称为中心变压器(CenterFormer),用于三维目标检测。具体来说,首先使用标准的基于Voxel的骨干网将点云编码为BEV特征表示。接下来,使用多尺度中心提议网络将特征转换为不同的尺度并预测初始中心位置。所提出的中心的特征被输入Transformer解码器作为query embedding。在每个Transformer 模块中,使用可变形交叉注意力层来有效地聚合来自多尺度特征图的特征。然后输出对象表示回归到其他对象属性以创建最终的对象预测。

    如下图所示,该方法可以对对象级连接和远程特征注意力进行建模。为了进一步探索变压器的能力,还提出了一种多帧设计,通过交叉注意融合来自不同帧的特征。

    上图中,center前与 RCNN 样式检测器的比较。RCNN 在 RoI 中聚合点或网格特征,而居中前可以通过注意力机制学习对象级上下文信息和远程特征。

    上图所示为CenterFormer的整体架构。该网络由四个部分组成:将原始点云编码为 BEV 特征表示的体素特征编码器、多尺度中心提议网络 (CPN)、基于中心的Transformer解码器和用于预测边界框的回归头。

技术细节

Multi-scale Center Proposal Network

  DETR 风格的 Transformer 编码器需要将特征图压缩成小尺寸,以便计算成本可以接受。这使得网络失去了对检测小物体至关重要的细粒度特征,这些小物体通常占据 BEV 地图中小于 1% 的空间。因此,提出了一个多尺度中心提议网络(CPN)来代替 BEV 特征的Transformer编码器。为了准备多尺度特征图,使用特征金字塔网络将 BEV 特征表示处理成3个不同的尺度。在每个尺度结束时,添加一个卷积块注意力模块 (CBAM),以通过通道和空间注意力来增强特征。

  使用最高比例特征图 C 上的中心Head来预测目标中心的 l 通道Heatmap。每个通道包含一个类的Heatmap分数。将前 N 个Heatmap分数的位置作为中心提案。在实验中凭经验使用 N = 500。

Multi-scale Center Transformer Decoder

    在建议的中心位置提取特征作为Transformer解码器的query embedding。使用线性层将中心的位置编码为位置嵌入。传统的 DETR 解码器使用可学习的参数初始化query。因此,在解码器中获得的注意力权重在所有特征中几乎相同。通过使用中心特征作为初始query embedding,可以引导训练专注于包含有意义的目标信息的特征。

    在 vanilla Transformer 解码器中使用相同的自注意力层来学习目标之间的上下文注意力。计算中心query对所有多尺度 BEV 特征的交叉注意力的复杂度为 :

由于 BEV 特征图的分辨率需要相对较大以保持小目标的细粒度特征,因此将所有 BEV 特征用作attending keypoints是不切实际的。或者,将attending keypoints限制在每个尺度的中心位置附近的一个 3×3 小窗口,如上图 所示。这种交叉注意力的复杂度为 O(9SN),比正常实现更有效。由于具有多尺度特征,因此能够在提议的中心周围捕获广泛的特征。多尺度交叉注意力可以表述为:

其中p表示中心建议,这里的Ωj是中心周围的窗口,s是尺度的索引。前馈层也保持不变。

Multi-frame CenterFormer

    多帧通常用于 3D 检测以提高性能。当前基于 CNN 的检测器无法有效融合快速移动物体的特征,而由于注意力机制,transformer 结构更适合融合。为了进一步探索 CenterFormer 的潜力,提出了一种使用交叉注意力transformer的多帧特征融合方法。使用相同的骨干网络单独处理每个帧。前一帧的最后一个 BEV 特征被转换为当前坐标,并与中心头和交叉注意力层中的当前 BEV 特征融合。

小结

  • 引入了一种基于中心的变压器网络进行3D目标检测。
  • 使用中心特征作为初始查询嵌入query embedding来促进Transformer的学习。
  • 提出了一种多尺度交叉注意层来有效地聚合相邻特征,而不会显著增加计算复杂度。
  • 建议使用交叉注意Transformer来融合来自不同帧的对象特征。
  • 方法大大优于所有以前发布的方法,在Waymo开放数据集上设置了新的最先进的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考】9.2 串/数组/矩阵/广义表/树

《字符串》 一种特殊的线性表,数据元素都为字符模式匹配:寻找子串第一次在主串出现的位置 模式匹配算法 1. 暴力破解法(布鲁特-福斯算法) 主串与子串一个个匹配效率低 2. KMP算法 主串后缀和子串前缀能否找到一样的元素&#xf…

[计算机提升] 用户和用户组

1.1 用户和用户组 1.1.1 用户 用户账户是计算机操作系统中用于标识和管理用户身份的概念。 每个用户都拥有一个唯一的用户账户,该账户包含用户的登录名、密码和其他与用户身份相关的信息。 用户账户通常用于验证用户身份,并授权对系统资源的访问权限。…

用PHP爬取视频代码示例详细教程

以下是一个使用Symfony Panther和PHP进行爬虫的示例程序&#xff0c;用于爬虫企鹅上的视频。请注意&#xff0c;这个示例需要使用https://www.duoip.cn/get_proxy这段代码获取爬虫IP。 <?php // 引入所需的库 require vendor/autoload.php;use Symfony\Component\Panther\P…

【已解决】No Python at ‘D:\Python\python.exe‘

起因&#xff0c;我把我的python解释器&#xff0c;重新移了个位置&#xff0c;导致我在Pycharm中的爬虫项目启动&#xff0c;结果出现这个问题。 然后&#xff0c;从网上查到了这篇博客: 【已解决】No Python at ‘D:\Python\python.exe‘-CSDN博客 但是&#xff0c;按照上述…

LeetCode 137. 只出现一次的数字 II【哈希表;位运算;数字逻辑;DFA】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

尚硅谷Docker核心技术

目录 第1课时 docker_前提知识要求和课程简介第2课时 docker_为什么会出现第3课时 docker_理念第4课时 docker_是什么&#xff1f;第5课时 docker_能干什么第6课时 docker_3要素第7课时 centos6安装Dockercentos7安装Docker第9课时 阿里云镜像加速器配置第10课时 helloworld镜像…

pycharm社区版创建Django项目的一种方式

pycharm社区版创建Django项目 pycharm创建New project安装django&#xff0c;如果安装过可略过安装完成后查看安装情况生成Django项目需要的文件这里注意生成语句后面的 . 不可以省略 生成文件后&#xff0c;框架搭建完成&#xff0c;配置启动我这里在配置完后&#xff0c;报了…

JAVAEE初阶相关内容第十四弹--网络初识

写在前&#xff1a; 这一部分开启网络部分的相关知识&#xff0c;这一弹内容初始网络将主要进行网络相关知识的简单介绍&#xff0c;以及着重介绍协议、协议分层、OSI七层模型、TCP/IP五层模型、封装和分用。 需要认识协议&#xff0c;并知道协议的效果是什么&#xff1b;知道…

RN(React Native)的应用程序在雷电模拟器可以运行,安卓真机运行失败问题解决记录

yarn react-native build-android打包的apk在真机安卓运行提示&#xff1a; Unable to load script . Make sure you re either running Metro ( run npx react - native start ) or that your bundle index . android . bundle is packaged correctly for release . jn…

微服务12-分布式服务理论基础+Seata的认识

文章目录 分布式服务理论基础前言微服务和分布式的区别CAP定理BASE理论 Seata流程&#xff1a;seata部署微服务集成seata 分布式服务理论基础 前言 单体架构&#xff1a; 1.项目过于臃肿&#xff0c;所有服务在一起&#xff0c;一个业务挂了&#xff0c;整个项目就不能用了&…

哪个牌子的电容笔好用?ipad触控笔推荐平价

有哪些电容笔适合学生党入手&#xff1f;苹果Pencil虽然与普通的电容笔&#xff0c;不同的是&#xff0c;这款电容笔同时具有重力传感器和倾斜传感器&#xff0c;而平替电容笔&#xff0c;只有一种倾斜传感器&#xff0c;但在书写方面的体验很不错&#xff0c;可以用来写字&…

【算法|前缀和系列No.4】leetcode238. 除自身以外数组的乘积

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【leetcode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

如何实现前端数据持久化(LocalStorage、IndexedDB等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

MySQL InnoDB引擎深入学习的一天(InnoDB架构 + 事务底层原理 + MVCC)

目录 逻辑存储引擎 架构 概述 内存架构 Buffer Pool Change Buffe Adaptive Hash Index Log Buffer 磁盘结构 System Tablespace File-Per-Table Tablespaces General Tablespaces Undo Tablespaces Temporary Tablespaces Doublewrite Buffer Files Redo Log 后台线程 事务原…

Hadoop 配置 Kerberos 认证

1、安装 Kerberos 服务器和客户端 1.1 规划 服务端&#xff1a; bigdata3 客户端&#xff08;Hadoop集群&#xff09;&#xff1a; bigdata0 bigdata1 bigdata2 192.168.50.7 bigdata0.example.com bigdata0 192.168.50.8 bigdata1.example.com bigdata1 192.168.50.9 b…

4.Python-用Python,Ajax实现MySQL数据库的新增数据

题记 用python&#xff0c;ajax实现mysql数据库的新增数据。以下是一个简单的实例和操作过程。 安装flask模块 pip install flask 安装mysql.connector模块 pip install mysql-connector-python 编写app.py文件 app.py文件如下&#xff1a; 块引用可能显示不完整&#x…

第15章 SpringBoot

所有的流程逻辑原理都是针对2.3.2.RELEASE版本 15.1 谈谈你对微服务架构演进的理解 难度:★ 重点:★ 白话解析 还是串主线,在串主线的过程中发现问题,解决问题。主线的入口:随着业务的逻辑越来越复杂,架构再不断升级演进,先理解架构的演进。 这道题参考了:企业IT架构转…

kantts docker化

kan-tts docker本地化 环境安装 下载docker镜像(python3.8的) registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.2 安装基础模型 pip install modelscope 安装语音模型 pip install "modelscope…

系列八、Redis的事务

一、是什么 可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c;按顺序地串行化执行而不会被其他命令插入&#xff0c;不允许加塞。 二、能干嘛 一个队列中&#xff0c;一次性、顺序性、排他性的执行一些列命令。 三、怎么玩…

git本地仓库及远端仓库推送【linux】

git本地仓库及远端仓库推送【linux】 一.git上创建仓库二.linux中git三板斧i.检查是否安装gitii.克隆仓库到本地iii.提交到本地仓库iiii.上传到远端仓库 三.其他内容补充git loggit status.gitignore 一.git上创建仓库 已经创建好的可以直接跳到第二步进入到创建仓库界面&…