写点什么

不确定性世界中的行为预测

  • 2021-06-27
  • 本文字数:3889 字

    阅读完需:约 13 分钟

不确定性世界中的行为预测

行为预测是自动驾驶系统的隐含层


实现汽车的自动驾驶被认为是我们这一代最大的工程挑战之一¹。最主要的原因之一,是自动驾驶汽车需要在复杂且多变的环境中,实现安全且舒适的驾驶行为。简单来说,自动驾驶系统的输入是通过大量传感器收集的自身及周围环境的各种信息,输出是刹车、油门、方向盘等相关的驾驶动作。


实现一个完整的自动驾驶系统,有很多种不同的方案,其中最大胆的可能是基于深度学习和强化学习,训练一个端到端的模型,即以原始的传感器数据作为输入,模型直接输出控制参数。然而这样的方案,目前还仅停留在学术探索的阶段,离实际的工程应用还比较远。



图 1. 自动驾驶系统示意图


工程实践中,一般采取分而治之的方法实现,也就是分为感知、预测、规划与控制等具有一定上下游关系的子系统。这样的划分为系统带来了比较好的可解释性,方便持续的迭代和改进。此外,这样也是符合直觉的:首先,通过感知模块得到周围环境和交通参与者的当前状态;然后,通过预测模块预判其它交通参与者未来一段时间的行为;最后,基于对环境的感知和预测,自车做出合理的决策和轨迹规划。可见,行为预测类似于一个隐含层,通过它可以衔接上下游,也就是综合当前和历史的环境信息给出对于未来的预测,为下游的决策和规划提供及时和准确的信息。


行为预测的基本方法和框架


▍1. 行为预测方法从简单到复杂的演进过程


图 2. 行为预测方法从简单到复杂的演进过程示意²


行为预测方法从简单到复杂的演进过程基本包括图 2 所示的几个阶段。其中最简单和直接的预测方法是基于运动学模型,采用外推的方法预测未来轨迹。也就是基于物体当前的运动状态(朝向、速度、加速度、角速度等),假设物体会按照某种物理规律运动(例如常速度和常角速度假定),从而推导出未来的运动轨迹。但是,这种方法对于中长期时间尺度的预测显然是不适用的。原因在于基于运动学模型的方法,只考虑了物体自身的运动学特征,并且实际物体的运动方式也很可能不符合运动学模型的假设。


所以,一种比较自然的扩展思路,就是需要引入地图的辅助和约束,例如车道线、道路可行驶区域以及道路的连接关系等几何和拓扑信息。然后,从语义的层面对物体的运动模式进行描述,例如变道、左转、直行、右转等,并通过引入一些先验假设(例如车辆会尽快回到道路中心线以及遵从道路连接关系等),最后基于拟合、差值或者优化等方法生成预测轨迹。例如图 3 所示,为了能够准确预判自车右前方摩托车从自行车道切入机动车道的行为,我们需要知道自行车道、机动车道以及花坛之间的几何关系。


图 3. 需要引入地图相关信息

才能准确理解和预测摩托车的切入行为


再更进一步,为了能够预测更复杂的交互行为,我们还需要考虑除地图以外的更多场景信息,例如红绿灯、车流、各种交通参与者之间的交互,以及基于交通规则形成的特定驾驶行为习惯。例如图 4 所示,为了正确预测自车右前方车辆的右转同时避让直行自车的行为,我们需要引入红绿灯、路权等信息以及一些先验假设(直行车辆路权高于右转车辆)。


从上面的讨论可以看到,在行为预测方法中,我们需要引入很多假设和规则。可以想象,当物体的行为不符合这些假设时,我们的预测很可能失效。因此,我们还需要引入数据驱动的方法,从真实的驾驶行为数据中,提取各种可能的行为模式,作为某种先验,帮助完善行为预测。


▍2. 行为预测的基本框架


图 5. 行为预测框架的基本思路


在预测方法从简单到复杂的演进过程中,基于行为预测问题本身的特点,其框架设计逐步形成并遵循以下基本思路:


首先,判断交通参与者大致的行为目的或者意图,例如是否会进入某个车道或从某个出入口驶进或驶出,是否有变道、左转等意图。也就是粗粒度地对意图或者目的地进行预测。具体的实现算法有多种选择,例如基于启发式规则的运动目标关联。如图 6 所示,前方对向来车突然违规驶入马路对面的停车场(高精地图有标注该区域)。为了及时预测该行为,我们可以基于该车的运动状态和场景信息,将其与停车场区域关联。


图 6. 运动目标关联:对向来车进入停车场/工厂等区域


另外,我们还可以基于机器学习模型做意图分类。例如图 7 所示,我们可以基于历史数据,训练模型识别行人的横穿马路意图。当然,这种粗粒度的行为目的或意图的预测,不一定需要在语义层面进行描述,也可以表达为地图中的某个地点或区域³。


图 7. 意图分类:行人从被遮挡区域

快速跑出并横穿马路的意图


其次,在大致目的或意图的约束下,做更详细的轨迹预测。这一步骤可以采用几何的、优化的或者基于机器学习的方法,通过生成或预测具体行驶轨迹来描述交通参与者具体如何实现该意图。


最后,对所有可能的候选轨迹进行评估,输出可能性最高的一条或若干条轨迹给下游进行决策和规划。轨迹的评估也有多种不同的方法,比如基于运动学可行性和碰撞风险,计算候选预测轨迹的代价,或者基于机器学习模型估计预测轨迹的概率。


基于以上步骤,预测模块能够在意图和轨迹层面,对交通参与者的未来行为进行描述。


行为预测的不确定性


▍1. 不确定性的刻画:基于行为规划的预测 vs. 基于机器学习的预测


基于上述基本思路,实现预测方法的过程中,最具挑战的是对人的行为的不确定性的刻画和处理。交通参与者未来的行为本质上是多模态的 。也就是说,我们观察到的实际发生的未来行为(轨迹),不一定是此刻唯一的解,尤其考虑到我们的观测是不充分的。这是预测问题与大部分感知问题根本不同的一点。所以,预测模块如何刻画这种不确定性,以及决策与控制模块如何处理这种不确定性,是实现自动驾驶的关键。


行为预测中大致可以按照两种思路来刻画不确定性。一种是规划式预测,即把预测问题变成一个对其他交通参与者的规划问题。如图 8 所示,自车右后方车辆快速超车并变道进入自车车道。考虑到其车道前方有一辆慢速大货车,为了避免追尾,其最优轨迹是通过自车与大货车中间的空档进行变道。因此,基于规划的预测能够刻画这种可能性,从而实现正确的预测。再如图 9 所示,大货车打右转向灯逆行从停车位驶出,基于该场景的识别以及转向灯,我们需要首先判断其从停车位驶出的意图,然后规划出一条合理可行的轨迹,从而自车能够及时合理避让。


当然,我们也必须考虑到,其它交通参与者未必会按照规划的最优轨迹行驶。因此,我们还需要结合另一种思路来准确预测更多可能性,也就是数据驱动的方法。我们可以从实际驾驶数据中抽象出可能的行为模式,利用机器学习、深度学习的方法来进行预测。如图 10 所示,从辅路右转进入主路的车辆,其转弯半径是有不确定性的。在大量观测数据中,我们能够发现各种不同转弯半径的驾驶行为,基于机器学习的方法,我们能够以可能行驶区域分布的方式,刻画转弯半径的不确定性,从而为自车在这种场景下减速慢行、谨慎驾驶提供信息。


 图 10. 轨迹的不确定性:车辆转弯的半径


▍2. 不确定性的处理:与行为决策的关系


假定我们能够及时准确地刻画交通参与者未来行为的不确定性,对于实现自动驾驶而言,另一个巨大的挑战是如何处理这种不确定性,尤其是涉及自车与其它交通参与者强交互的场景。当自车面对不确定性环境的时候,往往需要做出相对保守的决策,例如减速慢行,增加观测时间,使得上游感知和预测有足够的信息得到相对确定的结果,从而自车能够进一步动态地调整自身的决策。


如图 11 所示,行人从绿化带穿出,然后急转向沿路边行走。在行人从绿化带穿出的过程中,我们对其未来行为是难以预测的,无论是在意图还是轨迹层面。这也就意味着,对于该行人,我们给出的意图和轨迹预测都具有很大的不确定性(置信度低、方差大)。下游的决策模块就需要基于这样的不确定性,做出合理的自车行为决策,例如适当减速,待感知和预测结果足够置信以后再加速通过。


图 11. 不确定性的行为:行人穿越绿化带进入路面


再比如图 12 所示自车与自行车强交互的场景。对于左前方横穿马路的自行车是否会避让自车,在其明显停车之前,也是高度不确定的。考虑到其切入自车道的可能性,以及碰撞后果的严重性,自车合理的行为决策是减速避让,待其明显具有避让行为时(此时预测具有较大的确定性),再加速通过。


从以上讨论可以看出,如何准确地刻画周围环境的不确定性,并且在决策和规划层面处理好这种不确定性,是实现智能化自动驾驶系统的关键。


探索与展望


在算法层面,实现自动驾驶系统最具挑战的问题是,如何在一个高度不确定性的环境中进行安全的驾驶决策和规划。而其必不可少的一环是及时和准确地对环境的不确定性进行描述和预测。近几年来,有越来越多的学术文章给出了一些探索和尝试。总结起来,解决行为预测问题的重点、难点方向包括:


  • 特征工程:如何更好地提取、组织⁵和利用历史特征、场景特征(场景理解)、交互特征等进行预测

  • 非结构化行为的预测:如何描述和预测那些未遵循道路结构或者交通规则的交通行为,尤其是稀疏的、异常的长尾行为

  • 不确定性:如何能够以决策和规划模块方便处理的方式,及时和准确地刻画不确定性


以上这些方向的探索和突破,需要大量的数据,尤其是长尾数据的收集(例如通过滴滴网约车平台部署大量具有数据收集能力的车辆),稳定的线上、线下系统的搭建,以及能够充分利用海量数据的创新算法的研发。在探索的过程中,一点点突破的累加,能够帮助我们逐渐消除不确定性,确定实现自动驾驶的最佳方案。就像不确定性世界中的行为预测,需要在不确定性中寻找确定性。只有这样,才能最终实现任意复杂交通环境下的自动驾驶。


头图:Unsplash

作者:滴滴自动驾驶

原文:https://mp.weixin.qq.com/s/L0eJouA9Xp6lWreLlBjfSw

原文:不确定性世界中的行为预测

来源:滴滴技术 - 微信公众号 [ID:didi_tech]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021-06-27 08:001782

评论

发布
暂无评论
发现更多内容

Canvas入门实战之用javascript面向对象实现一个图形验证码

徐小夕

Java 大前端 canvas

1428万的Adobe采购纠纷 | 法庭上的CTO(10)

赵新龙

CTO 法庭上的CTO

生产环境全链路压测建设历程之十 淘宝网2013年的建设过程

数列科技杨德华

【小菜学网络】数据链路层概述

fasionchan

网络编程 计算机网络 网络协议 TCP/IP

第三代人工智能基础设施背后,是一次技术应用的常识普及运动

脑极体

SSO的通用标准OpenID Connect

程序那些事

OAuth 2.0 程序那些事 授权框架 安全框架 openid

SPI 在 Dubbo中 的应用

vivo互联网技术

Java jdk dubbo spi

通过Postman和coding.net发布API

太极程序员

Postman API

探营苏州数字人民币试点

CECBC

数字人民币

架构师训练营W09作业

Geek_f06ede

anyRTC实时音视频-社交娱乐解决方案

anyRTC开发者

ios android 音视频 WebRTC RTC

【经验分享】RTC技术系列之音频编解码

Hanson

码了2000多行代码就是为了讲清楚TLS握手流程(续)

Gopher指北

https Go 语言

旷工三天被开除,公司赔偿十万五 | 法庭上的CTO(9)

赵新龙

CTO 法庭上的CTO

从零开始学习Java8 Stream,看这篇就够了

Silently9527

Java stream java8

在线医疗的发展和优势

anyRTC开发者

android 音视频 WebRTC RTC 医疗方案

DolphinDB与MongoDB在时序数据上的对比测试

DolphinDB

mongodb 分布式系统 时序数据库 DolphinDB 数据库开发

如何快速打造一款钉钉 Go sdk

Ceelog

钉钉 企业微信 Go 语言

硬核编程:30天=一个网站+一份周刊

老魚

程序员 建站 web全栈

Java并发编程:多线程如何实现阻塞与唤醒

李尚智

Java并发

架构之书:雄伟与《Domain Driven Design》

lidaobing

架构 领域驱动设计

量化交易APP系统软件开发(现成)

系统开发

JVM从概述到调优图文详解,含思维脑图深度剖析!

Java架构师迁哥

甲方日常 68

句子

工作 随笔杂谈 日常

期权代持的“坑”里,加拿大人也在 | 法庭上的CTO(11)

赵新龙

CTO 法庭上的CTO

数据类型第2篇「字典和集合的原理和应用」

清菡软件测试

测试开发

C语言服务器编程必备常识

MySQL从删库到跑路

c

架构作业--大数据

Nick~毓

架构师训练营 Week8 - 课后作业

极客大学架构师训练营

Spring Boot 集成 Redis

噜噜猫

Spring Boot

盘点2020 | 30岁了,我终于入门编程了

盘点2020

不确定性世界中的行为预测_架构_滴滴技术_InfoQ精选文章