一种基于强化学习的自动驾驶关键场景生成方法
文献发布时间:2023-06-19 10:57:17
技术领域
本发明涉及一种基于强化学习的自动驾驶关键场景生成方法,属于计算机软件技术领域。
背景技术
如今,大多数感知和预测算法的性能对训练数据的不平衡非常敏感(也称为长尾问题),罕见事件通常很难收集,并且在庞大的数据流中容易被忽略,这极大地挑战了机器人在现实世界中的应用,尤其是在安全关键领域(例如自动驾驶)中。
在自动驾驶行业中,通常会通过仿真来重现在测试驾驶过程中收集的关键场景。现有技术提出了一种称为最坏情况评估的替代方法,以搜索最坏情况评估车辆领域中的控制器。尽管通过最坏情况评估挖掘出的某些情况可能有用,但在现实世界中几乎不可能出现一些极具风险的情况,对于实际使用的指导意义不大。此外,现有技术主要针对自动驾驶的仿真主体(如无人车)等的路线或任务完成情况进行仿真,但是,针对仿真环境的部署如何达到企业需要的关键安全场景要求,还没有成型的方法提出。
强化学习是人工智能机器学习领域里的一个分支,用于控制能够在某个环境下自主行动的智能体,通过和环境之间的互动,包括感知与得到奖励,而不断改进它的行为。强化学习中两个最重要的特征就是试错和滞后奖励。因此,本发明基于强化学习理论提出自动驾驶测试过程中的关键场景生成方法。
发明内容
现有技术中缺少对于自动驾驶仿真环境中动态环境要素的训练,缺少对于动态环境要素如何部署的自动驾驶关键安全场景生成的问题,本发明的目的在于提供一种基于强化学习的自动驾驶关键场景生成方法。本发明针对自动驾驶仿真场景中的动态环境要素,通过强化学习在仿真过程中不断训练模型参数,得到在不同道路场景下的动态环境要素的神经网络模型,由此生成一系列关键场景测试用例。动态环境要素的模型参数包括初始位置、运动速度、运动路线、触发距离等。本发明设计了合理的动态环境要素奖励机制,结合道路场景,充分考虑了行人、车辆、交通灯等动态环境要素的运动轨迹和对于主车的影响。
在本发明中,自动驾驶测试场景的地图库可由测试系统预先设置,也可由用户导入地图场景;主车是指在测试系统中被测虚拟车辆,其运动轨迹和行为模式由仿真系统的决策模块控制;动态环境要素主要包括行人、其他行驶车辆、交通灯三种类型,可在仿真系统中对被测虚拟车辆的行驶造成动态干扰,其中行人是在测试场景中的道路参与者,其他行驶车辆是共同使用测试场景道路的非被测车辆,交通灯是相对静态的交通要素,用于控制路口的交通灯时间变换。
本发明基于强化学习的自动驾驶关键场景生成方法包括以下步骤:
步骤1:测试场景的初始化,从地图库中选择一个道路场景,设置主车的行驶路线,为行人、其他行驶车辆、交通灯三类动态环境要素分别建立初始概率模型;
步骤2:仿真系统的决策模块控制主车开始执行仿真任务;基于强化学习技术,针对于所选的道路场景中三类动态要素的概率模型参数进行训练;
步骤3:三类动态要素最终得到针对所选道路情况的概率模型的最优参数,保存在测试用例库中;
步骤4:循环步骤1-3,直至三类动态要素在地图库中所有道路场景都训练获得概率模型最优参数;
步骤5:从地图库中导入道路组合为任意测试地图,选择仿真环境中用户需要的动态要素,这里的动态要素主要包括行人、其他行驶车辆、交通灯等;
步骤6:根据测试地图中的道路场景,从测试用例库中导入每种道路对应的动态要素概率模型及对应最优参数,生成一系列关键场景测试用例。
进一步的,步骤1具体为:
动态环境要素是除了测试场景中的主车之外的其他动态要素,主要包括行人、其他行驶车辆、交通灯三种类型。
地图库中的道路情况包括单向车道、双向车道、十字路口、丁字路口、Y字路口、高速公路的入口和出口、立交桥等;在不同的道路情况上出现的关键场景不一样,可能存在碰撞、压线、逆行、闯红灯等情形,对于每一种道路情况,会有不同的动态环境要素模型,这些动态环境要素的组合相当于对于该道路情况关键场景的建模。
对于行人和车辆的初始模型,其参数主要包括初始位置、运动路线、运动速度、触发距离等要素;行人的运动路线包括沿路的方向直行、横穿马路等,车辆的运动路线包括直行、左转、右转、掉头、变换车道等,这里行人和车辆的运动路线根据不同的道路情况和初始位置,会有不同的选择项,但所有选择项均须符合交通规则;对于交通灯的初始模型,主要是交通灯的时间设置,包括红灯、绿灯、黄灯的持续时间。
进一步的,步骤2具体为:
步骤2.1:设置模型训练的总迭代次数E;初始化迭代次数e=0;
步骤2.2:获取一个道路场景,选择该道路场景中需要训练的各动态要素类型(行人、其他行驶车辆、交通灯),获取主车行驶路线,获取每类动态要素的初始模型,选定的每类动态要素数量大于或等于1;需要注意的是,对于行人和车辆来讲,设定的运动路线和初始位置都是遵守交通规则的;
步骤2.3:对于每个道路场景,其状态S是确定的,状态S包括道路类型、主车路线、主车速度,可根据主车的当前状态计算出所选道路场景中每个动态要素的概率分布(主车的当前状态在步骤1中已经确定;道路场景和主车的当前状态都是已知条件,比如在测试前已经设置好了:道路场景是十字路口,主车当前的状态是右转),其中行人和车辆的概率分布公式如下:
其中,式(1)中第i个动作要素a
第i条运动路线是通过对连续随机变量li_init_index的离散化得到离散型变量li_init_state,离散型变量li_init_state是第i个场景li的运动路线初始状态。运动路线的复杂性在于可能的路线选项强依赖于道路结构和初始点,假设在某具体条件下运动路线的选项总数为N(即运动路线的可选择的总数),那么li_init_index的条件概率密度可利用神经网络构造[0,1]区间上的概率密度函数进行建模,公式如(3):
li_init_index~P(li_init_index|S,a
连续随机变量li_init_index的离散化详见步骤2.4。
交通灯持续时间是连续型变量,交通灯持续时间的概率分布公式如(4):
式(4)中的light_init_index、t_red、t_green、t_yellow分别表示交通灯的初始状态(初始红、绿、黄颜色)、红灯持续时间、绿灯持续时间、黄灯持续时间。
交通灯持续时间t_red、t_green、t_yellow的条件概率密度
P(t_red|S,a
交通灯的初始状态light_init_state是离散型变量,可通过将连续随机变量light_init_index的离散化得到,light_init_index的条件概率密度可利用神经网络构造[0,1]区间上的概率密度函数进行建模得到公式(5);
light_init_index~P(light_init_index|S,a
连续随机变量light_init_index的离散化详见步骤2.4。
步骤2.4:对每个动态要素的概率分布进行随机采样,得到这个状态S下的动态要素模型的动作参数,即对于行人得到是的初始位置X、初始位置Y、运动速度v、运动路线L、触发距离D,对于车辆得到是的初始位置X、初始位置Y、运动速度v、运动路线L、触发距离D,对于交通灯得到的是交通灯的初始状态light_init_state、红灯时间设置t_red、黄灯时间设置t_yellow、绿灯时间设置t_green;
步骤2.4.1:对于连续型随机变量,如初始位置(X,Y)、运动速度v、触发距离D、红灯时间设置t_red、黄灯时间设置t_yellow、绿灯时间设置t_green,使用高斯分布N(μ,σ)对于动态要素进行建模,对于离散型随机变量,如交通灯的初始状态light_init_state、运动路线L,使用多项分布对于动态要素进行建模,神经网络(NN)用于条件概率推断;
高斯分布概率抽样公式如下:
μ
ε~N(0,1) (7)
a
随机变量a
b
其中l
步骤2.4.2:对于离散型随机变量,如运动路线L、交通灯的初始状态light_init_index,[0,1]分布的概率抽样公式如下:
1)对于行人和其他行驶车辆的运动路线L,已知li_init_index的概率服从公式(3),首先对于路线的初始状态li_init_index进行概率抽样,利用连续型随机变量li_init_index可进一步构造的离散随机变量li_init_state,选择第k条路线时,连续型到离散型的对应关系如下:
li_init_state=k,其中li_init_index∈((k-1)/N,k/N) (10)
2)对于交通灯的初始状态,已知light_init_index的概率服从公式(5),首先对于交通灯的初始状态light_init_index进行概率抽样,然后进行light_init_index到light_init_state的映射,可进一步构造交通灯的初始状态随机变量light_init_state如下:
从而得到交通灯的初始状态(初始红、绿、黄颜色)。
步骤2.5:将步骤2.4的随机采样结果作为条件对主车进行测试,使用运行结果计算奖励值R,奖励值R的设计原则是希望出现一些主车事故或主车违反交通规则的关键场景,计算公式如下:
式(12)中的w1、w2、w3、w4、w5均是非负的权重系数,且w1+w2+w3+w4+w5=1;这里的ped表示行人动态要素的集合,c表示其他行驶车辆动态要素的集合,l表示交通灯动态要素的集合,r表示被测对象(主车)违反交通规则的集合,p表示被测对象(主车)惩罚项的集合。
其中,式(12)第一项R
这里的b1、b2均是非负的权重系数且b1+b2=1;
式(13)的
式(13)的
式(12)第二项R
这里的c1、c2是非负的权重系数且c1+c2=1;
式(16)的
式(16)的
式(12)第三项R
R
这里的f1、f2均是非负的权重系数且f1+f2=1;
式(19)的R
式(19)的R
式(21)的dis
式(12)第四项R
R
这里的g1、g2、g3均是非负的权重系数且g1+g2+g3=1;
式(22)的R
式(22)的R
式(22)的R
式(12)第五项R
其中,η
步骤2.6:利用策略梯度方法对动态要素的概率模型进行优化,目标函数公式如下:
其中,a是从策略分布π
对于目标函数做N次采样求近似,则用于更新模型参数φ的梯度为:
为了使得策略的选择尽可能多样,在目标函数中添加一个熵项H(π
H(π
π
参数φ的更新公式如下,利用梯度下降法优化参数取得上式最小值,从而取得最大的奖励值和熵值:
当使用自回归高斯分布对策略π
π
步骤2.7:迭代次数e加1;当模型训练的迭代次数e小于E时,返回步骤2.2;当模型训练的迭代次数等于E时,完成动态要素的模型参数训练。
进一步的,步骤4中得到的最终测试用例具体为:
对于选定的道路情况,其测试场景的状态即是确定的,三类动态要素经过基于强化学习的迭代训练之后,每类动态要素的模型均会获得关键场景配置参数的概率分布,关键场景配置参数包括初始位置、触发位置、运动速度、运动路线、交通灯的变换时间等;基于这些动态要素模型的配置参数的概率分布,可以快速生成无人车仿真的关键场景测试用例。
进一步的,步骤5中测试用例的地图是在地图库中经过基于强化学习的迭代训练的任意道路情况的自由组合。
进一步的,步骤6的测试用例生成具体为:
步骤6.1:在地图库中选择需要的道路类型,任意自由组合形成测试用例地图;
步骤6.2:设置主车行驶路线,选择动态要素的类型和数量;
步骤6.3:道路场景加入主车行驶路线后,即确定了测试场景的状态S;根据道路情况和主车运动轨迹,可在测试用例库中找到状态S下训练好的动态要素模型M;对于第i个状态Si,动态要素模型M获得动作参数概率分布Pi,根据步骤2.4对于概率分布进行随机采样得到动作参数的具体值ai,对于行人和车辆,ai包括初始位置X、初始位置Y、运动速度v、运动路线L、触发距离D,对于交通灯,ai包括交通灯初始状态light_init_state、红灯时间设置t_red、黄灯时间设置t_yellow、绿灯时间设置t_green,并对动态要素设定动作参数的具体值;
步骤6.4:生成最终的测试用例。
本发明的积极效果为:
(1)现有技术中对于自动驾驶的仿真多数考虑无人车本身的仿真,而忽略了仿真场景中的动态环境要素,本发明重点研究了场景中动态环境要素的初始位置、运动速度、运动路线、触发距离等,基于强化学习技术,使得动态要素的运动在符合实际情况的前提下,可以快速产生一系列关键场景的测试用例。
(2)仿真场景中的动态环境要素通过强化学习技术在仿真中训练得到自动驾驶中高概率发生碰撞等事故的关键场景,避开无效的动作,解决了训练过程中无效探索多、训练速度慢的问题,显著提高了训练效率。
(3)奖励机制设计合理,结合真实交通规则,充分考虑了行人、车辆、交通灯等对于主车的影响。
(4)将自动驾驶的测试场景生成放在参与者很少的关键场景上,例如一个AV、一个动态车辆,概率分布计算简便,模型训练简单易实现。
附图说明
图1为自动驾驶关键场景生成方法流程图;
图2为三类动态要素进行模型参数训练流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
一种基于强化学习的自动驾驶关键场景生成方法,其生成方法包括以下步骤:
步骤1:测试场景的初始化,从地图库中选择一个道路场景,设置主车的行驶路线,为行人、其他行驶车辆、交通灯三类动态环境要素分别建立初始概率模型;
步骤2:主车开始执行仿真任务;基于强化学习技术,针于所选的道路情况,三类动态要素进行概率模型参数训练;
步骤3:三类动态要素最终得到针对所选的道路情况的概率模型最优参数,保存在测试用例库中;
步骤4:循环步骤1-3,直至三类动态要素在地图库中所有道路场景都训练获得概率模型最优参数;
步骤5:从地图库中导入道路组合为任意测试地图,选择仿真环境中用户需要的动态要素,这里的动态要素主要包括行人、其他行驶车辆、交通灯等;
步骤6:根据所选道路,从测试用例库中导入每种道路对应的动态要素概率模型,生成一系列关键场景测试用例。
进一步的,步骤1具体为:
动态环境要素是除了测试场景中的主车之外的其他动态要素,主要包括行人、其他行驶车辆、交通灯三种类型。
地图库中的道路情况包括单向车道、双向车道、十字路口、丁字路口、Y字路口、高速公路的入口和出口、立交桥等;在不同的道路情况上出现的关键场景不一样,可能存在碰撞、压线、逆行、闯红灯等情形,对于每一种道路情况,会有不同的动态环境要素模型,这些动态环境要素的组合相当于对于该道路情况关键场景的建模。
对于行人和车辆的初始模型,其参数主要包括初始位置、运动路线、运动速度、触发距离等要素;行人的运动路线包括沿路的方向直行、横穿马路等,车辆的运动路线包括直行、左转、右转、掉头、变换车道等,这里行人和车辆的运动路线根据不同的道路情况和初始位置,会有不同的选择项,但所有选择项均须符合交通规则;对于交通灯的初始模型,主要是交通灯的时间设置,包括红灯、绿灯、黄灯的持续时间。
在一实施例中,行人和车辆的运动路线根据不同的道路情况和初始位置,会有不同的选择项,例如:道路情况选择直行马路,行人的初始位置在马路一侧的人行道上,那么行人的运动路线是沿着人行道直行;道路情况选择十字型路口,行人的初始位置在路口,那么行人的运动路线是穿过马路。
在一实施例中,道路情况选择十字型路口;行人的初始位置在十字路口的东北角,运动路线是通过十字路口的两条马路,到达十字路口的西南角;车辆的初始位置在主车右后方,运动路线是与主车一起通过十字路口,可能出现并道的情况;交通灯的时间设置为红灯60秒,绿灯30秒,黄灯3秒。
步骤2的描述详见发明内容。
进一步的,步骤4中得到的最终测试用例具体为:
对于选定的道路情况,其测试场景的状态即是确定的,三类动态要素经过基于强化学习的迭代训练之后,每类动态要素的模型均会获得关键场景配置参数的概率分布,关键场景配置参数包括初始位置、触发位置、运动速度、运动路线、交通灯的变换时间等;基于这些动态要素模型的配置参数的概率分布,可以快速生成无人车仿真的关键场景测试用例。
进一步的,步骤5中测试用例的地图是在地图库中经过基于强化学习的迭代训练的任意道路情况的自由组合。
进一步的,步骤6的测试用例生成具体为:
步骤6.1:在地图库中选择需要的道路类型,任意自由组合形成测试用例地图;
步骤6.2:设置主车行驶路线,选择动态要素的类型和数量;
步骤6.3:道路场景加入主车行驶路线后,即确定了测试场景的状态S;根据道路情况和主车运动轨迹,可在测试用例库中找到状态S下训练好的动态要素模型M;对于第i个状态Si,动态要素模型M获得动作参数概率分布Pi,根据步骤2.4对于概率分布进行随机采样得到动作参数的具体值ai,对于行人和车辆,ai包括初始位置X、初始位置Y、运动速度v、运动路线L、触发距离D,对于交通灯,ai包括交通灯初始状态light_init_state、红灯时间设置t_red、黄灯时间设置t_yellow、绿灯时间设置t_green,并对动态要素设定动作参数的具体值;
步骤6.4:生成最终的测试用例。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的原理和范围,本发明的保护范围应以权利要求书所述为准。
- 一种基于强化学习的自动驾驶关键场景生成方法
- 一种基于蒙特卡洛树搜索的关键词生成方法、基于强化学习的关键词生成模型及电子设备