觉非科技数据闭环系列 | BEV感知研发实践

随着自动驾驶迈向量产场景,“BEV感知+数据闭环”已成为新一代自动驾驶量产系统的核心架构。数据成为了至关重要的技术驱动力,发挥数据闭环的飞轮效应或将成为下半场从1到N的胜负关键。

觉非科技在此方面已进行了大量的研究工作,并在实际量产项目中开始了部分技术的应用。结合这些实践的经验,觉非科技感知算法专家戚玉涵博士近期在「生成式AI热潮下的自动驾驶」技术论坛中进行了分享,系统介绍了觉非科技“BEV感知+数据闭环”技术架构与研发进展。

一.觉非科技的数据闭环

Fig.1觉非基于BEV感知的量产架构图

  • 觉非科技利用离线高精地图生成静态要素真值数据,用于训练基于BEV的静态要素感知模型;将模型部署于车端,实时推理时产生静态要素的栅格图结果并上传云端,在云端对栅格图进行SLAM拼接以及矢量化等后处理,通过量产化制图能力产生大规模的高精度地图数据库,进而实现静态要素的数据闭环。
  • 觉非构建的大数据中心可实现快速不断的迭代,供给生成BEV感知算法的训练数据。觉非BEV感知任务包括三个部分:动态目标的3D检测与跟踪、静态要素的分割、以及静态要素的拓扑结构矢量图。

觉非的采集车配备7V相机(其中,采集车前向安装一台长焦相机,主要用于感知远距离目标),以及一台128线束的激光雷达。目前依赖点云检测来生成视觉BEV 3D动态目标感知的真值数据,其高度依赖于高精度的传感器标定和时空同步。

Fig.2相机软件触发与硬件触发数采方式下,训练模型BEV 3D感知效果对比图

上图:相机软件触发方式采集训练数据的BEV 3D模型推理结果

下图:相机根据LiDAR相位角触发方式采集训练数据的BEV 3D模型推理结果

为此,觉非科技自研了基于高精地图的点云与相机的外参标定技术,同时依靠自研GNSS授时和根据LiDAR相位角硬件触发相机采集的同步板卡,对激光雷达和相机进行硬件同步,保证了BEV动态目标3D感知结果的位置精度。

二.觉非科技对BEV感知算法的优化方式

觉非BEV多任务联合感知算法的框架中,先将车周环视相机的图像接入BEV编码器,其结构包括backbone与neck,用于较好地提取图像特征;经视角变换模块得到稠密的BEV特征,与缓存的历史帧BEV特征一起送入时序融合模块,进行时序BEV特征聚合,时序融合能够提高被遮挡的动态目标的召回率,且提高视觉感知方式下目标速度的检测精度。

针对不同的感知任务,由BEV feature sampler设定不同的感知范围和BEV网格的粒度,对采样后的BEV特征进行解码和task head,得到最终动态目标3D检测和静态要素栅格图语义分割结果。

Fig.3觉非BEV多任务联合感知模型框架图

在算法持续迭代的进程中,觉非的主要优化方向包含几个方面:

1.视角转化(view transform)

目前学界在视角转换上存在很多范式,主流的方法主要包括LSS、MLP、Transformer

等。在考虑部署的便利性以及硬件平台对算子的支持等因素后,觉非选用的是LSS范式。

LSS范式下,视角变换模块利用depthnet网络输出两组信息,一是每一个像素点对应的图像上下文语义特征,其次是每个像素点上预测的深度分布,两路信息进行外积后可得出各个相机的视锥体(frustum)中每个像素点的上下文特征信息,从而实现2D到3D的提升。视角变换模块在工程化部署的方式上有两种方式:

Fig.4觉非视角转化模块

  • 对于Nvidia的芯片,对每个像素点的上下文语义特征与估计得到的深度分布权重和进行外积实现Lifting,得到描述各个相机视锥体特征的到五维向量(B*N,c,d,h,w),而后根据相机参数将各个相机视锥体的特征splat到BEV视角下,可调用英伟达CUDA Kernal的多线程做并行加速来实现BEV的Pooling,得到聚合后的稠密BEV特征。
  • 对于地平线J5芯片,根据车机视觉模组内外参数可预先计算出视锥体中每一个像素点与BEV网格唯一的哈希映射关系,而后在BEV网格进行特征聚合时,根据预设好的映射关系通过视锥体中像素点的索引值分别提取上下文特征和深度值进行相乘,所有BEV网格内的特征进行张量的求和,从而实现特征聚合。

BEV pooling过程中的预先计算视锥点与BEV网格,可以在节约推理耗时,保证了模型在车端部署的实时性。例如,在实际落地实践中,觉非的BEV 3D感知可实现自车前后80米、左右40米范围,哈希映射计算前置与BEV pooling的并行加速节约耗时可达到16毫秒。

2.相机视椎体切割(Camera Frustum Cutting)

在BEV pooling环节中,可以根据预设的感知范围对参与BEV特征聚合的各个相机的视锥体进行裁剪,仅保留BEV感知范围内的视锥点参与特征聚合,可以节约参与BEV pooling的计算量。

3.远距离感知(Long-distance Perception Range)

学界在BEV 3D感知上一般可实现车周半径51.2m(nuScenes数据集),或是75m(waymo数据集),而在真实的量产实践中,感知范围远远不能满足下游规划控制的需求。

觉非科技的BEV感知方案中,除6v环视相机以外,在自车前视方向增加了1台长焦相机,可以感知远距离的目标;同时设计了一种非均匀粒度分布的BEV网格,在扩大BEV感知范围的同时,不额外增加过多的网格数量和模型计算量;同时引入点云数据对相机视锥点深度估计的显式监督,能保证模型对远距离动态目标的召回与较为精确的空间位置。

4.BEV坐标样本BEV Grid Sampler

觉非的BEV感知为多任务联合训练模型,感知任务包含对动态目标的3D检测与跟踪,静态要素的语义分割。其中静态要素的语义分割任务中,高分辨率的BEV特征是保证地面要素检测精度的前提。

因此在模型的设置上,觉非加入了BEV Grid Sampler模块,在对BEV特征解码前,该模块根据设定的地面要素感知的范围,对稠密BEV特征进行裁剪,并利用双线性差值方式对BEV特征上采样还原得到高精度、精细化的BEV特征。

Fig.5 BEV网格采样器示意图

在联合训练的过程中,为避免同时训练不同任务对各个子任务性能的负面影响(一般称为:负迁移),觉非的联合训练模型中对不同的感知子任务设计了独立解码器,在解码过程中,各任务不共享BN(Batch Normalization)层的参数,可提升联合训练模型的稳定性并降低负迁移的影响。

Fig.6多任务联合训练策略

5.基于MapTR的创新与优化

在车端与路端大规模数据积累的基础上,觉非基于MapTR提出了相应创新优化,其中包括:

①对车道信息的表达方式进行优化,采用车道中心线进行表征并加入道路拓扑要素的建模;

②在不额外增加解码器query数量的基础上,通过回归车道宽度的方式还原车道标线的几何位置;

③学习车道线的虚实信息,可用于变道时判断旁边车道是否可以跨越;

④加入车道方向信息的学习,用于区分自车车道与对向车道;

⑤在MapTR的基础上加入了地图先验信息,有效提升模型输出地图元素的准确度与召回率。觉非对MapTR的创新能够系统化提升单车实时建图的能力,更易于自动驾驶规控使用。

Fig.7在线矢量化地图构建

目前觉非科技正在对“BEV感知+数据闭环”进行持续的优化,通过数据与算法的自研经验,以及在数据闭环搭建过程中大量的Know-How积累,为开发和迭代提供一套高效的工具链,并提升模型的泛化能力,在自动驾驶「数据驱动」的时代,推动数据闭环在量产车不断落地。

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

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

相关文章

解决nbsp;不生效的问题

代码块 {{title}} title:附 \xa0\xa0\xa0件,//或者 <span v-html"title"></span> title:附 件&#xff1a;,效果图

Elasticsearch近实时架构

1 Elasticsearch 与 Lucene 的结构理解 一个Elasticsearch索引由一个或多个分片&#xff08;shards&#xff09;组成。这些分片可以是主分片&#xff08;primary shard&#xff09;或副本分片&#xff08;replica shard&#xff09;。每个分片都是一个独立的Lucene索引&#xf…

Unity 性能优化Shader分析处理函数:ShaderUtil.GetShaderGlobalKeywords用法

Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 点击封面跳转下载页面 简介 Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 在Unity开发中&#xff0c;性能优化是一个非常重要的方面。一个常见…

修改Tomcat的默认端口号

1、找到Tomcat的安装路径。 2、打开conf文件夹。 3、用记事本打开server.xml文件 4、找到 <Connector port"8080" protocol"HTTP/1.1"&#xff0c;其中的8080就是tomcat的默认端口&#xff0c;将其修改为你需要的端口即可。

github 创建自己的分支 并下载代码

github创建自己的分支 并下载代码 目录概述需求&#xff1a; 设计思路实现思路分析1.进入到master分支&#xff0c;git checkout master;2.master-slave的个人远程仓库3.爬虫调度器4.建立本地分支与个人远程分支之间的联系5.master 拓展实现 参考资料和推荐阅读 Survive by day…

Prometheus 监控指南:如何可靠地记录数字时间序列数据

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

第69步 时间序列建模实战:ARIMA建模(R)

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们使用R进行SARIMA模型的构建。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Re…

html的日期选择插件

1.效果 2.文档 https://layui.gitee.io/v2/docs/ 3.引入 官网地址&#xff1a; https://layui.gitee.io/v2/ 引入&#xff08;在官网下载&#xff0c;&#xff09;jquery-1.7.2.min.js,layui/layui.js **<link href"js/layui/css/layui.css" rel"stylesh…

Mysql数据库基础和增删改查操作

一、数据库基本概念 数据&#xff1a;描述事物的符号记录&#xff0c;包括数字&#xff0c;文字、图形、图像、声音、档案记录等&#xff0c;以“记录”形式按统一的格式进行存储。 表&#xff1a;将不同的记录组织在一起用来存储具体数据。 数据库&#xff1a;表的集合&…

10.2 整流电路

在分析整流电路时&#xff0c;为了突出重点&#xff0c;简化分析过程&#xff0c;一般均假定负载为纯电阻性&#xff1b;整流二极管为理想二极管&#xff0c;即导通时正向压降为零&#xff0c;截止时反向电流为零&#xff1b;变压器无损耗&#xff0c;内部压降为零等。 一、整…

java封装国密SM4为 jar包,PHP调用

java封装国密SM4为 jar包,PHP调用 创建java工程引入SM4 jar包封装CMD可调用jar包PHP 传参调用刚用java弄了个class给php调用,本以为项目上用到java封装功能的事情就结束了,没想到又来了java的加密需求,这玩意上头,毕竟不是强项,没办法,只好再次封装。 但是这次的有点不…

thinkPhp5返回某些指定字段

//去除掉密码$db new UserModel();$result $db->field(password,true)->where("username{$params[username]} AND password{$params[password]}")->find(); 或者指定要的字段的数组 $db new UserModel();$result $db->field([username,create_time…

总结986

时间记录&#xff1a; 7:10起床 8:00~下午2:00课程设计&#xff0c;偷学了3小时 2:17~3:55午觉 4:10~5:30计网 5:35~6:41数据结构 7:00~7:22继续数据结构课后习题重做 7:23~8:07考研政治&#xff0c;做题20道纠错 8:15~8:39每日长难句 8:39~10:21 14年tex2纠错标记 1…

【算法训练-数组 四】【合并】:合并两个有序数组

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【数组合并】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

LeetCode(力扣)122. 买卖股票的最佳时机 II

LeetCode122. 买卖股票的最佳时机 II 题目链接代码 题目链接 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/ 代码 class Solution:def maxProfit(self, prices: List[int]) -> int:result 0for i in range(1, len(prices)):result max((prices[i…

沙丁鱼优化算法(Sardine optimization algorithm,SOA)求解23个函数MATLAB

一、沙丁鱼优化算法 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出&#xff0c;该算法模拟沙丁鱼的生存策略&#xff0c;具有搜索能力强&#xff0c;求解精度高等特点。 沙丁鱼主要以浮游生物为食&#xff0c;这些生物包括细菌、腔肠…

【实操干货】如何开始用Qt Widgets编程?(五)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 在本文中&#xff0…

查看Android App包名,查看keystore的信息,导出公钥

查看Android App包名的三种方法 cmd中输入命令&#xff1a;adb shell am monitor 然后启动需要获取包名的应用cmd中输入命令&#xff1a;adb shell pm list packages -3 查看自己安装的app包名安卓系统中&#xff1a;设置——应用——正在运行 查看…

04_瑞萨GUI(LVGL)移植实战教程之驱动LCD屏(SPI)

本系列教程配套出有视频教程&#xff0c;观看地址&#xff1a;https://www.bilibili.com/video/BV1gV4y1e7Sg 4. 驱动LCD屏(SPI) 本次实验我们在上一次实验的基础上驱动 LCD屏(SPI)。 上次实验我们已经能驱动触摸屏(I2C)并打印触摸点坐标&#xff0c;这次实验我们的目标是点…

Pytorch intermediate(三) BiLSTM

Bi-directional Long Short-Term Memory&#xff0c;双向LSTM网络。 有些时候预测可能需要由前面若干输入和后面若干输入共同决定&#xff0c;这样会更加准确。因此提出了双向循环神经网络&#xff0c;网络结构如上图。 构建LSTM模型时&#xff0c;在参数中添加bidirectionalTr…