MPDA:基于Domain Adaption的V2X协同感知(3D目标检测)

2023-10-27

标签:Domain gap;CP without sharing the model information;Intermediate Fusion;3D Object Detection;

论文标题:Bridging the Domain Gap for Multi-Agent Perception
发表会议/期刊
数据集:V2XSet

问题:大多数现有的基于中间融合的协同感知算法假设所有agent都配备了相同的特征提取网络,但是为所有agent部署相同的模型是不现实的。对于互联自动驾驶,不同公司的网联自动驾驶汽车(CAV)和基础设施产品的检测模型通常是不同的;即使是同一公司的CAV,由于车载软件版本不同,目标检测模型也可能不同。而当模型不同时,传输的特征就会存在明显的domain gap(来自不同领域的特征存在差异性),将导致协同感知的性能急剧下降。

本文考虑了一个更符合实际的协同感知场景,其中合作中的每个agent可能配备了不同的特征提取模型,并分享传输具有 domain gap 的视觉特征,进行协同感知以实现基于LiDAR的3D目标检测任务。本文主要为了解决domain gap的问题,假设agent之间的相对位置是准确的,并且不存在通信延迟。

1 Domain gap 分析

首先,在同一场景下,应用Attention Transfer对两个不同的基于点云的3D目标检测网络(PointPillar和VoxelNet)获得的特征图的domain gap进行了分析,通过将两个网络获得的中间特征图的所有通道的绝对值相加,使其可视化信息更加丰富:
在这里插入图片描述
可观察到两个特征图在三个方面具有差异:
1)空间分辨率:不同的网络模型具有不同的体素化参数、LiDAR裁剪范围和下采样层数,所以空间分辨率是不同的;
2)channel数量:不同的网络模型的卷积层设置也不相同,因此,通道数量是不同的。
3)模式:由特征图可以看到,PointPillar和VoxelNet的模式是相反的,对于PointPillar来说,物体位置在特征图上的值相对较低,但对于VoxelNet来说,其值较高。

2 方法:MPDA

为了解决共享中间特征的三个主要差异,提出了Multi-agent Perception Domain Adaption 框架(MPDA),以弥补 domain gap。

MPDA的整体架构:

主要由四部分组成:1)可学习特征调整器,2)Sparse Cross-domain Transformer,3)域分类器,4)Multi-agent特征融合。
在这里插入图片描述

  1. 可学习特征调整器(Learnable Resizer)
    1)空间分辨率:如果使用初级的调整算法(如双线性和最近插值),可能会导致严重的错位;因此,采用可学习的方式调整接收到的中间特征的大小。
    2)channel数量:通过简单地丢弃 channel来调整 channel维度可能会导致重要信息的丢失;因此,所提出的调整器中还包含一个可学习的信道选择器来减少信息丢失。
    特征调整器将与特征融合算法联合优化以提高目标检测性能。
  2. Sparse Cross-domain Transformer
    为了减少模式差异,提出了Sparse Cross-domain Transformer以有效地提取接收到的特征和自车本地的特征,并通过对抗性地欺骗domain分类器来生成 domain-invariant 的特征表示。
  3. Multi-agent融合算法
    利用V2X-ViT特征融合网络来融合多个agent的信息。(V2X-ViT不需要其他模型的任何关键信息,如模型类型、参数,它可以保持保密性。)

综上,MPDA中,主要提出了两个组件,即 Learnable Feature Resizer 和 Sparse Cross-domain Transformer。

2.1 Learnable Feature Resizer

将在自车本地计算获得的特征图视为源域特征 F S F_S FS,从其他合作agent 处接收到的特征视为目标域特征 F T F_T FT ,Feature Resizer 的目标是以可学习的方式将源域特征的尺寸大小与目标域特征对齐。Feature Resizer 将与协同检测模型进行联合训练,使其能够智能地学习获得调整特征大小的最佳方法。

Learnable Feature Resizer 结构:

在这里插入图片描述
由四个主要部分组成:
1)Channel Aligner:使用一个简单的1×1卷积层来对齐通道维度,其输入通道数为 C i n = 2 C S C_{in}=2C_S Cin=2CS,输出通道数为 C S C_S CS
a. C T > C i n C_T>C_{in} CT>Cin时,随机丢弃 C i n − C T C_{in}-C_T CinCT个通道,并应用1×1卷积层,得到一个新的特征。在 F T F_T FT上重复这个过程n次,将得到具有n个通道数为 C S C_S CS的特征,然后计算得到n个特征的平均。通过这种方式,来改善由于信道丢弃而造成的信息损失。
b. C T < C i n C_T<C_{in} CT<Cin时,用从 F T F_T FT中随机选择的通道进行填充,以满足1×1卷积所需的输入通道数。

由于LiDAR点云特征通常是稀疏的,应用大核卷积来获得全局信息可能会将无意义的信息扩散到重要区域。而 FAX(Fused Axial)attention 模块 采用了局部窗口和网格注意力来有效地捕捉全局和局部的相互作用,它可以通过动态注意力机制来丢弃空体素,以消除其潜在的负面影响。

2)Fax Resizer:在bilinear resizing之前,应用FAX(Fused Axial)attention 模块来获取更好的特征表示。然后,采用一个双线性调整器(bilinear resizer),将特征图大小重塑为与源特征图相同的空间维度。(与简单的双线性插值相比,这里的 FAX Resizer 在bilinear resizing之前调整了输入特征,以避免在调整过程中出现错位和失真问题。)
3)Skip Connection:在Skip Connection中也采用了 bilinear feature resizing方法,使学习更容易。
4)残差块(Res-Block):在调整特征图的大小后,将通过多个标准的残差块以进一步细化特征图。

2.2 Sparse Cross-domain Transformer

经过大小调整后的目标域特征 F T ′ F'_T FT,需要将其模式转换为Domain Classifier不可区分的模式,以获得 domain-invariant 特征。因此,需要捕获 F T ′ F'_T FT F S F_S FS之间的关联性。为此,提出了Sparse Cross-domain Transformer。
Sparse Cross-domain Transformer架构
在这里插入图片描述
1)在 F T ′ F'_T FT F S F_S FS上应用3个不同的卷积层,分别获得query, key, 和 value。
2)来自目标域的query和来自源域的key/value 将被输入FAX Attention 块,以捕捉目标域和源域特征之间的空间交互。
3)经过一个标准的前馈神经网络,以进一步细化交互的特征。
之后,将获得的目标域特征 F T ′ ′ F''_T FT′′ F S F_S FS进行配对组合在一起,并将其发送给Domain Classifier和Multi-agent融合模块。

2.3 Domain Classifier

采用 H-divergence 来衡量 F T ′ ′ F''_T FT′′ F S F_S FS之间的差异。假设 X X X表示为可能来自源域或目标域的特征图, h : X → 0 , 1 h : X → {0, 1} h:X0,1表示域分类器。
在训练过程中,Domain Classifier将试图把源域样本 X S X_S XS预测为0,把目标域样本 X T X_T XT预测为1。假设 H H H是Domain Classifier的假设空间, G G G是Learnable Resizer 和Sparse Cross-domain Transformer的组合,那么 G G G的优化目标为:
在这里插入图片描述
其中, E S ( h ( X ) ) E_S(h(X)) ES(h(X)) E T ( h ( X ) ) E_T(h(X)) ET(h(X))分别是源域和目标域的分类误差, X X X G G G产生。 这种优化可以通过梯度反向层(GRL)以对抗性训练的方式实现。

2.4 Multi-agent融合

所提出的MPDA框架可以与大多数Multi-agent融合算法整合。本文选择V2X-ViT作为Multi-agent融合算法。为了达到最佳性能,除了学习愚弄Domain Classifier, G G G还以直接优化检测性能为目标:
在这里插入图片描述
其中,M表示为Multi-agent融合算法。 E D ( V ) E_D(V ) ED(V)是3D目标检测误差, V V V是融合特征。

2.5 损失函数

对于3D目标检测,使用smooth L1 loss 进行边界框回归,使用 focal loss进行分类。 对于Domain Classifier,利用交叉熵损失来学习 domain-invariant 特征。最终的损失是检测和 domain adaptation损失的组合:
在这里插入图片描述
其中,α和β是[0, 1]范围内的平衡系数。

3 总结

  1. 在协同感知中进行domain gap识别(空间分辨率、通道数量、模式),为解决这3个主要的特征差异问题,提出了一个Multi-agent Perception Domain Adaption(MPDA)框架,可在多个维度上对特征进行调整。
  2. 提出了一个Learnable Feature Resizer,以自适应的方式更好地调整来自其他agent的空间和通道特征。
  3. 提出了一个Sparse Cross-domain Transformer,可以有效地统一来自不同agent的特征模式。
  4. 所提出的MPDA框架可以很容易地与其他多代理融合算法相结合,并且不需要其他agent的模型机密信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MPDA:基于Domain Adaption的V2X协同感知(3D目标检测) 的相关文章

  • 如何在 JavaFX 中将 GUI 覆盖到 3D 场景上?

    我在 JavaFX 中有一个 3D 场景 需要在 3D 场景上覆盖 GUI 我尝试向场景添加按钮和文本 但它们始终作为 3D 对象出现在 3D 视图中 我环顾四周 没有找到该怎么做 唯一的解决方法是创建一个全新的窗口并将设置放在那里 但在这
  • 如何计算逆运动学[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道如何使用逆运动学计算旋转角度 我计划将其用于实时 3D 动画 有人知道一些详细介绍具体解决方案的好文献吗 以下资源调查了逆运动学问题的一些流行
  • 给定 3D 空间中的一条线,如何找到从它到一点的角度?

    我在 3D 空间中有两组点 我想画一条穿过两组点的中心的线 然后找到从该线到每个点的角度 从那里开始 我将根据两个角度的接近程度来确定两组中的匹配点 我知道如何找到每组点的中心 只需将它们平均在一起 并且我知道如何将它们匹配 甚至考虑到它们
  • 如何使用更少的包绘制二元正态分布的表面和轮廓

    我将绘制二元正态分布的 3D 曲面及其轮廓 可以是任何二元正态分布 我想用persp and contour在我的画中 我在网上搜索了一下 但发现了很多方法 大多数人都使用过一些软件包 但我想以使用更少的软件包甚至不安装任何软件包的方式来执
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • 如何在 OpenCV 中绘制图像的 3D 直方图

    更新 我找到更多例子 我现在可以做到 我可以在 3d 中绘制多个直方图吗 https stackoverflow com questions 35210337 can i plot several histograms in 3d 我知道这
  • 如何在SceneKit中实现逼真的景深效果?

    我正在尝试渲染具有真实景深效果的帧 我已经尝试过景深属性camera节点 但它不会产生可用的结果 是否可以切换到景深效果的最大渲染质量 性能不是一个因素 我只需要渲染一帧 用户可以等待它 SceneKit 中逼真的景深效果 在SceneKi
  • 点列表的 3D 轮廓(凹壳)

    我有一个 C 中的 Vector3 点列表 我需要计算这些点的凹轮廓 确实有很多参考资料 特别是对于 凸 分辨率 由于格雷厄姆算法 我已经成功实现了 然而 由于我现在需要有效地计算凹轮廓 所以我迷失了 维基百科确实列出了很多用于凸计算的资源
  • 使用 ThreeJS 获取球体纹理上的点击位置

    目前 我有一个带有纹理的球体 它绕 y 轴旋转 我还有在 3D 空间中单击的位置 以及球体上的旋转位置 我认为 目标 获取纹理上的位置 例如 我想获取我点击的图像的哪个方块 参见示例球体和下图 在实践中 我不会使用此图像 但我觉得这将是一个
  • C++ Irrlicht 程序未链接:“未定义对‘__imp_createDevice’的引用”

    我的 Irrlicht 程序无法链接 我使用的编译器是g Code include
  • 如何创建热图来说明控制发散调色板中心颜色位置的网格差异?

    我有两个人脸 3D 网格 我希望使用热图来说明差异 我想使用红蓝发散色阶 我的数据可以查到here https github com Patricklv How to create heatmap illustraing 3D mesh d
  • 简单的线框格式?

    我正在寻找一种用于线框模型的简单文件格式 我知道 VRML u3D 等 但这些对于我的需求来说似乎很重要 我的标准是 必须有明确的规格 要么是开放的 要么是非常完善 记录的 我只需要 想要 简单的模型 顶点和边 我不想处理面孔或物体 如果格
  • 使用 Scipy/Numpy 在浊点的二维插值中仅获取“有效”点

    我有一个通过人的背部摄影测量获得的浊点 我正在尝试对其进行插值以获得规则网格 为此我正在使用scipy interpolate到目前为止取得了良好的成果 问题是 我正在使用的函数 scipy interpolate griddata 使用平
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0
  • 如何仅剪切剪切平面的交集(而不是并集)?

    在 OpenGL JOGL 中 当使用多个剪切平面时 似乎会应用所有剪切平面的并集 我想要的是路口要应用的所有剪裁平面 这可能吗 请参阅下面的简化二维示例 Edit An example of clipping by vertex shad
  • 判断点是否在截锥体内

    我正在尝试找出确定一个点是否在截锥体内的最佳方法 我有一些工作 但不确定它是否太麻烦 也许我应该有一种更优雅 有效的方法来做到这一点 假设我想查明点 x 是否在截锥体内 一旦我知道了平截头体的 8 个点 4 个近点 4 个远点 的位置 我就
  • XNA中窗口系统的渲染策略(RenderTarget性能)

    我目前正在从头开始为 XNA 游戏创建一个窗口系统 我主要针对 Windows 进行开发 但谁知道我将来可能支持哪些平台 如果您知道本机 Direct3D 的这一点 请随意回答 因为性能语义应该类似 如果可能 请考虑如果目标平台是 X Bo
  • 3D 空间中两个盒子之间的交集

    我想为我的图形引擎实现一个碰撞检测系统 我不知道这是否是常见的方法 但我的想法是将任何实体对象 如网格或相机 绑定在 3D 盒子内 这会给我比球体更准确的结果 这个盒子由八个顶点定义 x0 min vertices x off parsin
  • 如何向 3D 表面添加文本

    我使用plot surface 创建了具有平行四边形底座的矩形棱柱 我需要向其中一个表面添加一些文本 我试过ax text 3 0 5 1 red 1 1 0 color red 但文本在表面上不可见 import matplotlib p
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla

随机推荐