特斯拉FSD的神经网络(Tesla 2022 AI Day)

这是特斯拉的全自动驾驶(Full Self Driver)技术结构图,图中把自动驾驶模型拆分出分成了几个依赖的模块:

技术底座:自动标注技术处理大量数据,仿真技术创造图片数据,大数据引擎进不断地更新(大模型的数据基础)

核心部分:神经网络对场景的识别和理解(不仅仅是视觉技术的运用,结合了自然语言处理领域技术)

  • 提出占有网络,这个网络能够实时地识别周围环境中各种物体的占有率,然后进行立体建模,体素化,还能够实现预测物体未来的运动趋势

  • 然后进一步识别各种车道线,解决各种车道线交错的难题

增强神经网络的资源:AI训练集群,AI优化编译、接口

最终的目的是实现车端大模型直接处理原始的视频,做自动驾驶决策

 基于Attention机制的占用网络

占有网络是特斯拉FSD中的核心部分,目的是识别周围物体占用空间中的部分,对空间做一个建模,并且区分物体,赋予不同的语义,然后还能够预测物体未来的变化趋势,即预测物体运动。

image-20240115232904946

这个是Occupancy整体工作原理示意图,具体的流程如下:

  1. 输入图像校准,使用12位的原始图像,而非8位,这么做是因为可以获得更多的4位图像信息和16倍动态范围。

  2. 图片特征提取,用RegNet+BiFPN来实现图片的卷积特增提取和多尺度特征的提取结合

  3. Spatial Attention空间注意力机制,这里先把图片加上相机特征做embedding,这样子Spatial Query就蕴含了空间位置信息,即含有三维空间特征的Query和二维的图片特征的Value做注意力机制。Attention实现了对多个相机的3D空间位置信息和2D图像的信息融合,模型从中学习对应的特征关系,最终输出高维的空间特征。

  4. Temporal Alignment时空对齐,获得时空特征数据,利用行车的轨迹结合Attention得到的空间特征,做Channel维度的拼接,输出会进入反卷积的部分

  5. 反卷积和体积空间输出,把时空特征数据做反卷积,得到空间占用流的输出

  6. 上一步得到的体素化是不够精确的,于是进一步设计了一个Queryable MLP部分来提高分辨率。这部分其实是多层感知机的解码器,用于对于生成任务。主要流程就是生成每个体素特征图,并将其输入到 MLP 中,以此进一步生产获得连续的体素语义,占用流信息,这也实现了对未来行为的预测

  7. 在反卷积后还输出表面的信息,目的是为了在坡道,弯曲路面灯地方实现精确的控制。表面和体素化的输出预测不是独立的,内在他们其实是一致的

  8. 最后基于生成的体素化信息结合NERF模型可以尝试还原真实的场景,这还需要未来的研究和探索

在特斯拉介绍的占有网络中,中间特征的学习部分用到了Attention的思想,即Spatial Attention部分。当我们用卷积网络去识别图像时,卷积核识的都是图像的局部信息,但是其实图像识别的时候每个部分对于识别的正确性的影响是不同的。注意力机制的引入就是为了解决这个问题,其实就是模拟人看图片时能够注意到的重点,抛弃不重要的局部信息。

img

这个图片画出Attention计算的三个阶段,结合前面特斯拉的介绍可以进一步理解Attention被结合在占有网络这个视觉任务中的意义。找图片的特点其实就是找图片的图片的特征,构造Query矩阵来查找特征。占有网络这里用的是Spatial Query,就是结合了空间信息的一个询问。这里面比较特殊的地方是被询问的Value是来自图片,图片一开始是二维的,使用图片的特征信息都是源于二维的。通过Q*K做计算,然后更新Attention Value。这么做注意力机制的目的其实就是学习到他们之间的相关性,即三维特征和二维特征的联系,让模型学习图片中对应的物体占有的空间。学习到了这些就代表有了根据二维图片和相机空间位置对应三维空间中物体实际位置和体积的能力,依照这个思路特斯拉的占有网络才能有后面进一步训练和计算然以及体素化重建空间。

2024-01-16 18-36-04 的屏幕截图

在上面这个图片中蓝色代表的是占有网络预测的部分。在这里占有网络很容易就预测到了大巴要转弯的动作且很好地拟合了体积,这在传统的视觉技术上是很复杂的问题,可以看作是多个层长方体的拟合,但是这个地方简化成了空间被占有的部分,模型就更容易理解和拟合了。对于坡面也是如此,占有网络可以更快更准确实现地面的预测。

 来语言模型的灵感

 

image-20240115234233731

之前的神经网络已经实现了分割当前行驶的车道线和其他的车道线,这个是在汽车驾驶环境比较单一的时候才比较好用,比如高速公路保持行驶。但是现实中会有很多的线条交错的场景,比如在一个多分叉的路口,这种地方分割、识别车道线就不好用了,只有进一步研究车道线之间的拓扑连接关系,才能实现更好的规划。

2024-01-16 15-05-57 的屏幕截图

特斯拉车道神经网络Lanes Neural Network示意图,网络主要是由三个部分组成:Vision,Map,Language。

Vision部分是采集车身上的摄像头的视频流做一个编码,并且希望他产生丰富的视觉内容,所以这里用到了卷积层,注意力层等提取特征,任何用到Transformer做编码。

img

这是Transformer的结构示意图,可以发现它是由编解码两块组成的,Encoder和Decoder。特斯拉在这里使用Transformer来进行编码是认为Encoder能够实现图片的基于位置的编码,然后里面的自注意力和多头注意力可以学习到很多有用的特征,输出的是蕴含内容十分丰富的向量,有助于下一步的训练。

Map部分是结合粗糙地图数据做进一步的增强,即使这里是低精度的地图,但是已经包含了在交叉口车道的拓扑信息。车道和车道数信息都在其中,把这些信息和前面Transformer产生出的蕴含丰富信息的向量编码进行融合,经过重新编码后再拿来训练可以学习到很多有用的信息。最终Vision模块和Map模块结合后输出了Dense World Tensor这个多维度且内容十分丰富的向量,这个向量就是对于周围世界信息的编码。接下来再输入第三个Language部分。

第三个部分之所以取名Language是结合了自然语言处理的思路。特斯拉在这个部分把车道相关信息和各种的车道节点位置、点位属性:起点、终点、分叉、合并等以及车道曲线几何参数进行编码。这个编码是基于创造新语言单词的思路去做的。目的就是实现了一种视觉问题到语言问题的转换,用这些创造出来的词组成句,帮助描述他们各种图像场景,这样就能够进一步去使用当前先进的自然语言处理技术来尝试解决问题。

image-20240115234527403

这是Language of Lanes的流程演示。这是一个Self Attention的过程。直接把整个图片分成很多的点,然后直接预测车道线是不可行的,计算成本很高。他们的思路是先选取一个粗略的点,即第一集的点预测,目的是划分出一个可行的预测区域,然后再进一步改进,得到准确的点,就是二级预测的结果。一级和二级的操作是重复的。然后对于这个点就能够预测他的类型,这个是利用到了前面提到的编码。最后一步是结合判断是否为分叉点,合并点并且用回归的方式做线条的拟合。最终得到的结果会加入句子,即更新Attention的结果。

可以注意到在获得车道线的语言的过程中除了自注意力机制Self Attention之外还用到了交叉注意力机制Cross Attention。这两者之间是有区别的,后者可以看作是对前者思想的一个扩展,自注意力机制是在当前的序列中获取上下文信息,而交叉注意力是让模型在两个序列之间建立交互。在特斯拉的任务中,交替使用这两种Attention可以让模型结合整体和局部的各种信息,学习到其中的关联性和依赖性。

2024-01-16 17-24-26 的屏幕截图

Language of Lanes最终就是表示了一组车道线的连接关系。因为是语言描述的场景,所以还能实现行为的预测。比如上图这个场景,有一辆车是因为事故停在了红绿灯前面,而有一个车是走到红绿灯前减速停车等红灯,模型有了语言的描述,就能够从语义中理解和识别场景里面的物体并预测行为,从而实现避让这个场景中的事故车辆的智能驾驶动作。

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

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

相关文章

UML中的实现关系

在UML(统一建模语言)中,“实现”关系是指一个类(实现类)实现一个接口或抽象类的方法的情况。这种关系通常用于指定类如何实现某个特定的接口规范。 UML中的实现关系 在UML类图中,实现关系用一条带有空心箭…

win10 任务栏设置透明

先看效果图 第一步:按下“Win R”组合键,输入“regedit”并回车,打开注册表编辑器。 第二步:在注册表中找到路径“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced”。 第三步:在…

机器人3D视觉引导半导体塑封上下料

半导体塑封上下料是封装工艺中的重要环节,直接影响到产品的质量和性能。而3D视觉引导技术的引入,使得这一过程更加高效、精准。它不仅提升了生产效率,减少了人工操作的误差,还为半导体封装技术的智能化升级奠定了坚实的基础。 传统…

RK3568笔记十一:mpp编解码

若该文为原创文章,转载请注明原文出处。 主要是想测试MPP的解码,为后续做测试。 一、环境 1、平台:rk3568 2、开发板:ATK-RK3568正点原子板子 3、环境:buildroot 二、编译 使用的是正点原子提供的虚拟机,搭建好环…

yolov5 opencv dnn部署自己的模型

yolov5 opencv dnn部署自己的模型 github开源代码地址使用github源码结合自己导出的onnx模型推理自己的视频推理条件c部署c 推理结果 github开源代码地址 yolov5官网还提供的dnn、tensorrt推理链接本人使用的opencv c github代码,代码作者非本人,也是上面作者推荐的…

mysql进阶-执行计划

目录 1. 概念 2. 使用 3. 具体相关字段含义 3.1 id 3.2 select_type 3.3 table 3.4 partition 3.5 type 3.6 possible_key 3.7 key 3.8 key_len 3.9 ref 3.10 row 3.11 filtered 3.12 extra 1. 概念 一条语句通过优化器之后,会生成具体的执行计划用…

HuoCMS|免费开源可商用CMS建站系统HuoCMS 2.0下载(thinkphp内核)

HuoCMS是一套基于ThinkPhp6.0Vue 开发的一套HuoCMS建站系统。 HuoCMS是一套内容管理系统同时也是一套企业官网建设系统,能够帮过用户快速搭建自己的网站。可以满足企业站,外贸站,个人博客等一系列的建站需求。HuoCMS的优势: 可以使用统一后台…

VSCode Python Windows环境下创建虚拟环境,隔离每个项目的依赖pip包,推荐使用!

VSCode Python Windows环境下创建虚拟环境 Visual Studio Code 可以隔离不同项目的pip依赖包,防止不同版本的干扰**(推荐使用)** 先在python官网https://www.python.org/downloads/下载需要的python版本(我选择了3.9.8&#xff09…

JDK8新特性(一)集合之 Stream 流式操作

1.Stream流由来 首先我们应该知道:Stream流的出现,主要是用在集合的操作上。在我们日常的工作中,经常需要对集合中的元素进行相关操作。诸如:增加、删除、获取元素、遍历。 最典型的就是集合遍历了。接下来我们先举个例子来看看 J…

《WebKit 技术内幕》学习之九(2): JavaScript引擎

2 V8引擎 2.1 基础 V8是一个开源项目,也是一个JavaScript引擎的实现。它最开始是由一些语言方面的专家设计出来的,后被Google收购,成为了JavaScript引擎和众多相关技术的引领者。其目的很简单,就是为了提高性能。因为在当时之前…

【学习】focal loss 损失函数

focal loss用于解决正负样本的不均衡情况 通常我们需要预测的正样本要少于负样本,正负样本分布不均衡会带来什么影响?主要是两个方面。 样本不均衡的话,训练是低效不充分的。因为困难的正样本数量较少,大部分时间都在学习没有用…

216. 组合总和 III - 力扣(LeetCode)

题目描述 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 输入示例 k 3, n 7输出示例 [[1,2,…

深入理解Kubernetes探针和.NET服务健康检查机制

前言 随着越来越多的软件采用云原生和微服务架构,我们面临着更多的技术挑战,比如: Kubernetes如何在容器服务异常终止、死锁等情况下,发现并自动重启服务;当服务依赖的关键服务(例如数据库,Red…

Dockerfile-xxxx

1、Dockerfile-server FROM openjdk:8-jdk-alpine WORKDIR /app COPY . . CMD java -Xms1536M -Xmx1536M -XX:UseG1GC -jar -Dlog4j2.formatMsgNoLookupstrue -Dloader.pathresources,lib -Duser.timezoneGMT-05 /app/server-main-1.0.0.jar 2、Dockerfile-bgd #FROM openjdk…

8. UE5 RPG创建UI(上)

UI是显示角色的一部分属性玩家可以直接查看的界面,通过直观的形式在屏幕上显示角色的各种信息。如何使用一种可扩展,可维护的形式来制作,这不得不说到耳熟能详的MVC架构。 MVC(Model-View-Controller)是一种常见的软件…

如何在Linux上部署Nexus私服

如何在Linux上部署Nexus私服 Nexus 是一个强大的仓库管理解决方案,由Sonatype公司开发。它主要用于软件开发中各种依赖包和构件的存储、管理和分发。 1、为什么要部署nexus? 统一管理依赖:在软件开发过程中,项目通常会依赖大量的…

[Linux 杂货铺] —— 权限(文件权限和目录配置)

目录 🌈前言 📁 文件的属性 📁 权限的概念 📂拥有者和所属组(角色): 📂用户(具体的人): 📁 权限的管理 📂1. chmod…

如何让亚马逊,速卖通,美客多店铺排名和流量稳定爬升

一、关键词优化 关键词是亚马逊店铺排名的关键。通过合理的关键词优化,可以提高店铺的曝光率。卖家需要研究消费者的搜索习惯和行为,了解他们使用哪些关键词进行搜索,然后将这些关键词用于商品描述、标题和元数据中。此外,还可以…

Linux - 安装字体库解决乱码问题

文章目录 问题描述步骤资源 问题描述 该安装方法,不区分中文和英文字体 Java在linux上转word文档为pdf, linux的字体缺失,导致了转出的pdf为乱码。 ● Linux将word转为pdf后出现乱码? ● 在linux上将word转为pdf 是乱码 ● 在lin…

第一篇【传奇开心果短博文系列】Python的库OpenCV技术点案例示例:cv2常用功能和方法

传奇开心果短博文系列 短博文系列目录Python的库OpenCV技术点案例示例系列 短博文目录一、前言二、常用功能和方法示例三、归纳总结 短博文系列目录 Python的库OpenCV技术点案例示例系列 短博文目录 一、前言 cv2是Python中常用的第三方库,也称为OpenCV库&#…