端到端自动驾驶综述
End-to-end Autonomous Driving: Challenges and Frontiers
文章脉路

Introduction
- 从经典的模块化的方法到端到端方法的一个对比, 讲了各自的优缺点, 模块化的好处是各个模块都有自己明确的优化的目标, 可解释性较强, 且容易debug, 缺点是各个模块优化的目标并不是最终的驾驶任务, 并且每个模块的误差容易往下游累积; 而端到端的优点就是可以global的优化, 以最终的驾驶为目的, 通过全局可微分的方式, 通过送入大量数据学到驾驶能力; 把整个问题归化成了, 数据和网络本身,而不再是corner-case的解决方式;
- 但是有一点需要注意, 端到端并不意味着,输入传感器数据,用一个黑盒子仅仅输出驾驶行为; 可以是模块化的方式, 如上图中的(b), 可以通过feature来贯穿始终; 而且可以做成multi-task learning的方式.
Roadmap

● 1988. ALVINN 输入camera和laser range finder, 经过一个简单的NN得到 steering output.
Methods
Imitation Learning
任务描述, 是学习到一个policy 逼近 expert的policy.

Imitation learning 又分成了两大类, 分别是
BC: behavior cloing
‒ 简单,有效, 不需要手工设计,
‒ 在训练的时候, BC 会把每一个状态看成是独立同分布的, 这会导致一个问题, 叫 “covariate shift”;
‒ 我理解这里的独立同分布指的就是训练的时候, 数据集中的{(s, a)} 是以相同的概率被采样的.即一个状态对应着一个action; 那如果训练的时候没有见过某个state时, 模型就不知道该怎么做了, 独立同分布可以理解为没有任何规律可严; 比如训练的时候见到的都是路口停车等待的情况, 那如果测试的时候, 路口一辆车都没有, 哪怕是绿灯, 模型可能都不知道是要往前走的;
IOC: inverse Optimal Control 或者是 invese RL.
他们和强化学习的区别可以用一个图来看出来

- BC是输入原始数据, 学习专家的policy,即看专家基于这些数据是如何做的;
- IOC是输入原始数据, 构建一个cost, 在实际用的时候, 会有不同cost的输出选择, 可以基于某种方式选择一个最好的, 比如说选择cost最低的; 代表作可以看NMP[32]
- RL即强化学习, 根据环境不断地回馈与迭代;
Challenges
多模态问题
不同的模态如何融合

这里面很重要的一个是
Language as input
Visual Abstraction
作者把端到端的AD任务分成了两个阶段:
- 编码阶段, 即把state space 编码成为一个latent feature representation.
- 解码阶段, 用中间feature, 解码得到driving policy, 或者其他的输出;
这里面相关的工作有, PPGeo, 它是为了学到一个好的和自驾相关的visual encoder;
World Model
什么是world model, world model 就是理解世界, 理解过去发生的事情, 并能预测将来;
这里面提到, 在图像空间里面做world model不太容易(即预测接下来的图片), 比如一些很重要的细节, 像交通信号灯的变化等就很容易在预测的图片中丢失;
MILE就是把这个难度降低成为了, bev-semantic-segmentation. 这也从某种程度上代表了世界的演化, 所以mile确实是一个world model; 或者说是把world model融合进了policy learning里面了; 或者说把 Dreamer-style world model learning 当成了一个辅助的任务; 想想也自然, 即要想开好车, 首先得理解周围的世界; 这样才会对世界有一个判断和预测;
Multi-task learning with Policy prediction
为什么要做multi-task learning?
除了polcy prediction之外, 加一些其它的任务进来, 还是希望模型确实能够学到对于当前环境的理解;
比如对于图像的输入, 可以加入的有语义分割, 或深度估计,
语义分割是为了让模型学习到场景信息, 添加深度估计是为了让模型学习到几何空间信息;
而且这些辅助任务的增加,对于增加可解释性,也起到了至关重要的作用;
Policy Distillation

● Expert
专家会根据自身的观测, 比如图片和bev结果(不是真值), 来去采取具体的行动(专家自己的行动, 不一定是标准的GT);
● 特权的agent, 直接能够拿到bev的真值, 也能够拿到 ground truth的行动;
● sensorimotor agent 就是一个普通的agent, 只有传感器的输入,
举一个例子, 拿侧方停车为例, 教练就是专家, 教练会根据观测(看后视镜),产生他自己对于环境的理解(BEV), 通过他自己的经验, 做出具体的判断; 可能和标准的行驶轨迹不完全一样, 但是却是合理的; 这里教练对于环境的理解不一定全对, 比如有盲区没有看到;
而Privileged agent 可以理解为全程拿着360的bev结果, 无死角,无盲区, 全程不需要看后视镜, 好像有人告诉他该怎么开一样, 而且采取的行动就是标准答案;
而sensorimotor agent 就可以理解为一个考生了, 完全要靠看后视镜, 才能采取行动;
Interpretability
- 可视化中间的feature, 这种太抽象, 不好理解, 无法评测
- 通过可解释的任务, 比如 semnatic segmentation, depth estimation, object detection, 等任务,
- Cost-learning. 提供一个有意义的cost 函数, 也可以具有可解释性;
- 通过语言进行解释,
- 不确定性建模, 没太理解
Future trends
Modular end to end planning
模块化的端到端, 像Tesla和Wayve 都是这么做的; 但是模块化设计的时候, 不知道什么样的任务是好的,
比如对于感知模块而言, 不知道是目标检测, occupancy,
再比如 bev分割和车道拓扑map, 哪个任务更好;
Foundation Model

自驾的模型的输出得是稳定且精确的, 但是LLM这种生成式的输出只是表现的像一个人, 但是其实并不精确; 所以对于自动驾驶来说, 如何设计一个模型,让其能够稳定地预测 长时间的 2d 或者是3d是非常重要的; 只有这点做到了, 才算自驾中的一个foundation model; 这样的模型才能够再下游的planning任务上有用;
相关文章:
端到端自动驾驶综述
End-to-end Autonomous Driving: Challenges and Frontiers 文章脉路 Introduction 从经典的模块化的方法到端到端方法的一个对比, 讲了各自的优缺点, 模块化的好处是各个模块都有自己明确的优化的目标, 可解释性较强, 且容易debug, 缺点是各个模块优化的目标并不是最终的驾…...
mysql索引、事务、存储引擎
一、索引 索引的概念: 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。使用索引后可以不用扫描全表来定位某行的数据,而是…...
【CMU15445】Fall 2019, Project 2: Hash Table 实验记录
目录 实验准备实验测试 实验准备 官方说明:https://15445.courses.cs.cmu.edu/fall2019/project2/ 实验测试 Task 1: mkdir build cd build make hash_table_page_test ./test/hash_table_page_testTask 2: make hash_table_test ./test…...
PMP证书是不是烂大街了?
大家都知道,PMP证书是项目管理领域的金字招牌。近年来,随着项目管理的重要性日益凸显,越来越多的人开始关注和学习PMP证书。无论是企业招聘还是个人职业发展,PMP证书都成为了一张炙手可热的敲门砖。 那么,PMP证书到底…...
Mac下Docker Desktop安装命令行工具、开启本地远程访问
Mac系统下,为了方便在terminal和idea里使用docker,需要安装docker命令行工具,和开启Docker Desktop本地远程访问。 具体方法是在设置-高级下, 1.将勾选的User调整为System,这样不用手动配置PATH即可使用docker命令 …...
Java实现根据商品ID获取京东商品详情数据,1688商品详情接口,1688API接口封装方法
要通过京东的API获取商品详情数据,您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过京东开放平台API获取商品详情: 首先,确保您已注册成为京东开放平台的开发者,并创建一…...
element-plus指定el-date-picker的弹出框位置
此处记录一下,通过popper-options指定popper出现的位置...
游戏陪玩语音聊天系统3.0商业升级独立版本源码
首发价值29800元的最新商业版游戏陪玩语音聊天系统3.0商业升级独立版本源码 1、增加人气店员轮播 2、优化ui界面丨优化游戏图标展示丨优化分类展示 3、增加动态礼物打赏功能 4、增加礼物墙功能 增加店员满足业绩,才能升级功能 5、增加店员等级不同,…...
TCP/IP网络江湖武艺传承:物理层与通信江湖的幕后(物理层中篇:物理层与现代通信技术)
目录 〇、引言:进入现代通信技术的江湖 一、数字信号与模拟信号:传承与差异...
Nuxt 菜鸟入门学习笔记三:视图
文章目录 入口文件组件 Components页面 Pages布局 Layouts Nuxt 官网地址: https://nuxt.com/ Nuxt 提供多个组件层来实现应用程序的用户界面。 入口文件 App.vue组件 Components页面 Pages布局 Layouts 下面逐一进行介绍。 入口文件 默认情况下,Nu…...
Python Opencv实践 - 霍夫线检测(Hough Lines)
import cv2 as cv import numpy as np import matplotlib.pyplot as plt import randomimg cv.imread("../SampleImages/GreenBoard.jpg") print(img.shape) plt.imshow(img[:,:,::-1])#将图像转为二值图 gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) plt.imshow(gra…...
Weblogic漏洞(四)之 CVE-2018-2894 任意文件上传漏洞
CVE-2018-2894 任意文件上传漏洞 漏洞影响 Weblogic受影响的版本: 10.3.6.012.1.3.012.2.1.212.2.1.3 漏洞环境 此次我们使用的是vnlhub靶场搭建的环境,是vnlhub中的Weblogic漏洞中的CVE-2018-2894靶场,我们 cd 到 CVE-2018-2894&#x…...
C++:string的[ ],at,push_back
1.[ ]运算符和at函数 返回的是string的当前字符串的合法的索引位置的引用,所谓的合法是指小于size的索引 #include <string> #include <iostream>using namespace std;int main() {string str = "hello";cout<<"str:"<<str<…...
C语言(第三十六天)
4. 位操作符:&、|、^ 位操作符有: & //按位与 | //按位或 ^ //按位异或 注:他们的操作数必须是整数。 直接上代码: #include <stdio.h> int main() { int num1 -3; int num2 5; num1 & num2; num1 | num2; nu…...
005_C++数学库常用函数
数学库常用函数 函数 我们其实已经掌握了一些函数,比如主函数main()。还有其他的函数比如一些库中的函数,例:<stdio.h>头文件对应标准输入输出库中的printf()和scanf()、<stdlib.h>标准库头文件对应的标准库中的srand()和rand(),除此之外在C++中常用的还有数…...
Briefings in Bioinformatics投稿经验分享
期刊名: BRIEFINGS IN BIOINFORMATICS期刊名缩写:BRIEF BIOINFORM期刊ISSN:1467-5463E-ISSN:1477-40542023年影响因子/JCR分区:9.5/Q1latex模板:http://static.primary.prod.gcms.the-infra.com/static/site/journals/document/oup-authoring-template.zip?node=7987de4…...
【原创】jmeter并发测试计划
bankQPS 创建线程组 设置并发参数 HTTP请求GET 添加HTTP请求 GET请求 查看结果树 HTTP请求 POST 添加HTTP请求 参数必须设置头信息格式: 添加HTTP头信息 查看结果树 可以选择,仅查看错误日志 汇总报告...
飞腾PSPA可信启动--1 非对称加密
最近计划在梳理下飞腾安全平台架构PSPA,就先从可信启动开始吧。有一些基础的密码学知识,各位在研究可信固件的时候可能会有一些不解,为了便于大家理解,编了几个小故事,希望能够帮助大家理清其中的各种关系。目前可信启…...
基于RabbitMQ的模拟消息队列需求文档
文章目录 一、项目背景二、需求分析1.核心概念2.BrokerServer核心组件3.核心API4.交换机类型5.持久化6.网络通信7.消息应答 三、消息队列模块划分 一、项目背景 什么是消息队列? 消息队列就是,基于阻塞队列,封装成一个独立的服务器程序&#…...
“北科Java面试宝典(211最详细讲解)“
Version : V1.0 北科Java面试宝典一、Java基础面试题【24道】二、JVM虚拟机面试题【14道】三、集合相关面试题【17道】四、多线程 【25道】五、IO【5道】六、网络编程 【9道】七、MySQL以及SQL面试题【20道】八、常用框架【19道】九、中间件和分布式 【54道】十、设计模式面试 …...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
