FlashOcc是一个快速、节约内存、易部署的占用预测模型。
它首先采用2D卷积提取图形信息,生成BEV特征。然后通过通道到高度变换,将BEV特征提升到3D空间特征。
对于常规的占用预测模型,将3D卷积改为2D卷积,将三维体素特征改为BEV特征。而且不用Transformer注意力算子。
论文地址:FlashOcc: Fast and Memory-Efficient Occupancy Prediction via Channel-to-Height Plugin
代码地址:https://github.com/Yzichen/FlashOCC
占用预测,能解决3D感知中的三个问题:复杂形状缺失、长尾缺陷、无限类别。
占用预测: 判断周围空间中哪些部分被物体占据,哪些是空的。
为了进行占用预测,一种常见的方法是使用三维体素来表示物体和环境。这种方法可以提供非常详细的三维信息,但问题在于它需要大量的内存和计算资源。
因为体素是以三维网格的形式存在的,所以当细节级别增加时,所需处理的数据量会呈指数级增长。
同时当前大多占用预测模型使用Transformer注意力等复杂算子,阻碍了占用预测部署。
当前部分占用预测模型的思路是模型变得更大、更复杂,以获得高的精度。FlashOcc认为理想的框架,应该对不同的芯片进行部署友好,同时保持高精度。
FlashOcc首先采用2D卷积提取图形信息,生成BEV特征。然后通过通道到高度变换,将BEV特征提升到3D空间特征。
其中,通道到高度变换是指。channel-to-height transformation。
算子改进:对于常规的占用预测模型,将3D卷积改为2D卷积,将三维体素特征改为BEV特征。而且不用Transformer注意力算子。
特点:快速、节约内存、易部署。
FlashOcc的模型框架如下图所示,核心步骤分为7步:
其中,通道到高度变换,是指将BEV特征(BxCxWxH),转为3D空间特征(BxC'xZxWxH)。
这里的B是指batch size,C是指BEV的特征通道数量,C'是指3D空间特征通道(类别数量);C =?C' x?Z,对应通道到高度变换思想。
W,H,Z分别对应三维空间中x,y,z的维度。
它由5个关键模型组成:
?细节展开,下图是常规的占用预测模型,使用3D体素特征表示,并用到3D卷积和Transformer等算子。
下图是FlashOcc模型,使用BEV特征表示,只用到2D卷积算子。
补充介绍一下LSS,它全称是Lift-Splat-Shoot,它先从车辆周围的多个摄像头拍摄到的图像进行特征提取,在特征图中估计出每个点的深度,然后把这些点“提升”到3D空间中。
接着,这些3D信息被放置到一个网格上,最后将这些信息“拍扁”到一个平面视图上,形成BEV特征图。?
详细信息,看我这篇博客:【BEV感知 LSS方案】Lift-Splat-Shoot 论文精读与代码实现-CSDN博客
在Occ3D-nuScenes评估数据集上,进行的3D占用预测性能测试。
表格中最后两行,将BEVDetOcc和UniOcc中组建替换为FlashOcc后,精度都得到了提升。
下面表格展示了训练细节信息:
在训练和部署期间,资源消耗分析。FPS是在单个RTX3090上通过tensorrt以fp16精度测试的。
模型预测效果
分享完成~