无人车端到端驾驶模型概述

news2025/7/13 15:18:29

摘要:

通常,端到端驾驶模型使用一个深度神经网络来完成这种映射,网络的所有参数为联合训练而得。这种方法因它的简洁高效而引人关注。

引言

在搭建无人车时,我和小伙伴们的主要工作是建立一个驾驶模型。所谓的驾驶模型是控制无人车行驶的软件,在功能上类似于一名司机,其输入为车辆状态、周围环境信息,输出为对无人车的控制信号。在所有驾驶模型中,最简单直接的是端到端驾驶模型。端到端驾驶模型直接根据车辆状态和外部环境信息得出车辆的控制信号。从输入端(传感器的原始数据)直接映射到输出端(控制信号),中间不需要任何人工设计的特征。通常,端到端驾驶模型使用一个深度神经网络来完成这种映射,网络的所有参数为联合训练而得。这种方法因它的简洁高效而引人关注。

Universal Approximation Theorem(UAT)为这种方法提供了一些理论基础【1】。UAT表明,当使用非常数的有界连续函数作为激活函数时,一个有充分多隐层节点的前馈网络能以任何给定的精度逼近一个定义在欧式空间紧子集上的连续函数。我们认定人的驾驶行为就是一个定义在欧式空间紧子集上的连续函数。那么,必然存在一个神经网络,能以任意精度逼近世界上最好的人类驾驶员。尽管UAT没有告诉我们如何去寻找这个网络,但勇敢的科学家已经踏上了征程。

端到端驾驶模型的发展历程

寻找端到端驾驶模型的最早尝试,至少可以追溯到1989年的ALVINN模型【2】。ALVINN是一个三层的神经网络,它的输入包括前方道路的视频数据、激光测距仪数据,以及一个强度反馈。对视频输入,ALVINN只使用了其蓝色通道,因为在蓝色通道中,路面和非路面的对比最为强烈。对测距仪数据,神经元的激活强度正比于拍摄到的每个点到本车的距离。强度反馈描述的是在前一张图像中,路面和非路面的相对亮度。ALVINN的输出是一个指示前进方向的向量,以及输入到下一时刻的强度反馈。具体的网络结构如图一所示。

图一:ALVINN的网络结构示意图,图片引用于【2】

在训练ALVINN时,其输出的真值被设为一个分布。该分布的中心位置对应于能让车辆行驶到前方7米处的道路中心的那个方向,分布由中心向两边迅速衰减到0。此外,在训练过程中使用了大量合成的道路数据,用于提高ALVINN的泛化能力。该模型成功地以0.5米每秒的速度开过一个400米长的道路。来到1995年,卡内基梅隆大学在ALVINN的基础上通过引入虚拟摄像头的方法,使ALVINN能够检测到道路和路口【3】。另外,纽约大学的Yann LeCun在2006年给出了一个6层卷积神经网络搭建的端到端避障机器人【4】。

近年来,比较有影响力的工作是2016年NVIDIA开发的PilotNet【5】。如图二所示,该模型使用卷积层和全连层从输入图像中抽取特征,并给出方向盘的角度(转弯半径)。相应地,NVIDIA还给出了一套用于实车路测的计算平台NVIDIA PX 2。在NVIDIA的后续工作中,他们还对PilotNet内部学到的特征进行了可视化,发现PilotNet能自发地关注到障碍物、车道线等对驾驶具有重要参考价值的物体【6】。

图二:PilotNet的网络结构示意图,图片引用于【5】

PilotNet之后的模型如雨后春笋般涌现。一个重要的代表是加州大学伯克利分校提出的FCN-LSTM网络【7】。如图三所示,该网络首先通过全卷积网络将图像抽象成一个向量形式的特征,然后通过长短时记忆网络将当前的特征和之前的特征融合到一起,并输出当前的控制信号。值得指出的是,该网络使用了一个图像分割任务来辅助网络的训练,用更多监督信号使网络参数从“无序”变为“有序”,这是一个有趣的尝试。以上这些工作都只关注无人车的“横向控制”,也就是方向盘的转角。罗彻斯特大学提出的Multi-modal multi-task网络【8】在前面工作的基础上,不仅给出方向盘的转角,而且给出了预期速度,也就是包含了“纵向控制”,因此完整地给出了无人车所需的最基本控制信号,其网络结构如图四所示。

图三:FCN-LSTM网络结构示意图,图片引用于【7】

图四:Multi-modal multi-task网络结构示意图,图片引用于【8】

北京大学提出的ST-Conv + ConvLSTM + LSTM网络更加精巧【9】。如图五所示,该网络大致分成两部分,即特征提取子网络和方向角预测子网络。特征提取子网络利用了时空卷积,多尺度残差聚合,卷积长短时记忆网络等搭建技巧或模块。方向角预测子网络主要做时序信息的融合以及循环。该网络的作者还发现,无人车的横向控制和纵向控制具有较强的相关性,因此联合预测两种控制能更有效地帮助网络学习。

图五:ST-Conv+ConvLSTM+LSTM网络结构示意图,图片引用于【9】

端到端驾驶模型的特点

讲到这里,大家也许已经发现,端到端模型得益于深度学习技术的快速发展,朝着越来越精巧的方向不断发展。从最初的三层网络,逐步武装上了最新模块和技巧。在这些最新技术的加持下,端到端驾驶模型已经基本实现了直道、弯道行驶,速度控制等功能。为了让大家了解目前的端到端模型发展现状,我们从算法层面将这种模型与传统模型做一个简单对比,见下表一:

表一:传统驾驶模型和端到端模型对比

传统的模型一般将驾驶任务分割成多个子模块,例如感知、定位、地图、规划、控制等等。每个子模块完成特定的功能,某个模块的输出作为其它模块的输入,模块间相互连接,形成有向图的结构。这种方法需要人工解耦无人车的驾驶任务,设计各个子模块,而子模块的数量甚至高达上千个,导致这项工作费时费力,维护成本高昂。如此多的子模块又对车载计算平台提出了极高的要求,需要强大的算力保证各个模块能快速响应环境的变化。此外,传统驾驶模型往往依赖高精地图,导致其数据成本高昂。这类模型通过规则化的逻辑来做无人车的运动规划与控制,又导致其驾驶风格的拟人化程度弱,影响乘坐的舒适性。作为对比,端到端模型以其简单、易用、成本低、拟人化等特点表现出很强的优势。

人们通常认为端到端驾驶模型和模块化的传统模型之间是彼此对立的,有了模块化模型就不需要端到端了。但在无人配送领域,我认为两者应该是互补的。首先,无人配送车“小、轻、慢、物”的特点【10】极大降低了其安全风险。使端到端模型的部署成为可能。然后,端到端模型可以很好地处理常见场景,而且功耗低。模块化的方法能覆盖更多场景,但功耗高。因此,一个很有价值的方向应该是联合部署端到端模型和模块化模型。在常见场景中使用端到端,在复杂场景中,切换到模块化模型。这样,我们可以在保证整体模型性能的同时,尽最大可能降低配送车的功耗。

那么是不是很快就能见到端到端驾驶模型控制的无人配送车了呢?其实,现在端到端驾驶模型还处在研究阶段。我从自己的实际工作经验中总结出以下几个难点:

1、端到端驾驶模型因其近乎黑盒的特点导致调试困难。

由于端到端模型是作为一个整体工作的,因此当该模型在某种情况下失败时,我们几乎无法找到模型中应该为这次失败负责的“子模块”,也就没办法有针对性地调优。当遇到失败例子时,通常的做法只能是添加更多的数据,期待重新训练的模型能够在下一次通过这个例子。

2、端到端驾驶模型很难引入先验知识。

目前的端到端模型更多地是在模仿人类驾驶员动作,但并不了解人类动作背后的规则。想要通过纯粹数据驱动的方式让模型学习诸如交通规则、文明驾驶等规则比较困难,还需要更多的研究。

3、端到端驾驶模型很难恰当地处理长尾场景。
 

对于常见场景,我们很容易通过数据驱动的方式教会端到端模型正确的处理方法。但真实路况千差万别,我们无法采集到所有场景的数据。对于模型没有见过的场景,模型的性能往往令人担忧。如何提高模型的泛化能力是一个亟待解决的问题。

4、端到端驾驶模型通常通过模仿人类驾驶员的控制行为来学习驾驶技术。但这种方式本质上学到的是驾驶员的“平均控制信号”,而“平均控制信号”甚至可能根本就不是一个“正确”的信号。

例如在一个可以左拐和右拐的丁字路口,其平均控制信号——“直行”——就是一个错误的控制信号。因此,如何学习人类驾驶员的控制策略也有待研究。

在这个问题上,我和小伙伴们一起做了一点微小的工作,在该工作中,我们认定驾驶员在不同状态下的操作满足一个概率分布。我们通过学习这个概率分布的不同矩来估计这个分布。这样一来,驾驶员的控制策略就能很好地通过其概率分布的矩表达出来,避免了简单求“平均控制信号”的缺点。该工作已被 ROBIO 2018 接收。

端到端驾驶模型中常用方法

为了解决上面提到的各种问题,勇敢的科学家们提出了许多方法,其中最值得期待的要数深度学习技术【11】和强化学习技术【12】了。随着深度学习技术的不断发展,相信模型的可解释性、泛化能力会进一步提高。这样以来,我们或许就可以有针对性地调优网络,或者在粗糙的仿真下、在较少数据的情况下,成功地泛化到实车场景、长尾场景。强化学习这项技术在近年来取得了令人惊叹的成就。通过让无人车在仿真环境中进行强化学习,也许可以获得比人类驾驶员更优的控制方法也未可知。此外,迁移学习、对抗学习、元学习等技术高速发展,或许也会对端到端驾驶模型产生巨大影响。

我对端到端驾驶模型今后的发展充满了期待。“Two roads diverged in a wood, and I took the one less traveled by”【13】。

参考文献

[1]  Csáji, Balázs Csanád. "Approximation with artificial neural networks." Faculty of Sciences, Etvs Lornd University, Hungary 24 (2001): 48.

[2]  Pomerleau, Dean A. "Alvinn: An autonomous land vehicle in a neural network." In Advances in neural information processing systems, pp. 305-313. 1989.

[3]  Jochem, Todd M., Dean A. Pomerleau, and Charles E. Thorpe. "Vision-based neural network road and intersection detection and traversal." In Intelligent Robots and Systems 95.'Human Robot Interaction and Cooperative Robots', Proceedings. 1995 IEEE/RSJ International Conference on, vol. 3, pp. 344-349. IEEE, 1995.

[4]  Muller, Urs, Jan Ben, Eric Cosatto, Beat Flepp, and Yann L. Cun. "Off-road obstacle avoidance through end-to-end learning." In Advances in neural information processing systems, pp. 739-746. 2006.

[5]  Bojarski, Mariusz, Davide Del Testa, Daniel Dworakowski, Bernhard Firner, Beat Flepp, Prasoon Goyal, Lawrence D. Jackel et al. "End to end learning for self-driving cars." arXiv preprint arXiv:1604.07316 (2016).

[6]  Bojarski, Mariusz, Philip Yeres, Anna Choromanska, Krzysztof Choromanski, Bernhard Firner, Lawrence Jackel, and Urs Muller. "Explaining how a deep neural network trained with end-to-end learning steers a car." arXiv preprint arXiv:1704.07911 (2017).

[7]  Xu, Huazhe, Yang Gao, Fisher Yu, and Trevor Darrell. "End-to-end learning of driving models from large-scale video datasets." arXiv preprint (2017).

[8] Yang, Zhengyuan, Yixuan Zhang, Jerry Yu, Junjie Cai, and Jiebo Luo. "End-to-end Multi-Modal Multi-Task Vehicle Control for Self-Driving Cars with Visual Perception." arXiv preprint arXiv:1801.06734 (2018).

[9] Chi, Lu, and Yadong Mu. "Deep steering: Learning end-to-end driving model from spatial and temporal visual cues." arXiv preprint arXiv:1708.03798 (2017).

[10] “夏华夏:无人配送场景有助于自动驾驶技术的迭代“,
http://auto.qq.com/a/20180621/029250.htm,腾讯汽车,2018.

http://auto.qq.com/a/20180621/029250.htm,腾讯汽车,2018.

[11] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. "Deep learning." nature 521, no. 7553 (2015): 436.

[12] Sutton, Richard S., and Andrew G. Barto. Reinforcement learning: An introduction. MIT press, 2018.

[13] Frost, Robert. Mountain interval. H. Holt, 1921.

来源 | 美团
 

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

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

相关文章

idea模板配置

idea版本:2023.1 未设置模板的idea,新建类会自动生成类注释 格式如下: /*** author user* date 2023/5/20 0020 14:25*/ public class User {} 其中,user为当前用户名 这里,如果希望将类注释改写成如下&#xff0…

“卷”还是“躺平”?职场人如何在工作中找到价值感?

今天不谈技术,只谈进步。 曾经看过一个回答说“职场人最好的姿势是仰卧起坐”。 卷累的就躺,休息好了再继续卷,卷是常态,“仰卧起坐”也好,“卷的姿势”也好,都是在反复“卷起”的过程中寻找一些舒适和平衡…

Z-Library2023现状

网上基本上年年都会传出来Z-Library要被干掉的消息,我一直觉得,如果那真的发生了,会是人类的悲哀。 由于之前我存储的地址又挂了,所以紧急又寻找了一下。 1.朋友帮忙 朋友帮我搜了一下,发现有三个地址。 他说这第一个…

智能CAN/串口协议转换器LCNET Pro RS-232/485

智能CAN/串口协议转换器LCNET Pro RS-232/485提供一路RS-485、一路RS-232和一路CAN通道,实现CAN与串口RS-485或RS-232之间的双向数据智能转换。每个通道独立隔离,每路通道采用金升阳电源模块和信号隔离芯片实现2500VDC电气隔离,电源输入防反设…

基于Redis的Java分布式锁,接口并发处理,并发方案

Redis的分布式锁很多人都知道,比如使用Jedis的setNx、incr等方法都可以实现分布式锁的功能,但是Jedis需要自己管理连接池,就稍微麻烦一点。 今天介绍的是使用RedisTemplate切面编程自定义注解SPEL来实现分布式锁的功能,封装完成后…

Spring Cloud 容错机试 Hystrix 服务降级 RestTemplate:

Ribon的服务降级操作 雪崩效应: 如果短信服务炸了后面的所有服务就会起连锁反应造成全部服务挂掉,这就是雪崩效应,那么其实短信服务又不是我们主要业务,这个时候我们可以采用服务降级,服务降级就是暂时的把短信服务停…

java学习——ArrayList和泛型(学习记录)

学习资料来自菜鸟教程 ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。 ArrayList 继承了 AbstractList ,并实现了 List 接口。 ArrayList 类位于 java.util 包中,使…

事件驱动模型IO模型

什么是事件驱动模型? 事件驱动模型是一种计算机编程模型,它通过等待事件的触发,在事件被触发时执行对应的处理函数。这种模型下,程序不再按照严格的顺序执行命令,而是以事件为驱动进行执行。事件驱动模型更适合处理大…

[RSA议题分析] Finding Vulnerabilities through Static Analysis and Scripting

文章目录 简介议题分析发现漏洞 - 什么时候/为什么什么是漏洞挖掘漏洞价值 如何挖洞逆向工程环境从哪开始挑战 总结 简介 作者讲了挖漏洞的目标,和一些常用的挖漏洞的方法和如果你像现在开始挖掘二进制漏洞,那么你可以从memcpy开始。除此之外&#xff0…

【SpringBoot系列】Spring EL表达式的简介和快速入门

介绍 Sping EL(Spring Expression Language 简称 SpEL)是一种强大的表达式语言,支持在运行时查询和操作对象,它可以与 XML 或基于注解的 Spring 配置一起使用。语言语法类似于统一 EL,但提供了额外的功能,方法调用和字…

springboot+vue藏区特产销售平台(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的藏区特产销售平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

产品经理如何使用集简云实现工作流程自动化?

场景描述 作为一名产品经理,需要每天面对来自各个部门的需求,平时的工作内容更是复杂繁琐,画流程图、产品开发周期、产品描述、设计团队协作,新产品培训会、用户需求会,或跟进 bug 修复等等等等…… 对内不仅要参与业…

STM32与ESP32下载器设计

文章目录 背景STM32下载器使用现成的DAPlink选择自制DAPlink ESP32/ESP8266下载器连接接口STM32接口ESP32接口 背景 我们常用的单片机主要有STM32和ESP32,其中STM32下载要求SWD下载接口,ESP32下载要求串口,但需要控制ESP32 IO0和EN口高低电平…

前端人必须掌握的抓包技能(原理到实践)

目录 1. 前言 2. 抓包的原理 2.1 什么是抓包? 2.2 HTTP/HTTPS 抓包原理 2.2.1 HTTP 抓包原理 2.2.2 HTTPS 抓包原理 2.3 电脑如何抓手机的包 3. 抓包工具 whistle 3.1 whistle 是什么 如何快速使用 whistle 3.2 whistle 可以做的事情 4. whistle 实战案…

HP打印机网络连接扫描仪失败

财务反映,使用主机上的HP LaserJet Pro M329-HP Scan连接扫描仪提示失败。 测试果然失败,提示如下图: 点击修复后,提示 需要安装HP Print and Scan Doctor。 同意安装,并启动HP Print and Scan Doctor 点击开始,其开始搜索,过程有点慢。 第一次发现其连接错误,居然…

液晶显示常用概念

文章目录 数字液晶显示消隐区水平(行)消隐 HBlank垂直(场)消隐 VBlank RGB格式RGB555RGB565RGB888 VGA驱动原理时钟信号像素时钟同步信号DE信号(有效数据选通信号)DE信号与其他信号的关系 数字液晶显示消隐…

golang webhook源码和案例配合gitee实践

下载golang webhook源码和案例: https://download.csdn.net/download/qq_32421489/87824180 解压后go mod tidy下载依赖包 修改打包环境为Linux: go env -w GOOSlinux 打包命令:go build 打包后的可运行程序上传服务器后:参…

用本地连接集群进行压力测试,让你的测试更快更有效!

目录 引言 背景 详细步骤 1、首先打开终端 2、安装kubectl 3、配置kubeconfig 4.准备本地仓库文件 5.启动集群执行脚本 总结 引言 测试是软件开发中至关重要的一环,但长时间的等待和低效率的测试却常常让人感到烦躁。现在,我们推出了全新的解决…

真的裂开了呀,现在的00后,真是卷死了

谁说00后躺平了,但是有一说一,该卷的还是卷。这不,上个月我们公司来了个00后,工作没两年,跳槽到我们公司起薪22K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …

7个简单步骤创建企业邮箱教程

创建企业邮箱电子邮件地址有几种不同的方法,可以使用电子邮件服务提供商,也可以使用电子邮件托管服务。由于Zoho Mail是世界上最受欢迎的电子邮件服务提供商之一,提供非常简单的帐户设置、大量功能和有竞争力的价格,我们将以它为例…