BEV下统一的多传感器融合框架 - FUTR3D
BEV下统一的多传感器融合框架 - FUTR3D
引言
在自动驾驶汽车或者移动机器人上,通常会配备许多种传感器,比如:光学相机、激光雷达、毫米波雷达等。由于不同传感器的数据形式不同,如RGB图像,点云等,不同模态的数据的信息密度和特性也不同,如何能够有效地融合各个模态的数据使得车或机器人能够准备地感知周围的场景是一个非常关键的问题。
下面就由陈炫耀同学来介绍我们的论文:FUTR3D: A Unified Sensor Fusion Framework for 3D Detection[1],网站链接:FUTR3D。
之前多模态融合的工作主要是为特定的传感器组合设计算法,比如用图像去增强点云(PointPainting,MVP)、用图像检测框去辅助点云检测(Frustum PointNet)等。而在FUTR3D中,我们试着在BEV下构建一个通用的可容纳各种不同传感器的3D目标检测框架。
FUTR3D的主要贡献如下:
-
通用框架。FUTR3D是第一个通用的可适应各种不同传感器的端到端的三维目标检测框架。
-
有效性。它在Camera, LiDAR, Camera+LiDAR , Camera+Radar等不同的传感器组合情况下都能实现领先效果。
-
低成本。FUTR3D在Camera+4线LiDAR的情况下能够超过32线LiDAR的结果,因此能够促进低成本的自动驾驶系统。
附赠自动驾驶学习资料和量产经验:链接
FUTR3D方案
FUTR3D主要包括Modality-Specific Feature Extractor, Modality-Agnostic Feature Sampler和Loss。
Modality-Specific Feature Extractor
对于不同的传感器输入数据,我们根据它们各自的模态形式分别用不同的backbone去提取它们的特征。
-
对于camera images,采用ResNet50/101和FPN来对每张图片提取多尺度的特征图。
-
对于LiDAR point clouds,用PointPillar或者VoxelNet来提取点云的特征。
-
对于Radar point clouds,用3层MLP来提取每个Radar point的特征。
Modality-Agnostic Feature Sampler
模态无关的特征采样器,下面简称MAFS,是FUTR3D的detection head与各个模态的特征进行交互的部分。
类似于DETR3D,MAFS含有600个object query,每个query会经过一个全连接网络预测出在BEV下的3D reference points。
对于camera部分,我们依照DETR3D的做法,利用相机的内外参数将reference points投影到image上采集feature,得到 ��cam 。具体做法可以参看上篇文章,这里就不详细展开。
对于LiDAR部分,我们按照reference points在3D空间中的坐标,投影到LiDAR BEV特征上去采集它在LiDAR feature map上对应位置的feature,得到 ��lid 。
对于Radar部分,根据每个reference points的位置,选取离它最近的10个Radar points的特征,并聚合在一起得到 ��rad 。
采集得到各个模态的对应特征之后,将它们concatenate到一起,并经过一个MLP网络投射到一个共同的特征空间中。
之后再利用 ��fus 以及reference points的位置编码去更新object query的信息。
在FUTR3D中,我们同样有6层decoder layer,在每层decoder layer中,用object query之间的self attention和MAFS去更新object query的信息,并且每个query会去通过MLP网络去预测得到bounding box的参数和reference points的offsets去迭代更新每一层的预测结果。
Loss
在loss部分,我们先利用Hungarian算法来将每个object query预测得到的bbox去和ground-truth box进行二分图匹配,得到最优的matching方案,然后对匹配成功的box计算regression L1 loss和classification focal loss,没有匹配到gt box的predicted box就只计算classification loss。
实验结果
FUTR3D作为一个通用框架,在各个不同传感器的配置下都能取得state-of-the-art的结果,超过针对特定输入组合的算法。特别是在低线LiDAR,如1线、4线等,FUTR3D表现出了很好的鲁棒性,结果远超其他方案。值得一提的是,在Cameras+4线LiDAR的情况下,FUTR3D达到了56.8mAP,超过了32线LiDAR的sota结果56.6mAP(CenterPoint)。
表 Cameras和LiDAR融合的结果
表 Cameras和Radar融合的结果
结果分析
由于FUTR3D的通用性,我们得以分析各个模态在目标检测中不同的特性。
在Cameras+LiDAR融合中,Cameras对体积小和距离远的物体有着显著的帮助作用。
表 对不同距离的物体的模型表现
可视化结果
在各种不同传感器配置组合的融合中,我们发现一些非常有趣的场景,并由其可以对比看出各个不同传感器之间不同的特性。
在Cameras+4 Beam LiDAR和32 Beam LiDAR的对比中,可以看出即使点云稀疏得多的情况下,相机也能极大地帮助检测那些体积小和距离远导致point很少的物体。
图 Cameras+4线LiDAR vs. 32线LiDAR对比
在Cameras+1线LiDAR和Cameras-only的对比中,可以看到即使只有一线LiDAR,也可以通过它提供的距离信息来帮助检测。
图 Cameras+1线LiDAR vs. Cameras-only 对比
下一篇预告
我们将在下一篇介绍BEV系的多相机多目标跟踪框架MUTR3D,MARS Lab的BEV系列未完待续,敬请期待!
参考
- ^FUTR3D: A Unified Sensor Fusion Framework for 3D Detection https://arxiv.org/abs/2203.10642
相关文章:

BEV下统一的多传感器融合框架 - FUTR3D
BEV下统一的多传感器融合框架 - FUTR3D 引言 在自动驾驶汽车或者移动机器人上,通常会配备许多种传感器,比如:光学相机、激光雷达、毫米波雷达等。由于不同传感器的数据形式不同,如RGB图像,点云等,不同模态…...
c#和python的flask接口的交互
一、灰度图像的传输 c#端的传输 //读入文件夹中的图像 Mat img2 new Mat(file, ImreadModes.AnyColor); //将图像的数据转换成和相机相同的buffer数据 byte[] image_buffer new byte[img2.Width * img2.Height]; int cn img2.Channels(); //通道数 if (cn 1){//将图像的数…...

Python测试框架Pytest的参数化详解
上篇博文介绍过,Pytest是目前比较成熟功能齐全的测试框架,使用率肯定也不断攀升。 在实际工作中,许多测试用例都是类似的重复,一个个写最后代码会显得很冗余。这里,我们来了解一下pytest.mark.parametrize装饰器&…...

KernelSU 如何不通过模块,直接修改系统分区
刚刚看了术哥发的视频,发现kernelSU通过挂载OverlayFS实现无需模块,即可直接修改系统分区,很是方便,并且安全性也很高,于是便有了这篇文章。 下面的教程与原视频存在差异,建议观看原视频后再结合本文章进行操作。 在未进行修改前,我们打开/system/文件夹,并在里面创建…...

红日靶场ATTCK 1通关攻略
环境 拓扑图 VM1 web服务器 win7(192.168.22.129,10.10.10.140) VM2 win2003(10.10.10.135) VM3 DC win2008(10.10.10.138) 环境搭建 win7: 设置内网两张网卡,开启…...

CellMarker | 人骨骼肌组织细胞Marker大全!~(强烈建议火速收藏!)
1写在前面 分享一下最近看到的2篇paper关于骨骼肌组织的细胞Marker,绝对的Atlas级好东西。👍 希望做单细胞的小伙伴觉得有用哦。😏 2常用marker(一) general_mrkrs <- c( MYH7, TNNT1, TNNT3, MYH1, MYH2, "C…...
游戏名台词大赏
文章目录 原神(圈内) 崩坏:星穹铁道(圈内) 崩坏3(圈内) 原神 只要不失去你的崇高,整个世界都会为你敞开。 总会有地上的生灵,敢于直面雷霆的威光。 谁也没有见过风&…...

OpenCV如何在图像中寻找轮廓(60)
返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何模板匹配(59) 下一篇 :OpenCV检测凸包(61) 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 cv::findContours使用 OpenCV 函数 cv::d rawContours …...

java 泛型题目讲解
泛型的知识点 泛型仅存在于编译时期,编译期间JAVA将会使用Object类型代替泛型类型,在运行时期不存在泛型;且所有泛型实例共享一个泛型类 public class Main{public static void main(String[] args){ArrayList<String> list1new Arra…...
pptx 文件版面分析-- python-pptx(python 文档解析提取)
安装 pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple --ignore-installedpptx 解析代码实现 from pptx import Presentation file_name "rag_pptx/test1.pptx" # 打开.pptx文件 ppt Presentation(file_name) for slide in ppt.slides:#pr…...

http的basic 认证方式
写在前面 本文看下http的basic auth认证方式。 1:什么是basic auth认证 basic auth是一种http协议规范中的一种认证方式,即一种证明你就是你的方式。更进一步的它是一种规范,这种规范是这样子,如果是服务端使用了basic auth认证…...
【信息系统项目管理师练习题】信息系统治理
IT治理的核心是关注以下哪项内容? a) 人员培训和发展计划 b) IT定位和信息化建设与数字化转型的责权利划分 c) 业务流程的绩效管理 d) IT基础设施的优化利用 答案: b) IT定位和信息化建设与数字化转型的责权利划分 IT治理体系框架的组成部分包括以下哪些? a) IT战略目标、IT治…...

RabbitMQ之顺序消费
什么是顺序消费 例如:业务上产生者发送三条消息, 分别是对同一条数据的增加、修改、删除操作, 如果没有保证顺序消费,执行顺序可能变成删除、修改、增加,这就乱了。 如何保证顺序性 一般我们讨论如何保证消息的顺序性&…...

轻松上手的LangChain学习说明书
一、Langchain是什么? 如今各类AI模型层出不穷,百花齐放,大佬们开发的速度永远遥遥领先于学习者的学习速度。。为了解放生产力,不让应用层开发人员受限于各语言模型的生产部署中…LangChain横空出世界。 Langchain可以说是现阶段…...

【论文笔记】Training language models to follow instructions with human feedback A部分
Training language models to follow instructions with human feedback A 部分 回顾一下第一代 GPT-1 : 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式;模型架构是基于 Transformer 的叠加解码器(掩码自注意…...
嵌入式交叉编译:x265
下载 multicoreware / x265_git / Downloads — Bitbucket 解压编译 BUILD_DIR${HOME}/build_libs CROSS_NAMEaarch64-mix210-linuxcd build/aarch64-linuxmake cleancmake \-G "Unix Makefiles" \-DCMAKE_C_COMPILER${CROSS_NAME}-gcc \-DCMAKE_CXX_COMPILER${CR…...

一、Redis五种常用数据类型
Redis优势: 1、性能高—基于内存实现数据的存储 2、丰富的数据类型 5种常用,3种高级 3、原子—redis的所有单个操作都是原子性,即要么成功,要么失败。其多个操作也支持采用事务的方式实现原子性。 Redis特点: 1、支持…...

C语言动态内存管理malloc、calloc、realloc、free函数、内存泄漏、动态内存开辟的位置等的介绍
文章目录 前言一、为什么存在动态内存管理二、动态内存函数的介绍1. malloc函数2. 内存泄漏3. 动态内存开辟位置4. free函数5. calloc 函数6. realloc 函数7. realloc 传空指针 总结 前言 C语言动态内存管理malloc、calloc、realloc、free函数、内存泄漏、动态内存开辟的位置等…...

最近惊爆谷歌裁员
Python团队还没解散完,谷歌又对Flutter、Dart动手了。 什么原因呢,猜测啊。 谷歌裁员Python的具体原因可能是因为公司在进行技术栈的调整和优化。Python作为一种脚本语言,在某些情况下可能无法提供足够的性能或者扩展性,尤其是在…...

音频可视化:原生音频API为前端带来的全新可能!
音频API是一组提供给网页开发者的接口,允许他们直接在浏览器中处理音频内容。这些API使得在不依赖任何外部插件的情况下操作和控制音频成为可能。 Web Audio API 可以进行音频的播放、处理、合成以及分析等操作。借助于这些工具,开发者可以实现自定义的音…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...