【论文笔记】UniVision: A Unified Framework for Vision-Centric 3D Perception

原文链接:https://arxiv.org/pdf/2401.06994.pdf

1. 引言

目前,同时处理基于图像的3D检测任务和占用预测任务还未得到充分探索。3D占用预测需要细粒度信息,多使用体素表达;而3D检测多使用BEV表达,因其更加高效。

本文提出UniVision,同时处理3D检测与占用预测任务的统一网络。网络结构为合-分-合,先使用共享的网络提取多视图图像特征,并使用新的视图变换模块,组合了基于深度的提升和基于查询的采样方法,以进行2D-3D视图变换。然后,网络分为两个分支,分别进行体素和BEV特征提取。然后,使用自适应特征交互使特征彼此增强,并输入任务头。此外,还提出联合的占用-检测数据增广方式,以及多任务高效训练策略。

3. 方法

3.1 整体结构

在这里插入图片描述
如上图所示为本文模型总体结构。给定 N N N视图图像 { I i ∣ I i ∈ R W I × H I × 3 } , i ∈ { 1 , ⋯ , N } \{I^i|I^i\in\mathbb{R}^{W_I\times H_I\times 3}\},i\in\{1,\cdots,N\} {IiIiRWI×HI×3},i{1,,N},首先使用特征提取网络提取特征 F i m g F_{img} Fimg。然后,通过显式-隐式(Ex-Im)视图变换模块,联合使用深度指导的显式特征提升以及查询指导的隐式特征采样,将图像特征转化为体素特征 F v o x e l F_{voxel} Fvoxel。然后,输入局部-全局特征提取和融合模块提取局部上下文感知的体素特征和全局上下文感知的BEV特征,并使用跨表达特征交互模块进行体素特征与BEV特征的信息交换,输入到不同的任务头中。训练中,还会使用联合占用-检测(Occ-Det)数据增广和渐进损失权重调整策略,以高效训练UniVision。

3.2 Ex-Im视图变换

深度指导的显式特征提升:根据LSS,使用基于像素深度分布 D d e p t h ∈ R D × H × W D_{depth}\in\mathbb{R}^{D\times H\times W} DdepthRD×H×W与图像特征 F i m g ∈ R C × H × W F_{img}\in\mathbb{R}^{C\times H\times W} FimgRC×H×W的体素池化操作:
F v o x e l e x = VoxelPooling ( D d e p t h , F i m g ) F_{voxel}^{ex}=\text{VoxelPooling}(D_{depth},F_{img}) Fvoxelex=VoxelPooling(Ddepth,Fimg)

其中 F v o x e l e x F_{voxel}^{ex} Fvoxelex称为显式体素特征。

查询指导的隐式特征采样:由于显式体素特征的精度与深度分布的估计精度高度相关,且LSS生成的点云是不均匀的,本文进一步使用查询指导的特征采样来补偿。定义可学习体素查询 q v o x e l ∈ R C × X × Y × Z q_{voxel}\in\mathbb{R}^{C\times X\times Y\times Z} qvoxelRC×X×Y×Z,使用3D Transformer从图像采样特征。对每个体素查询,通过校准矩阵 P P P将其中心 c c c投影到图像平面得到参考点 p p p,后接 N N N个由可变形交叉注意力(DCA)、3D卷积(Conv)和前馈网络(FFN)组成的Transformer块:
p = P × c q i + 1 = F F N ( C o n v ( D C A ( q i , p , F i m g ) ) ) F v o x e l i m = q N p=P\times c\\ q^{i+1}=FFN(Conv(DCA(q^i,p,F_{img})))\\ F_{voxel}^{im}=q^N p=P×cqi+1=FFN(Conv(DCA(qi,p,Fimg)))Fvoxelim=qN

体素查询在3D空间中均匀分布,且学习到了所有训练样本的统计信息,这与LSS的深度先验信息独立。因此显式体素特征和隐式体素特征互补,拼接后作为视图变换模块的输出。
F v o x e l = F v o x e l e x ∣ ∣ F v o x e l i m F_{voxel}=F_{voxel}^{ex}||F_{voxel}^{im} Fvoxel=Fvoxelex∣∣Fvoxelim

Ex-Im视图变换模块如下图所示。
在这里插入图片描述

3.3 局部-全局特征提取和融合

给定体素特征 F v o x e l ∈ R C × X × Y × Z F_{voxel}\in\mathbb{R}^{C\times X\times Y\times Z} FvoxelRC×X×Y×Z输入,首先堆叠 Z Z Z轴特征并使用卷积减小通道数,得到BEV特征 F b e v ∈ R C × X × Y F_{bev}\in\mathbb{R}^{C\times X\times Y} FbevRC×X×Y
F b e v = C o n v ( S t a c k ( F v o x e l , d i m = Z ) ) F_{bev}=Conv(Stack(F_{voxel},dim=Z)) Fbev=Conv(Stack(Fvoxel,dim=Z))

然后,模型分为两个并行分支,进行特征提取和加强。

局部特征提取:对 F v o x e l F_{voxel} Fvoxel,使用由3D卷积组成的局部特征提取分支提取各空间位置的局部特征。将ResNet扩展为ResNet3D,以提取多尺度体素特征 { F v o x e l i ∣ F v o x e l i ∈ R ( 2 i C ) × X 2 i × Y 2 i × Z 2 i } \{F^i_{voxel}|F^i_{voxel}\in\mathbb{R}^{(2^iC)\times \frac X {2^i} \times \frac Y {2^i}\times \frac Z {2^i}}\} {FvoxeliFvoxeliR(2iC)×2iX×2iY×2iZ},然后使用SECOND中的FPN结构,将多尺度体素特征融合为 F v o x e l l o c a l ∈ R C × X × Y × Z F_{voxel}^{local}\in\mathbb{R}^{C\times X\times Y\times Z} FvoxellocalRC×X×Y×Z

全局特征提取:BEV特征 F b e v F_{bev} Fbev保留了物体级别的信息,计算高效。本文提出带全局感受野的全局特征提取分支,使用由可变形卷积v3(DCNv3)组成的网络动态聚合全局信息,得到多尺度BEV特征 { F b e v i ∣ F b e v i ∈ R ( 2 i C ) × X 2 i × Y 2 i } \{F_{bev}^i|F_{bev}^i\in\mathbb{R}^{(2^iC)\times \frac X {2^i} \times \frac Y {2^i}}\} {FbeviFbeviR(2iC)×2iX×2iY}。同样输入SECOND FPN结构,得到融合的BEV特征 F b e v g l o b a l ∈ R C × X × Y F_{bev}^{global}\in\mathbb{R}^{C\times X\times Y} FbevglobalRC×X×Y

跨表达特征交互:进行两表达的自适应信息交换,以进一步加强特征。首先,通过 Z Z Z轴复制将BEV特征转化为体素特征,通过求和将体素特征转化为BEV特征:
F v o x e l g l o b a l = r e p e a t ( F b e v g l o b a l , d i m = Z ) F b e v l o c a l = a d d ( F v o x e l l o c a l , d i m = Z ) F_{voxel}^{global}=repeat(F_{bev}^{global},dim=Z)\\ F_{bev}^{local}=add(F_{voxel}^{local},dim=Z) Fvoxelglobal=repeat(Fbevglobal,dim=Z)Fbevlocal=add(Fvoxellocal,dim=Z)

对于体素表达,将 F v o x e l l o c a l F_{voxel}^{local} Fvoxellocal作为查询, F v o x e l g l o b a l F_{voxel}^{global} Fvoxelglobal作为键与值。将自注意力中的邻域注意力Transformer扩展为交叉注意力,以进行局部感受野 Δ p \Delta p Δp内的信息聚合。对BEV特征,使用相似的方式:
F v o x e l f u s i o n = A t t n ( q = F v o x e l l o c a l , k & v = F v o x e l g l o b a l , Δ p ) F b e v f u s i o n = A t t n ( q = F b e v g l o b a l , k & v = F b e v l o c a l , Δ p ) F_{voxel}^{fusion}=Attn(q=F_{voxel}^{local},k\&v=F_{voxel}^{global},\Delta p)\\ F_{bev}^{fusion}=Attn(q=F_{bev}^{global},k\&v=F_{bev}^{local},\Delta p) Fvoxelfusion=Attn(q=Fvoxellocal,k&v=Fvoxelglobal,Δp)Fbevfusion=Attn(q=Fbevglobal,k&v=Fbevlocal,Δp)

其中 Δ p = 3 × 3 \Delta p=3\times3 Δp=3×3 3 × 3 × 3 3\times3\times3 3×3×3

3.4 头部与损失

对于占用任务,使用两层MLP将特征通道数转化为占用类别数;损失与OpenOccupancy相同( L o c c L_{occ} Locc),包含交叉熵损失、lovasz softmax损失、几何亲和性损失与语义亲和性损失。

对于检测任务,使用基于中心的头部和损失函数( L d e t L_{det} Ldet),后者包含分类损失与回归损失。

此外,还加入了与BEVDepth相同的深度损失( L i m g L_{img} Limg)。

渐进损失权重调整策略:直接结合上述损失会导致训练失败,网络不能收敛。
在这里插入图片描述
为解决这一问题,本文为占用损失和检测损失添加控制参数 δ \delta δ,以调整损失权重。一开始, δ = V min ⁡ \delta=V_{\min} δ=Vmin很小,然后在 N N N个epoch内逐渐增大到 V max ⁡ V_{\max} Vmax,如上图所示:
L = L i m g + δ L d e t + δ L o c c δ = max ⁡ ( V min ⁡ , min ⁡ ( V max ⁡ , i N ⋅ V max ⁡ ) ) L=L_{img}+\delta L_{det}+\delta L_{occ}\\ \delta=\max(V_{\min},\min(V_{\max},\frac i N\cdot V_{\max})) L=Limg+δLdet+δLoccδ=max(Vmin,min(Vmax,NiVmax))

其中 i i i表示当前的训练epoch数。这样,优化过程在早期关注图像级别的信息(深度)以生成合理的体素表达,然后关注后续的感知任务。

3.5 联合Occ-Det空间数据增广

3D检测任务中,空间层面的数据增广作为图像级别数据增广的补充,在提高模型性能方面同样有效。但对占用任务来说,使用空间层面的增广较为困难,如对离散占用标签进行随机缩放与旋转会导致难以确定结果的标签。因此,目前的方法仅使用简单的空间层面增广方式,如随机翻转。

本文提出联合Occ-Det空间数据增广,可同时对两个任务进行。本文按照BEVDet的增广方式,并通过插值与采样转化体素特征,进行体素数据增广。

具体来说,首先采样空间数据增广并计算相应的3D变换矩阵 M a u g M_{aug} Maug。对于占用标签 G o c c ∈ R X × Y × Z G_{occ}\in\mathbb{R}^{X\times Y\times Z} GoccRX×Y×Z和其体素索引 I o r g ∈ R X × Y × Z × 3 I_{org}\in\mathbb{R}^{X\times Y\times Z\times3} IorgRX×Y×Z×3,计算3D坐标 C o r g ∈ R X × Y × Z × 3 C_{org}\in\mathbb{R}^{X\times Y\times Z\times3} CorgRX×Y×Z×3,并进一步得到增广体素索引 I a u g I_{aug} Iaug
C o r g = P i − c × I o r g I a u g = P c − i × M a u g × C o r g C_{org}=P_{i-c}\times I_{org}\\ I_{aug}=P_{c-i}\times M_{aug}\times C_{org} Corg=Pic×IorgIaug=Pci×Maug×Corg

其中 P i − c P_{i-c} Pic P c − i P_{c-i} Pci为体素索引与空间坐标的变换矩阵。然后,使用体素索引 I a u g I_{aug} Iaug对体素特征 F a u g F_{aug} Faug采样:
F o r g = S ( F a u g , I o r g ) F_{org}=S(F_{aug},I_{org}) Forg=S(Faug,Iorg)

其中 S S S表示采样, F o r g F_{org} Forg为采样的体素特征,与原始占用标签 G o c c G_{occ} Gocc对应,可以进行损失计算。对于采样时位于范围外的位置,使用二值掩膜 M o c c ∈ { 0 , 1 } X × Y × Z M_{occ}\in\{0,1\}^{X\times Y\times Z} Mocc{0,1}X×Y×Z忽视之:
L o c c = f ( G o c c , F o r g ) × M o c c L_{occ}=f(G_{occ},F_{org})\times M_{occ} Locc=f(Gocc,Forg)×Mocc

其中 f f f为损失函数。Occ-Det增广如下所示。
在这里插入图片描述

4. 实验与讨论

4.2 实验设置

OpenOccupancy:由于GT占用标签分辨率高,非常占用空间,本文在训练时下采样到一半分辨率;测试时将输出上采样到原始分辨率。

4.3 结果

nuScenes激光雷达分割:UniVision大幅超过视觉SOTA方法OccFormer和一些激光雷达方法。

nuScenes 3D目标检测:UniVision能超过其余方法的性能;扩大模型后并使用时序输入后,能在输入分辨率低和不使用CBGS的情况下,大幅超过多帧SOTA检测器。

OpenOccupancy:UniVision能超过基于视觉的占用方法,以及一些基于激光雷达的方法。

Occ3D:UniVision能在不使用预训练权重和多帧输入的情况下达到比其余方法更高的性能。

4.4 消融研究

检测任务中组件的有效性:加入基于BEV的全局特征提取分支、基于体素的占用任务作为辅助任务、以及跨表达交互后,检测性能均有提升。

占用任务中组件的有效性:加入基于体素的局部特征提取分支、基于BEV的检测任务作为辅助任务、以及跨表达交互后,占用性能均匀提升。

**检测任务与占用任务如何互相影响?**对检测任务,占用监督能提高mAP与mATE指标,这表明逐体素语义学习能提高检测器对物体几何(中心和尺度)的感知。对占用任务,检测监督能极大提高前景物体处的性能。

联合Occ-Det增广、Ex-Im视图变换和渐进损失权重调整的有效性:实验表明,空间增广和视图变换模块对两个任务均有性能提升;去掉损失权重调整策略,网络不能收敛,性能很低。

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

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

相关文章

探索机器学习的奥秘

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 机器学习的定义二. 机器学习的发展历程三. 机器学习的原理四. 机器学习的分类…

C#使用Sleep(Int32)方法动态时间

目录 一、涉及到的知识点 1.Sleep(Int32)方法 2.Parallel.Invoke方法 二、 实例:用Sleep方法动态时间 一、涉及到的知识点 在使用线程时,经常会用到Sleep方法,Sleep方法用于将线程挂起指定的时间,时间的单位为毫秒。本实例中将…

VGGNet的结构和复现

1 结构以及模型退化问题 上述为VGGNet的结构图,左边是VGG16D的步骤 16代表16层,有参数的层,其他结构也是如此 对于这6个机构来说,D中的VGG16是最优的,而VGG19相比较而言,没有VGG16优,VGG16有16…

关于获取CISP-PTE一些避坑经历

有幸在今年8月份成功通过CISP-PTE认证,以下是我遇到的一些常见问题,以及一些考点内容以及总结 考试题型 20道选择题 (20分) 5道基础题 (50分) 一题一个Key 1道综合大题 (30分) 三个key 线下考试 这次考试是在中国上海,现场大概…

节点的度(Degree of a node)、“入度”(In-degree)、“出度”(Out-degree)

在图论和网络分析中,“节点的度”(Degree of a node)是指与该节点直接相连的边的数量。在一个无向图中,每条边连接两个节点,对于每个节点来说,它的度就是与它相连的边的总数。在一个有向图中,节…

uniapp scroll-view用法[下拉刷新,触底事件等等...](4)

前言:可滚动视图区域。用于区域滚动 话不多说 直接上官网属性 官网示例 讲一下常用的几个 scroll 滚动时触发 scrolltoupper 滚动到顶部或左边,会触发 scrolltoupper 事件 scrolltolower 滚动到底部或右边,会触发 scrolltolower 事件 1.纵向滚动…

【HTML教程】跟着菜鸟学语言—HTML5个人笔记经验(四)

HTML学习第三天&#xff01; PS&#xff1a;牛牛只是每天花了1.5-2小时左右来学习HTML。 书接上回 HTML<div>和<span> HTML 可以通过<div> 和 <span>将元素组合起来。 HTML 区块元素 大多数 HTML 元素被定义为块级元素或内联元素。 块级元素在浏…

【Git配置代理】Failed to connect to github.com port 443 问题解决方法

前言&#xff1a; 在学习代码审计时&#xff0c;有时会需要使用git去拉取代码&#xff0c;然后就出现了如下错误 看过网上很多解决方法&#xff0c;觉得问题的关键还是因为命令行在拉取/推送代码时并没有使用VPN进行代理。 解决办法 &#xff1a; 配置http代理&#xff1a;…

【Linux】第三十七站:信号保存

文章目录 一、信号发送二、信号保存1.为什么要进行信号保存&#xff1f; 三、阻塞信号1.信号的一些相关概念2.在内核中的表示3.sigset_t4.信号集操作函数5.sigprocmask6.sigpending7. 总结 一、信号发送 如下所示&#xff0c;对于普通信号&#xff0c;它的编号是从1~31。这个是…

指针的深入了解2

1.const修饰指针 在这之前我们还学过static修饰变量&#xff0c;那我们用const来修饰一下变量会有什么样的效果呢&#xff1f; 我们来看看&#xff1a; 我们可以看到编译器报错告诉我们a变成了一个不可修改的值&#xff0c;我们在变量前加上了const进行限制&#xff0c;但是我…

使用py-spy对python程序进行性能诊断学习

py-spy简介 py-spy是一个用Rust编写的轻量级Python分析工具&#xff0c;它能够监视正在运行的Python程序&#xff0c;而不需要修改代码或者重新启动程序。Py-spy可以在不影响程序运行的情况下&#xff0c;采集程序运行时的信息&#xff0c;生成火焰图&#xff08;flame graph&…

linux 基于科大讯飞的文字转语音使用

官方文档地址&#xff1a;离线语音合成 Linux SDK 文档 | 讯飞开放平台文档中心 一、SDK下载 1、点击上面官方文档地址的链接&#xff0c;可以跳转到以下界面。 2、点击“普通版”&#xff0c;跳转到以下界面。 3、点击“下载”跳转到以下界面 4、最后&#xff0c;点击“SDK下…

Qt6入门教程 12:QAbstractButton

目录 一.状态 二.信号 三.使用 1.自定义按钮 2.多选 3.互斥 QAbstractButton类实现了一个抽象按钮&#xff0c;并且让它的子类来指定如何处理用户的动作&#xff0c;并指定如何绘制按钮。QAbstractButton类是所有按钮控件的基类。 QAbstractButton提供…

【阿里云服务器数据迁移】 同一个账号 不同区域服务器

前言 假如说一台云服务器要过期了,现在新买了一台,有的人会烦恼又要将重新在新的服务器上装环境,部署上线旧服务器上的网站项目, 但是不必烦恼,本文将介绍如何快速将就旧的服务器上的数据迁移到新的服务器上. 包括所有的环境和网站项目噢 ! 步骤 (1) 创建旧服务器自定义镜像…

Linux命令 - 统计log日志某接口用户访问频次并排序

​ 背景 某天发现内部人员使用的app服务器访问突增&#xff0c;但不影响服务正常运行&#xff0c;想通过log统计接口的人员访问频次。 从监控平台可以看到访问激增的接口&#xff0c;因Nginx不缓存用户信息只有访问IP&#xff0c;日志清洗的Hive表只能访问前一天&#xff0c;…

行测-资料:2. 一般增长率、增长量

1、一般增长率 1.1 百分数和百分点 50%&#xff0c;20% 1.2 增长率和倍数 1.5&#xff1b;50 1.3 成数和翻番 1.4 增幅&#xff0c;降幅&#xff0c;变化幅度 A&#xff0c;A&#xff0c;D B&#xff0c;高于全国增速 2.3 个百分点&#xff0c;21.8 - 2.3 19.5。 5%&#xff0…

打开 IOS开发者模式

前言 需要 1、辅助设备&#xff1a;苹果电脑&#xff1b; 2、辅助应用&#xff1a;Xcode&#xff1b; 3、准备工作&#xff1a;苹果手机 使用数据线连接 苹果电脑&#xff1b; 当前系统版本 IOS 17.3 通过Xcode激活 两指同时点击 Xcode 显示选择&#xff0c;Open Develop…

重生奇迹MU平民玩家推荐的职业

女魔法师 女魔法师是一个非常适合平民玩家的职业选择。她拥有着强大的魔法攻击能力&#xff0c;可以轻松地击败敌人。而且女魔法师的装备价格相对较低&#xff0c;适合玩家们的经济实力。 精灵射手 精灵射手是一个非常灵活的职业选择。他们可以远程攻击&#xff0c;可以在战…

使用PCL进行法向量可视化

使用PCL进行法向量可视化 文章目录 1、使用PCL进行法向量可视化2、计算所有点的法线并显示3、计算一个子集的法线 1、使用PCL进行法向量可视化 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/visualization/pcl_visualizer.h> #include &l…

element plus使用问题

文章目录 element plusvue.config.js注意1、有时候会报错 not a function2、使用 ElMessage 报错3、 element plus 版本过高4、警告Feature flag VUE_PROD_HYDRATION_MISMATCH_DETAILS is not explicitly defined.5、报错 ResizeObserver loop completed with undelivered noti…