纯视觉持平Lidar!| StreamPETR 最新动态视频流目标检测框架

Update:

作为在线的纯视觉方法,在nuScenes榜单上,检测和跟踪效果拿到SOTA的同时,第一次和lidar基线方法Center Point持平。


由于最近开始关注BEV感知方面,发现arxiv更新了一篇基于稀疏query的纯视觉3D检测的文章(终于不是dense BEV,有些审美疲劳了)。文章主要是解决稀疏query框架的时序融合问题,提出一种以object query为中心的时间建模框架StreamPETR。

文章链接Exploring Object-Centric Temporal Modeling for Efficient Multi-View 3D Object Detection

目前代码已经在github上开源

https://github.com/exiawsh/StreamPETRgithub.com/exiawsh/StreamPETR

主要观点:

  1. 仅使用object query组成的memory queue (缓存512或者1024个object query特征) 作为时序传递的中间对象就可以达到SOTA效果,同时算法的运行效率比饺来说很高。
  2. StreamPETR针对是针对视频流进行设计,用可选择的有限帧进行训练,在测试时可以适应更长的时间帧乃至无限帧。
  3. 沿着时间轴逐渐传递的object query特征比sliding window的效果好。且利用全局attention建模的object的空间与时序关联可以缓解动态物体进行时序对齐时物体错位的情况(这里是因为全局attention可以通过语义信息建立时间关联?)

 

动机、现有方法及其局限性

在长时序融合的时态表示方法上,目前主要分为以下两种方法,且存在一定的问题:

BEV temporal methodsBEVFormer, SOLOFusion):该方法显式地将 BEV 特征从历史帧投影到当前帧,将BEV 特征层作为中间表示来进行时间建模。在时序匹配上通常使用后一帧的BEV特征与当前帧进行对齐,即\widehat{F_{bev}^t}=\phi\left(F_{bev}^{t-1},F_{bev}^t\right)。在对长时序的拓展中,该方法使用两种路线:

  1. 对齐concat历史k帧:\widehat{F_{bev}^t}=\phi\left(F_{bev}^{t-k},\ldots,F_{bev}^{t-1},F_{bev}^t\right)
  2. 通过隐藏状态,即滚动concat前一帧的feature: \widehat{F_{bev}^t}=\phi\left(\widehat{F_{bev}^{t-1}},F_{bev}^t\right)

但该方法 BEV 特征层具有高度的结构化,直观来看,只考虑静态BEV特征而忽略了物体的运动,容易导致空间错位。限制了移动物体的建模。对于这种问题一般引入一个大的感受野,或多尺度concat让卷积去其进行学习。

Perspective temporal methods基于 DETR 的方法主要通过稀疏查询的设计机制,该方法有助于移动对象的建模(sparse4D)。

\widehat{F_{obj}^t}=\phi\left(F_{2d}^{t-k}.F_{obj}^t\right)+\ldots+\phi\left(F_{2d}^t,F_{obj}^t\right)是稀疏物体特征,也就是就是当前帧的query,他通过\phi\left(\cdot\right) (cross-attention)去与历史k帧的2D feature进行查询交互。

通过公式就可以看出稀疏对象查询的实现是与后多帧图像特征进行特征交互,每前进一帧就重复计算一次,从而导致多次重复计算,随着k的增加,计算成本也随之可见的增加。

因此,作者提出了一种基于对象查询的移动建模方式:

Object-centric Temporal Modeling

字面意思,以object物体为中心的时间建模,该方法是通过前后帧的object query来进行运动匹配的。

即 ,\widehat{F_{obj}^{t-1}}=\mu \( F_{obj}, t-1, M) ,该方法首先用当前的运动属性(时间间隔t,速度v,ego姿态矩阵E)通过一个线性函数 \mu\left(\cdot\right)对前一帧的query 进行映射,来实现与当前帧的 F_{obj}^t 进行配准融合。

公式来讲就是 \widehat{F_{obj}^t}=\phi\left(\widehat{F_{obj}^{t-1}},F_{obj}^t\right) , 从这可以看出他隐式的应用了前文BEV temporal methods的类似RNN的时序融合方法。

总结来说就是,文章将稀疏查询机制融合到时间传播的隐藏状态中,即直接对视频流进行逐帧的3D预测。

模型方法

模型主要分为三大块: 一个image Encoder、一个Queue形式的的内存队列和一个propagation transformer组成。这里主要介绍时序融合的部分:

 

Memory Queue

https://www.geeksforgeeks.org/queue-data-structure/

 

Queue的大小是\ N\times K ,N是储存的帧数,K是储存的的object的数量。

同时包含N帧的时间间隔\mathrm{\Delta t} , 语义embedding Q_c ,对象中心点 Q_p ,速度 v 和姿态矩阵 E ,用于实现历史queries与当前帧的匹配映射。(该数量下信息的遴选是通过对object 的top-k机制),作者提到使用的(FIFO)规则,就Queue的字面意思,比较巧妙。

Propagation Transformer

 

  1. Motion-aware Layer Normalization(MLN)

我的理解是作者主要想通过这个MLN对Queue中储存的历史query针对当前帧的姿态进行仿射变换的映射,实现历史帧object query与当前的对齐。本质就是仿射变换(affine transformation)的公式

\vec{y}=A\vec{x}+\vec{b} .

  1. 姿态矩阵 E 是关联前后帧进行运动匹配的关键,对于前一帧的物体center可通过前后帧的姿态转换矩阵进行匹配:\widehat{Q_p^t}=R_{t-1}^t\cdot Q_p^{t-1} 将历史中心点投影到当前时刻。
  2. 作者首先通过两个线性层对前后帧的姿态转换矩阵 E_{t-1}^t、,速度 v 和时间间隔\mathrm{\Delta t} 进行高维映射,得到 A\ \vec{b} 。
  3. 然后,作者相对语义embedding Q_c 和,对象中心点 Q_p ,作者想对当前帧的在通过MLP进行点到位置编码的投影基础上,对其进行层归一化,然后进行仿射变换投影,得到motion-aware的语义embedding \widehat{Q_c} 和位置编码 (Q_pe\ )\ \widehat 。对应文中的公式就是:

 

2. Hybrid Attention layer

 

  1. 对比DETR,作者用用Hybrid Attention代替它的self-attention,另外引入了时间交互。
  2. 内存队列中所有存储的object queries与当前object queries连接以获得hybrid queries。 前文来看hybrid queries的数量很少(大约 2k,远小于DETR的图像token),计算量还行。
  3. 在初始queries的设置上,PETR使用的是随机生成的3D anchor,而本文和PETR有些区别,queries的生成是利用可学习的3D anchor+上一帧的top-k检测结果提供的先验分布。

实验结果

nuScenes 数据集

 

可以看出验证集和测试集的结果都达到了SOTA的水准,同时推理速度也更快,尤其在小模型上,相比于之前的SOTA SOLOFusion快了1.8倍。

 

Ablation 实验

针对Queue长度的对比试验

 

提高训练帧数主要用来解决训帧数和测试帧数不一致问题,8帧streaming video测试超过了sliding window方式,12帧性能差不多饱和。(作者文中提到使用了sliding window的训练方式,但是开源代码中同时也提供了SOLOFusion那样的串行训练方式(20帧),不知道结果是不是有差别,还没测试)。

针对MLN的对比试验

 

  1. 采用显式运动补偿(MC)时性能并没有提高。 作者显式方法可能会导致早期训练阶段的错误传播。
  2. MLN的 ego poses 的隐式编码,其中 mAP 提升了 2.0%,NDS 提升了 1.8%。
  3. 采用MLN的时间偏移量 Δt 和物体速度 v 的编码, mAP 和 NDS 都增加了 0.4%,表明动态属性对对象查询之间的时序交互是有增益的。

内存大小对hybrid attention的影响

 

mAP 和 NDS 随着内存大小的增加而提高, 2 帧(将近 1 秒)的时候就开始饱和。说明长期的时序依赖不依赖于大的memory queue容量(是不是串行传递特征才是模型work的关键?)。

不同时序融合方式的对比

 

作者主要对比了PETRv2和Sparse4D的perspetive交互方式,可以看出,StreamPETR 的方式在速度和准确性上都优于perspective交互。且同时使用object query和perspective的交互没有涨点(很好奇作者这里的perspective的时序交互的实验细节,感觉具体的时序window长度之类的没有说清楚)。

扩展性

 

作者在 DETR3D 上进行了实验。使用 ResNet101DCN 作为主干,没有额外的增强和 CBGS 实现了在 mAP 和 NDS 上带来了 4.9% 和 6.8% 的改进,而推理速度几乎没有受到影响。 与PETR范式相比,DETR3D的改进相对较小。 作者认为一个可能的原因是 DETR3D 采用的局部空间注意力限制了性能。

静态和移动物体方面的性能

作者同时也分析了该框架在感知静态和移动物体方面的性能。 在没有 CBGS的情况下训了 24 个 epoch ,在 nuScenes val 集上评估来看,移动物体的检测性能还是落后于静态物体。不过相较于密集 BEV 范例相比还是很有优势的。

结论

 

整体上看StreamPETR的速度和精度在3D检测上相较以前方法都有很大优势,但是不知道在HD Map或三维车道线等任务上表现如何(稀疏query的多任务感觉现在都没有什么关注度…),同时也期待在下游任务上的结果,注意到作者在github代码里给了tracking的计划(同时感觉StreamPETR和MOTR的思想是不是有些像)。


参考文献

DETREnd-to-End Object Detection with Transformers

PETR: Position Embedding Transformation for Multi-View 3D Object Detection

DETR3DDETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries

BEVFormerBEVFormer: Learning Bird's-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers

Sparse4DSparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion

PETRv2PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

MOTRMOTR: End-to-End Multiple-Object Tracking with Transformer

SOLOFusionTime Will Tell: New Outlooks and A Baseline for Temporal Multi-View 3D Object Detection

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值