LSS 和 BEVDepth算法解读

news2024/11/15 23:48:03

前言

当前BEV的研究大都基于深度学习的方法,从组织BEV特征信息的方式来看,主流方法分属两类:自底向上方法和自顶向下方法。

自底向上方法比较早的代表工作是LSS,后来BEVDet、BEVDepth等也是基于LSS的框架来进行优化。自底向上方法核心是:Lift——对各相机的图像显性地估计像平面下采样后特征点的深度分布,得到包含图像特征的视锥(点云);Splat——结合相机内外参把所有相机的视锥(点云)分配到BEV网格中,对每个栅格中的多个视锥点进行sum-pooling计算,形成BEV特征图;Shoot——用task head处理BEV特征图,输出感知结果。本文就是通过解读LSS和BEVDepth两篇论文,来深度剖析自底向上构建BEV方法。

自顶向下方法的典型代表是Tesla用Transformer构建BEV,2020年10月发布的FSD Beta软件视觉感知模块已开始应用此方法,在2021年Tesla AI-Day上Andrej Karparthy披露了更多技术思想,核心是:先预定义待生成的BEV特征图,利用Transformer全局感知能力在多个视角图像的特征中多次查询相应信息,并把信息融合更新到BEV特征图中。上海AILab团队做了类似的技术实现,并以BEVFormer公布了相关工作。

BEV网格

在自车周围俯视平面x-y方向划分n个网格,每个网格表示特定物理距离d米。如200200的BEV网格,每格代表0.5米,这个网格就表示100米100米的平面范围。如果恰好自车中心(自动驾驶的的车辆中心一般指后轴中心)在网格中心位置,那么网格就表示自车前、后和左、右各50米的范围。注意这里强调用网格划分平面空间,并不涉及网格内放什么内容。
在这里插入图片描述

图1. BEV网格示意

BEV特征图

在BEV网格的所有格子中都填充C个通道的特征值作为内容(contex),就组成了BEV特征图。注意,为了让BEV特征图保留BEV网格x-y方向距离的意义,这里每个格子中C通道特征值都要来自格子所对应空间的特征信息,而不是胡乱地填充其它地方的特征信息。

形象地解释,假如某个格子所对应空间有个锥桶,那么这个格子里填充的一定是用来描述这个锥桶的特征值,而不是远方天空或红绿灯的特征值。

无论是自顶向下还是自底向上方法,核心目标是:为BEV网格中每个格子组织并填充合适的特征信息,得到BEV特征图。

本文解读BEV自底向上方法的两篇重要论文:LSS和BEVDepth。LSS提出了一整套自底向上构建BEV Representation的框架(ECCV2020),为后续很多相关工作奠定了系统性基础。BEVDepth在保持LSS框架的基础上,重点围绕如何获取更准确的深度估计进行优化,另外还提出了高效计算Voxel Pooling过程的方法,引入了多帧融合,这些工作使BEVDepth取得了不错的提升效果。

1. 自底向上方法框架-LSS

参考如下:

原文:Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D

视锥点云和Lift操作

用单目相机进行距离、尺寸类的感知,关键是如何恢复图像中的深度信息。

2D图像中每个像素点可以理解成世界空间中某点到相机中心的一条射线,仅利用图像不能确定此像素具体来自射线上哪个位置(也就是不知道该像素的深度值),如下图3中的P,投影到P^{'},丢失了深度信息Z。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/92e2447c5f5b41d7bee1f1f0d08c238e.png

图3 相机成像原理,三位空间某点P投影道像素平面,损失深度信息Z。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c38a80de92874ca9913a9ec99c8c9050.png)

视锥点云的空间位置

官方代码中生成视锥点云的实现方式是:如下图4所示,定义距离图像特征平面4m到44m、间隔1m的多个平面,这样每个图像特征点有D=41个可能的离散深度值。每个点相对相机的描述的位置是[h, w, d],利用相机内、外参,可以把这个位置转换成用车辆坐标系下的空间位置来表示,其维度也是HxWxDx3,即HxWxD个[x, y, z]。
在这里插入图片描述

图4 相机视锥模型,由深度范围在4m~44m、间隔1m的41个平面组成。

有了视锥点云,以及每个点所对应的空间位置,那么如何获得每个点的有效特征信息呢?这就由Lift-2“给每个点生成特征值(contex)”来实现。

视锥点云的特征(Context)

在这里插入图片描述
在这里插入图片描述

图5:Lift操作可视化原理。

BEV Pillar和Splat操作

有了视锥点云(包含空间位置和特征),就可以根据视锥点的空间位置把每个视锥点的特征(contex)放到BEV网格中的合适位置,组成BEV特征图。

BEV网格由200x200个格子(BEV Pillar)组成,每个格子对应物理尺寸为0.5米x0.5米。即BEV网格对应车辆前、后和左、右各50m,且高度不限的3维空间。

上面通过相机的内外参,已经把视锥点云转换到车辆坐标系下的空间位置。排除掉BEV网格所表示空间范围(以自车为中心100mx100m范围)以外的点,就可以把剩余有效的视锥点云分配到每个BEV Pillar里。

注意,这里存在同一个BEV Pillar可能分配多个视锥点的情况,这是由两个原因引起:

1.单张2D图像不同的像素点可能投影在俯视图中的同一个位置,例如垂直于地面的电线杆,它成像的多个像素点可能投到同一个BEV Pillar。
2.相邻两相机有部分成像区域重叠,相机图像中的不同像素点投影在同一个BEV Pillar。例如不同相机画面中的同一个目标。
对于一个BEV Pillar分配多个视锥点,作者使用了sum-pooling的方法,把视锥点的特征相加,最后得到了200x200xC的BEV特征图,源码中C取64。
在这里插入图片描述

图5. Lift-Splat-Shoot 完整过程概览。

Shoot: Motion Planning

Lift-Splat已经输出了由N个相机图像编码的BEV features,接下来就是再接上Head来实现特定的任务,这部分由Shoot来实现。

LSS的关键是可以仅使用图像就可以实现端到端的运动规划。在测试时,用推理输出cost map进行规划的实现方法是:”Shoot”输出多种轨迹,并对各个轨迹的cost进行评分,然后根据最低cost轨迹来控制车辆运动。这部分的核心思想来自《End-to-end Interpretable Neural Motion Planner》。

pipeline

论文中对方法实现描述不清楚,把方法实现的pipeline整理到如下几个部分:
在这里插入图片描述

cumsum_trick(): 池化累积求和技巧

模型中使用Pillar累积求和池化,“累积求和”是通过bin id 对所有点进行排序,对所有特征执行累积求和,然后减去 bin 部分边界处的累积求和值来执行求和池化。无需依赖 autograd 通过所有三个步骤进行反向传播,而是可以导出整个模块的分析梯度,从而将训练速度提高 2 倍。 该层被称为“Frustum Pooling”,因为它将 n 个图像产生的截锥体转换为与摄像机数量 n 无关的固定维度 CxHxW 张量。

计算原理的过程示意图:
在这里插入图片描述

图6. cumsum_trick 计算原理示意。

2. 出于蓝胜于蓝的自底向上方法BEVDepth

BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection

BEVDepth在保持LSS框架的基础上,重点围绕如何获取更准确的深度估计进行优化,另外还提出了高效计算Voxel Pooling过程的方法,引入了多帧融合,这些工作使BEVDepth取得了显著提升效果。

Motivation

近期基于视觉的自动驾驶技术中,包括自底向上的BEV方法,非常依像素赖深度估计。虽然这些方法非常受欢迎,但自然而然地还是会有疑问:这些方法中深度估计的质量和效率怎么样?已经满足了高精、高效的3D目标检测任务要求了吗?

BEVDepth论文工作中从定量和定性两方面分析了深度估计。BEVDet的深度估计和真值之间的关系如图7(a)所示,会发现深度估计准确性非常不充分。这么差的深度估计对3D目标检测的影响有多大呢?作者把BEVDet中视角转换用到的深度预测值换成了深度真值,对比结果如图7©所示,采用深度真值后mAP和NDS分别提高了18.8%和18.2%。另外,translation erro(mATE)从0.750大幅下降至0.393。这些现象表明,优化深度估计质量是提升多视角3D目标检测的关键。图7(b)中展示了BEVDepth的主要工作效果,对深度估计进行修正后,深度预测值分布非常接近真值。
在这里插入图片描述

图7. 关于深度修正及其性能的定型分析。

Methods

本文提出利用具有鲁棒性的显性深度监督(Explicit Depth Supervision)来优化深度估计,具体实现还包括深度修正(Depth Correction)和具有相机感知能力的深度估计(Camera-aware Depth Prediction)。另外,还提出了高效体素池化(Efficient Voxel Pooling)来加速BEVDepth方法,以及多帧融合(Multi-frame Fusion)来提高目标检测效果和运动速度估计。BEVDepth方法的概览如图8所示。
在这里插入图片描述

图8. BEVDepth框架。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/cca4ba355a4741398df11f667ab3f778.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ee40046932b1463ea049cae531d17f79.png)
图9. DepthNet的结构。

在这里插入图片描述
在这里插入图片描述

图10. 实现Efficient Voxel Pooling的细节示意图。

在这里插入图片描述
在这里插入图片描述

图11. 多帧融合的pipeline。

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

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

相关文章

qt dll编写和调用

dll编写 新建项目 头文件 #ifndef LIB1_H #define LIB1_H#include "lib1_global.h"class LIB1_EXPORT Lib1 { public:Lib1(); };//要导出的函数,使用extern "C",否则名称改变将找不到函数extern "C" LIB1_EXPORT int ad…

汽车传动系统为汽车动力总成重要组成部分 我国市场参与者数量不断增长

汽车传动系统为汽车动力总成重要组成部分 我国市场参与者数量不断增长 汽车系统主要包括动力系统、制动系统、传动系统、转向系统、行驶系统、燃油供给系统、照明系统以及电器系统。汽车传动系统指能够将发动机产生的动力转化为车辆行驶驱动力的动力传递装置。汽车传动系统为汽…

什么是电表无人抄表?

1.电表无人抄表:智能时代的新式计量方法 随着科技的发展的迅猛发展,传统电表抄表方法正被一种全新的、高效率的方式所替代——电表无人抄表。这类技术的普及,不仅提升了电力行业的经营效率,同时也为用户增添了更贴心的服务。 2.…

Python邮箱发送如何设置?Python发信方法?

Python邮箱发送邮件需要哪些库?怎么使用Python发信? Python的强大之处在于其丰富的库和模块,使得开发者可以轻松地实现各种功能,包括通过电子邮件发送信息。AokSend将介绍如何在Python中设置和发送电子邮件,以及相关的…

多功能电能表抄表

1.多功能电能表抄表:简述 多功能电能表抄表是一种现代化电力计量方法,它不仅能够纪录电力耗费,还能提供多种多样额外功能,如实时检测、故障预警、远程操作等。相对于传统电度表,它大大提高了电力管理的效率和精确性。…

浅谈网络通信(2)

文章目录 一、TCP1.1、TCP提供的api —— ServerSocket 、Socket1.2、使用TCP协议编写回显服务器1.3、长/短连接 二、应用层协议、传输层协议详解2.1、应用层(后端开发必知必会)2.1.1、自定义应用层协议2.1.2、通用的协议格式2.1.2.1、XML2.1.2.2、json2.1.2.3、protobuffer 2.…

kotlin类型检测与类型转换

一、is与!is操作符 1、使用 is 操作符或其否定形式 !is 在运行时检测对象是否符合给定类型。 fun main() {var a "1"if(a is String) {println("a是字符串类型:${a.length}")}// 或val b a is Stringprintln(b) } 二、"不安全的"转换操作符…

ARM32开发--IIC原理

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 I2C通讯规则 I2C写操作 I2C读流程 通讯信号 开始 结束 发送数据 bit发送 Byte发送 等待响应 接收数据 bit接收 Byte接收 发送响应 总结 前言 在现代消费电子和工业电子领域,各种类型的…

如何察觉自己或者家人是否出现了听力问题?

如何察觉自己或者家人是否出现了听力问题呢?可以从以下两个方面观察: 一.社交方面 • 是不是经常需要别人重复刚说的话才能理解? • 多人对话中是否感到吃力? • 觉得别人讲话含糊不清? • 在人多嘈杂…

YASKAWA机器人HW1171921-B电缆维修

安川机器人作为现代工业自动化的重要设备,其稳定运行对于生产线的连续性和效率至关重要。然而,随着使用时间的增长,可能会出现各种YASKAWA机器人本体线缆故障,如断线、短路、接触不良等。 一、安川工业机器人电缆维修前的准备 在进…

【Python】已解决报错 TypeError: Missing 1 Required Positional Argument

本文摘要:【Python】使用 Python 中将字符串转换为数组,并总结提出了几种可用方案。 😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博…

谁才是产品界的真正王者?AI产品经理对决普通产品经理!

不同类型的产品经理可能有着不同的工作内容,那么,AI产品经理和普通产品经理之间的工作内容、工作职责、技能要求等方面,存在着哪些具体差异?这篇文章里,作者就进行了总结和梳理,一起来看看吧。 一、工作内容…

R语言绘制三变量分区地图

参考资料: https://mp.weixin.qq.com/s/5c7gpO2mJ2BqJevePJz3CQ tricolore包教程:https://github.com/jschoeley/tricolore 学习笔记:Ternary choropleth maps 1、测试实例 代码: library(ggplot2) library(rnaturalearthdata) …

「漏洞复现」I Doc View 在线文档预览 qJvqhFt.json 任意文件读取漏洞(XVE-2024-2115)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

手机如何找回我的相册?来看这篇文章,2个方法即刻获取

手机相册已经成为我们存储和分享生活瞬间的重要工具,每当我们在旅行、聚会或其他重要时刻拍摄下一张张珍贵的照片时,相册就成为了我们回味这些瞬间的宝贵载体。然而,当我们不小心删除了相册时,那些曾经美好的回忆似乎也随之消失了…

沸点 | LDBC与SIGMOD联合研讨,推动图数据库创新与标准化

当地时间6月9日,国际基准官方平台关联数据基准委员会(LDBC,Linked Data Benchmark Council)与SIGMOD 2024(是全球最具国际影响力的数据管理、数据处理和数据存储领域的学术顶会之一,ACM SIGMOD/Big Data in…

win11联想版,如何下载Visual Basic 6.0精简版

一、背景 Visual Basic 6.0精简版、Visual Basic Mini,等 Win11系统,网上找压缩包下载,无法成功。 二、解决 通过下载联想应用商店,在应用商店中下载 步骤一 hi,推荐你使用联想应用商店,商店提供上万款…

【大分享03】浙江某区县“个人全生命周期档案”综合智治应用实践

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章,来自杭州安铂数据科技有限公司,作者:智治项目组。 一. 项目概述 根据《政务服务电子文件归档和电子档案管理办法》&#xf…

上午接到被裁员的通知,下午就收到涨薪30%的offer,我生怕公司反悔,当天就找HR签了离职协议,拿到了N+1赔偿!

大家好,我是瑶琴呀。 昨天看到一位网友分享自己被裁的经历:最近这段时间在面试,没成想上午刚被 HR 约谈裁员的事情,下午就收到下家公司涨薪 30% 的offer,这可真是天时人和,当天下午就找 HR 签了离职协议&a…

计算机网络知识点(三)

目录 一、简述TCP连接和关闭的状态转移 二、简述TCP慢启动 三、简述TCP如何保证有序 四、简述TCP常见的拥塞控制算法 五、简述TCP超时重传 一、简述TCP连接和关闭的状态转移 状态转移图 图中上半部分是TCP的三次握手过程的状态变迁,下半部分是TCP四次挥手过程的…