[自动驾驶技术]-5 Tesla自动驾驶方案之算法(AI Day 2021)

news2024/10/6 0:32:06

有朋友问我,如何有效学习一个新技术。笔者这么多年的经验是:1)了解国内外产业应用和标准法规现状,先建立宏观知识图谱及技术系统框架;2)根据系统框架逐块进行深入研究(横向、纵向),穿插行业内主流厂商对应模块技术方案;3)系统研究行业内TOP厂商完整解决方案;4)针对你选择的重点方向进阶研究。因此笔者建立的自动驾驶专题介绍也会按照这个思路搭建技术体系(发布内容顺序不一定能严格遵守该路线,但会力求不断更新最终能按照该思路完成自动驾驶专栏搭建)。

本文及之后几篇系列文章,旨在针对自动驾驶行业领军企业特斯拉的技术方案进行深入解读和分析(资料来源:特斯拉官网,AI Day 2021,AI Day 2022,Inventor Day 2023)。特斯拉自动驾驶技术的核心是三个点:算法、数据和硬件,以下笔者将分别介绍AI Day 2021,AI Day 2022,Inventor Day 2023三次分享的内容,然后综合梳理出目前特斯拉自动驾驶解决方案。本文主要介绍特斯拉AI Day 2021的算法部分内容。

1 感知算法系统框架

1)系统框架

(摄像头raw data 1280*960,12bit (HDR) @36Hz)

特斯拉的感知算法系统,取名为HydraNet(九头蛇),九头非常形象的表示了感知系统整个算法模型是一个多头任务学习神经网络架构,旨在处理自动驾驶汽车所需的多种感知任务;颈部形象的展示出整个感知模型共享特征提取部分,从而提高计算效率和感知精度。

从上图可以看到,整个算法模型的输入是来自8个摄像头提供的raw data,通过神经网络将图像实时处理转换成4D向量空间(包括自动驾驶所需一切物体的3D表示,再加上时间维度),包括线、边、道路、交通标志、行人、车辆的位置、方向、速度、角速度等。提取到的特征序列进入到特定任务头进行处理,例如使用一阶YOLO进行目标检测等,针对性完成更多任务处理。

2)模型优点

HydraNet使用共同的共享骨干网络Backbone,再分支到多个任务头进行具体的子任务处理,具有非常明显的优势:

  • 特征共享:在测试时,可以通过共享前向传递推理,提高车载系统的效率。
  • 任务解耦:各任务独立进行,互不影响,因此更新某个数据集或更改某个任务头的架构时,无需重新验证所有任务。
  • 瓶颈处理:可以将Multi-scale features特征缓存到磁盘,只需对缓存的特征进行微调即可。

3)各组成模块

3.1)Rectify校准

考虑到不同位置安装的摄像头的抖动等问题,需要对每个输入的视觉数据进行校准,就是Rectify模块的任务,将所有图片转换为虚拟通用摄像头。

3.2)Backbone主干

RegNet

Rectify校准之后的下一层是算法模型的backbone特征提取主干,使用RegNet(残差神经网络)在延迟和精度之间进行了很好的折衷,可以提供不同尺寸不同精度的特征输出。(算法底部提供高精度空间信息W*H=160*120,低通道数C=64,可以看到更多图像细节;顶部提供低精度空间信息W*H=20*15,高通道数C=512,可以看到图像的大部分而且具备更多上下文语义)

RegNet由一系列重复的网络块组成,通过一组参数(如宽度、深度、分组卷积等)来灵活调整网络规模,使得网络能够适应不同的计算资源和任务需求;在设计RegNet过程中,重点关注网络的宽度(通道数)和深度(层数)的平衡,确保在不同层次上都有足够的表达能力。

工作原理:

  • 网络块(Simple Block):每个网络块由标准的卷积层、批量归一化层和ReLU激活函数组成;
  • 使用分组卷积来提高计算效率,同时保持模型性能。
  • 阶段(Stage):RegNet由多个阶段组成,每个阶段由若干个相同的网络块组成;不同阶段之间通过调整宽度(通道数)和分组数来改变计算复杂度和表达能力。

可调参数:

  • w_0(起始宽度):第一个阶段的通道数。
  • w_a(宽度增量):每个阶段的宽度增加量。
  • w_m(宽度乘数):每个阶段的宽度乘数,用于调整每个阶段的通道数。
  • d(深度):每个阶段的网络块数。
  • g(组数):每个卷积层的分组数,用于分组卷积。

BiFPN

BiFPN,全称是Bi-directional Feature Pyramid Network(双向特征金字塔网络),是谷歌在EfficientDet论文中提出的一种高效的特征融合模块,旨在高效地融合来自不同尺度的特征,增强多尺度目标检测的性能,同时保持较低的计算复杂度。

BIFPN通过引入双向特征融合路径,结合加权特征融合策略,能够更有效地融合不同尺度的特征信息,增强特征的表达能力,提高了多尺度目标检测的性能。其主要思想包括:

  • 双向特征融合:在传统的自顶向下路径之外,增加自底向上的路径,使得信息在不同尺度之间可以双向传递,从而更好地融合多尺度特征。
  • 加权特征融合:使用可学习的权重对不同尺度的特征进行加权融合,从而自动学习特征融合的最佳方式。

BIFPN的结构如下

  • 输入特征层:来自主干网络(如EfficientNet、ResNet等)的多尺度特征层,通常包括不同分辨率的特征图。
  • 双向路径:自顶向下路径:从高分辨率特征层开始,通过上采样和逐层融合,将高层次的语义信息传递到低分辨率特征层。自底向上路径:从低分辨率特征层开始,通过下采样和逐层融合,将底层的空间细节信息传递到高分辨率特征层。
  • 加权特征融合:在每个特征融合节点,采用加权求和的方式,将来自不同尺度的特征进行融合。具体地,每个输入特征都乘以一个可学习的权重,然后进行加权求和,再经过归一化(如Softmax),以确保不同特征贡献的合理性。
  • 融合结果输出:最终输出多尺度融合后的特征图,供后续的目标检测头(如分类和回归)使用。

3.3)数据融合BEV+Transformer

8个摄像头提供的图像数据特征融合带来了2个问题:

结合时间对多个图像数据处理和预测过程中,调整占用跟踪器及其超参数非常复杂,我们希望避免通过手写C++来进行调参,更希望在神经网络中完成,实现端到端的优化。融合的2D图像空间并不理想,希望直接在高维3D向量空间中进行处理。

如何将2D图像空间转换为向量空间,将8张图像信息输入神经网络,融合后输出得到向量空间,并通过解码得到各个任务头的输出?如何标注数据,对于基于向量的特定数据集,需要在向量空间中进行标注?

针对第一个问题,我们使用Transformer(Multi-head Attention)来解决。

Transformer是一种用于处理序列数据的神经网络架构,由Vaswani等人在2017年提出,最初用于机器翻译任务,通过引入自注意力机制(self-attention)和多头注意力机制(multi-head attention)来捕捉序列中元素之间的关系,不依赖于传统的递归神经网络(RNN)结构,从而提高了并行计算能力和长距离依赖建模能力。

Transformer的架构

Transformer架构主要包括两个部分:编码器(Encoder)和解码器(Decoder),每个部分都由若干个相同的层堆叠而成。

  • 编码器(Encoder):由多个编码器层(Encoder Layer)组成,每个编码器层包括多头自注意力子层和前馈神经网络子层。多头自注意力子层中自注意力机制通过计算序列中每个元素对其他所有元素的注意力权重来捕捉序列中的全局依赖关系;多头注意力机制将输入分成多个部分,每部分独立计算注意力,然后将结果拼接起来,并通过线性变换得到最终的输出。前馈神经网络子层中每个位置的输出都通过一个相同的前馈神经网络,通常由两个线性变换和一个ReLU激活函数组成;每个子层之后都使用残差连接(Residual Connection)和层归一化(Layer Normalization)。
  • 解码器(Decoder):也由多个解码器层(Decoder Layer)组成,每个解码器层包括以下三个子层:掩码多头自注意力子层(类似于编码器中的多头自注意力子层,但通过掩码机制确保每个位置只能关注当前位置及之前的位置,从而保留自回归性质),多头注意力子层(通过注意力机制将解码器的输出与编码器的输出进行结合,使解码器能够关注编码器中的信息),前馈神经网络子层(与编码器中的前馈神经网络子层相同,每个子层之后都使用残差连接和层归一化)。

多头注意力机制(Multi-Head Attention)

多头注意力机制是Transformer中的核心组件,通过并行计算多个不同的自注意力来增强模型的表现力。其主要步骤如下:

  • 线性变换:将输入的每个序列元素通过三个不同的线性变换,得到查询(Query)、键(Key)和值(Value)向量。
  • 注意力计算:计算查询与所有键的点积,然后通过softmax函数得到注意力权重,使用这些权重对值向量进行加权求和,得到注意力输出。
  • 多头计算:重复上述过程多个头次(通常是8或16),每个头都有独立的查询、键和值向量。将所有头的输出拼接起来,通过另一个线性变换得到最终的多头注意力输出。

自注意力机制(Self-Attention)

自注意力机制允许序列中的每个位置与其他所有位置进行交互,从而捕捉长距离依赖关系。其具体步骤如下:

  • 计算查询、键和值:对于输入序列中的每个元素,通过线性变换得到查询、键和值向量。
  • 点积注意力:计算查询向量与所有键向量的点积,得到注意力分数,通过softmax函数将分数转换为注意力权重。
  • 加权求和:使用注意力权重对值向量进行加权求和,得到注意力输出。

3.4)Video Neural Net

基于融合数据后获得得3D向量空间,需要增加记忆信息获得更加准确得环境感知能力。

Feature queue基于之前获取了多尺度特征后,随着时间推移,缓存一些特征值;Feature queue同时需要获取汽车动力学数据,例如速度,加速度,了解汽车如何行驶。Video component负责融合这些临时数据,然后进入到多头任务中进行解码。

Feature Queue

Feature queue需要每隔27ms推送time-based queue,这样即使有些目标被大车遮挡,依然可以通过历史记忆数据知道大车后面得东西;需要每隔1米推送space-based queue,这样当预测到一条转弯的道路,可以通过记忆数据识别到交通标志等信息。

Spatial RNN Video Module

Video module使用了spatial RNN (LSTM)。长短期记忆网络(Long Short-Term Memory,LSTM)是一种特殊类型的循环神经网络,通常用于处理和预测时间序列数据,如文本、语音、视频等,比标准的RNN在处理长序列数据时更有效,因为它能够捕获和记忆长期依赖关系。

LSTM网络由一系列的“门”单元组成,这些门单元可以选择性地让信息通过网络。主要的门单元包括遗忘门、输入门和输出门,它们的作用如下:

  • 遗忘门(Forget Gate): 控制前一时刻的记忆是否保留到当前时刻,决定了要从细胞状态中丢弃哪些信息。遗忘门的输出由当前输入和前一时刻的隐藏状态共同决定。
  • 输入门(Input Gate): 控制新的信息如何加入到细胞状态中,确定了要更新的内容,并将其加入到细胞状态中。输入门的输出由当前输入和前一时刻的隐藏状态共同决定。
  • 细胞状态(Cell State): 细胞状态是LSTM网络的核心部分,负责传递长期依赖关系。细胞状态通过遗忘门和输入门进行更新,以及通过输出门传递给下一时刻的隐藏状态。
  • 输出门(Output Gate): 决定当前时刻的隐藏状态如何影响输出,通过将细胞状态与当前输入和前一时刻的隐藏状态相结合,来生成当前时刻的输出。

2 规划控制系统算法

(特斯拉关于规控的介绍内容非常少)

系统的目标:safety安全,comfort舒适,efficiency高效

关键难题:action space is very non-convex, high dimensional,自动驾驶中可以操作的动作空间,例如方向盘角度、加速度、刹车力度,具备非凸性(一个空间是非凸的,意味着在该空间中,任意两点之间的连线不一定完全位于该空间内,即空间中可能存在“凹陷”或“洞”,导致标准的优化算法如梯度下降,可能会陷入局部最优解,而无法找到全局最优解),高维性(指的是维度即自由度非常高的空间,搜索和优化问题更加复杂。维度的增加导致搜索空间呈指数级增长,使得算法的计算成本和所需的数据量大幅上升)。

特斯拉的解决方案如下:需要进行搜索来规划车辆的行驶路径,考虑到车辆本身以及周围环境的情况,通过设置上下文走廊,并优化平滑路径,可以实现更高效的行驶规划,在非常短的时间内进行成千上万次搜索,支持10秒的规划。

不同地区的驾驶环境可能复杂多变,需要适应不同的场景和驾驶习惯,需要考虑其它智能体进行综合规划,另外使用基于学习的方法,如神经网络,获得更好更光滑的运动轨迹,可以更有效地解决复杂的行驶规划问题。

举例:通过训练神经网络,可以解决简单的停车问题,而无需使用导航启发式方法。神经网络能够吸收场景的全局上下文,并产生一个有效的值函数,引导车辆朝着全局最小值前进,而不是陷入局部最小值。使用蒙特卡罗树搜索(MCTS)的方法进行研究,神经网络能够在一次尝试中就取得进展,直接朝着目标前进,大大减少了搜索节点数量。

3 感知规控整体架构

感知系统将8个摄像头稠密的图像数据进行融合转换成向量空间,送入explicit基于规则和NN基于神经网络的规控系统,生成期望的运动轨迹操作汽车方向盘和速度。

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

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

相关文章

【LLM第7篇】transformer跟bert、gpt、大模型的联系

上一篇讲了transformer的原理,接下来,看看它的衍生物们。 Transformer基本架构 Transformer模型主要由两部分组成:编码器(Encoder)和解码器(Decoder)。编码器负责处理输入序列,将其…

正邦科技(day2)

自动校准 问题:电量不准都可以直接去校准 校准方式:可程式变频电压 问题分析:他是通过软件去自动自动校准的,flash 清空的时候有缓存没有清空,或者互感器没有读取到问题 互感器:电流互感器的作用包括电流测…

2024年5月份架构师考试真题完整版

截至2024-5-28 19:24:14已全部收录完成 共75到选择题,5道案例题,4道论文题。题目顺序不分先后。 全网最全的2024年5月份架构师考试真题回忆版,包含答案和解析。 群友 疯狂程序员 花落无声 半夏 鲁迅-三战老兵(预备役) 本次必成 锦鲤附体 2024…

LabVIEW车轮动平衡检测系统

LabVIEW车轮动平衡检测系统 随着汽车行业的快速发展,车轮动平衡问题对乘坐舒适性、操控稳定性及安全性的影响日益凸显,成为了提高汽车性能的一个关键环节。传统的检测系统因精度低、成本高、操作复杂等问题,难以满足现代汽车行业的需求。开发…

100个 Unity小游戏系列四 -Unity 抽奖游戏专题二 水果机游戏

一、演示效果 二、知识点 2.1 布局 private void CreateItems(){for (int i 0; i < rewardDatas.Length; i){var reward_data rewardDatas[i];GameObject fruitOjb;if (i < itemRoot.childCount){fruitOjb itemRoot.GetChild(i).gameObject;}else{fruitOjb Instant…

C++数据结构之:链List

摘要&#xff1a; it人员无论是使用哪种高级语言开发东东&#xff0c;想要更高效有层次的开发程序的话都躲不开三件套&#xff1a;数据结构&#xff0c;算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合&#xff0c;即带“结构”的数据元素的集合&am…

如何恢复已删除/丢失或未保存的 PDF 文件?

许多用户曾因某些问题删除或丢失 PDF 文件。此外&#xff0c;一些用户在关闭应用程序时未保存 PDF 文件&#xff0c;从而丢失 PDF 文件。您可以尝试一些解决方案来恢复已删除的 PDF 文件、恢复未保存的 PDF 文件&#xff0c;以及在任何其他数据丢失情况下挽救丢失的 PDF 文件。…

汇编原理(四)[BX]和loop指令

loop&#xff1a;循环 误区&#xff1a;在编译器里写代码和在debug里写代码是不一样的&#xff0c;此时&#xff0c;对于编译器来说&#xff0c;就需要用到[bx] [bx]: [bx]同样表示一个内存单元&#xff0c;他的偏移地址在bx中&#xff0c;比如下面的指令 move bx, 0 move ax,…

学习笔记——数据通信基础——数据通信网络(基本概念)

数据通信网络基本概念 网络通信&#xff1a;是指终端设备之间通过计算机网络进行的通信。 数据通信网络(Data Communication Network)&#xff1a;由 路由器、交换机、防火墙、无线控制器、无线接入点&#xff0c;以及个人电脑、网络打印机&#xff0c;服务器等设备构成的通信…

Spring Boot集成freemaker快速入门demo

1.什么是freemaker&#xff1f; FreeMarker 是一款模板引擎&#xff1a;即一种基于模板和要改变的数据&#xff0c;并用来生成输出文本(HTML网页&#xff0c;电子邮件&#xff0c;配置文件&#xff0c;源代码等)的通用工具。 它不是面向最终用户的&#xff0c;而是一个Java类库…

【学习心得】PyTorch的知识要点复习(持续更新)

PyTorch知识要点复习&#xff0c;目的是为了巩固PyTorch基础、快速回顾、深化理解PyTorch框架。这篇文章会持续更新。 一、本文的一些说明 知识点梳理&#xff1a;我将PyTorch的核心概念和高级技巧进行了系统化的整理&#xff0c;从基础的张量操作到复杂的模型构建与训练。这样…

HR人才测评,想象力维度分析(大五人格测试)

想象力维度&#xff08;高得分者&#xff09;性格特征 开放性人格的人通常富有想象力。想象力是一种可贵的天赋&#xff0c;通常在孩童时期人们都会充满想象力&#xff0c;但是随着渐渐长大&#xff0c;我们的想象力也会被时光的棱角磨平。 但开放性人格的人并非如此&#x…

Windows下PostgreSQL数据库的备份与恢复

文章目录 一、备份1.找到PostgreSQL的安装目录下的"bin"目录2.在windows的命令窗口里&#xff0c;使用pg_dump进行备份1.打开命令窗口2.使用pg_dump将数据库备份下来 二、恢复1.找到PostgreSQL的安装目录下的"bin"目录2.在windows的命令窗口里&#xff0c;…

2007NOIP普及组真题 4. Hanoi双塔问题

线上OJ&#xff1a; 【07NOIP普及组】Hanoi双塔问题 题解分析 1、本题考的其实不是Hanoi塔&#xff0c;而是瞪眼法&#xff08;数学推导&#xff09;和高精度。 2、本题不需要输出移动的顺序&#xff0c;只是输出移动的次数即可。 核心思想&#xff1a; 1、从上述图中&#x…

.NET 某和OA办公系统全局绕过漏洞分析

转自先知社区 作者&#xff1a;dot.Net安全矩阵 原文链接&#xff1a;.NET 某和OA办公系统全局绕过漏洞分析 - 先知社区 0x01 前言 某和OA协同办公管理系统C6软件共有20多个应用模块&#xff0c;160多个应用子模块&#xff0c;从功能型的协同办公平台上升到管理型协同管理平…

Next-Admin,一款基于Nextjs开发的开箱即用的中后台管理系统(全剧终)

hello&#xff0c;大家好&#xff0c;我是徐小夕。之前和大家分享了很多可视化&#xff0c;零代码和前端工程化的最佳实践&#xff0c;今天继续分享一下最近开源的 Next-Admin 项目的最新更新。 这次更新是1.0版本最后一次更新&#xff0c;也根据用户反馈的问题做了一些优化&am…

uniapp开发微信小程序:用户手机号授权获取全流程详解与实战示例

随着多端小程序研发工具的日益普及&#xff0c;诸如uniapp、Taro、Flutter等跨平台解决方案使得开发者能够高效地构建同时适配多个主流小程序平台&#xff08;如微信、支付宝、百度、字节跳动等&#xff09;的应用。尽管各平台间存在一定的差异性&#xff0c;但在获取用户手机号…

helm离线安装

目录 概述实践 概述 centos 7.x 离线安装 helm 3.14.4 版本 实践 离线包资源下载地址 github [roothadoop01 ~]# tar -xvf helm-v3.14.4-linux-amd64.tar.gz linux-amd64/ linux-amd64/README.md linux-amd64/LICENSE linux-amd64/helm [roothadoop01 ~]# mv ./linux-amd…

【云原生 | 59】Docker中通过docker-compose部署ELK

目录 1、组件介绍 2 、项目环境 2.1 各个环境版本 2.2 Docker-Compose变量配置 2.3 Docker-Compose服务配置 3、在Services中声明了四个服务 3.1 ElasticSearch服务 3.2 Logstash服务 3.3 Kibana服务 3.4 Filebeat服务 4、使用方法 4.1 方法一 4.2 方法二 5、启动…

WebPack插件实现:打包之后自动混淆加密JS文件

在WebPack中调用JShaman&#xff0c;实现对编译打包生成的JS文件混淆加密 一、插件实现 1、插件JShamanObfuscatorPlugin.js&#xff0c;代码&#xff1a; class JShamanObfuscatorPlugin { apply(compiler) { compiler.hooks.emit.tapAsync(JShamanObfuscatorPlugin, (comp…