点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
今天自动驾驶之心很荣幸邀请到Shihao Wang分享ICCV 2023最新中稿的StreamPETR,纯视觉感知与激光雷达终有一战之力!如果您有相关工作需要分享,请在文末联系我们!
论文作者 | Shihao Wang
编辑 | 自动驾驶之心
文章链接:https://arxiv.org/abs/2303.11926
代码链接:https://github.com/exiawsh/StreamPETR
纯视觉BEV感知虽然发展了两年左右的时间,但距离激光雷达算法一直都有较大差距。BEVDepth首次将纯视觉与激光雷达的差距缩到10%以内,但随后的一系列工作似乎陷入了瓶颈,大都围绕在62%NDS左右(不考虑未来帧的buff)。难道纯视觉感知的性能真的止步于此了吗?
对于这个问题, 这里介绍一下我们刚刚收录于ICCV 2023的最新工作“StreamPETR:Exploring Object-Centric Temporal Modeling for Efficient Multi-View 3D Object Detection”。提出以object query作为时序传递载体,成为在不使用未来帧的情况下首次超越CenterPoint(67.3% NDS, 63.8% AMOTA)的纯视觉BEV感知算法 (67.6% NDS, 65.3% AMOTA)。与此同时,由于object query时序传递的高效性,StreamPETR相比单帧的PETR几乎没有引入额外的计算量。这使得StreamPETR同时成为了当下最快的BEV感知算法,比SOLOFusion速度快了2.8倍!

一、动机

在BEVFormer之后,大家都将BEV感知的关注点转移到时序建模上,SOLOFusion更是展现了长时序建模无与伦比的性能提升。那么现有的时序建模是否还有提升空间呢,为此我们把现有方法划分为两种分别来看:

考虑到两种时序建模的优劣性,我们希望以DETR-based方法为baseline,像BEV时序建模那样引入一个高效的中间表征传递时序,避免特征重复计算,保持DETR-based方法的高效性与动态建模特性。为此,如图Fig.1(c),我们提出了一种基于object query的建模方式:

二、方法

StreamPETR的模型主要分为三大块:一个image Encoder、一个Queue形式的的内存队列和一个propagation transformer组成。这里主要介绍时序融合相关的Memory Queue与propagation transformer:
Memory Queue:Queue的大小是 ,N是储存的帧数,K是储存的object的数量。采用先入先出(FIFO)的更新机制,一般根据分类得分选取TopK个前景目标的信息进行存储。具体而言,每一个内存空间包含对应object的时间间隔 Δt , 语义embedding ,对象中心点 ,速度 v 和姿态矩阵 E。在实验中我们选取K = 256 ,相比BEV方法节省了近百倍的存储空间。
Propagation Transformer:Propagation Transformer 我们引入了两个概念, Motion-aware Layer Normalization (MLN)和Hybrid attention。MLN实现了隐式的运动补偿,Hybrid attention则实现RNN式的时序交互。

1)MLN
MLN的设计源于我们此前对于GAN的研究,在生成领域,类似的condition normalization应用非常广泛。因此我们采用了同样的网络结构设计,将normalization 层的仿射变换参数变成dynamic生成的。
2)Hybrid Attention
Hybrid Attention在这里用于取代原生的self-attention。首先它起到self-attention的作用,对于当前帧的重复框进行抑制。其次,当前帧的object query还需要和历史帧object query做类似cross attention操作,进行时序的交互。
由于hybrid queries远小于cross attention中 image token的数量,因此所带来的额外计算量可以忽略笔记。此外历史object query也会传递到当前帧为当前帧提供更好的初始化(propagate query)。
三、实验
nuScenes 数据集检测和tracking性能:

首先是测试集的检测性能,虽然在这里排名第二,但我们是唯一一个没有使用未来帧的方法。参考VideoBEV未来帧的性能提升(大约4%NDS),其他方法的性能实际上已经被StreamPETR拉开了不小的差距。此外我们注意到我们拥有最强的角度预测能力(mAOE),即便和多模的方法比,我们的角度误差也是最低的。

Tracking榜单上由于大家都没有使用未来帧,这种性能优势会更加明显。我们使用和CenterPoint相同的tracking策略,StreamPETR比排名第二的Camera-based方法高8.9%AMOTA,比Lidar-based的CenterPoint高1.5% AMOTA。
Ablation 实验:
1)针对Queue长度的对比试验

提高训练帧数主要用来解决训练帧数和测试帧数不一致问题,8帧streaming video测试超过了sliding window方式,12帧性能差不多饱和。

对于这个现象,我们在rebuttal中对nuscenes的tracking进行统计。如果说,长时序主要解的是物体的遮挡,那么tracking中物体遮挡的帧数则表明了长时序饱和的帧数。从上图中我们可以看到nuscenes数据集中,绝大部分物体遮挡的帧数都在10帧以内,验证了我们的假设。
2)针对MLN的对比试验

采用显式运动补偿(MC)时性能并没有提高。这一点有点反直觉,其实很大程度上在于vanilla attention本身就可以解决大部分动态建模的问题,因此运动补偿的作用本身就不会很大。MLN的 ego poses 的隐式编码,其中 mAP 提升了 2.0%,NDS 提升了 1.8%。继续采用MLN的时间偏移量 Δt 和物体速度 v 的编码, mAP 和 NDS 都增加了 0.4%。
3)memory queue对性能的影响

mAP 和 NDS 随着memory queue帧数的增加而提高, 2 帧(将近 1 秒)的时候就开始饱和。这说明这种recurrent的长时序建模并不需要较大的memory queue帧数。之所以1帧没有2帧效果好,是因为每帧只保存了K=256 object query,如果保存512或者900,这种性能gap将会消失。
4)不同时序融合方式的对比

我们对比了PETRv2的perspetive时序交互方式,可以看出,StreamPETR 的方式在速度和准确性上都优于perspective交互。且同时使用object query和perspective的交互没有涨点。
在我的理解上通过attention机制获得的object query,类似于对于multi view 图像特征进行的low rank分解(参考 Is Attention Better Than Matrix Decomposition),虽然只保存了256 object query,但实际上保存了image features的绝大部分有效信息,因此当两种特征同时使用时不会有继续提升。
5)扩展性

我们在 DETR3D 上进行了实验,实现了4.9% mAP和 6.8% NDS的提升,而推理速度几乎没有受到影响。与PETR相比,DETR3D的提升较小,实际上是 DETR3D 采用的局部空间注意力限制了性能。我们私下采用deformable attention将DETR3D的空间采样点增多,可以实现StreamPETR同样或者略高的性能。
四、总结与思考
从PETRv1开始,我们就一直追寻简单高效的工作,方便大家使用。StreamPETR的速度和精度在3D检测上都相较以前方法有很大优势。不仅如此,在实际开源的过程中我们提供了和SOLOFusion同样的iter-based训练方式,因此实际的训练时间和单帧时间完全一样高效。论文的绝大部分实验都可以在2080ti上训练完成,理论上,我们ViT-L的大模型,不需要修改batchsize也可以在3090级别的显卡上训的下。StreamPETR算是PETR系列的一个结尾,希望大家喜欢我们的工作!
1)如何取得比论文更快的速度?
可以把transformer的FFN通道数从2048改为512,此外使用flash attention进行测试。此外,论文的速度包含了后处理。
2)如何提升mAOE?
Transformer本身可以减少角度的误差,此外query denoise本身也有助于mAOE。我们没有针对性调参,ViT+DN起到了比较好的化学反应。
3)flash attention有哪些注意事项?
flash attention需要开启FP16训练,不支持V100。在PETRv1上,遇到Multi-view 2D PE也会不收敛。flash attention可以大幅降低显存,建议训练PFTrack的时候也使用flash attention。
4)Streaming训练有哪些注意事项?
Streaming训练比起sliding window训练没有那么容易收敛,因此Streaming训练最好有辅助监督。例如:2D监督,depth监督,denoising等。
参考文献
DETR:End-to-End Object Detection with Transformers
PETR: Position Embedding Transformation for Multi-View 3D Object Detection
BEVFormer:BEVFormer: Learning Bird's-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers
Sparse4D:Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion
PETRv2:PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images
SOLOFusion:Time Will Tell: New Outlooks and A Baseline for Temporal Multi-View 3D Object Detection
① 全网独家视频课程
BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码学习)

② 国内首个自动驾驶学习社区
近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)