Simple-BEV:多传感器BEV感知中真正重要的是什么?

news2024/11/24 12:54:50

文章:Simple-BEV: What Really Matters for Multi-Sensor BEV Perception?

作者:Adam W. Harley , Zhaoyuan Fang,Jie Li,Rares Ambrus , Katerina Fragkiadaki

编辑:点云PCL

代码:https://github.com/aharley/simple_bev

文章:https://arxiv.org/abs/2206.07959(ICRA 2023)

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

多传感器的鸟瞰视图(BEV)感知在自动驾驶中扮演着重要的角色。然而,在实际应用中,选择适合的传感器和特征对于实现准确和鲁棒的BEV感知至关重要。本文提出了一种名为Simple-BEV的方法,旨在探究多传感器BEV感知中真正重要的因素。本文基于一个综合的自动驾驶数据集,通过对不同传感器配置和特征组合的实验进行全面评估。提出了一种评估指标来量化BEV感知的准确性和鲁棒性,并使用该指标进行比较和分析。实验结果表明,传感器的分辨率、覆盖范围以及传感器间的互补性是实现准确和鲁棒BEV感知的关键因素,我们的研究结果为多传感器BEV感知提供了指导,并为未来的自动驾驶系统设计提供了有价值的参考。

主要贡献

本论文有两个主要贡献:首先阐明了BEV感知模型设计和训练协议中的重要因素。特别指出,批量大小和输入分辨率对性能有很大影响,而lifting细节的影响较为适度。其次证明了雷达数据可以通过简单的融合方法大大提高性能。并发布了代码和可复现的模型,以促进未来在该领域的研究。

主要内容

我们的模型从相机、雷达甚至激光雷达获取输入数据,假设传感器之间的数据是同步的,假设传感器的内参和相对姿态已知。该模型具有三维度的度量范围和分辨率。遵循这个任务的基准设置,将左/右和前/后的范围设置为100m × 100m,以分辨率200×200离散化。将上/下的范围设置为10m,并以分辨率8进行离散化。该体积以一个参考相机为中心和方向,通常为前置相机。用X表示左右轴,用Y表示上下轴,用Z表示前后轴。

5466cc6a6a0cf853011ba7e3b291c8e3.png

我们使用ResNet-101作为主干网络对每个RGB输入图像进行特征提取,其形状为3 × H × W,将最后一层的输出进行上采样,并与第三层的输出进行拼接,然后通过两个卷积层进行实例归一化和ReLU激活 ,得到形状为C × H/8 × W/8的特征图(图像分辨率的八分之一)。我们将预定义的3D坐标体积投影到所有特征图上,并在那里进行双线性采样,从每个相机得到一个3D特征体积。同时,我们还计算每个相机的二值“有效”体积,指示3D坐标是否位于相机视锥内。然后,我们对一组体积进行有效加权平均,将我们的表示缩减为一个形状为C × Z × Y × X的单个3D特征体积。然后,再重新排列轴,使垂直维度成为通道维度,即从C × Z × Y × X → (C · Y) × Z × X,得到一个高维度的BEV特征图。如果提供了雷达数据,我们将其栅格化为另一个具有与基于RGB的地图相同空间尺寸的BEV特征图。我们使用任意数量的雷达通道R(包括R = 0,表示没有雷达)。在nuScenes 中,每个雷达返回包含总共18个字段,其中5个字段是位置和速度,其余字段是内置预处理的结果。我们使用所有这些数据,通过使用位置数据选择网格上最近的XZ位置(如果在边界内),并将15个非位置项用作通道,从而得到一个形状为R×Z×X的BEV特征图,其中R = 15。如果提供了激光雷达数据,我们将其体素化为形状为Y×Z×X的二值占用网格,并将其用于替代雷达特征。然后,我们将RGB特征和雷达/激光雷达特征进行拼接,并通过应用3×3的卷积核将扩展通道压缩到维度C。这样就实现了降维,即 (C · Y + R) × Z × X → C × Z × X。此时,我们得到了一个特征平面,代表了场景的鸟瞰视图。

ba7e3304314ae41b736824f6944d5f34.png

使用三个ResNet-18 块处理这个特征平面,产生三个特征图,然后使用双线性上采样的加法跳跃连接逐渐将粗糙特征恢复到输入分辨率,并最后应用两个卷积层作为分割任务的输出。根据FIERY,我们还使用辅助任务头部来预测中心度和偏移量,以对模型进行正则化。偏移量头部生成一个向量场,在每个对象掩码中,每个向量指向该对象的中心,我们使用交叉熵损失训练分割头部,并使用L1损失监督中心度和偏移量字段,使用基于不确定性的可学习权重 平衡这三个损失。3D分辨率为200×8×200,最终输出分辨率为200×200,我们的3D度量范围为100m × 10m × 100m,这对应于体素长度为0.5m × 1.25m × 0.5m(按Z、Y、X的顺序)。使用128维的特征维度(即通道维度C),ResNet-101在COCO 2017上进行了目标检测的预训练,BEV ResNet-18从头开始训练,使用Adam-W优化器进行端到端训练,学习率为5e-4,并使用1周期调度。我们进行了25000次迭代训练。

自动驾驶车辆需要至少一种对车辆周围的三维空间进行 "鸟瞰图" 表示。挑战在于从安装在车辆上的传感器获取鸟瞰图表示。在本研究中,我们提出了一个简单的基线方法来解决这个感知问题,相比当前的最先进方法,它更准确、更快速,并且需要更少的参数。

最近的研究工作集中在创新的从2D图像平面到鸟瞰图平面的特征提取技术,仅利用摄像机提供最终输出结果的方法。

b6779a63ebf5ba1670178a87935c0262.png

在我们提出的基准模型中,采用了一种无需参数的方法:将一个体素的3D坐标投影到图像特征图中,并在该位置进行双线性采样,在模型的其他方面,如2D和BEV卷积神经网络方面,与相关工作相似。

0c11a3ff858f9a6319bc8c3bfa93ee1c.png

在建立这个新的简单基准模型的同时,也借此机会质疑仅依赖相机的想法,而不是融合来自其他传感器(例如毫米波雷达)的现成度量信息。我们之前看到的研究报告称,nuScenes中的雷达数据可能过于稀疏,无法提供有用的信息。通过可视化数据如下视频,我们可以看到雷达数据确实比LiDAR更稀疏,但它提供了一些有关度量场景结构的线索,这是仅通过RGB无法获取的。

假设某些度量信息总比没有好,我们采用了一种非常简单的策略将雷达信息与RGB特征体积融合:我们将雷达数据栅格化成与BEV维度匹配的图像,然后将其作为额外的通道简单地连接起来。

d41559338d6cac4848246d56920e1610.png

我们的实验结果表明,以这种方式将雷达信息整合进来可以大幅提高准确性。

实验与分析

请参阅论文以获取定量结果和分析,这里仅展示视频

总结

这项工作探索了BEV语义解析的设计和训练选择,并展示了批次大小和图像分辨率在性能中起到了意外的重要作用,这在之前的文献中尚未讨论过。虽然最近的研究开发了越来越复杂的2D到BEV抬升策略,但我们展示了双线性采样也表现良好。在这种情况下,时间积分是一个自然的选择,但我们将其留给未来的工作。充分利用可用的高分辨率图像将需要更全面地探索主干网络,未来的工作领域还包括探索3D物体检测,除了稠密的BEV表示,我们的实验证明,雷达为BEV解析提供了有用的信息,希望这一观点能够应用到其他方法中,我们的工作并不主张使用特定的传感器,而是主张在可用的情况下尽可能使用度量信息,即使它们是稀疏和嘈杂的。

更多详细内容后台发送“知识星球”加入知识星球查看更多。

3D视觉与点云学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

f6f769588f417f01a81a46420067f891.png

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为开源的伙伴们点赞吧!

a9865d6e9a44d2064353a1923b1b2b26.gif

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

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

相关文章

华为OD机试之查找接口成功率最优时间段(Java源码)

查找接口成功率最优时间段 题目描述 服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为0~100的整数,给定一个数值(minAverag…

【Web服务应用】Apache配置与应用

Apache配置与应用 一、构建虚拟Web主机1.1httpd服务支持的虚拟主机类型包括以下三种 二、基于域名的虚拟主机三、基于IP地址的虚拟主机四、基于端口的虚拟机五、Apache连接保持六、构建Web虚拟目录与用户授权限制七、日志分割 一、构建虚拟Web主机 虚拟Web主机指的是在同一台服…

手把手教你部署FreeYOLO

作者:Kissrabbit 原文链接: https://zhuanlan.zhihu.com/p/578830729 本章将讲解如何将torch训练好的权重文件转换为ONNX文件,并如何部署回到OpenVINO、TensorRT等框架下。笔者将以自己的FreeYOLO项目为例,来完成本章的内容讲解,相关代码如下…

企业数字化转型转什么?怎么转?这份攻略请收好...

数字化转型,转什么?怎么转?这些问题仍在困扰不少企业,也是每个企业转型升级不得不思考的重要问题。 对此,中关村数字经济产业联盟、元年研究院、《管理会计研究》联合发布了《成就数据驱动型企业 中国企业数字化转型白…

ROS订阅与发布话题

目录 一、新建一个ROS工作空间并创建功能包 二、创建一个msg消息 三、发布话题 四、订阅话题 前言 Ubuntu18.04 ROS Melodic 一、新建一个ROS工作空间并创建功能包 mkdir -p catkin_ws/src cd ~/catkin_ws/src/ catkin_init_workspace cd ~/catkin_ws/ catkin_make echo &…

USB接口的演变与升级

USB接口是计算机与外部设备之间传输数据的重要接口之一,它的演变和升级经历了多年的发展。本文将详细介绍USB接口的发展历程、应用领域、标准化进程以及未来趋势。 USB接口最早出现在1994年,当时是由英特尔公司、微软公司和惠普公司共同开发的。这个接口…

React中useEffect的源码解读

对源码的解读有利于搞清楚Hooks到底做了什么,如果您觉得useEffect很“魔法”,这篇文章也许对您有些帮助。 本篇博客篇幅有限,只看useEffect,力求简单明了,带您到React Hooks的深处看看 按图索骥找到Hook相关源码&…

JavaWeb之Servlet

1、什么是JavaWeb? Servlet 是 JavaEE 规范之一。规范就是接口 Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。 Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的…

Python plt; ax 设置tick

Python中绘图可以基于plt;也可基于ax 在 Matplotlib 中,Axes 对象(常简写为 ax)是在图(Figure)中进行大部分的绘图操作的地方。一个 Axes 对象代表了一个具体的绘图区域。 利用 plt 绘图 简单的图像测试…

继续探索Roop(单张图视频换脸)的各方面:比如喜闻乐见的“加速”

文章目录 (一)Roop项目的特点(二)Roop也能加速***(三)Roop更新和依赖(3.1)飞速更新(3.2)依赖问题(3.3)需要CUDA么 前两天写了&#x1…

如何修复vcruntime140.dll文件?多种解决vcruntime140.dll的方法分享

在使用Windows操作系统时,经常会遇到一些错误提示,比如缺少vcruntime140.dll文件。这个文件是Visual C Redistributable Package的一部分,它负责运行C程序。如果你在运行某些软件或游戏时收到了“缺少vcruntime140.dll文件”的错误提示&#…

电子科技大学计算机系统结构半期考试参考答案

2023 答案-半期试题(15分) 1、试分析采用哪种设计方案实现求浮点数乘法FPMUL对系统性能提高更大。假定FPMUL操作占整个测试程序执行时间的10%。 一种设计方案是增加专门的FPMUL硬件,可以将FPMUL操作的速度加快到10倍&#…

IP协议与ethernet协议

一、IP协议 1.IP协议作用和意义 (1)计算机网络体系结构 (2)网络互联使用路由器 (3)IP网的意义 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络…

Vue.js 中的渲染函数是什么?如何使用渲染函数?

Vue.js 中的渲染函数是什么?如何使用渲染函数? Vue.js 是一款流行的前端框架,它提供了许多方便的工具和 API,用于构建交互式的用户界面。其中,渲染函数是 Vue.js 中一个强大的工具,它可以让我们以编程的方…

深度解析java异步多线程优化版

快速使用需求:我不要理解一堆理论想直接用 操作说明 ITask.java PutEsTask.java TaskExecutor.java TaskQueue.java TestMain.java请把这几个类文件复制下去,运行testMain的方法,根据TestMain的运行日志,【1】-> 【8】不同需求…

2.3 网络设计与redis、memcached、nginx组件

目录 一、网络模块需要处理哪些事情二、reactor网络设计模型三、网络模块与业务的关系四、redis、memcached、nginx1、redis2、memcached3、ngnix4、总结 一、网络模块需要处理哪些事情 网络编程主要关注客户端与服务端交互的四个问题: 1、连接建立 2、消息到达 3、…

《不要挑战人性》笔记(一)

恒河猴实验 代母实验 将刚出生的小猴子与母亲分开,让它与绒布妈妈跟铁丝妈妈生活在一起。铁丝妈妈身上有食物,绒布没有食物,小猴子更喜欢绒布妈妈,即使它在铁丝妈妈那里得到了食物。绒布妈妈身上设置机关,攻击小猴子&a…

OAuth2 工作流程详解

我们之前谈到了使用saml作为SSO单点登录认证。本文讲解oauth2.0协议,oauth2.0协议避免了客户端直接访问受保护资源 什么是OAuth OAuth是一种安全的开放协议,用于在不相关的服务之间授权用户。换句话说,它使一个服务能够访问托管在其他服务上…

Flutter 笔记 | GetX

官网:https://pub.dev/packages/get 中文文档:https://github.com/jonataslaw/getx/blob/master/README.zh-cn.md 关于 GetX 现在Flutter的状态管理方案很多,redux、bloc、state、provider、Getx。 provider是官方提供的状态管理解决方案&…

小程序分包详解

一:什么是小程序分包 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。 二:为什么使用分包 小程序第一版 推出 小程序代码包不能超过1MB 大小&…