自动驾驶预测模块实践总结

自动驾驶预测模块实践总结

Featured image

1. 概述

1.1 预测模块存在的价值和必要性

预测模块不是为了存在而存在,早期的一些辅助驾驶功能,如:跟车自适应巡航,没有预测模块也是可以达到效果预期的。 Apollo3.0架构图

随着对辅助驾驶功能要求逐步提高,需要在更复杂的工况下,完成安全、舒适、高效的控车,对周边交通参与者的意图以及未来轨迹有更准确的了解与把握成为必要条件之一,预测模块主要功能就是对周边交通参与者的意图&轨迹进行预测;

复杂工况下的博弈 复杂工况下的博弈

case1:早期ACC策略,主要关注前车速度和跟车距离,当面临前车因为前方路况突然切出时,自车很可能响应不及时;如果能提前预测出前车切出,则可以更早的将关注点放到前车前方,争取更多的时间; 前车切入切出

case2:泊车业务第一版,针对行人策略时划定一个危险区域,只要区域内有行人,就刹停;
进阶版:可以准确识别动静,如果静态障碍物则选择是否绕障碍,如果时动态障碍物,则刹停;
再次进阶:针对动态障碍物,区分沿途和横穿,针对横穿目标刹停,针对沿途目标进行绕障或者直行; 再次进阶:针对横穿目标,结合轨迹进行强让决策; 行人横穿

预测模块在自动驾驶中的定位

核心点在于:自动驾驶是一项系统工程,目标是实现安全、舒适、高效的控车
预测模块是系统工程的一环,预测的目标是配合决策规划模块完成系统工程的目标; 系统目标

常见误区:

价值点:

示例:目标加速度系数的调整,解决跟车刹不停问题 0.5 → 1.0 减速模型 加速模型 解决方案优化:减速场景下,系数0.5 → 1.0,加速场景下,保持0.5不变;

轨迹跳变:为了防止轨迹跳变,在加速度在0附近时,对系数加了平滑策略;

由rule base到learning base的转型

learning预测架构

迭代案例(Demo):部分斜穿行为被识别为同向行驶,不刹车或者刹车晚;
step1:寻找对应决策逻辑 斜穿被识别为同向 代码层面的语义如下:

if(all_headding > -1.3 && all_headding < 1.23){
    识别为同向
}

示意图

step2:寻找对应空间下,同向标签的样本数值分布情况 示意图

step3.1:快速解决方案
结合样本分布情况以及人工经验,对决策树进行后剪枝处理;具体逻辑是:
根据先验知识,走到某个节点时,切换为人工规则;

step3.2:长期优化
寻找数据分布中的边缘值对应的case
基本都是标注错误,目标先“横穿”,后转弯为同向;但是标注的时候起止时间没有控制好;

调整训练数据,重新训练模型;

PS:2022年,特斯拉AI day的分享上,也提到了决策树的方案;
具体细节没有详细展开,但无非就是分裂方式基于if else,还是先做线性加权,然后再用if else选择左右;
特斯拉AI Day

实际上决策树是在追求可解释性与算法效果之间平衡的绝佳算法,2018年之前,kaggle竞赛中很多最优方案就是基于决策树的;(gbdt、xgboost、light gbm等),2018年之后,即使在神经网络逐渐流行的情况下,仍然有很多决策树相关的算法在被广泛使用,典型的如:Facebook的GBDT + LR推荐机制;

rule base开发的本质

① 不断的寻找、发现新的划分维度
② 寻找不同维度的最佳切分点
③ 寻找维度之间的有效组合方式 特斯拉AI Day 扩展维度的一些思路:

某一维度 + 时间维度,扩展出变化趋势或者平均值的维度
(加速度、yaw rate等;很多问题,根据某一时刻下的空间位置信息很难分析解决,但如果根据连续的一段时间的空间位置数据,就能得到更多有效信息);
相同维度,不同实体之间的差值对比;
(比如:目标走向和车道线走向的夹角;某一动态目标和静态目标的相对位置关系;时距差值)
不同维度之间的计算关系:
距离 / 速度 = 时距; f(距离,当前速度,碰撞点) = 减速度
同一个维度指标,不同来源的校验;(障碍物box朝向、障碍物速度方向、位移方向、不同传感器的值)

对rule base & learning base & deep learning的看法

从算法效果的能力上限来讲,一定是:deep learning > learning > rule
而且随着数据、算力的增加,learning的占比权重会逐步提高;

实际落地,还要考虑很多因素,如:

三种解决方案并不是互斥的,反而应该是相互配合,取长补短;

就目前对learning & deep learning的应用来看,实际落地过程中,几乎都是算法 + 规则的方式实现,比如:
目前量产的自动驾驶系统,感知模块以深度学习为主,但仍然有后处理模块和融合模块来解决一些明显的误检、漏检问题;

做好预测的关键要素

数据驱动策略

效率工具 ⽀撑批量数据处理、分析、可视化的⼯具/平台;
⽀撑具体问题的Bug分析、根因定位的⼯具(日志体系、可视化工具)
⽀撑⼯程⼦逻辑调⽤频率,效果评估的工具;

流程
技术方案评审
code review
仿真评测

deeplearning的方法综述

以2020年为分割线,2020之前主要以图像领域的深度学习技术进行轨迹预测,对Image进行栅格化,基于CNN算子进行编码 - 解码;
2020年,vector net论文提出向量方式对输入进行编码,这种方式逐步成为主流,并且逐步应用attention机制进行编码和解码; vector net

架构方面,基本采用encoder-decoder架构; vector net

关于transfmer和attention机制的应用 transformer

一些典型的预测范式 transformer

关于数据复用降低计算复杂度的一些算法,目前也有一些主机厂逐步探索落地
如:HIVT、QC-NET、QC-next