论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》

论文发表在ISSTA23上,作者单位:新加坡管理大学、南洋理工大学

1 摘要

测试自动驾驶系统(ADS)是确保自动驾驶车辆可靠性和安全性的一项关键任务。 现有的方法主要集中于搜索安全违规,而忽略了生成的测试用例的多样性,这可能会产生许多冗余的测试用例和失败。 这种冗余故障会降低测试性能并增加故障分析成本。 在本文中,我们提出了一种新颖的行为引导模糊技术(BehAVExplor)来探索自动驾驶汽车的不同行为并检测各种违规行为。 具体来说,我们设计了一个高效的无监督模型,称为BehaviorMiner,来表征自我车辆的行为。 BehaviourMiner 从给定场景中提取时间特征,并执行基于聚类的抽象,将具有相似特征的行为分组为抽象状态。 如果新的测试用例触发新的行为(例如,覆盖新的抽象状态),它将被添加到种子语料库中。 由于行为多样性和一般违规反馈之间的潜在冲突,我们进一步提出了一种能量机制来指导种子选择和突变。 种子的能量可以量化它的品质。 我们在 Apollo(一个工业级 ADS) 和 LGSVL 仿真环境上评估了 BehAVExplor。 实证评估结果表明,BehAVExplor 可以有效地发现比最先进的方法更多样化的违规行为

2 研究背景

(1)现有方法的局限性

现有方法主要集中在发现违规场景,而没有很好地考虑生成场景的多样性。如图1(a)所示,一些有可能产生新的关键场景(导致新的违规行为)的种子被忽略。 这可能会导致生成冗余的关键场景,从而限制测试的有效性并增加错误分析的成本。

基于此观察,本文提出了一种新颖的模糊测试方法,旨在通过纳入行为多样性的指导来提高生成场景的多样性(例如,将图 1(b)中的橙色圆圈添加到种子语料库中)。

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第1张图片

(2)提高场景多样性的挑战

  • 挑战1:考虑到复杂的交通条件和车辆的时间运动,描述给定场景的行为多样性具有挑战性。

  • 挑战2:追求行为多样性和发现违规场景这两个目标可能会发生冲突

(3)针对上述挑战的解决办法

  • 针对挑战1的解决方法:我们提出了一种基于聚类的抽象方法,将相似的行为(来自多个场景)表征为抽象状态。

  • 针对挑战2的解决方法:我们提出了一种能量机制,种子能量衡量种子的潜力,根据种子的失败触发率、违规程度和选择频率计算得出。 我们进一步提出了一种基于能量的种子选择策略和一种自适应突变,可以提高测试性能

(4)贡献

  • 我们提出了一种行为引导的模糊方法 BehAVExplor,来发现具有不同行为的关键场景。

  • 我们提出了一种基于聚类的抽象来表征场景中的自我行为。

  • 我们提出了一种基于能量的种子选择策略和自适应突变来提高测试性能。

  • 我们在百度 Apollo上评估 BehAVExplor,发现了 16 个独特的违规行为。

3 研究方法

3.1 方法框架

图 2展示了BehAVExplor 的方法框架。

与一般的模糊器一样,BehAVExplor 维护一个种子输入语料库,用于存储“有趣的”种子输入,这些输入有助于识别失败或不同的测试用例。 在每次迭代中,BehAVExplor 采用能量机制从输入语料库中选择能量较高的种子。 种子的能量量化了它生成失败测试用例的能力。 然后提出一种自适应变异策略,通过变异所选种子来生成新的测试用例。

不同于一般的模糊测试工具,为了寻找多样化(diversity)且关键(critical)的测试用例,BehAVExplor 将行为多样性和场景关键性定义为模糊反馈,以选择可以增加多样性或违规程度的“有趣”测试用例。

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第2张图片

算法2描述了BehAVExplor算法的主体部分,多样性和违规反馈、能量机制的详细算法见下文。

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第3张图片

3.2 多样性和违规反馈机制

如图3所示:

  • 多样性的衡量方法:每个场景的观察结果(observation,如速度)将由BehaviorMiner处理以获得一系列抽象状态,三个抽象状态的差异用于衡量行为差异(即多样性)。

  • 场景距离违反给定规定的衡量方法:仅针对三个规定(specification)衡量违反情况——碰撞(collision)、非法停留(hitting illegal liens)、到达目的地(reaching destination)

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第4张图片

3.2.1 行为多样性

给定一个输入到目标 ADS 的测试用例 s s s,返回的观察轨迹表示为 X = x 1 , x 2 , ⋯   , x N ∈ R M × N X = {x^1, x^2, \cdots, x^N } \in R^{M\times N} X=x1,x2,,xNRM×N ,其中 x n = ( x 1 n , x 2 n , ⋯   , x M n ) x^n = (x_1^n, x_2^n , \cdots, x_M^n) xn=(x1n,x2n,,xMn) 表示 X X X n n n 帧中的状态,包含 ADS 的一些重要运动属性(例如时间戳、速度、航向等), x n i x_n^i xni 表示第 n n n 中属性 i i i 的帧, M M M是属性的数量, N N N表示轨迹 X X X中的帧的数量。

如果使用两个轨迹的欧拉距离衡量行为多样性,可能导致维度爆炸的问题

因此,本文提出了一种基于抽象的方法BehaviorMiner,它将相似的行为(例如,帧中的状态)聚集成抽象状态,然后基于抽象轨迹来衡量行为多样性。

具体来说,BehaviorMiner采用状态插值(state interpolation)和状态合并(state merging)从每个轨迹中提取行为的时间特征,用于后续的状态抽象(state abstraction)。

(2)状态插值

动机:模拟器可能没有对轨迹中的帧做均匀采样,如,异步采样中两个连续帧之间的时间间隔可能不相同,导致行为测量不准确,因此,BehAVExplor采用线性插值以生成具有相等时间步长的近似轨迹。

具体来说,BehAVExplor 首先对 X X X 拟合一个分段线性函数(即使用线性函数近似两个连续状态之间的轨迹),然后以相等的时间步长对一组状态进行采样。 最后,生成一条新迹线 X ‾ ∈ R M × N ′ \overline{X} \in R^{M \times N'} XRM×N,其中 N ′ N' N是新迹线中的状态数,并且任何连续状态之间的时间间隔相同。

(2)状态合并

直观地,ADS行为由一系列帧来表示,例如加速、转弯和超车。

因此,给定踪迹 X ‾ \overline{X} X,我们使用滑动窗口 w w w w w w个 连续状态合并为状态序列,从而捕获时序特征(temporal features)。 例如,对于状态 x i ‾ \overline{x_i} xi,我们提取 ( x ‾ i , ⋯   , x ‾ i + w − 1 ) (\overline{x}_i, \cdots, \overline{x}_{i+w-1}) (xi,,xi+w1) 来捕获时间特征

我们定义一个函数 f f f,将状态序列 ( x ‾ i , ⋯   , x ‾ i + w − 1 ) (\overline{x}_i, \cdots, \overline{x}_{i+w-1}) (xi,,xi+w1)合并为合并状态 h i h_{i} hi

h i = f ( x ‾ i , ⋯   , x ‾ i + w − 1 ) h_i=f(\overline{x}_i, \cdots, \overline{x}_{i+w-1}) hi=f(xi,,xi+w1)

合并状态 h i h_i hi中的特征是一个大小为 D × M D\times M D×M 的向量,其中 是每个具体状态中的属性数量, 是我们收集的统计特征的数量。 从每个属性收集八个统计特征,包括每个属性序列的平均值、最小值、最大值、mean_change、mean_abs_change、方差、非线性和时间序列复杂性。 详细的解释和计算可以在我们的网站上找到。

最后,我们提取一条新的迹线 H = h 1 , ⋯   , h N ′ ∈ R T × N ′ H = {h_1, \cdots, h_{N'} } \in R^{T\times N'} H=h1,,hNRT×N 包含来自观察轨迹 X X X 的合并状态序列。

(3)状态抽象

基于合并状态,我们采用基于聚类的抽象 σ \sigma σ,以便将相似的行为(由合并状态中的特征表示)分组为相同的抽象状态:

h ^ = σ h \hat{h} = \sigma{h} h^=σh

具体来说,我们首先从给定的一组测试用例中提取一组轨迹 ( H 1 , H 2 , ⋯   ) (H_1,H_2,\cdots) (H1H2),其中每个轨迹包含一系列合并状态。 然后我们采用聚类算法(本文使用 K-Means)来获得分类器 σ \sigma σ,将所有合并状态聚类为 K K K 个 抽象状态。 最后,对于轨迹 H H H,我们通过将合并状态映射到抽象状态来获得抽象轨迹 H ^ ∈ Z 1 × N ′ \hat{H} \in Z^{1 \times N'} H^Z1×N

(4)多样性度量

我们使用如下公式计算距离:

d s ′ = m i n s ∈ Q d i s ( H s ′ ^ , H s ^ ) d_{s'}=\underset{s\in Q}{min} dis(\hat{H_{s'}}, \hat{H_{s}}) ds=sQmindis(Hs^,Hs^)

d s ′ d_{s'} ds越大, s ′ s' s中的行为就越多样化。 我们配置一个预定义的阈值 θ c \theta_c θc来确定突变体 s i s_i si是否发现新行为(见算法1的第14行)

我们基于汉明距离设计了一个距离度量,它计算同一时间尺度内两个抽象状态序列之间的行为距离

在这里插入图片描述

3.2.2 违规度量

本文还评估了某个场景距离违反规范还有多远

我们主要考虑三种类型的规范违规:碰撞(collision)、非法停留(hitting illegal liens)、到达目的地(reaching destination)

O = ∑ v ∈ c o l l i s i o n , l i n e s , d e s t i n a t i o n f v ( s ) O = \underset{v \in {collision, lines, destination}}{\sum} f_v(s) O=vcollision,lines,destinationfv(s)

(1)碰撞(collision)

给定场景 s s s 及其执行观察轨迹 X s = x s t ∣ t = 1 , 2 , ⋯   , t s i m X_s = {x_s^t | t = 1, 2, \cdots, t_{sim}} Xs=xstt=1,2,,tsim,令 $ D_b(p_0, s)$ 表示在 s s s 期间ADS车辆与 NPC 车辆之间的最小距离,即:

在这里插入图片描述

其中 D b 2 b ( p 0 t , p k t ) D_{b2b}(p_0^t, p_k^t) Db2b(p0t,pkt) 计算在 t t t 时刻ADS车辆和车辆 的边界框之间的最短距离,其中ADS车辆和车辆k的位置分别为 p 0 t p_0^t p0t p k t p_k^t pkt 。 因此,违反避免碰撞可以描述为:

D b ( p 0 , s ) = 0 D_b(p_0,s)=0 Db(p0,s)=0

给定种子的观测迹X,我们将碰撞程度(degree)定义为:

f c o l l i s i o n ( s ) = D b ( p 0 , s ) f_{collision}(s)=D_b(p_0,s) fcollision(s)=Db(p0,s)

(2)非法停留

在本文中,我们考虑一个关键的交通规则:自我车辆不应撞上非法线(例如双黄线和路边线)。 给定一个模拟观察轨迹 X s X_s Xs ,执行过程中ADS车辆与非法线路之间的最小距离定义为:

在这里插入图片描述

其中 D b 2 l ( p 0 t , l ) D_{b2l}(p_0^t, l) Db2l(p0t,l) 计算ADS车辆边界框与非法线 l l l 之间的最短距离, L L L 是测试区域中非法线的集合。 因此,其违规行为可以定义为:

D l ( p 0 , s ) = 0 D_l(p_0,s)=0 Dl(p0,s)=0

我们将没有非法停留的违反程度定义为:

f l i n e s ( s ) = D l ( p 0 , s ) f_{lines}(s) = D_l(p_0,s) flines(s)=Dl(p0,s)

(3)到达目的地

我们使用ADS车辆的最后一个位置,即 p 0 t s i m p_0^{t_{sim}} p0tsim X s X_s Xs 中的目的地 p d e s t p_{dest} pdest之间的距离来确定场景是否通过。 详细条件定义为:

在这里插入图片描述

将到达目的地的违反程度定义为:

f d e s t i n a t i o n ( s ) = m a x ( 10 − D p 2 p ( p 0 t s i m , p d e s t ) , 0 ) f_{destination}(s) = max(10-D_{p2p}(p_0^{t_{sim}},p_{dest}),0) fdestination(s)=max(10Dp2p(p0tsim,pdest),0)

3.3 能量机制

为了解决多样性反馈和违规反馈可能有冲突的问题,本文提出了一种用于种子选择和突变的能量机制。

3.3.1 能量值计算

(1)给初始种子赋能量值

所有初始种子的能量值为1

(2)更新种子的能量

我们从三个因素来衡量种子 s s s的违规潜力:1)失败频率(failure frequency),即基于种子 s s s发现了多少违规行为? 2)违规程度变化(the violation change),即新突变体 s ′ s' s的违规程度是否小于 s s s,3)选择频率(the selection frequency),即种子 s s s被选择的次数。 最后, s s s的能量更新为:

在这里插入图片描述

  • 失败频率 △ E F \triangle E_F EF (failure frequency)

对于种子 s s s,我们记录从 s s s 变异的失败/未失败测试用例(表示为 #F 和 #NF)的数量。 然后我们计算相应的能量更新如下:

在这里插入图片描述

  • 违规程度变化 △ E V \triangle E_V EV (the violation change)

由于直接生成失败案例可能比较困难,我们考虑 s s s s ′ s' s之间的违规度变化:

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第5张图片

  • 选择频率 △ E S \triangle E_S ES (the selection frequency)

为了避免模糊器多次选择种子从而导致局部收敛,我们在选择种子时减少种子的能量。 在本文中,我们选择固定的能量衰减值,即 △ E S = − 0.05 \triangle E_S=-0.05 ES=0.05

(3)给新生成的种子赋能量值

设新生成的种子为 s ′ s' s,则能量值为:

在这里插入图片描述

3.3.2 基于能量值的种子选择

种子的选择概率为:

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第6张图片

3.3.3 基于能量值的自适应性变异策略

算法 2 是自适应变异策略的算法。 如果种子具有更高的能量,它会执行路点突变(waypoint mutation)(第 4 行)。 否则,执行路线突变(route mutation)(第 6 行)。 对于路线变异,它有概率(第 9 行)通过改变路线来选择和变异 NPC v v v。 函数 RouteSample 为所选 NPC 随机采样一条新路线 v r v_r vr(第 10 行)。 函数 UniformSample 对新生成的路线 v r v_r vr(第 11 行)的路点 v w v_w vw 进行统一采样。 最后,生成突变体 s ′ s' s(第 12 行)。 对于不改变 NPC 路线的路点突变,我们只改变路点(例如速度和位置)(第 16 行)。

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第7张图片

4 实验

4.1 实验准备

  • 待测ADS系统:Apollo 6.0

  • 仿真系统:LGSVL 2021.3

  • 三个研究问题RQ

    • RQ1:与选定的基线方法相比,BehAVExplor 能否有效地发现 ADS 的各种违规行为?

    • RQ2:BehaviorMiner 和能量机制在改进 BehAVExplor 生成多样化和关键场景方面有多大用处?

    • RQ3:时间特征如何影响测试结果?

  • 四个功能性场景(functional scenarios)

    • S1:ADS车辆直接穿过无信号交叉口。
    • S2:ADS车辆在无信号交叉口左转。
    • S3:ADS车辆沿着一条有四车道的笔直道路上的一条车道行驶。
    • S4:ADS车辆在四车道直路上变道。
  • 对比方法:随机测试,AVFuzzer[2],SAMOTA[3]

4.2 RQ1的实验结果

(1)总共的检测违规的数量

BehAVExplor比现有最有方法检测的数量大约增加了一倍

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第8张图片

(2)独特的检测违规的分类(unique violation classification)

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第9张图片

(3)检测违规的多样性(diversity of violations)

BehAVExplor检测出最多的独特的违规,而且检测出了所有基线方法检测到的违规,因此最具有多样性

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第10张图片

(4)效率

测试一个场景的时间分为两部分,执行时间和分析时间。执行时间是运行生成的场景所花费的时间,而分析时间包括其他过程,例如种子选择、变异、反馈收集和其他日志记录过程。

根据表3的结果,随机测试的分析时间最短,因为它没有任何指导。 将 AVFuzzer 和 SAMOTA 的结果与 BehAVExplor 进行比较,我们可以观察到 BehAVExplor 的分析时间更少,执行时间更多,这证明了我们的指导(例如行为多样性分析)的高效率。

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第11张图片

针对RQ1的回答:与现有方法相比,BehAVExplor不仅可以发现更多的违规场景,而且可以生成更多样的违规行为

4.3 RQ2的实验结果

使用消融实验,实验结果见表4。

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第12张图片

(1)行为指导(BG)的有用性。

从表4的最后四列我们可以发现,就独特违规总数而言,BehAVExplor在每个场景中都可以比无BG发现更多独特违规。 因此,我们可以得出结论,行为指导(BG)对于发现各种违规行为很有用。

(2)多样性和违规行为之间的潜在冲突。

我们还可以发现 w/o BG 比 BehAVExplor 检测到更多的违规行为(参见 Total Violation),这表明多样性和违规检测之间存在潜在冲突。

(3)能量机制(能量)的有用性。

考虑表 4 中的 [Total Violation, Sum] 列,我们可以观察到与 BehAVExplor 相比,无 Energy 变体的性能在每种情况下都会下降,这证实了 Energy 在缓解冲突方面的有用性,即提高了总数 BehAVExplor 中的违规行为与集成的行为指导。

针对RQ2的回答:BehaviorMiner 和能量机制都很有用。 BehaviourMiner可以提高识别违规行为的多样性,而能量机制可以在整合行为指导后提高违规数量。

4.4 RQ3的实验结果

如3.2节所述,作为定义行为多样性的重要步骤,我们在BehaviorMiner中采用状态插值和状态合并来提取时间特征,用于行为聚类。 在这一部分中,我们评估时序特征的有效性,即滑动窗口大小的有效性。

图 6 显示了不同窗口大小的结果。 从结果中我们可以发现, = 1 的 BehAVExplor 发现的违规次数最少。 随着的增加,违规总数一般会变好。 我们还分析了违规行为的多样性,结果有类似的趋势。

论文精读06:ISSTA23’《BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems》_第13张图片

针对RQ3的回答:通过滑动窗口提取时间特征可以提高 BehAVExplor 中违规发现的有效性。

5 结论

在本文中,我们提出了一种新颖的测试技术,用于生成导致不同类型违规的不同场景。 为了测量ADS车辆的行为多样性,我们提出了BehaviorMiner,它从模拟器收集原始状态,提取时间特征,并执行基于聚类的抽象。 为了进一步平衡多样性和违规的目标,我们设计了一种基于能量的机制,用于种子选择和突变。 Apollo 的评估证明了我们方法的有效性和效率以及 BehAVExplor 和能量机制的有用性。

参考

[1] BehAVExplor: Behavior Diversity Guided Testing for Autonomous Driving Systems

[2] AV-FUZZER: Finding safety violations in autonomous driving systems

[3] Efficient online testing for DNN-enabled systems using surrogate-assisted and many-objective optimization

你可能感兴趣的:(自动驾驶测试,自动驾驶)