【ICCV 2023】UniTR: A Unified and Efficient Multi-Modal Transformer for Bird‘s-Eye-View Representation

本文介绍了一种名为UniTR的多模态Transformer模型,用于户外3D感知。它通过并行处理来自摄像头和雷达的数据,实现高效的跨模态特征交互。然而,尽管在学术指标上表现出色,但在实际部署时面临速度和硬件兼容性的挑战,特别是在工业界对快速部署的要求下。
摘要由CSDN通过智能技术生成

开场白

  • 先说为什么会看到这篇文章,很简单之前搞bev目标检测,(当然现在搞分割大模型)。现在搞目标检测已经很卷了,想要涨点的话越来越难,那这篇做检测的文章能够中ICCV说明肯定还是有点东西的。

但是学术界和工业界追求的东西还是不一样的,学术界还是看指标的你要效果够好或者idea够新有创新点才行,但工业界其实并不要求那么准,但一定要快,而且最好部署友好。你这个算法部署到产品上总不能我还给你附加一张A100或者4090吧。那我们就来看看这篇文章怎么样。

效果

老样子,先看效果,来show一下!
在这里插入图片描述
单从指标上来看似乎不错,性能够好,速度也快,怪不得能中。但很可惜在产品上用起来还是稍微有点难了,一看配置熟悉的配方熟悉的味道A100上跑tensorrt(打扰了)

意图

UniTR是一个统一的多模态变压器骨干,用于户外3D感知(a unified multi-modal transformer backbone for outdoor 3D perception.)。与以前的特定于模态的编码器不同,UniTR 与模态共享的转换器编码器并行处理来自多传感器的数据,并在没有额外的融合步骤的情况下自动集成它们。为了实现这些目标,我们设计了在 DSVT [60] 上扩展的两个主要transformer blocks。一种是模态内block(intra-modal block),便于并行计算来自每个传感器的数据的模态表示学习,另一种是通过考虑 2D 视角和 3D 几何邻域关系来执行跨模态特征交互的模态间块(inter-modal block)。

重点

重点是什么?重点肯定是先看图。
在这里插入图片描述

这个图,第一眼看过去有点复杂,如果看过之前的另一篇博客再看这篇的话就会感觉很熟悉了。

从这个流程图来看输入是camera和lidar的token,然后在intra-modal block里面各自做self-attention,做完之后在inter-modal block(2D)里面把3Dlidar投影到2D(这一步用的内外参),做自注意力操作,然后在inter-modal block(3D)里面把2d 图像投影到3d(这一步在最开始的图上看到了有无lss就合理了,应该有类似操作)再做注意力操作。

因为transformer的输入和输出是一样的,所以输入是两个输出也是两个,但看流程似乎只使用来lidar token这一支,然后经过bev pooling后面接两个头来一些感知任务(可以是3d目标检测任务也可以是bev 分割任务)。

大体上的流程就是这样了。其实也就是对DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets的拓展应用,个人感觉。

Methodology

Single-Modal Representation Learning

在自动驾驶场景中感知 3D 场景需要多种模式的可靠表示,例如多视图图像和稀疏点云。由于其不一致的表示,以前的方法通过通常按顺序处理的独立编码器对每个模态的特征进行编码,减慢推理速度并限制它们的实际应用。为了解决这些问题,作者建议并行处理每个传感器的模态内表示学习,并具有统一的架构,其参数为所有模态共享。方法首先使用特定于模态的标记器将不同的模态输入转换为标记序列,然后是几个模态共享的 DSVT 块,以实现并行模态特征编码。

Tokenization

先说这部分是怎么做的吧,图像用的vit,雷达的话他说用的End-to-End Multi-View Fusion for 3D Object Detection in LiDAR Point Clouds这篇文章使用dynamic voxelization,感兴趣也可以看一下吧。
在这里插入图片描述

Ok,反正就体素化完了,这部分我不是很关心,大家感兴趣的深入研究一下,都很简单的做法。

Modality-specific set attention.

这一部分就是【CVPR 2023】DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets这篇文章说过的,大家可以细读,没什么好说的。
在这里插入图片描述

在这里插入图片描述

Cross-Modal Representation Learning

重点来了,这部分是在DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets没有,也是如何在两个模态之间做交互的关键,

大家先看前面一篇博客再看这一篇最好这样。

大家还记得在最开始的流程图里面,有一个所谓的Modality-AgnosticPartition (2D)(就是从3D到2D投影)和Modality-AgnosticPartition (3D)(就是类似于lss)

Image perspective space

首先利用相机的内部和外部参数将所有激光雷达token转换为图像平面。
在这里插入图片描述
在这里插入图片描述
这里的 DSP(·input, ·window size, ·token number of each set) 是 DSVT中引入的标准动态集分区策略。也没什么好再说的。

3D geometric space

2D到3D是怎么做的?具体来说,我们首先对一组伪 3D 网格点进行采样,VP ∈ LS ×W S ×HS×3,其中 LS 、WS 、HS 是 3D 空间的空间形状除以预定义的网格大小。然后我们将所有伪激光雷达点VP投影到其对应的虚拟图像坐标中(记为VI = {vk|(xk, yk);bk;dk)}ν k=0),其中bk和dk为视图ID和相关的深度。值得注意的是,只考虑落在视图图像中的投影点,因此有效图像点的数量ν≤|VP | × B。

使用这些伪图像点VI,我们从其最近的图像虚拟邻居中检索每个图像token的深度估计,在这里插入图片描述
其中,Nearest(·virtual points,·image tokens)为最近邻函数,di表示第i个图像token的计算深度,与最近邻相同。然后我们将图像标记t1解投影回3D空间,并根据它们的2D距离生成偏移特征。

在这里插入图片描述

通过这种方式,我们通过预先计算的视图投影将图像和激光雷达标记统一在3D空间中,该投影可以在推理期间被完全缓存起来。

最后,利用动态集划分模块生成三维跨模态局部集
在这里插入图片描述

然后由DSVT块以统一的方式对其进行处理,用于3D激光雷达空间中的跨模态交互。

指标展示

在这里插入图片描述
在这里插入图片描述
最后吹水也没什么可说的必要了。

但是我还有有一些问题的,关于这些block块之间是如何处理的,输入输出具体是怎么连接的?这些可能需要看一下代码才会更清楚些。
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_cv_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值