多模态融合 2022

2023-11-13

论文题目:DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection(前融合)
单位:google
注:4D-Net和3D-CVF也研究了lidar和相机两个模态特征的对齐问题

1.摘要+intro
前融合的方法有pointpainting(用相机特征装饰点云)和EPNet(融合特征提取后的中层特征)两大流派。但这两类方法融合深度lidar特征和相机特征带来一个问题,由于这些特征通常是增强和聚集的,不能很有效地对齐来自两个模态的特征(对齐即是要找到激光雷达和摄像机特征的对应关系)。作者认为通过Pointpainting的方法进行融合会存在"voxelization对相机特征不适用;domain gap;额外计算代价;额外标签问题;特征是启发式(根据经验发现的方法)选择的而不是通过端到端学习得到的“等问题,问题产生的原因是由于camera的特征提取器是从其他任务中单独学到的如这里就是用的deeplab分割。为了实现有效的中层特征融合解决提到的问题,作者提出了名为Deepfusion的模型,主要基于InverseAug(为了解决几何相关数据增强带来的图像和LIDAR特征对齐问题)和LearnableAlign(为了动态捕获图像和LIDAR特征之间的相关性)这两个方法。

2.特征对齐的难点
作者提出对齐特征是有挑战性的,首先第一个挑战是在融合前一般方法都会对两个模态的数据进行数据增强。如采用沿z轴旋转3D世界坐标系的RandomRotation 数据增强方法,通常对激光雷达点使用,但不适用于相机图像,对lidar点做完这个数据增强后就会使得两个模态的特征更加难以对齐。第二个挑战是因为一个体素包含了很多lidar点,造成了一个体素对应多个相机特征,但这么多的相机特征有些并不是很重要,所以得挑选重要的相机特征。

3.method
3.1 深度特征融合pipeline
为了解决Pointpainting存在的”voxelization对相机特征不适用“的问题,作者融合了相机和激光雷达的深度特征而不是在输入层的那一步装饰raw lidar points,这样就使得相机信号不会经过专门为点云设计的模块(voxelization)。为了解决Pointpainting存在的”domain gap;额外计算代价;额外标签问题;特征是启发式(根据经验发现的方法)选择的而不是通过端到端学习得到的“的问题,作者使用卷积层来提取相机特征,然后以端到端的方式将这些卷积层与网络的其他组件一起训练。这个pipeline解决了之前提到的问题,不过作者觉得自己的这个方法还是存在一定的缺点:与输入级装饰方法相比,将camera与激光雷达信号在深层特征级别上对齐变得不那么直接了,所以提出了后续对齐的改进方案。
在这里插入图片描述
3.2 对齐质量对结果的影响
作者通过几何相关的数据增强(这里用的是 RandomRotation)来调整对齐的难易程度,因为越强的几何相关数据增强会导致越差的对齐。通过实验发现对齐对于深度特征融合至关重要,如果对齐不准确,则从camera输入中获得的好处将变得微乎其微。

3.3 增强对齐的质量
作者提出了两种技术,InverseAug和LearnableAlign来有效地对两个模态的深度特征进行对齐。
1)InverseAug
数据增强是多模态融合中一定要有的,因为从前人的研究发现可以带来模型的效果提升。但因为使用原始的激光雷达和相机参数不能在2D空间中定位数据增强后的lidar对应的相机特征。作者为了使得定位可以实现,当应用几何相关数据增强时,InverseAug首先保存增强参数(例如,RandomRotate数据增强方法的旋转度)。然后在融合阶段,反转所有这些数据增强来获得最原始的3d关键点(注意只反转关键点,如体素中心点)坐标。然后找到和3d点坐标对应的2d相机坐标。
在这里插入图片描述
2)LearnableAlign
对于PointPainting的输入级装饰方法来说,给定一个3d的lidar点,只会对应唯一的那一个相机像素。但因为在作者提出的pipeline是融合的两个模态的深度特征,每个激光雷达特征代表一个包含点的子集的体素,因此其对应的相机像素是多边形的(即会对应很多个像素)。所以就有了one-voxel-to-many-pixels的问题。有一个naive的想法就是对给定体素相对应的那些所有相机像素求平均,这样就会得到一个one-voxel-to-one-pixel的结果,但存在一个问题就是这些像素并不是同等重要的,很显然求平均不是一个很好的解决方法。所以作者最后利用交叉注意机制来动态捕获两个模态之间的相关性,更好地将来自激光雷达特征的信息与最相关的相机特征对齐(最后也是变成one-voxel-to-one-pixel)。LearnableAlign使用三个全连接的层来分别将体素变换为query Q1,并将相机特征变换为keys Kc和values Vc。最后经过交叉注意力聚合的camera的values,再经过全连接的层进行处理,最后与原始激光雷达特征concat起来。最后将输出送入任何标准的3D检测框架,如PointPillars或CenterPoint进行模型训练。

4.结果
在这里插入图片描述
Ens:model ensemble

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多模态融合 2022 的相关文章

  • 在python opengl中使用图像中的2d点获取空间中的3d点

    我正在尝试模拟房间中的深度相机 我的相机能够在世界中移动和旋转 并且房间被模拟为围绕 0 0 0 的 3d 立方体 单击按钮时 我想对图像中的 N 个随机点进行采样 并获取这些点与相机的距离 现实世界 中的距离 到目前为止 我已经成功创建了
  • 使用 DirectX 或 OpenGL 显示 100 个浮动立方体

    我想使用显示 100 个浮动立方体DirectX or OpenGL 我正在寻找一些示例源代码或该技术的描述 我无法正确显示多个立方体 我在网上搜索了一系列很好的教程 尽管他们谈论了如何做3D基元 我找不到有关如何进行大量操作的信息3D原语
  • 矩形相交

    是否有任何已知的方法来计算两个矩形之间的相交矩形 我的意思是 如果矩形 A 由 x1 y2 x2 y2 定义 B 由 x3 y3 x4 y4 定义 那么如何计算相交矩形 C x5 y5 x6 y6 的坐标 Thanks 相交多边形的一般问题
  • 准确测量一组基准点之间的相对距离(增强现实应用)

    假设我有一组 5 个标记 我正在尝试使用增强现实框架找到每个标记之间的相对距离 例如AR工具包 http www hitl washington edu artoolkit 在我的相机中 前 20 帧仅向我显示前 2 个标记 以便我可以计算
  • Python在3D散点图中用线连接相邻点

    我有两组 x y z 坐标 我用 Matplotlib 将它们绘制在 3D 散点图中 现在 我想将每个生成的四边形与平面连接起来 我已经了解了如何在 3D 空间中绘制 2D 多边形在 python matplotlib 中绘制 3D 多边形
  • 计算 3D(或 n 维)质心的最佳方法是什么?

    作为工作项目的一部分 我必须计算 3D 空间中一组点的质心 现在我正在以一种看似简单但天真的方式来做这件事 通过取每组点的平均值 如下所示 centroid average x average y average z where x y a
  • WP7 XNA 显示 3D FBX 模型

    我只是初学者 很抱歉我的愚蠢问题 我的模型看起来像这样 http img265 imageshack us img265 8291 clipboard01ap jpg http img265 imageshack us img265 829
  • R - hist3D 序列颜色和标签问题

    所以我有一个 5 行 20 列的数据集 我正在尝试绘制一个hist3D来自plot3D包裹 dt structure c 1 1 1 3 1 2 1 0 2 1 2 1 0 1 1 0 1 0 2 2 1 1 1 1 4 4 1 1 2 3
  • 使用 glFrustum 进行离轴投影

    我正在尝试使用 OpenGL 对场景进行离轴投影 并且我阅读了该文档罗伯特 库伊马的离轴投影 http csc lsu edu kooima pdfs gen perspective pdf现在对实际需要做什么有了更好的了解 但仍然有一些部
  • 使用 3d 变换矩阵

    在人工智能课程中 我们有一个机器人 它的手臂有 7 个关节 每个关节可以向不同的方向旋转 我需要知道最后的结局在哪里 我一直在尝试进行 3d 矩阵乘法 它适用于一个关节 但一旦我添加另一个关节 它就与我使用 Java3D api 制作的模型
  • CSS3“曲面”3D 变换/透视帮助

    我正在尝试为我的网站创建一种有观点的人群 它实际上是一个充满平面图像的 ul 我想创建一种 弯曲 的感觉 就像圆形的人群一样 它向内并且向内明显变小 并向末端弯曲 海报圈的例子是我能找到的最接近的http www webkit org bl
  • 求 3d 中 2 个任意立方体的交集

    所以 我想找出一个函数 可以让您确定两个任意旋转和大小的立方体是否相交 如果立方体的旋转不是任意的 而是锁定到特定的轴 则相交很简单 您可以通过检查它们的边界来检查它们是否在所有三个维度上相交 以查看它们在所有三个维度上是否相交或在彼此之内
  • Python 中的标量场可视化

    我需要在 Python 中可视化几个重叠的标量场 我发现mayavi图书馆做这种情节 问题是我不明白如何为标量字段自定义颜色图 我的想法是为每个字段设置一种颜色的阴影 我尝试采用一个例子 http docs enthought com ma
  • 如何使用更少的包绘制二元正态分布的表面和轮廓

    我将绘制二元正态分布的 3D 曲面及其轮廓 可以是任何二元正态分布 我想用persp and contour在我的画中 我在网上搜索了一下 但发现了很多方法 大多数人都使用过一些软件包 但我想以使用更少的软件包甚至不安装任何软件包的方式来执
  • 如何在 Three.js 中从三角面获取多边形?

    我在网上查了一下是否有人遇到同样的问题 我正在使用 Three js 我有一个 3DObject 其中可能包含孔 面是三角形的 假设我想从上面看到它 我的目标是获得一个代表顶面周长的多边形 这对我来说意味着不再有三角面 而只有 1 个多边形
  • 如何在 OpenCV 中绘制图像的 3D 直方图

    更新 我找到更多例子 我现在可以做到 我可以在 3d 中绘制多个直方图吗 https stackoverflow com questions 35210337 can i plot several histograms in 3d 我知道这
  • 在 Three.js 中将贝塞尔曲线转换为平面道路

    我试图根据之前计算得到的一些贝塞尔曲线在 Three js 中绘制一条弯曲的道路 问题是我找不到转换曲线序列的方法 一条从上一条曲线的末尾开始 到一个曲面 我有一个 3D 场景 其中有一些汽车 一条用飞机创建的道路 并且绘制了即将到来的道路
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • 使用 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

随机推荐

  • XXXXXXXXXXXXX

    Netflix主机性能监视工具Vector http www chinaz com web 2015 0414 398451 shtml 云雀科技是总部位于西雅图的新兴的云服务公司 利用业界 最新技术打造下一代具有高密度动态计算能力的云平台
  • 初学网络安全不可不知的:10款开源安全工具

    随着互联网的不断发展 安全问题也越来越受到企业的重视 但安全问题往往需要大量资金的投入 例如聘请安全工程师 产品研发 测试等流程 这对于那些原本就资金紧缺的企业而言 是绝对无法接受的 因此 为了减少在这方面的资金投入 许多安全人员都会选择使
  • keyframes介绍与调用动画方法

    keyframes介绍 keyframes changecolor 0 background red 50 background red 100 background green 在一个 keyframes 中的样式规则可以由多个百分比构成
  • APB总线详解及手撕代码

    本文的参考资料为官方文档AMBA 3 APB Protocol specification 文档下载地址 https pan baidu com s 1Vsj4RdyCLan6jE quAsEuw pwd w5bi 提取码 w5bi APB
  • Spring Bean如何保证并发安全

    1 可以设置Bean的作用域为原型 这样每次从容器中获取到的Bean就是一个新的实例 避免了多线程共享同一个对象实例的问题 2 不改变Bean作用域的情况下 可以避免在Bean中存可变状态的声明 尽量使用局部变量或使用线程安全的数据结构 3
  • Visual Station 2022的头文件包含目录设置的区别

    1 前言 对vs的包含头文件的组织 你困惑吗 困惑 有点困惑 BullS 在没喊出 BullSHI 之前 我先查了很多博客 结果 有的说 VC Directories gt Include Directories 适用于当前项目 C C g
  • BUUCTF [ACTF2020 新生赛]Exec

    1 刚打开的时候如图所示 先随便用一个地址127 0 0 1 2 然后查下目录127 0 0 1 ls ls看文件目录 发现flag 直接抓127 0 0 1 cat flag 拿到flag flag fdc896b1 e032 4e87
  • 如何训练自己的tokenizer

    训练自己的 tokenizer 通常需要以下几个步骤 准备数据 选择一些文本数据作为训练数据 并将其按照一定的方式拆分成若干个 token 例如将句子按照空格拆分成单词 选择模型 选择一种适合你的任务的模型 例如基于字符的模型或基于单词的模
  • electron 生成 arm64 的包

    vue electron https blog csdn net qq1195566313 article details 131713875 打包配置修改如下 electronBuilder build config appId com
  • 目标检测-YOLOv7代码及训练

    目录 论文及代码下载 代码结构 代码学习 1 train py 1 1 参数 1 2 Resume 训练中断后继续训练 1 3 Train 训练 2 yolov7 yaml 2 1 parameters and anchors 2 2 网络
  • 阿姆达尔定律

    原文地址 作者 Jakob Jenkov 译者 张坤 阿姆达尔定律可以用来计算处理器平行运算之后效率提升的能力 阿姆达尔定律因Gene Amdal 在1967年提出这个定律而得名 绝大多数使用并行或并发系统的开发者有一种并发或并行可能会带来
  • HDFS RBF的Connection管理

    文章目录 前言 Connection管理的权衡问题 RBF的Connection管理 细粒度的Connection Pool划分 Connection的创建 Connection的清理 参考资料 前言 为了解决HDFS Federation
  • Java-常量池

    Java 常量池 常量池是类文件中最复杂的数据结构 对于JVM字节码来说 如果操作数是很常用的数字 比如 0 这些操作数是内嵌到字节码中的 如果是字符串常量和较大的整数等 Class文件则会把这些操作数存储到常量池中 当使用这些操作数时 会
  • 快速傅氏变换之旅(二) 七种FFT算法速度比较(含代码)

    转载请标明是引用于 http blog csdn net chenyujing1234 例子代码 编译工具 VS2005 http www rayfile com zh cn files 76968e5e 7bde 11e1 8c13 00
  • 常见设计模式解析和实现(C++)Adapt模式

    作用 将一个类的接口转换成客户希望的另一个接口 Adapt模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 UML示意图 1 采用继承原有接口类的方式 2 采用组合原有接口类的方式 解析 Adapt模式其实就是把完成同样一个功能
  • 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)

    关注 WeiyiGeek 设为 特别关注 每天带你玩转网络安全运维 应用开发 物联网IOT学习 本章目录 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 安装部署 1 基础主机环境准备配置 2 负载均衡管理工
  • 家用 NAS 服务器搭建

    1 前言 使用NAS 一般除了在家里通过局域网访问 还会有外网访问的需求 即在外面通过移动网络或者其他网络访问家中的NAS 正常情况下在外面是没有办法访问家庭网络的 甚至是nas 因为nas获取的是局域网IP 而不是广域网IP 全球唯一地址
  • Unable to Create Process

    Error Unable to create process OK Details gt gt 如果你的操作系统是Win7而你又直接点击运行按钮的话会提示此错误 错误的原因是你程序中有对注册表的处理或一些底层操作 所以会提示这个错误 解决办
  • 循环队列(Java实现)

    Java数据结构学习笔记2 循环队列 核心逻辑代码如下 class CircleQueue private int maxSize 0 private int front 指向队列的第一个元素 private int rear 指向队列的最
  • 多模态融合 2022

    论文题目 DeepFusion Lidar Camera Deep Fusion for Multi Modal 3D Object Detection 前融合 单位 google 注 4D Net和3D CVF也研究了lidar和相机两个