首页 > 其他分享 >BEV-IO: Enhancing Bird's-Eye-View 3D Detection with Instance Occupancy

BEV-IO: Enhancing Bird's-Eye-View 3D Detection with Instance Occupancy

时间:2024-02-19 22:00:11浏览次数:35  
标签:Eye Enhancing 特征 显式 Occupancy 深度 BEV 3D

通过显式和隐式的Occupancy预测来做3D检测,用Occupancy弥补了深度图的局限性。设计了3D几何分支和特征传播分支,预测depth-occupancy权重来实现3D检测,由于点级Occupancy的构建依赖于bbox,使整个感知模型与检测任务强相关。

Abstract

传构建BEV表示的方法是基于显式预测的深度分布,将2D图像特征映射到视锥空间内。受限于深度分布的局限性(无内部空间和整体几何结构,只有可见表面),得到的3D表征太稀疏。为此,本文提出BEV-IO(3D 检测),通过实例Occupancy信息来增强BEV感知。其核心是新设计的实例Occ预测(IOP)模块,旨在推断每个instance在视锥空间内point-level的占据状态。为了保证高效训练的同时保持表征的灵活性,组合显式和隐式监督来训练。基于预测的Occ信息,设计一种几何感知的特征传播机制(GFP),该机制基于视锥体内每条ray上的Occupancy分布来执行自注意力,以确保实例级的特征一致性。结合IOP和GFP,BEV-IO能够通过更全面的BEV表征得到高信息量的3D场景结构。实验表明,BEV-IO在增加可忽略参数降低计算成本的情况下达到sota性能。

1. Introduction

BEV方法在3D检测中广泛应用,相比于基于激光雷达的方法,基于摄像头的方法具有更高的成本效益,并在自动驾驶和机器人等实际应用中显示出强大的潜力。基于摄像头的方法主要分为两个流派,其区别在于它们是否显式估计场景的深度分布。

视觉3D检测相比LiDAR成本低,基于视觉的3D检测方法根据其是否显式估计场景深度分布分为两个流派:

  • 隐式方法:使用 BEV query 和注意力机制来从多视图中隐式地获取BEV特征,从而避免深度估计。但是缺乏深度信息,在 corner case 易过拟合。(BEVFormer,BEVFormer v2)
  • 显式方法:将2D图像特征用估计的深度提升到视锥空间,再投射到BEV空间,明确利用深度生成BEV。BEVDepth,BEVDet)

显式方法必须构建BEV特征,涉及两个关键方面:如何将2D特征映射到BEV空间要映射哪些特征。前者的关键在于精确的3D几何感知。LSS第一个提出2D-BEV映射过程,但由于缺少深度真值,只能通过BEV的bbox隐式学习深度信息,且关注区域的目标深度,导致整体场景的深度较差。还有利用稀疏深度真值来监督深度估计,显著提高深度估计的准确性。但是这些方法面临两个主要问题:

  • 深度信息的不完整性:只能表征可见物体表面,无法获取内部空间和整体几何结构,导致BEV空间下的3D表征稀疏。(如下图1(a))
图1 (a) 现有基于BEV方法使用估计的深度权重将图像特征提升到BEV空间,其中深度权重仅有可见表面的特征。

稀疏性:很多 instance 相对小且远,LiDAR点很稀疏。

总的说来,显式方法在BEV特征构建中面临的问题,即深度估计的准确性和表示的稀疏性。

针对上述问题,本文提出BEV-IO,一种基于 instance Occupancy 信息的3D检测新范式。用 Occupancy 表示三维点被物体占用的概率,相比于深度,更能捕捉到场景的全面三维空间几何信息。其核心是利用 instance occupancy 预测,通过更完整更准确地将特征提升到BEV空间来辅助显式BEV检测方法。(见图1(b))

图1 (b) 在深度权重上引入Occupancy权重来获取更完整精确的BEV表征,此外,提出用Occupancy线索传播图像特征来获取几何感知的图像特征。

为此,提出 instance occupancy prediction(IOP)模块,结合了了显式和隐式训练方式。显式训练方式利用3Dbbox注释作为强监督信号,隐式训练策略则针对最终检测性能以端到端方式优化Occupancy预测,从而实现更灵活的训练。融合上述两种策略,IOP能够填补对象内部结构,且受稀疏深度影响较小,从而得到更面向实例的全面的BEV表征。

针对第二个“要映射哪些特征”的问题,现有方法只利用2D图像特征,忽略了3D几何和图像领域之间的交互关系,而BEVFusion系列工作表,几何和图像特征的融合对BEV检测至关重要。因此,本文不使用复杂的3D encoders来提取几何特征,而是设计一种geometry-aware feature propagation(GFP)机制作为替代方案,利用几何线索来传播图像上下文特征。

对于第二个问题(要映射哪些特征):设计了一种几何感知特征传播(GFP)机制作为替代方案,利用几何线索传播图像上下文特征,沿着每条输入射线进行占用分布自注意力来图像特征传递,并融入占用的几何结构信息,以更好地捕捉物体的内部空间结构。基于同一对象实例中的特征点具有类似的占用状态,本文通过沿每条ray的Occupancy分布执行self-attention来传播图像特征,在考虑Occupancy几何结构信息的同时,保证了每个instance的特征一致性。

本文的方法通过GFP机制融合IOP模块,与大多数BEV的3D检测框架兼容,主要贡献有以下几点:

  • 分析了面向深度的特征提升过程的缺点,提出了新的实例占用预测(IOP)模块来增强BEV特征表征的完整性和准确性。
  • 提出几何感知的特征传播机制(GFP)来进一步增强带有instance occupancy 线索的图像特征。
  • 只增加0.2% 的参数和0.24%的GFLOPS,BEV-IO在流行BEV检测框架下实现了显著的改进。

2. Related Work

  • Multi-view 3D Object Detection
  • Occupancy Prediction: MonoScene,OccDepth,VoxFormer,TPVFormer,MonoScene

不同于voxel-level方法,BEV-IO在 point-level 操作,使其更有效,更易与适用 frustum-based 的场景。

3 Method

3.1 Explicit BEV Detection Revisit

将六视图

输入预训练的图像编码器,输出图像特征 ,其中,H,W,和C分别为特征图的高度,宽度和维度(channel)。不同于隐式方法,显式方法需要估计每个视图的深度视锥(depth frustum) ,其中深度视锥 为当前视图视锥中沿每条ray的不同手工设定的深度区间(depth bins)的概率, 为深度区间(depth bins)的个数。通过使用深度视锥对图像特征加权(外积运算)可以得到图像特征视锥

 

 

多视角的图像特征视锥被提升到3D空间,并通过体素池化操作映射到BEV空间。

 

 

其中,K为相机内参,Proj为从图像到3D空间测投影操作,VoxelPooling为体素池化过程,最后得到的BEV特征输入到指定任务的检测头中以获取最终的检测结果(类别,位置,尺寸和速度)。

3.2 Overview of BEV-IO

整体框架由图像编码器(image encoder),视图转换器(view-transformer) 和检测头 (detection head)三部分组成,其中,图像编码器和检测头与BEVDepth相同。主要是视图转换器,采用双分支结构:3D几何分支和特征传播分支。

  1. 3D几何分支:一个深度解码器和两个实例Occupancy预测(IOP)解码器组成,给定来自图像编码器的图像特征,深度解码器预测深度权重(与BEVDepth一致),同时IOP解码器则预测视锥空间中的实例Occupancy权重。深度和显式IOP解码器通过gt监督。深度和Occupancy权重融合为depth-occupancy权重,并用来将图像特征提升到视锥空间。
  2. 特征传播分支:核心为几何感知特征传播模块(GFP)。输入显式的实例Occupancy权重和图像特征,生成几何感知特征。这些特征将被投影到视锥空间,形成BEV特征。
Figure 2: BEV-IO ppl

整个流程,3D几何分支接收图像backbone提取的图像特征作为输入,用于估计深度和显式/隐式实例Occupancy权重。这些权重被融合起来生成depth-occupancy权重。特征传播分支也以图像特征和显式实例Occupancy权重作为输入,然后通过一个几何感知的传播模块进一步增强图像特征,并融合几何信息。随后,使用depth-occupancy权重将获取到的几何感知特征投影到BEV空间中,最后将BEV 特征经过检测头得到最终结果。

3.3. 3D Geometry Branch

已有的基于深度的特征提升方法在深度不完整时有局限性,本文用点级的实例Occupancy来实现特征提升。如图3所示,3D几何分支不仅包含先前方法中的深度解码器,好包含两个并列的IOP解码器以推理出更全面的场景3D几何。

Figure 3: 3D Geometry Branch. 3D几何分支以图像特征作为输入,预测深度、显式实例Occupancy权重和隐式实例Occupancy权重。深度和显式实例Occupancy权重受到GT深度和生成的显式实例Occupancy的监督。隐式实例Occupancy权重学习一种隐式Occupancy表示,depth-occupancy权重是这三种权重的加权和。

Depth Decoder:在BEVdepth 的基础上,深度解码器位一组人工设计的深度区间(depth-bins)预测深度权重

,由二值交叉熵损失进行监督:

 

 

其中,gt depth在计算损失时转换为one-hot形式。

Implicit IOP Decoder:深度权重仅获取了对象的视觉表面,为了填补物体缺失的内部空间,设计了隐式IOP解码器来估计沿每条ray

的深度区间的占用概率。与真值深度监督的深度解码器相反,在没有显式监督的情况下以端到端的方式训练隐式IOP解码器。因此,该解码器有很强的灵活性,且有可能为图像特征提升生成最右的空间权重,从而得到更精确的3D检测结果。

Explicit IOP Decoder:没有直接和具体的监督,隐式IOP解码器很难训练。因此设计显式IOP解码器来预测显式占用权重

。由于点级的占用注释成本高且少见,本文从3D bbox的gt中构建Occupancy标签。简单来说,将Occupancy标记建模为视锥体(view-frustum)空间中的二元分类问题:物体bbox内的3D点标记为1,其余为0。由于目标是检测3D bbox,因此上述策略合理且消除人工标注的需要。训练时通过Focal Loss来减轻类别不平衡的影响:

 

 

其中,

为二进制占用标签。给定隐式和显式Occupancy权重和深度权重时,最终的depth-occupancy权重如下:

 

 

其中, 和

为加权组合的可训练参数,最终的depth-occupancy权重将2D图像特征体素到视锥体((view-frustum))空间。

Point-level Occupancy Ground Truth Generation:本文提出一种简单高效的通过3D bbox来标注点级占用的方法(通过将3D物体边界框划分为盒子的内部和外部来确定点的占用状态)。下面是具体的步骤:

  1. 对于每个bbox,将3D空间划分为box的内部和外部,
  2. 对于每个点,通过计算该点和六个box面的表面法向量之间的点积来确定其相对于box的位置(内/外),
  3. 如果该点在bbox的所有六个面内部(点与边界框的所有面的法向量点积都为正),则为标记为占用。(反之,在外部,即点与边界框的任何一个面的法向量点积为负,标记为未占用,)

伪代码如下:

3.4. Feature Propagation Branch

沿每条ray的instance Occupancy权重编码了几何结构信息。此外,同一对象上的特征点,Occupancy权重相似。基于此设计了 geometry-aware feature propagation (GFP) 模块,利用Occupancy权重的几何信息来增强每个对象区域内的特征一致性。如下图4所示,将每个特征点的显式Occupancy权重作为key和query,其对应的特征特征作为value。通过计算自注意力来实现图像特征的几何感知传播。由于相似的Occupancy权重,图像特征将在相同的实例中传播。所以输出的特征是几何感知的,并被投影到BEV空间,用于后续的检测过程

图4 几何感知的特征传播机制(GFP) 输入为显式实例Occupancy和图像特征,GFP将显式Occupancy token标记为键值对,执行自注意力,在图像特征上进行几何感知的特征传播。

3.5. Loss Function

总损失是检测损失

、深度损失 和占用损失

的加权组合:

 

 

λ为预定义的损失权重超参数。

4. Experiment

4.1. Datasets and Metrics and

  1. 数据集:使用nuScenes数据集(大规模的自动驾驶数据集),包含超过1,000个场景的复杂城市驾驶场景,并标注了10个类别的1.4 million个3D bbox。这些场景涵盖了波士顿和新加坡的不同天气、光照条件和交通情景。
  2. 数据集划分:数据集官方划分为训练、验证和测试集,比例为700/150/150
  3. 评估指标:评估BEV-IO性能时,使用nuScenes数据集官方提供的一系列评估指标。包括nuScenes检测分数(NDS)和平均精度均值(mAP),用于衡量目标检测任务的准确性。此外,还用了平均平移误差(mATE)、平均尺度误差(mASE)、平均方向误差(mAOE)、平均速度误差(mAVE)和平均属性误差(mAAE),用于评估定位、尺度、方向、速度和属性等方面的误差。

4.2 Experiment Settings

实验基于BEVDepth进行,引入ResNet50作为图像backbone,图像resize到分辨率为704 × 256,图像和BEV的数据增强从BEVDet引入(包括随机裁剪,随机缩放,随机翻转和随机旋转)。训练时,只将gt的投影深度,检测注释用作监督。使用AdamW优化器,学习率:2e-4,batch_size: 32,损失权重 和

分别为 1.0,3.0和3000.0。为了与其他方法的公平对比,使用了CBGS策略,在消融分析时,为了训练的高效,没有使用该策略。所有实验在8张 NVIDIA-3090 上完成。推理时,输入多视图图像和相机内参,输出物体的类别,位置,尺寸和速度。

4.3 3D Object Detection Results

在NuScenes val集上与其他基于BEV的方法对比,公平起见,所有方法都使用了CBGS策略进行训练。结果如图1所示,BEV-IO优于BEVDepth方法,而且仅增加了0.15M的参数和0.6 GFLOPS的计算量。

4.4 Ablation Study

消融实验时,不使用CBGS训练策略。首先是BEV-IO所提的三个组件的情况,其中 Im-Occ, Ex-Occ, 和 GFP分别为显式实例 Occupancy 预测,隐式实例Occupancy预测,和几何感知的特征传播。

为了验证一个问题:在估计的深度足够准确时,是否仍需要实例Occupancy信息。为此,设计两个实验,(a) 移除深度解码器,直接使用gt深度当作one-hot输入,(b) 此基础上移除实例Occupancy信息。前者表示深度信息足够的情况,后者为在深度信息足够时不使用实例占据信息,两者的对比情况如下,移除实例Occupancy各方面精度均下降。可见,在估计的深度足够准确时,仍需要实例Occupancy信息

接下来是对各方法参数、计算复杂度的比较,与baseline相比,BEV-IO仅增加0.2%的参数、0.24%的GFLOPs的情况下,其他指标得到了提升:

最后是检测结果的可视化,BEV-IO的预测结果和GT重合更接近(黄框:预测框;绿色:GT)

5. Conclusion

本文提出了BEV-IO,利用point-level的实例Occupancy解决深度在获取整个实例时的局限性。设计了实例Occupancy预测(IOP)模块,模该块通过显式和隐式地估计实例点级Occupancy信息来促进更全面的BEV特征表征。此外,引入几何感知的特征传播机制,通过结合几何线索来高效传播图像特征,实验表明,BEV-IO在性能上达到了SOTA,而且只增加了参数增加(0.2%)和计算开销(GFLOPs中的0.24%)(可忽略)。

6. Thought

利用Occupancy来进行3D检测,一定程度上弥补了深度图的局限性,但是,由于在点级的Occupancy预测时,直接用bbox作为区别,使得整个感知模型与3D检测任务强相关,对SSC一类的任务不一定可行。但是depth-occupancy的设计思想还是值得借鉴的。

标签:Eye,Enhancing,特征,显式,Occupancy,深度,BEV,3D
From: https://www.cnblogs.com/jimchen1218/p/18022052

相关文章

  • flink的分流器-sideoutput Flink 有两种常见的 State类型,分别是:Keyed State (键控状态
    flink的分流器-sideoutputFlink有两种常见的State类型,分别是:KeyedState(键控状态)和OperatorState(算子状态)为了说明侧输出(sideouptut)的作用,浪尖举个例子,比如现在有一篇文章吧,单词长度不一,但是我们想对单词长度小于5的单词进行wordcount操作,同时又想记录下来哪些单词的长度......
  • nginx-rtmp-module 支持 Enhancing RTMP HEVC(H.265)
     EnhancingRTMP,FLV2023年7月31号正式发布,主要支持了HEVC(H.265)、VP9、AV1视频编码,发布差不多半年了,很多开源项目已支持,最近打算播放和推送端也支持下,想找个支持的rtmpserver方便测试用,但没找到合适的。干脆自己改改nginx-rtmp-module代码,做个基本的支持,能正常推送和播放En......
  • 基于SkyEye仿真飞腾处理器:运行U-Boot并加载Phytium-FreeRTOS
    仿真平台在帮助提升研发效率、加快产品面市时间上的作用已得到诸多验证,通过对处理器进行仿真来支持嵌入式系统及软件的虚拟化开发、测试和验证成为目前应用较为广泛的方法。天目全数字实时仿真软件SkyEye是一款基于可视化建模的硬件行为级仿真平台,在众多仿真工具中有着国产自主可......
  • BEVDet_ High-performance Multi-camera 3D Object Detection in Bird-Eye-View
    zotero-key:5HGRISJQzt-attachments:-"786"title:"BEVDet:High-performanceMulti-camera3DObjectDetectioninBird-Eye-View"citekey:huangBEVDetHighperformanceMulticamera2022bBEVDet:High-performanceMulti-camera3DObjectDet......
  • 使用zipFile读取文件时遇到的问题及解决(KeyError: "There is no item named 'xxx' in
    问题描述在Windows上跑一段代码时,遇到如下问题:KeyError:"Thereisnoitemnamed'CDR_Data\\\\CDR.Corpus.v010516\\\\CDR_DevelopmentSet.PubTator.txt'inthearchive"原因分析这是一段Python代码,代码中使用到了zipfile库,它首先创建了一个ZipFile对象,然后在调用read()......
  • [Keyence2019] Paper Cutting
    PaperCuttingLuoguAT_keyence2019_f题面翻译有一个\((H+1)\times(W+1)\)的网格,网格中有\(H\)条水平线和\(W\)条竖直线。你需要执行\(K\)次操作,每次沿一条水平线或竖直线将网格切开。定义一次操作的权值为切割后网格被切分的块数。定义一个操作序列的权值为\(K\)......
  • 求取植物冠层数据:CAN-EYE工具的使用方法介绍
      本文介绍植被冠层参数计算软件CAN-EYE的具体使用方法。  在文章CAN-EYE冠层数据模拟工具的下载、安装中,我们介绍了CAN-EYE软件的下载、安装方法;本文就对该软件的具体使用方法进行介绍。  CAN-EYE软件计算LAI、FVC等各类植被参数,都需要基于相机所拍摄的真彩色或黑白植被图......
  • CAN-EYE冠层数据模拟工具的下载、安装
      本文介绍植被指数计算软件CAN-EYE的下载、安装方法。  CAN-EYE软件是由法国国家农业研究院(FrenchNationalInstituteofAgriculturalResearch,INRA)下属的EMMAH实验室(MediterraneanEnvironmentandAgro-hydroSystemModelling)开发的免费软件,用以从鱼眼镜头、普通镜头所......
  • 【flink番外篇】7、flink的State(Keyed State和operator state)介绍及示例 - 完整版
    文章目录Flink系列文章一、maven依赖二、KeyedState1、KeyedState介绍及示例2、KeyedState状态有效期(TTL)1)、过期数据的清理2)、全量快照时进行清理3)、增量数据清理4)、在RocksDB压缩时清理3、keyedstate示例:实现地铁站哪个进站口人数最多1)、javabean2)、实现3)、验证三、O......
  • 【flink番外篇】7、flink的State(Keyed State和operator state)介绍及示例(2) - operator
    文章目录Flink系列文章一、maven依赖二、OperatorState1、CheckpointedFunction2、带状态的SourceFunction3、operatorstate示例:实现程序异常时自动保存state,当超过重启次数时中断运行1)、实现2)、运行结果3)、hdfs上的checkpoint本文介绍了FlinkState中的operatorstate基本......