【论文笔记】CRN: Camera Radar Net for Accurate, Robust, Efficient 3D Perception

news/2024/12/28 20:16:21/

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

1. 引言

  本文提出两阶段融合方法CRN,能使用相机和雷达生成语义丰富且位置精确的BEV特征。具体来说,首先将图像透视特征转换到BEV下,该步骤依赖雷达,称为雷达辅助的视图变换(RVT)。由于转换得到的BEV特征并非完全精确,接下来的多模态特征聚合(MFA)层使用注意力机制将BEV特征编码为统一的特征图。
  CRN有如下3个特点:

  1. 精确。仅使用低成本的相机和雷达,就能达到和激光雷达相当的检测性能。
  2. 鲁棒。即使在一个模态完全失效的情况下,CRN也有鲁棒的性能。
  3. 高效。使用很小的额外计算成本,就能显著提高性能,有利于实时且长距离的感知。

3. 相机-雷达网络(CRN)

  如下图所示为本文CRN的网络结构。
在这里插入图片描述

3.1 准备工作

  单目3D方法:可分为两类,即基于几何的方法和基于学习的方法。
  基于几何的方法通过预测深度DDD作为显式的中间表达,将透视图特征FFF(u,v)(u,v)(u,v)转换为(d,u,v)(d,u,v)(d,u,v),再按下式转换为3D(x,y,z)(x,y,z)(x,y,z)
F3D(x,y,z)=M(F2D(u,v)⊗D(u,v))F_\text{3D}(x,y,z)=M(F_\text{2D}(u,v)\otimes D(u,v))F3D(x,y,z)=M(F2D(u,v)D(u,v))其中MMM表示视图变换模块(如BEVDepth中的体素池化操作);⊗\otimes表示外积。
  基于学习的方法使用映射网络隐式地建模3D到2D的投影:
F3D(x,y,z)=f(Pxyz,F2D(u,v))F_\text{3D}(x,y,z)=f(P_{xyz},F_\text{2D}(u,v))F3D(x,y,z)=f(Pxyz,F2D(u,v))其中fff为透视图到BEV的映射函数(如MLP或交叉注意力);PxyzP_{xyz}Pxyz为3D体素。
  两种方法的关键都是获取空间精确的3D特征F3D(x,y,z)F_\text{3D}(x,y,z)F3D(x,y,z)。本文使用雷达提升视图变换性能。
  雷达特征:雷达有3D张量和点云等表达。雷达点云表达和激光雷达点云相比,分辨率和精度都不够;且更加模糊、富含噪声、无俯仰角测量。因此,雷达可能在有物体的地方没有测量,而在无物体的地方有测量。雷达感知任务若直接使用激光雷达方法会使复杂场景下的性能受限。本文自适应地利用雷达,以克服其稀疏性和模糊性。

3.2 雷达辅助的视图变换(RVT)

  图像特征编码与深度分布:本文使用图像主干(如ResNet或ConvNeXt)和FPN为每个视图的图像获取下采样的特征图FIF_IFI。然后类似LSS方法,使用额外的卷积提取图像内容特征CIPV∈RN×C×H×WC^{PV}_I\in\mathbb{R}^{N\times C\times H\times W}CIPVRN×C×H×W和像素的深度分布DI∈RN×D×H×WD_I\in\mathbb{R}^{N\times D\times H\times W}DIRN×D×H×W
CIPV=Conv(FI),DI(u,v)=Softmax(Conv(FI)(u,v))C^{PV}_I=\text{Conv}(F_I),D_I(u,v)=\text{Softmax}(\text{Conv}(F_I)(u,v))CIPV=Conv(FI),DI(u,v)=Softmax(Conv(FI)(u,v))其中(u,v)(u,v)(u,v)代表图像平面的坐标,DDD是深度区间数。
  雷达特征编码与雷达占用图:首先将雷达点云投影到多视图图像上,然后体素化为图像视锥体素VPFV(d,u,v)V^{FV}_P(d,u,v)VPFV(d,u,v)。其中u,vu,vu,v是图像的宽、高像素单位,ddd是深度方向的度量单位。由于雷达不含高度信息,使用柱状表达(不考虑vvv)。非空柱体被PointNet和稀疏卷积编码为特征FP∈RN×C×D×WF_P\in\mathbb{R}^{N\times C\times D\times W}FPRN×C×D×W。类似图像分支,也提取图像视锥内的雷达内容特征CPFV∈RN×C×D×WC^{FV}_P\in\mathbb{R}^{N\times C\times D\times W}CPFVRN×C×D×W和雷达占用图OP∈RN×1×D×WO_P\in\mathbb{R}^{N\times 1\times D\times W}OPRN×1×D×W。这里的卷积被用在俯视图(d,u)(d,u)(d,u)而非(u,v)(u,v)(u,v)上:
CPFV=Conv(FP),OP(d,u)=σ(Conv(FP)(d,u))C^{FV}_P=\text{Conv}(F_P),O_P(d,u)=\sigma(\text{Conv}(F_P)(d,u))CPFV=Conv(FP),OP(d,u)=σ(Conv(FP)(d,u))其中σ\sigmaσ是Sigmoid函数。
  视锥视图变换:给定深度分布DID_IDI和雷达占用图OPO_POP,使用外积将图像内容特征图CIPVC_I^{PV}CIPV转换到图像视锥视图CIFV∈RN×C×D×H×WC_I^{FV}\in\mathbb{R}^{N\times C\times D\times H\times W}CIFVRN×C×D×H×W:
CIFV=Conv[CIPV⊗DI;CIPV⊗OP]C_I^{FV}=\text{Conv}[C_I^{PV}\otimes D_I;C_I^{PV}\otimes O_P]CIFV=Conv[CIPVDI;CIPVOP]其中[⋅;⋅][\cdot;\cdot][;]表示沿通道维度的拼接。由于雷达无高度信息,且为了节省存储空间,将图像上下文特征使用求和进行高度压缩,如下图所示。
在这里插入图片描述
  BEV变换:最后,相机和雷达在视锥视图内的上下文特征图FFV={CIFV,CRFV∈RN×C×D×H×W}F^{FV}=\{C_I^{FV},C_R^{FV}\in\mathbb{R}^{N\times C\times D\times H\times W}\}FFV={CIFV,CRFVRN×C×D×H×W}被视图变换模块MMM转换到BEV空间RC×1×X×Y\mathbb{R}^{C\times1\times X\times Y}RC×1×X×Y下:
FBEV=M({FiFV}i=1N)F^{BEV}=M(\{F_i^{FV}\}_{i=1}^N)FBEV=M({FiFV}i=1N)具体来说,使用BEVStereo的体素池化操作,并将每个BEV网格内的求和修改为取均值,以使得BEV特征图对距自车的距离更加一致(因为透视投影会使近距离的BEV网格与更多的视锥网格相关联)。

3.3 多模态特征聚合(MFA)

  动机:传统的通道拼接或求和融合方法不能处理图像特征空间错位或雷达模糊问题,本文使用自适应的方法,利用注意力机制进行融合。
  多模态可变形交叉注意力(MDCA):交叉注意力的计算花费与序列长度为二次关系,即O(N2),N=XYO(N^2),N=XYO(N2),N=XY。因此本文使用可变形交叉注意力,其复杂度与输出大小为线性关系,即O(2N+NK)O(2N+NK)O(2N+NK),其中K≪NK\ll NKN为采样数。
  给定拉长的BEV上下文特征图xm={CIBEV,CRBEV∈RC×XY}x_m=\{C_I^{BEV},C_R^{BEV}\in\mathbb{R}^{C\times XY}\}xm={CIBEV,CRBEVRC×XY},首先将xmx_mxm拼接后投影为CCC维查询向量:zq=Wz[LN(CI);LN(CP)]z_q=W_z[\text{LN}(C_I);\text{LN}(C_P)]zq=Wz[LN(CI);LN(CP)],其中W∈RC×2CW\in\mathbb{R}^{C\times 2C}WRC×2C为线性投影,LN是LayerNorm。然后特征图通过多模态可变形交叉注意力聚合:
MDCA(zq,pq,xm)=∑hHWh[∑mM∑kKAhmqk⋅Whm′xm(ϕm(pq+Δphmqk))]\text{MDCA}(z_q,p_q,x_m)=\sum_h^HW_h\left[\sum_m^M\sum_k^KA_{hmqk}\cdot W'_{hm}x_m(\phi_m(p_q+\Delta p_{hmqk}))\right]MDCA(zq,pq,xm)=hHWh[mMkKAhmqkWhmxm(ϕm(pq+Δphmqk))]其中h,m,kh,m,kh,m,k索引注意力头、模态和采样点。为更好地利用各模态信息,本文分开为xmx_mxm使用注意力权重AhmqkA_{hmqk}Ahmqk和采样偏移量Δhmqk\Delta_{hmqk}Δhmqk。细节见附录B。
  稀疏聚合:虽然MDCA有线性复杂度,但当感知范围增大时仍是瓶颈。本文提出进一步减小输入查询数的方法,仅使用前kkk置信度的特征。给定BEV深度分布DID_IDI和雷达占用图OPO_POP,利用max⁡(DI,OP)\max(D_I,O_P)max(DI,OP)作为概率,从zq∈RC×Nz_q\in\mathbb{R}^{C\times N}zqRC×N中选择Nk≪NN_k\ll NNkN个特征zqNk∈RC×Nkz_q^{N_k}\in\mathbb{R}^{C\times N_k}zqNkRC×Nk。这样,复杂度与感知范围无关,利于长距离感知。

3.4 训练目标与任务头

  本文类似BEVDepth,将激光雷达投影到图像上得到深度图,以其为目标训练深度估计网络。类似CenterPoint,预测中心热图。当使用稀疏聚合方式时,在得到目标深度图前过滤边界框外的激光雷达点云,并将3.2节第一式中的Softmax函数替换为Sigmoid函数,使得包含前景物体的特征网格有高概率。

4. 实验

4.1 实验设置

  实施细节:图像分支类似BEVDepth;雷达分支积累了多帧雷达点云,归一化了RCS和多普勒维度;BEV特征图也进行了多帧积累。详见附录C。

4.2 主要结果

  实验表明,CRN能在所有相机单一模态以及相机雷达融合方法中排名第一,且有更快的速率。即使使用小的输入图像尺寸和图像主干网络,CRN也能达到其他方法的性能,且速度能高出一个数量级。CRN还能超过一些激光雷达方法。

4.3 消融研究

  使用三个基准方案:BEVDepth(相机)、CenterPoint(雷达)、BEVFusion(相机+雷达)。
  视图变换:仅使用图像深度估计结果进行视图变换的性能较差,因为深度估计的精度较低;替换为使用雷达占用网格辅助视图变换后,会带来性能下降,因为雷达稀疏而模糊。但将两者结合起来能显著提高性能。对于激光雷达,该方法也有一致的性能提升。
  特征聚合:BEVFusion使用卷积非自适应地融合特征,性能较差,增加融合网络层数也难以提高性能;但本文的方法在仅使用MFA的情况下,就能超过带RVT的BEVFusion的性能。此外,RVT在MFA上的性能提升不如在BEVFusion融合方式上的性能提升显著,这是因为MFA能处理多模态特征的空间不对齐问题。

4.4 分析

  扩大感知范围:将感知范围扩大1倍,即使是多帧积累的激光雷达,在远处的点云也很稀疏,导致性能大幅下降。CRN在30m外就能超过激光雷达的性能,且有更高的FPS。使用稀疏聚合可进一步加速推断,同时保持相当的性能。
  鲁棒性:在单帧输入(不积累)情况下,随机丢弃图像和雷达输入。训练时使用数据增广。CRN不仅在所有输入均有效时能超过BEVFusion,在传感器失效情况下也能保持更高的性能。当完全丢弃雷达模态时(此时网络相当于BEVDepth),BEVFusion的性能相比BEVDepth大幅下降,而CRN仅有略微下降。这一优势来自自适应融合方法。
  推断时间:相比BEVDepth,CRN仅在雷达编码和融合模块引入了可忽略的计算,但性能有极大的提升;CRN使用小尺寸图像输入时,在FPS和性能上均比大尺寸图像输入的BEVDepth更高。使用推断优化方法可能进一步减小延迟。

附录

B. 多模态可变形交叉注意力(MDCA)

  给定查询zqz_qzq和多模态特征图xm={CI,CP∈RC×H×W}x_m=\{C_I,C_P\in\mathbb{R}^{C\times H\times W}\}xm={CI,CPRC×H×W},令qqq索引查询元素,pq∈[0,1]2p_q\in [0,1]^2pq[0,1]2qqq的归一化参考点坐标。则MDCA定义为:
MDCA(zq,pq,xm)=∑hHWh[∑mM∑kKAhmqk⋅Whm′xm(ϕm(pq+Δphmqk))]\text{MDCA}(z_q,p_q,x_m)=\sum_h^HW_h\left[\sum_m^M\sum_k^KA_{hmqk}\cdot W'_{hm}x_m(\phi_m(p_q+\Delta p_{hmqk}))\right]MDCA(zq,pq,xm)=hHWh[mMkKAhmqkWhmxm(ϕm(pq+Δphmqk))]其中h,m,kh,m,kh,m,k索引注意力头(总数为HHH)、模态{CI,CR}\{C_I,C_R\}{CI,CR}和采样点(总数为KKK)。Wh∈RC×CvW_h\in\mathbb{R}^{C\times C_v}WhRC×Cv是第hhh个头的输出投影矩阵,Whm′∈RCv×CW'_{hm}\in\mathbb{R}^{C_v\times C}WhmRCv×C是第hhh个头、模态mmm的输入值投影矩阵。Cv=C/HC_v=C/HCv=C/HWhm′W'_{hm}Whm被用在每个模态上,使得MDCA能实现鲁棒融合。AhmqkA_{hmqk}AhmqkΔhmqk\Delta_{hmqk}Δhmqk是输入查询zqz_qzq通过线性投影得到的,且AhmqkA_{hmqk}Ahmqk被归一化为∑mM∑kKAhmqk=1\sum_m^M\sum_k^K A_{hmqk}=1mMkKAhmqk=1。函数ϕm(pq)\phi_m(p_q)ϕm(pq)将归一化坐标pqp_qpq进行缩放,以免两模态有不同的形状。
  MDCA可克服参考点周围的空间不对齐,并使融合是自适应的。

C. 实施细节

C.1 预处理和超参数

  图像分支:使用SECONDFPN将图像主干网络的输出拼接到统一尺度。深度空间被均匀离散化。雷达点投影到图像上并在图像视锥坐标系内体素化后,使用SECOND和SECONDFPN进行特征提取和占用图生成。

C.2 训练设置

  图像主干进行了预训练。
  图像和雷达的透视图使用了相同的缩放、裁剪、水平翻转数据增广。随机旋转对RVT的高度压缩会有不利影响,因此没有使用。
  BEV增广使用随机X/Y轴翻转,全局旋转和缩放。GT采样增广未被使用。

C.3 消融研究的基准方案

  BEVDepth和CenterPoint均未使用类别平衡的分组和采样策略(CBGS)和GT采样。对于BEVFusion,本文使用BEVDepth获取图像BEV特征,而非原始的LSS。

C.4 长距离感知的细节

  扩大感知范围相应地增加了获取的BEV特征图大小(未改变BEV分辨率)。
  训练和测试时均没有过滤掉不含点的真实边界框。

D. 额外的实验结果

D.1 设计决策

  时序帧:BEV特征输入到BEV主干网络前,通过通道拼接和卷积聚合积累多帧BEV特征。由于无需时序输入生成BEV特征图,故该操作不会增加延迟。
  实验表明,多帧BEV特征图能显著提升mAP,mATE和mAVE。但mAOE在此过程中不稳定。
  稀疏聚合:使用稀疏聚合能在少量降低性能的同时大幅提高推断速率。相比mAP,其他的TP指标下降更大,可能是由于相比于分类网络,回归网络更难以从稀疏分布的BEV特征中回归物体属性。

D.2 天气和光照分析

  激光雷达在雨天产生的噪声,或图像在夜间的低亮度使得激光雷达或图像单一模态的方法检测比较困难。但CRN在各种天气和光照下相比图像单一模态方法均有一致的大幅性能提升,表明本文方法的鲁棒性。

D.3 逐类分析

  相比BEVDepth,CRN在金属类别或常见类别有显著的性能提升。在非金属类别上,相比其余雷达图像融合方法,CRN的性能提升也更加显著。这可以归功于CRN的融合模块。

E. 可视化

  可视化表明,雷达的融合可帮助检测被遮挡物体或低亮度条件下的物体。无雷达检测的物体也能通过图像检测到。但在物体属于稀有类别且存在雷达检测时,可能会导致误检。


http://www.ppmy.cn/news/42444.html

相关文章

【CSS】绝对定位元素设置 水平 / 垂直 居中 ( 绝对定位元素居中设置 - 先偏移 50% 再回退子元素一半尺寸 | 绝对定位居中设置 )

文章目录一、问题提出二、绝对定位 居中设置1、设置固定尺寸2、先偏移50%再回退固定值三、绝对定位元素 水平 / 垂直 居中一、问题提出 绝对定位 不能通过 设置 margin: auto; 样式的方式 , 设置盒子模型水平居中 ; 相对定位 的 盒子模型 , 并没有脱离标准流限制 , 仍然可以使…

2023年全国最新二级建造师精选真题及答案50

百分百题库提供二级建造师考试试题、二建考试预测题、二级建造师考试真题、二建证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 35.下列情形中,可以引起诉讼时效中断的有()。 A.权利人申…

(三)Linux中GCC/g++:基础用法和实用选项全面解析

GCC/g是LINUX下广泛使用的编译器,它同样是开源的。GCC(gnu compiler collection)包含了C、C、Objective-C、Fortran、Ada等语言的编译器,可以在大多数的UNIX操作系统以及类UNIX系统中运行。在本篇博客中,我将详细介绍GCC/g的使用方法以及一些…

连续两个南航的研究生面试出了从来没出现过的问题,本科和研究生都是计算机专业的,竟然说static是不可更改的。

最近面试人数有点多,面试有点频繁,因此发现了一些学生普遍会发生的错误,可以说是很离谱。 因为做了十多年的面试官,无论是大中小厂的面试,还是社招、校招。 从来没有遇到过这样的情况,而且发生在两个南航…

【MATLAB数学建模编程实战】Kmeans算法编程及算法的简单原理

欢迎关注,本专栏主要更新MATLAB仿真、界面、基础编程、画图、算法、矩阵处理等操作,拥有丰富的实例练习代码,欢迎订阅该专栏!(等该专栏建设成熟后将开始收费,快快上车吧~~) 【MATLAB数学建模编…

C语言实例:求一个整数的所有因数,创建各类三角形图案(代码+思路)

C 语言实例 - 求一个整数的所有因数 在本文中&#xff0c;我们将介绍几种 C 语言代码写法来求一个整数的所有因数&#xff0c;并详细介绍每种代码的思路。 代码写法一 #include<stdio.h>int main() {int n, i;printf("请输入一个整数&#xff1a;");scanf(&…

d2l 文本预处理textDataset

这一节极其重要&#xff0c;重要到本来是d2l的内容我也要归到pyhon封面&#xff0c;这里面class的操作很多&#xff0c;让我娓娓道来&#xff01; 目录 1.要实现的函数 2.读取数据集 3.词元化 4.Vocab类 4.1count_corpus(tokens) 4.2class中的各种self 4.2.1 _token_fr…

每68个孩子里,就有一个自闭症,“来自星星的孩子”,离我们很近

今年4月2日是世界上第14个“世界自闭症日”。自闭症儿童&#xff0c;又称“星星儿童”&#xff0c;形容他们像遥远的星星一样独自在夜空中闪耀。自闭症并不少见根据世卫组织的调查&#xff0c;世界上每160名儿童中就有一人患有自闭症。根据《中国自闭症&#xff08;自闭症&…