当前位置: 首页 > news >正文

BEV-YOLO 论文学习

1. 解决了什么问题?

出于安全和导航的目的,自驾感知系统需要全面而迅速地理解周围的环境。目前主流的研究方向有两个:第一种传感器融合方案整合激光雷达、相机和毫米波雷达,和第二种纯视觉方案。传感器融合方案的感知表现鲁棒,但是成本高,所要面临的环境挑战不少,因此大规模部署不太现实。纯视觉方案只依赖于相机传感器做感知,成本低廉,可以持续迭代。因此,纯视觉方案可能是自动驾驶行业的终极方向。

在这里插入图片描述
目前,纯视觉领域的研究焦点就是如何生成环境 BEV 图,赋能车载感知系统。传统的方法受限于相机的角度,生成的感知范围有限,制约了实时决策所需的空间感知能力。BEV 方法通过提供丰富的环境信息,提升自动驾驶,从而在复杂场景中做到实时决策。人们通常用高精地图来得到道路布局、车道线和其它静态元素。在这些静态信息之上是各种动态元素(车辆、行人和其它物体),为实时导航提供了必要的信息。本文试图在车辆各相机画面的坐标和 BEV 图之间构造直接的空间对应关系。BEV 图的各画面取决于它是哪个相机采集的,如上图所示,车辆前视相机采集的画面肯定落入 BEV 的上半部分,后视相机的画面肯定落入 BEV 的下半部分。

在这里插入图片描述

2. 提出了什么方法?

本文提出了 YOLO-BEV,通过环视相机的画面生成出一个 2D BEV 的车辆环境。通过设置八个相机,每个相机负责 4 5 ∘ 45^\circ 45,该系统将获取的图像整合成一个 3 × 3 3\times 3 3×3 的网格形式,中间是空白的,提供一个丰富的空间表征。本文采用了 YOLO 检测机制,YOLO 具有速度快和模型简洁的优点。作者对检测头做了特殊的设计,将全景数据转换为自车的统一的 BEV 图。

概览

YOLO-BEV 使用相机矩阵来采集数据,利用 YOLO 的主干网络做特征提取。针对 BEV 输出设计了一个检测层和相应的损失函数。本文关键创新点就是相机布局的设计,无缝地匹配生成的 BEV。该布局包括八个相机的安装,每个负责 4 5 ∘ 45^\circ 45角,从而得到 36 0 ∘ 360^\circ 360的视角。然后用一个 3 × 3 3\times 3 3×3矩阵的布局做图像预处理,根据 YOLO 特征图产生相应的 BEV。

下图展示了这个想法,相机在 BEV 视角下和各个区域对齐。输出的合成图像与车辆自上而下的视角保持对齐,目的是提高目标检测和空间识别的准确性。此外,作者将画面矩阵最底下的一列图像做了 18 0 ∘ 180^\circ 180 的旋转,认为这样做更能匹配 BEV 的空间位置。

在这里插入图片描述

数据采集和预处理

nuPlan 数据集是自动驾驶领域非常重要的基准,包含了 1200 小时精心采集的高质量驾驶数据,场景涵盖了波士顿、匹兹堡、新加坡和拉斯维加斯的城区道路。它提供了多样化的驾驶场景和详尽的传感器数据,包括激光雷达、不同视角的相机、IMU 和高精度的 GPS 坐标。本文重点关注并优化自驾方案的计算效率,基于 nuPlan 数据集的八个相机的画面。

这些图像可以构建出一个 3 × 3 3\times 3 3×3画面矩阵,和 BEV 位置场景具有空间对应关系。为了生成可靠、准确的 ground-truth 数据,作者使用了一个直接的提取方法。nuPlan 数据集里的 tokens 是独一无二的,于是作者在输入图像和表示车辆位置的 BEV 坐标之间构建了一一对应的关系。本文的分析不包括行人和交通信号灯等信息,只考虑了车辆。这样,该方法可以加速计算过程,大幅度缩短获取有价值的结果的时间。

模型结构

本文模型基于 YOLO 架构构建,特征提取能力强、效率高。借鉴了主干和检测头的结构,模型将初始的 3 × 3 3\times 3 3×3 图像矩阵转换成一组丰富的多尺度特征图。这些特征图然后通过 CustomDetect 层做处理,实现准确的 BEV 目标定位。下图展示了该架构,它包括初始的 3 × 3 3\times 3 3×3 输入矩阵、主干网络和检测头,以及特殊设计的 CustomDetect 层。

CustomDetect 层包括 n l n_l nl层, n l n_l nl 与通道维度数组 c h = [ c h a n n e l 1 , c h a n n e l 2 , c h a n n e l 3 ] ch = [channel_1, channel_2, channel_3] ch=[channel1,channel2,channel3] 对齐。每一层 i i i都有一组卷积层。该序列卷积操作的数学表示如下:

Conv i , j = ReLU ( Conv2D ( X i , j − 1 , W i , j , b i , j ) ) , ∀ j ∈ { 1 , 2 , 3 } \text{Conv}_{i,j}=\text{ReLU}(\text{Conv2D}(X_{i,j-1}, W_{i,j}, b_{i,j})), \forall j\in \{1,2,3\} Convi,j=ReLU(Conv2D(Xi,j1,Wi,j,bi,j)),j{1,2,3}

其中 X i , j − 1 X_{i,j-1} Xi,j1表示第 i i i个检测层里第 j j j个卷积层的输入, W i , j , b i , j W_{i,j}, b_{i,j} Wi,j,bi,j表示相应的权重和偏置参数。使用了 ReLU 激活,为模型引入非线性。

前向计算时,将一组特征图输入 CustomDetect 层,每个特征图的维度都是 BatchSize × Channels × Height × W i d t h \text{BatchSize}\times \text{Channels}\times \text{Height}\times {Width} BatchSize×Channels×Height×Width。随后,将这些特征图变换为一组坐标和置信度得分张量。对于每个特征图 X i X_i Xi

Y i = Conv i , 3 ( Conv i , 2 ( Conv i , 1 ( X i ) ) ) Y_i = \text{Conv}_{i,3}(\text{Conv}_{i,2}(\text{Conv}_{i,1}(X_i))) Yi=Convi,3(Convi,2(Convi,1(Xi)))

Y i Y_i Yi包含了 BEV 下目标定位的关键信息,目标位置和置信度得分。这些数据会用生成的网格进一步做优化,与输入特征图 X i X_i Xi的空间维度对应。该模型不仅利用了 YOLO 的特征提取机制,也扩展了边框回归方法,更准确地定位目标。CustomDetect 层输出关键的参数,如 物体的 x , y x,y x,y 坐标、朝向角、置信度。然后会用一个动态构建的网格来进一步优化这些参数,与输入特征图的空间维度对齐。

在这里插入图片描述

网格补偿机制

CustomDetect 模块加入了一个网格补偿机制,用于优化预测的目标位置。该机制将相对坐标变换成一组富含全局信息、上下文相关的坐标,即相对于特征图的整体空间范围。

网格创建

对于每个检测层,记作 i i i,会初始化一个精心构建的网格 G i G_i Gi。该网格与 i i i层输出的特征图 F i F_i Fi维度一致。 G i G_i Gi的每个格子都有一个中心坐标 ( x c e n t e r , y c e n t e r ) (x_{center},y_{center}) (xcenter,ycenter)。这个格子在网格 G i G_i Gi里的笛卡尔坐标是 ( m , n ) (m,n) (m,n)

x c e n t e r = m + 0.5 width of  F i x_{center}=\frac{m+0.5}{\text{width of }F_i} xcenter=width of Fim+0.5
y c e n t e r = n + 0.5 height of  F i y_{center}=\frac{n+0.5}{\text{height of }F_i} ycenter=height of Fin+0.5

精度驱动的坐标修正

( x p r e d , y p r e d ) (x_{pred}, y_{pred}) (xpred,ypred) 表示网络预测的特征图 F i F_i Fi上某一格子的坐标。该预测坐标需经过一个复杂的修正过程,利用到 G i G_i Gi对应的格子的中心坐标,

x a d j u s t e d = ( x p r e d 2 × width of  F i ) + x c e n t e r x_{adjusted}=(\frac{x_{pred}}{2\times \text{width of }F_i}) + x_{center} xadjusted=(2×width of Fixpred)+xcenter
y a d j u s t e d = ( y p r e d 2 × height of  F i ) + y c e n t e r y_{adjusted}=(\frac{y_{pred}}{2\times \text{height of }F_i}) + y_{center} yadjusted=(2×height of Fiypred)+ycenter

该修正机制不仅极大地提升了模型的定位能力,也提升了算法的效率和稳定性。如下图所示,假设有一个 3 × 3 3\times 3 3×3特征图 F i F_i Fi,格子的索引从左上角的 ( 0 , 0 ) (0,0) (0,0)到右下角的 ( 2 , 2 ) (2,2) (2,2)。用特征图 F i F_i Fi的宽度和高度来计算每个格子的中心坐标。例如, ( 0 , 0 ) (0,0) (0,0)格子的中心坐标是 ( 1 2 × width of  F i , 1 2 × height of  F i ) (\frac{1}{2\times \text{width of }F_i}, \frac{1}{2\times \text{height of }F_i}) (2×width of Fi1,2×height of Fi1)。我们假设网络预测该格子的坐标是 ( x p r e d , y p r e d ) (x_{pred}, y_{pred}) (xpred,ypred),其可以通过下面的方式做修正:

x a d j u s t e d = ( x p r e d 2 × width of  F i ) + 1 2 × width of  F i x_{adjusted}=(\frac{x_{pred}}{2\times \text{width of }F_i}) + \frac{1}{2\times \text{width of }F_i} xadjusted=(2×width of Fixpred)+2×width of Fi1
y a d j u s t e d = ( y p r e d 2 × height of  F i ) + 1 2 × height of  F i y_{adjusted}=(\frac{y_{pred}}{2\times \text{height of }F_i}) + \frac{1}{2\times \text{height of }F_i} yadjusted=(2×height of Fiypred)+2×height of Fi1

在这里插入图片描述

损失函数

采用了 multi-faceted 方法来设计损失函数,优化模型的性能,在该目标函数中融合了空间和置信度的信息。

空间部分引入了边框损失,使用 MSE。给定预测边框坐标和朝向角,转化成轴对齐边框(AABB)来计算与 ground-truth 框的 IOU。下图展示了该轴对齐边框 AABB 以及 IOU。AABB 简化了 IOU 的计算,与更准确的带朝向角的边框方法相比,它的 IOU 值可能会大一些。这是因为与轴对齐的边框可能会覆盖一些非重叠的区域。实验表明该误差是可以接受的,它仍能有效地帮助损失的下降。边框损失定义为:

L b o x = MSE ( I O U p r e d , I O U g t ) L_{box}=\text{MSE}(IOU_{pred}, IOU_{gt}) Lbox=MSE(IOUpred,IOUgt)

选用 MSE 作为 IOU 损失,能保证梯度流比较平滑。

置信度部分是用一个二值交叉熵损失实现的。对正负类别的样本计算损失。预测框如果与 ground-truth 框的 IOU 超过一定阈值,则判定正样本。对于正样本,损失为:

L p o s = B C E ( C p r e d , 1 ) + L b b o x L_{pos}=BCE(C_{pred}, 1) + L_{bbox} Lpos=BCE(Cpred,1)+Lbbox

若预测框和任意一个 ground-truth 框的 IOU 都很低,则判定为负样本,损失如下:

L n e g = B C E ( C p r e d , 0 ) L_{neg}=BCE(C_{pred}, 0) Lneg=BCE(Cpred,0)

最终的损失是这些损失的加权和,

L t o t a l + α L b b o x + β ( L p o s + L n e g ) L_{total}+\alpha L_{bbox} + \beta(L_{pos}+L_{neg}) Ltotal+αLbbox+β(Lpos+Lneg)

α , β \alpha,\beta α,β 平衡空间和置信度部分的权重,微调模型时提供一定的灵活性。该损失受到 YOLO 启发,构建了一个灵活且鲁棒的损失函数,能够解决自动驾驶任务内在的挑战,如实时目标跟踪和高精定位。

在这里插入图片描述

相关文章:

BEV-YOLO 论文学习

1. 解决了什么问题? 出于安全和导航的目的,自驾感知系统需要全面而迅速地理解周围的环境。目前主流的研究方向有两个:第一种传感器融合方案整合激光雷达、相机和毫米波雷达,和第二种纯视觉方案。传感器融合方案的感知表现鲁棒&am…...

C++可以使用负数作为下标索引

今天碰到一个题目,写bfs写炸了,发现好像数组越界,但是却没有报错,而是被边界检查拦截了 导致死循环了??? ps:所以写边界问题,首要的就是对边界进行检查,不检查越界之后…...

react+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)

本来写这个特效 我打算用css实现的,结果是一波三折,我太难了,最终没能用css实现,转战了canvas来实现。来吧先看效果图 当然这个图的波浪高度、频率、位置、速度都是可调的,请根据自己的需求调整,如果你讲波…...

峰回网关数采PLC

1.网络配置 例如:plc地址是192.168.1.56 1.访问网关 峰回网关默认网关地址 192.168.3.18,或者(10.10.253.354),本案例按照3.18讲解。 1和1相连,0和电脑相连 本地电脑修改ip为192.168.3.3(和3…...

Vue+element el-date-picker 时间日期选择器设置默认值,选择框不显示问题(已解决)

时间选择器默认值的问题 显示的时候如果用下面的方式赋值将不会显示出来: this.deviceFormData.time[0] that.$filterArray.formatDatehh(start);this.deviceFormData.time[1] that.$filterArray.formatDateEnd(end);实际上是有数据的,但是不会显示出…...

数据挖掘题目:根据规则模板和信息表找出R中的所有强关联规则,基于信息增益、利用判定树进行归纳分类,计算信息熵的代码

一、(30分)设最小支持度阈值为0.2500, 最小置信度为0.6500。对于下面的规则模板和信息表找出R中的所有强关联规则: S∈R,P(S,x )∧ Q(S,y )> Gpa&#xf…...

Reshape.XL 1.2 for Excel插件 Crack

特征 插件 Reshape.XL 包括 130 个基本可组合功能。使用它们,您可以快速轻松地进行非常复杂的数据转换和处理。它们的架构和基本定义受到 SQL 和 R 语言的强烈启发。 到目前为止,类似的功能只能通过脚本语言供程序员使用。借助 Reshape.XL 插件&#xf…...

开发知识点-PHP从小白到拍簧片

从小白到拍簧片 位异或运算(^ )引用符号(&)strlen() 函数base64_encode预定义 $_POST 变量session_start($array);操作符php 命令set_time_limit(7200)isset()PHP 命名空间(namespace)new 实例化类extends 继承 一个类使用另一个类方法error_reporti…...

飞书开发学习笔记(二)-云文档简单开发练习

飞书开发学习笔记(二)-云文档简单开发练习 一.云文档飞书开发环境API 首先还是进入开放平台 飞书开放平台:https://open.feishu.cn/app?langzh-CN 云文档相关API都在“云文档”目录中,之下又有"云空间",“文档”,“电子表格”&a…...

设计模式——命令模式(Command Pattern)+ Spring相关源码

文章目录 一、命令模式定义二、例子2.1 菜鸟教程例子2.1.1 定义命令类接口2.1.2 定义命令执行者2.1.3 被处理对象Stock。2.1.4 封装处理Stock的命令 2.2 JDK源码——Runnable2.2.1 命令接口2.2.2 命令处理者2.2.3 命令实现类 2.3 SpringMVC——Controller2.3.1 请求对象 handle…...

[开源]企业级在线办公系统,基于实时音视频完成在线视频会议功能

一、开源项目简介 企业级在线办公系统 本项目使用了SpringBootMybatisSpringMVC框架,技术功能点应用了WebSocket、Redis、Activiti7工作流引擎, 基于TRTC腾讯实时音视频完成在线视频会议功能。 二、开源协议 使用GPL-3.0开源协议 三、界面展示 部分…...

Scala语言用Selenium库写一个爬虫模版

首先,我将使用Scala编写一个使用Selenium库下载yuanfudao内容的下载器程序。 然后我们需要在项目的build.sbt文件中添加selenium的依赖项。以下是添加Selenium依赖项的代码: libraryDependencies "org.openqa.selenium" % "selenium-ja…...

ZZ038 物联网应用与服务赛题第I套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (I卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的各类软件工…...

ClickHouse 学习之基础入门(一)

第 1 章 ClickHouse 入 门 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C 语言编写,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。 …...

HttpClient基本使用

十二、HttpClient 12.1 介绍 HttpClient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。 HttpClient作用: 发送HTTP请求接收响应数据 …...

力扣:150. 逆波兰表达式求值(Python3)

题目: 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都可以是一个整数或者另一…...

Tomcat运行日志乱码问题/项目用tomcat启动时窗口日志乱码

文章目录 一、问题描述:二、产生原因三、解决方法 一、问题描述: 项目在idea中运行时日志是正常的,用Tomcat启动时发现一大堆看不懂的文字,如 二、产生原因 产生乱码的根本原因就是编码和解码不一致,举个例子就是翻…...

Leetcode—199.二叉树的右视图【中等】

2023每日刷题(十九) Leetcode—199.二叉树的右视图 深度优先遍历实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(…...

微信小程序如何跳转到外部小程序

要在微信小程序中跳转到外部小程序,您可以使用微信小程序提供的 wx.navigateToMiniProgram 方法。以下是实现步骤: 在需要跳转的页面或组件中,编写触发跳转的逻辑,例如点击按钮: 替换 外部小程序的AppID 和 外部小程序…...

ElasticSearch集群环境搭建

1、准备三台服务器 这里准备三台服务器如下: IP地址主机名节点名192.168.225.65linux1node-1192.168.225.66linux2node-2192.168.225.67linux3node-3 2、准备elasticsearch安装环境 (1)编辑/etc/hosts(三台服务器都执行) vim /etc/hosts 添加如下内…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...