深度学习多模态融合_3D目标检测多模态融合综述

0前言

本篇文章主要想对目前处于探索阶段的3D目标检测中多模态融合的方法做一个简单的综述,主要内容为对目前几篇几篇研究工作的总结和对这个研究方面的一些思考。
在前面的一些文章中,笔者已经介绍到了多模态融合的含义是将多种传感器数据融合。在3D目标检测中,目前大都是将lidar和image信息做融合。在上一篇文章中,笔者介绍到了目前主要的几种融合方法,即early-fusion,deep-fusion和late-fusion,并介绍了一种基于Late-fusion的融合方法。但是在大多数研究工作中,都是以deep-fuion的方法为主要的融合策略。

1背景知识

1.1多模态融合的主要难点

难点一: 传感器视角问题

3D-CVF(ECCV20)的研究提出的做fusion的对做融合工作最大的问题即是在视角上的问题,描述为如下图所示的问题,camera获取到的信息是“小孔成像”原理,是从一个视锥出发获取到的信息,而lidar是在真实的3D世界中获取到的信息。这使得在对同一个object的表征上存在很大的不同。

b5e4f1a8923a7ebc50bc2b74bb9cb2a1.png

难点二 数据表征不一样

这个难点也是所用多模态融合都会遇到的问题,对于image信息是dense和规则的,但是对于点云的信息则是稀疏的、无序的。所以在特征层或者输入层做特征融合会由于domain的不同而导致融合定位困难。

难点三 信息融合的难度

从理论上讲,图像信息是dense和规则的,包含了丰富的色彩信息和纹理信息,但是缺点就是由于为二维信息。存在因为远近而存在的sacle问题。相对图像而言,点云的表达为稀疏的,不规则的这也就使得采用传统的CNN感知在点云上直接处理是不可行的。但是点云包含了三维的几何结构和深度信息,这是对3D目标检测更有利的,因此二者信息是存在理论上的互补的。此外目前二维图像检测中,深度学习方法都是以CNN为基础设计的方法,而在点云目标检测中则有着MLP、CNN,GCN等多种基础结构设计的网络,在融合过程中和哪一种网络做融合也是比较需要研究的。

1.2 点云和imgae融合的纽带

既然做多模态特征融合,那么图像信息和点云信息之间必然需要联系才能做对应的融合。就在特征层或者输入层而言,这种联系都来自于一个认知,即是:对于激光雷达或者是相机而言,对同一个物体在同一时刻的扫描都是对这个物体此时的一种表征,唯一不同的是表征形式,而融合这些信息的纽带就是绝对坐标,也就是说尽管相机和激光雷达所处的世界坐标系下的坐标不一样,但是他们在同一时刻对同一物体的扫描都仅仅是在传感器坐标系下的扫描,因此只需要知道激光雷达和相机之间的位置变换矩阵,也就可以轻松的得到得到两个传感器的坐标系之间的坐标转换,这样对于被扫描的物体,也就可以通过其在两个传感器下的坐标作为特征联系的纽带。

但是,就联系的纽带而言,由于在做特征提取过程中可能存在feature-map或者domain的大小的改变,所以最原始坐标也会发生一定的改变,这也是需要研究的问题。

2. 目前存在的一些融合方法

如果硬要把目前存在的融合方法做一个划分的话,那么笔者从early-fuion,deep-fusion和late-fusion三个层面对最近的文章做一些简单介绍。这里把early-fusion和deep-fusion当做同一类融合方法介绍,late-fusion当做另外一种融合策略介绍。

2.1 early-fusian & deep-fusion

在上一篇文章中,笔者也提及到这种融合方法如下图所示。在后面,笔者将这两种方法都统称为特征融合方法,将late-fusion成为决策融合方法。如下图所示的融合方法,该融合需要在特征层中做一定的交互。主要的融合方式是对lidar 和image分支都各自采用特征提取器,对图像分支和lidar分支的网络在前馈的层次中逐语义级别融合,做到multi-scale信息的语义融合。

6e7cb15cefb840d50ef52c6062c100e6.png

为了方便分析,在该种融合策略下,笔者按照对lidar-3D-detection的分类方法分为point-based的多模态特征融合和voxel-based的多模态特征融合。其差别也就是lidar-backbone是基于voxel还是基于point的。就笔者的理解是,基于voxel的方法可以利用强大的voxel-based的backbone(在文章TPAMI20的文章Part-A^2中有研究过point-based方法和voxel-based的方法最大的区别在于CNN和MLP的感知能力上,CNN优于MLP)。但是如果采用voxel-backbone的方法就会需要考虑点到图像的映射关系的改变,因为基于point的方法采用原始的点云坐标做为特征载体,但是基于voxel的方法采用voxel中心作为CNN感知特征载体,而voxel中心与原始图像的索引相对原始点云对图像的坐标索引还是存在偏差的。

1. 基于voxel-based的多模态特征融合

文章:3D-CVF: Generating Joint Camera and LiDAR Features Using Cross-View Spatial Feature Fusion for 3D Object Detection.
文章地址:https://arxiv.org/pdf/2004.12636

这篇发表在ECCV20的多模态融合的文章网络结构图如下所示,该特征融合阶段为对特征进行融合,同时对于点云的backbone采用voxel-based的方法对点云做特征提取。所以这里需要解决的核心问题除了考虑怎么做特征的融合还需要考虑voxel-center作为特征载体和原始点云坐标存在一定的偏差,而如果将图像信息索引到存在偏差的voxel中心坐标上,是本文解决的另外一个问题。

8f9f83f537011af38dd815b4e36c8a7d.png

3D-CVF特征融合方法

3D-CVF 将camera的pixel转化到点云的BEV视图上(voxel-feature-map)时,转化的大小是lidar-voxel-feature-map的x-y各自的两倍大小,也就是说整体的voxel个数是Lidar的四倍,即会包含比较多的细节信息。
以下表示的Auto-Calibrated Projection Method的设计方案,前面提到的是该结构是将image转化到bev上的网络结构,具体的做法是:
(1)投影得到一个camera-plane,该plane是图像特征到bev视角的voxel-dense的表达。
(2)将lidar划分的voxel中心投影到camera-plane上(带有一个偏移量,不一定是坐标网格正中心)
(3)采用近邻插值,将最近的4个pixel的image特征插值个lidar-voxel。插值的方式采用的是距离为权重的插值方法。

987b15b46d2a01501b1774abf089acf8.png

这样,作者就得到了了image信息的feature-map在lidar-voxel上的表示,值得提到的是前面说的偏移值是为了更好的使camera和lidar对齐。这里的第二步也就是为了解决上面提到的做标偏差的问题。

如下图所示,

2. 基于point-based的多模态融合方法

由于point-based的方法在特征提取过程也是基于原始点为载体(encoder-decoder的结构会点数先减少再增加但是点是从原始点中采样得到,对于GCN的结构则是点数不改变),所以在做特征融合时,可以直接利用前面提到的转化矩阵的索引在绝对坐标系上做特征融合,所以目前基本也都是基于point的方法比较好融合,研究工作也多一些。

文章:PI-RCNN: An Efficient Multi-sensor 3D Object Detector with Point-based Attentive Cont-conv Fusion Module.
文章链接:https://arxiv.org/pdf/1911.06084
发表在AAAI20,point分支和image分支分别做3D目标检测任务和语义分割任务,然后将图像语义分割的特征通过索引加到proposals的内部的点云上做二次优化

7f9d652902ab3b548bbf2e1af3db4ea7.png

文章:PointPainting: Sequential Fusion for 3D Object Detection.
文章链接:https://arxiv.org/pdf/1911.10150
发表在CVPR20,该工作的fusion方式是采用二维语义分割信息通过lidar信息和image信息的变换矩阵融合到点上,再采用baseline物体检测;可以理解为对于语义分割出的物体多了一些信息作为引导,得到更好的检测精度。和上面的pi-rcnn的不同之处是该融合是一个串联的网络结构,将语义分割后的特征和原始点云一起送入深度学习网络中。

93141aedeb2caeabe54b55cfdea70bbc.png

文章: EPNet: Enhancing Point Features with Image Semantics for 3D Object Detection.

文章链接:https://arxiv.org/pdf/2007.08856

发表在ECCV20的文章,如下图所示,其网络结构点云分支是point encoder-decoder的结构,图像分支则是一个逐步encoder的网络,并且逐层做特征融合。

94d4e6d93720d8045d6853456fc51e65.png

2.2 late-fuion

在决策层面的融合相对简单很多,不需要考虑在信息层面的融合和互补,也就是说,只要是两种网络做同样的任务,那么在得到各自的结果后,对结果做决策上的选择融合。
文章:CLOCs: Camera-LiDAR Object Candidates Fusion for 3D Object Detection
文章链接:https://arxiv.org/pdf/2009.00784.pdf
这就是笔者上一篇分享的文章,从下图可以看出该网络经历了三个主要的阶段(1)2D和3D的目标检测器分别提出proposals(2)将两种模态的proposals编码成稀疏张量(3)对于非空的元素采用二维卷积做对应的特征融合。

61256dcb7e4069a4221311d4a4e9053e.png

3 笔者总结

本文主要就目前的几篇做多模态融合的文章做了一定的介绍,从大层面上的fusion的阶段讲起,然后进一步在deep-fuion阶段划分为基于point-based和voxel-based的融合方法,基于point的方法具有先天的优势是具有和image 的索引和不具有空间变化,而voxel的方法可以更有效的利用卷积的感知能力。最后大家如果对自动驾驶场景感知的研究比较感兴趣和想要找文章的话,可以去https://github.com/LittleYuanzi/awesome-Automanous-3D-detection-methods 找最新的研究。

参看文献

[1] 3D-CVF: Generating Joint Camera and LiDAR Features Using Cross-View Spatial Feature Fusion for 3D Object Detection: https://arxiv.org/pdf/2004.12636
[2]Part-A^2 Net: 3D Part-Aware and Aggregation Neural Network for Object Detection from Point Cloud : https://arxiv.org/abs/1907.03670
[3] PI-RCNN: An Efficient Multi-sensor 3D Object Detector with Point-based Attentive Cont-conv Fusion Module. :https://arxiv.org/pdf/1911.06084

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自适应宽_移动端实现自适应缩放界面的方法汇总

作者 | 唐宋元明清2188来源 | http://www.cnblogs.com/kybs0/在开发App端的网页时,要适配iphone、ipad、ipod、安卓等各种机型,一般是直接使用em、px转em、界面缩放。本章是通过将界面缩放,等比例显示在各机型上。过程中遇到了些问题和大坑~然…

Java继承简介

继承是面向对象的三大特征之一。继承和现实生活中的“继承”的相似之处是保留一些父辈的特性,从而减少代码冗余,提高程序运行效率。 Java 中的继承就是在已经存在类的基础上进行扩展,从而产生新的类。已经存在的类称为父类、基类或超类&…

各种说明方法的答题格式_初中语文阅读答题公式 语文阅读理解万能公式大全...

很多人想知道初中语文阅读理解有哪些答题公式,语文阅读理解的万能公式有哪些呢?下面小编为大家介绍一下!初中语文阅读理解答题公式大全(一)某句话在文中的作用:1、文首:开篇点题;渲染气氛(散文),埋下伏笔(记叙类文章)&#xff0c…

esp8266手机端网络调试助手_esp8266定时控制

要实现定时控制,需要先实现手动控制,或者app控制。实测定时精度,北京时间,误差不超过1秒。第一、远程App控制或手动控制下载esp8266示例程序下载地址: 点击下载本demo 是利用arduino IDE开发,关于arduino IDE 的ESP826…

集成学习之Adaboost(提升方法)

Adaboost 提升方法就是从弱学习器出发,反复学习,得到一系列弱分类器(基本分类器),然后组合这些弱分类器,构成一个强分类器。 基本思路 待解决问题 1、每一轮如何改变训练数据的权值或概率分布 2、如何将…

93没有了_杭州1米93程序员征婚贴火了!年薪50万,孩子随妈姓,没有皇位要继承...

文丨三秋桂子自从二胎政策开放以来,很多宝妈都希望二宝能随自己姓,但有些男方家庭却不同意,双方就孩子的“冠名权”一事争论不休。可最近有位小伙却因为征婚贴火了,原因有两个,一是小伙瞩目的身高,二是小伙…

李航《统计学习方法》之HMM隐马尔可夫模型

李航《统计学习方法》之HMM隐马尔可夫模型 文章目录前言一、基本概念1、语言描述:2、符号表示3、基本假设4、例子5、隐马尔可夫模型解决的三个基本问题二、概率计算算法1、向前算法算法:例题2、向后算法三、学习算法1、监督学习算法背景方法2、无监督学习…

6000毫安以上智能手机_展望2021年智能手机市场:这5大技术要爆发

2020年是极不平凡的一年,在黑天鹅、政治动荡等事件的冲击下,许多行业都按下了暂停键,智能手机行业自然也不例外。销售渠道受阻、供应链生产紧张,导致智能手机市场整体出货量呈现持续下跌的状况,严峻的市场行情让智能手…

无监督学习之聚类方法(K-Means、层次聚类)

一、导入 无监督学习中需要对无标记样本进行训练学习进而找到数据的内在性质和逻辑结构,聚类方法是为了为无监督学习的数据分析提供的基础学习方法。 聚类将数据集划分为若干个子集(每个子集称为类或者簇),如果一个样本只属于一个…

js调用python接口_JavaScript如何调用Python后端服务

欢迎关注【无量测试之道】公众号,回复【领取资源】, Python编程学习资源干货、 PythonAppium框架APP的UI自动化、 PythonSelenium框架Web的UI自动化、 PythonUnittest框架API自动化、 资源和代码 免费送啦~ 文章下方有公众号二维码,可直接微信扫一扫关注…

详细地图_一目了然:蒙城学区划分详细地图

从明天(8月5日)起,小学一年级,初中一年级可在网上注册、报名了。根据区域内适龄学生人数、学校分布、学校规模、班额规定、交通状况等因素,以街道、路段、门牌号、居住小区、村组等构成要件,按照确保公平和免试就近入学的原则&…

奇异值分解SVD(证明全部省略)

SVD知识梳理一、引入二、SVD的定义、性质定义例题奇异值分解一定存在紧奇异值分解和截断奇异值分解几何解释三、SVD算法计算过程四、SVD与矩阵近似五、python实现六、应用一、引入 主成分分析PCA、潜在语义分析都会用到SVD 不要求A矩阵是方阵,SVD是线性代数中相似对…

jq 比较两个时间是否在同一天_jq: 属性-class

.aadClass() 添加class用法和前面的text方法一样&#xff0c;可以传字符串&#xff0c;可以传函数。值用空格隔开可以增加多个class<.removeClass() 移出class值<他们在一起也可以链式调用。链式调用: 取值的时候返回return结果&#xff0c;赋值返回this,表示可以继续调用…

李航《统计学习方法》之EM算法及其推广

EM算法是一种迭代方法&#xff0c;可以看作用坐标下降法来最大化对数似然估计下界的过程。 一、引入 &#xff08;一&#xff09;算法介绍 1、例题 有三枚硬币&#xff0c;ABC他们出现正面的概率分别是Π&#xff0c;p和q。进行如下投掷实验&#xff1a;先投掷A&#xff0c…

获取选中_【字节】如何实现选中复制的功能

Barnett Demesne公园中在白雪覆盖的山坡上玩耍的一家&#xff0c;北爱尔兰贝尔法斯特(© Stephen Barnes/Alamy)本题摘自于我 github 上的面试每日一题&#xff1a;https://q.shanyue.tech&#xff0c;并有大厂面经及内推信息&#xff0c;可在左下角打开本题原文链接在一些…

c语言 bool_程序的数据要放到哪里呢?|C语言第二篇

在C语言第一篇里我写到了编译器&#xff0c;在这里补充一个点&#xff0c;文本编辑器&#xff0c;编译器&#xff0c;IDE(集成开发环境)的区别。文本编辑器是用作编写普通文字的应用软件&#xff0c;如window的记事本&#xff0c;atom&#xff0c;sublime&#xff0c;它常用来编…

项目职责_项目经理的9个职责

虽说懂技术是项目经理的一个必要项&#xff0c;但事实上&#xff0c;很多技术出身的人&#xff0c;根本干不好项目经理。当项目经理之前&#xff0c;是活儿管你&#xff0c;让你干什么你就干什么&#xff0c;只对任务结果负责&#xff0c;对整体目标不负责。当项目经理之后&…

jenkins 安装插件失败_Jenkins 自动化安装插件

手工安装 Jenkins 插件的方法通常&#xff0c;我们有两种方法安装 Jenkins 插件。第一种方法是到 Jenkins 插件管理页面搜索插件&#xff0c;然后安装。第二种方法是上传 Jenkins 插件的 hpi 文件安装。这两种方法能满足大多数人的需求。第一种方法&#xff0c;如下图所示&…

anaconda下python中matplotlib画图无法显示中文

第一步&#xff1a;在自己电脑里选择喜欢的字体&#xff0c;搜索位置为C:\Windows\Fonts&#xff0c;我选择的是SimSun 第二步 查找Matplotlib默认字体目录 打开anaconda prompt,输入python&#xff0c;接下来进入查找过程 查找代码如下 import matplotlib print(matplotlib.…

Python编程及高级数据分析

一、介绍&#xff08;11月22日&#xff09; 小问题找函数 大问题找包 python数据分析常用的包 数据库实现的功能的在panda包里面找 其中M\S\P是数据可视化工具 深度学习使用的包是pytorch(facebook支持) 中文的nlp&#xff1a;Jieba、pynlpir 英文的nlp:NLTK 学python前的准…