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

news2024/9/24 23:25:05

这是特斯拉的全自动驾驶(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.coloradmin.cn/o/1403877.html

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

相关文章

爬虫安居客新房

一、首先看网址 后面有全部代码 https://hf.fang.anjuke.com/loupan/baohequ/p3 这种形式很好分析,https://hf.fang.anjuke.com/loupan/行政区域页码 xinfang_area ["feixixian", "baohequ", "shushanqu", "luyangqu",…

fiddler流量捕获之winconfig

windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler中点击 WinConfig 按钮可以解除,这个与菜单栏 Tools→Win8 Loopback Exemptions 功能是相同的,流量捕获:指拦截和记录通过计算…

mysql InnoDB行记录格式

在介绍索引的文章已经知道。InnoDB的表数据被拆分成不同的数据页上,默认一个数据页大小是16kb,分布在聚簇索引的叶子节点上。被挂在B树上。一条行记录除了要保存每列具体数据值还会有一些标识位信息。另外对于超长数据存储也有特殊处理。 那么具体到一行…

第2章-OSI参考模型与TCP/IP模型

目录 1. 引入 2. OSI参考模型 2.1. 物理层 2.2. 数据链路层 2.3. 网络层 2.4. 传输层 2.5. 会话层 2.6. 表示层 2.7. 应用层 3. 数据的封装与解封装 4. TCP/IP模型 4.1. 背景引入 4.2. TCP/IP模型(4层) 4.3. 拓展 1. 引入 1)产…

Mac使用adb调试安卓手机

0x00 背景 最近windows电脑休息,用mac办公比较多,手机用时间长了,不太灵光,准备修理一番。于是要用mac调试下android手机。配置略显麻烦,网上的步骤多参差不齐。估计是入门步骤,大佬们也懒得写的太细。于是…

2024/1/18 DFS BFS

目录 奇怪的电梯 马的遍历 PERKET(个人认为很抽象) 奇怪的电梯 P1135 奇怪的电梯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路,还是用的bfs,建立一个结构体类型的队列,一个存当前的电梯层数,一…

数据库-分库分表初探

文章目录 分库策略垂直切分垂直分库(专库专用)垂直分表(拆表)优点缺点 水平(Sharding)切分水平分表库内分表分库分表优点缺点 分表策略hash取模方案range范围区间取值方案映射表方案 分库分表问题事务一致性问题跨节点关联查询跨节…

React16源码: React中的completeUnitOfWork的源码实现

completeUnitOfWork 1 )概述 各种不同类型组件的一个更新过程对应的是在执行 performUnitOfWork 里面的 beginWork 阶段它是去向下遍历一棵 fiber 树的一侧的子节点,然后遍历到叶子节点为止,以及 return 自己 child 的这种方式在 performUni…

php no input file specified

一、修改 .user.ini 文件 内容 open_basedir/wab/led-sht.com/:/tmp/ led-sportslight.com是项目根目录位置 改好后保存并清空缓存硬刷新网站就行了 二、mkdir(): Permission denied /core/library/think/cache/driver/File.php 第 84 行左右 mkdir(): Permission denied 这个…

如何用 500 行 SQL 实现 GPT2学习

目录 理论背景实现过程GenerationTokenizerEmbeddingsAttention为什么我们需要有因果掩码?为什么矩阵是 Q,K 和 V? BlocksTokens为什么要使用 softmax 转换概率?Inference 俄罗斯有个大佬每年都会用 SQL 来实现一个挑战庆祝新年&a…

JOSEF约瑟 JGL-15静态带时限过流继电器 柜内安装,板前接线

系列型号 JGL-11反时限过流继电器;JGL-12反时限过流继电器; JGL-13反时限过流继电器;JGL-14反时限过流继电器; JGL-15反时限过流继电器;JGL-16反时限过流继电器; 用途: JGL-15 反时限过流继电器…

(十)Head first design patterns组合模式(c++)

组合模式 组合模式在参考链接中已经讲得很好了,这里只简单讲讲就好。 组合模式的意图是表达部分-整体层次结构。 当你需要管理一个组合对象,又要管理这个组合对象的单个对象。这个时候就可以让这个组合对象和单个对象继承同一个基类,以便用…

Android14实战:调整A2DP音量曲线(五十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

【YOLO系列】 YOLOv4之SAT自对抗训练

一、简介 自对抗训练(Self-Adversarial Training,简称SAT)是一种新型的数据增强技术,旨在通过神经网络自身进行的对抗式攻击来提高模型的鲁棒性和泛化能力。其主要分为两个阶段: 第一阶段,神经网络会对其原…

C# wpf利用Clip属性实现截屏框

wpf截屏系列 第一章 使用GDI实现截屏 第二章 制作截屏框(本章) ______第一节 使用DockPanel制作截屏框 ______第二节 利用Clip属性实现截屏框(本节) 第三章 实现截屏框热键截屏 第四章 实现截屏框实时截屏 第五章 使用ffmpeg命令行实现录屏 文章目录 wp…

JVM系列-1.初识JVM

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理🔥如果感觉博主的文…

Netty篇章(1)—— 核心原理介绍

终于进入到Netty框架的环节了,前面介绍了大量的Java-NIO的内容,核心的内容Selector、Channel、Buffer、Reactor掌握了,那么学起来Netty也是水到渠成的事情。如果没有掌握前面的内容那么学Netty会非常吃力,下面讲解Netty核心原理与…

界面控件DevExpress ASP.NET Data Grid组件 - 可快速处理各类型数据!(一)

由DevExpress开发的快速且功能完整的ASP.NET Web Forms的Data Grid组件,从全面的数据塑造和数据过滤选项到十多个集成数据编辑器,该套件提供了帮助用户构建极佳数据所需的一些,没有限制! P.S:DevExpress ASP.NET Web …

探索设计模式的魅力:一次设计,多次利用,深入理解原型模式的设计艺术

原型模式是一种设计模式,属于创建型模式的一种,它用于创建重复的对象,同时又能保持性能。在原型模式中,通过复制现有对象的原型来创建新对象,而不是通过实例化类来创建对象。这样做可以避免耗费过多的资源开销&#xf…

关于缓存 db redis local 取舍之道

文章目录 前言一、影响因素二、db or redis or local1.db2.redis3. local 三、redisson 和 CaffeineCache 封装3.1 redisson3.1.1 maven3.1.2 封装3.1.3 使用 3.2 CaffeineCache3.1.1 maven3.1.2 封装3.1.3 使用 总结 前言 让我们来聊一下数据缓存,它是如何为我们带…