【论文笔记】SEED: A Simple and Effective 3D DETR in Point Clouds

原文链接:https://arxiv.org/abs/2407.10749

简介:基于DETR的3D点云检测器难以达到较高的性能,这可能有两个原因:(1)由于点云的稀疏性和分布不均匀,获取合适的物体查询较为困难;(2)利用点云的几何结构进行查询交互还未被充分探索。本文提出SEED,包括两步查询选择(DQS)模块和可变形网格注意力(DGA)模块。DQS首先保留大量查询以保证高召回率,并通过估计质量分数选择高质量查询。DGA则将参考边界框均匀分割为网格,使用预测偏移量实现灵活的感受野,以使模型关注相关区域并捕捉有信息的特征。实验表明,本文方法在Waymo和nuScenes数据集上均能达到sota水平。

0. 方法概述

在这里插入图片描述
本文使用基于体素的主干提取3D体素特征,然后转化为BEV特征,并加入位置编码,拉直为序列。随后,使用DQS进行由粗到细的高质量查询获取;并使用SEED解码层,利用DGA实现查询与BEV特征的交互。

1. 两步查询选择模块

在这里插入图片描述
DQS包括前景查询选择和质量查询选择。

前景查询选择:使用二元分类器(掩膜预测器)区分BEV的前景和背景,同时为BEV特征加入位置编码,拉直为BEV查询序列 F b e v ∈ R H W × C F_{bev}\in\mathbb R^{HW\times C} FbevRHW×C。然后,选择比例为 r r r的分数最高的特征作为粗糙查询。分数 S b e v S_{bev} Sbev来自掩膜预测器,以保留尽可能多的前景查询。该步骤可记为:
Q c = T o p N c ( F b e v , S b e v ) Q_c=Top_{N_c}(F_{bev},S_{bev}) Qc=TopNc(Fbev,Sbev)

其中 N c = H W r N_c=HWr Nc=HWr为粗糙查询数, T o p N ( x , y ) Top_N(x,y) TopN(x,y)表示根据 y y y x x x中取出前 N N N个查询。

随后,输入SEED解码器获取查询与BEV查询序列的特征交互,得到增强查询 Q c ′ Q'_c Qc
Q c ′ = D e c o d e r ( Q c , F b e v ) Q'_c=Decoder(Q_c,F_{bev}) Qc=Decoder(Qc,Fbev)

其中Decoder为SEED解码层,见第2节。

质量查询选择:首先将粗糙查询 Q c ′ Q'_c Qc送入FFN,生成分类分数 S c S_c Sc(识别3D物体的概率)、定位分数 S l S_l Sl(提案框与真值之间的3D IoU)和粗糙提案框 B c B_c Bc(真值由第3节中质量感知的匈牙利匹配分配)。设置分类分数阈值 τ \tau τ区分前景物体,并定义质量分数:
S q i = { ( S c i ) 1 − β ⋅ ( S l i ) β , 若 S c i > τ S c i , 否则 S_q^i=\begin{cases}(S_c^i)^{1-\beta}\cdot(S_l^i)^\beta,&若S_c^i>\tau\\ S_c^i,&否则\end{cases} Sqi={(Sci)1β(Sli)β,Sci,Sci>τ否则

其中 β ∈ ( 0 , 1 ) \beta\in(0,1) β(0,1)为控制分类分数重要性的超参数。然后根据 S q S_q Sq选择前 N f N_f Nf个提案框 B f B_f Bf,并将 B f B_f Bf与相应的质量分数 S f S_f Sf拼接,输入MLP生成几何感知的高质量查询:
B f = T o p N f ( B c , S q ) Q f = M L P ( C o n c a t ( B f , S f ) ) B_f=Top_{N_f}(B_c,S_q)\\ Q_f=MLP(Concat(B_f,S_f)) Bf=TopNf(Bc,Sq)Qf=MLP(Concat(Bf,Sf))

最后,DQS的输出查询 Q f Q_f Qf会输入SEED解码器。

2. SEED解码层

本文使用可变形网格注意力替代DETR中的交叉注意力。

动机:需要针对点云的查询交互方法以探索DETR 3D目标检测的潜力。对于2D检测,附近的物体可能占据绝大多数像素,因此需要全局注意力才能检测到。而3D检测中的物体仅仅占用小部分区域,因此局部注意力就足够了。此外,3D点云包含丰富的几何信息,且矩形边界框无法捕捉物体精确的几何结构,需要灵活的感受野。本文的DGA则是一种有着灵活感受野的局部注意力,能利用3D物体几何信息的查询交互方法。
在这里插入图片描述
细节:DQS中的提案框 B f B_f Bf被视为参考框,并均匀分割为 k × k k\times k k×k的网格 g k g_k gk(图中黄色点)。选择的查询 Q f Q_f Qf(图中红色点)被送入线性函数,生成预测偏移量 Δ g \Delta g Δg。将偏移量与网格相加,生成最终的采样位置,以在灵活的感受野内捕捉3D物体的几何信息。注意力权重 A A A也是 Q f Q_f Qf通过线性函数和softmax函数得到的。使用双线性插值采样的特征与 A A A相乘,得到增强查询。DGA可表达如下:
D G A ( g , F b e v ) = ∑ j = 1 K A j ⋅ ϕ ( F b e v ( g j + Δ g j ) ) DGA(g,F_{bev})=\sum_{j=1}^KA_j\cdot\phi(F_{bev}(g_j+\Delta g_j)) DGA(g,Fbev)=j=1KAjϕ(Fbev(gj+Δgj))

其中 K = k 2 K=k^2 K=k2 ϕ \phi ϕ为线性函数。

3. 质量感知的匈牙利匹配

本文引入质量感知的匈牙利匹配(QHM)以分配真值。QHM利用质量分数 S f S_f Sf代替传统的分类分数,用于计算分类代价 C c l s C_{cls} Ccls
C p o s = − ( 1 − α ) ⋅ ( S f ) γ ⋅ log ⁡ ( 1 − S f ) C n e g = − α ⋅ ( 1 − S f ) γ ⋅ log ⁡ ( S f ) C c l s = C p o s − C n e g C_{pos}=-(1-\alpha)\cdot (S_f)^\gamma\cdot\log(1-S_f)\\ C_{neg}=-\alpha\cdot(1-S_f)^\gamma\cdot\log(S_f)\\ C_{cls}=C_{pos}-C_{neg} Cpos=(1α)(Sf)γlog(1Sf)Cneg=α(1Sf)γlog(Sf)Ccls=CposCneg

其中 α , γ \alpha,\gamma α,γ为超参数。回归代价与GIoU代价不变。

实施细节:本文的损失包括DETR头损失和DQS损失。DQS损失中,分类分数、定位分数和回归分别由二元交叉熵、IoU损失和SmoothL1损失监督。训练时使用fade策略(避免过拟合)和查询对比(提高性能)。

消融实验中提到:

  1. 目前的3种查询选择方式包括:可学习查询、基于热图的查询(如TransFusion-L,选择局部最大元素)和Top-N查询(通过类不可知的FFN并选择前 N N N个元素)。基于热图的查询方法性能最低,其余两者性能接近。
  2. 目前的3中查询交互方式包括:全局注意力、可变形注意力(感受野灵活)和边界框注意力(或称不可变形的网格注意力;利用边界框的几何信息)。全局注意力会导致OOM,而后两者性能接近。
    下图为各种注意力的图示。
    在这里插入图片描述

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

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

相关文章

基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)

博主介绍:✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍:我是程序员阿龙&#xff…

给虚拟机Ubuntu扩展硬盘且不丢数据

1.Ubuntu关机状态下先扩展,如扩展20GB 2.进入ubuntu,切换root登录,必须是root全选,否则启动不了分区工具gparted 将新的20GB创建好后,选择ext4,primary; 3.永久挂载 我的主目录在/并挂载到/dev/sda1 从图…

【C++】C++11之新的类功能与可变参数模板

目录 一、新的默认成员函数 二、新的关键字 2.1 default 2.2 detele 2.3 final和override 三、可变参数模板 3.1 定义 3.2 递归展开参数包 3.3 逗号表达式展开参数包 3.4 emplace_back 一、新的默认成员函数 在C11之前,默认成员函数只有六个,…

【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记

示例案例 为了更好地理解 K-Means 算法,下面通过一个简单的案例进行说明。 假设我们有以下 10 个二维数据点,表示不同商店的销售额(单位:千元)和顾客数(单位:人): [(1…

常见cms漏洞之dedecms

DedeCMS是织梦团队开发PHP 网站管理系统,它以简单、易用、高效为特色,组建出各种各样各具特色的网站,如地方门户、行业门户、政府及企事业站点等。 下载地址请网上自行寻找 搭建方式选择php study 首先搭建环境 #前台http://localhost/dedecm…

Java AI伪原创视频创作视频提取文案改写去水印系统小程序源码

🔥AI赋能创作新纪元!伪原创视频文案提取改写去水印全能系统大揭秘 🚀 开篇:创意无界,AI来助力 在这个视觉盛行的时代,视频创作成为了表达自我、传递信息的重要方式。但你是否曾为寻找灵感、撰写文案、处理…

sa-token登录机制以及网关统一鉴权环境搭建

文章目录 1.sa-token1.37集成(基于token)1.文档网址2.**sun-club-auth-application-controller引入依赖**3.application.yml4.sun-club-auth-application-controller测试的controller1.UserController.java2.启动测试1.登录,得到satoken2.验证…

【FPGA】cordic算法实现三角函数

参考资料:https://zhuanlan.zhihu.com/p/638520243https://zhuanlan.zhihu.com/p/638520243

Hadoop学习(三)

一、MapReduce框架原理 1.1InputFormat数据输入 MapTask并行度决定机制 1)数据块(HDFS存储数据单位),物理上把数据分成一块一块 2)数据切片(MapReduce程序计算输入数据的单位):只是在逻辑上…

Lanproxy开箱即用的内网穿透工服务!!

Lanproxy快速上手配置服务器转发到内网!! 本教程云服务器推荐使用的开发环境如下:服务器端配置配置端口登录Web界面 内网客户端配置下载客户端配置客户端端口 最终效果测试 本文主要记录了使用Lanproxy搭建内网穿透服务的过程,其中包括服务端和客户端的详…

CSP2019第二题: 公交换乘

CSP 2019 公交换乘 题目来源:牛客网 题目:* 示例1 输入 6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135输出 36题意: 根据输入,计算地铁花费不能用到优惠券的公交车的花费 知识点: 结构体 思路&#xff1…

谷粒商城实战笔记-vagrant避坑指南

文章目录 一,虚拟机磁盘空间不足问题原因解决方案 二,虚拟机导致C盘空间不足 一,虚拟机磁盘空间不足 使用vagrant管理虚拟机的过程中遇到了一个问题,虚拟机安装完成后,很快磁盘dev/sda1就满了,40G的空间&a…

Linux网络-小结

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux服务器作为一个常用的网络服务器,主要的作用就是向客户端提供网络…

【Python】数据类型之字符串

本篇文章将继续讲解字符串其他功能: 1、求字符串长度 功能:len(str) ,该功能是求字符串str的长度。 代码演示: 2、通过索引获取字符串的字符。 功能:str[a] str为字符串,a为整型。该功能是获取字符…

Java语言程序设计——篇十一(4)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …

HarmonyOS NEXT——奇妙的调用方式

注解调用一句话总结Extend抽取特定组件样式、事件&#xff0c;可以传递参数Style抽取公共样式、事件&#xff0c;不可以传递参数Builder抽取结构、样式、事件&#xff0c;可以传递参数BuilderParams自定义组件中传递UI组件多个BuilderParams自定义组件中传递多个UI组件 Extend…

【练习】使用DevEco Studio编写计数器案例

效果展示 默认状态 点击加号 点击减号 知识点 类型转换&#xff08;数字 和 字符串&#xff09; 字符串转数字 方法说明例子Number()字符串 直接转数字&#xff0c;转换失败返回NaN&#xff08;字符串包含非数字&#xff09; let str1: string 1.1 console.log(Number(str1)…

数论——线性同余方程、扩欧求解线性同余方程、线性组合、原根求解

线性同余方程 线性同余方程是形如 的方程&#xff0c;其中a 、b、m 为给定的整数&#xff0c;x 是未知整数。 扩欧求解线性同余方程 void mod_slover(int a, int b, int n) {int d, x, y, x0;d extend_gcd(a, n, x, y);if (b % d ! 0)cout << "no answer";…

Linux系统驱动(二)字符设备驱动

文章目录 一、ioctl函数&#xff08;一&#xff09;函数格式&#xff08;二&#xff09;ioctl命令码的组成1. 命令码的组成2. 自己封装命令码2. 内核提供了封装命令码的宏 &#xff08;三&#xff09;使用示例1. 驱动2. 应用 一、ioctl函数 Linux内核开发者想要将数据的读写和…