自动驾驶云服务 OCTOPUS-评测算法的自研proto接口:eva.proto的关键字段解释

时间:2024-10-30 16:07:54

eva.proto的关键字段解释

在利用Octopus仿真平台进行批量仿真时,每个场景都会有一个评测结果,单个场景的评测结果全部保存在如数据类图所示的Evaluation类中。

Evaluation类包含以下的7个字段。

表1 Evaluation类包含的字段

字段

说明

version

用于表示当前Octopus_eva.proto的版本。

score

用户保存批量仿真中单个场景下评测算法计算出的评测得分,Octopus的评分取值为[0, 100]。

avg_speed

单个场景下自动驾驶算法控制下主车的平均车速,单位m/s。

distance

单个场景下自动驾驶算法控制下主车的行驶里程,单位m。

vis

主车关键状态量的(如速度、加速度)的时间序列数据,用于前端进行可视化曲线展示。

metrics

Octopus内置了一批大类评测指标,并且每个大类评测指标下会多个子类指标。

该字段用于保存每个大类和子类评测指标的通过/未通过/无效的结果状态。

其中无效状态表示该指标在特定场景下是没意义的,如在没有交通灯的场景下,主车在交通灯前的行为检测是没有意义的。

source

是一个Source枚举类型,表示该评测算法的结果来源类型。

source共有6种类型,具体参考source

表2 source

字段

说明

SOURCE_UNSPECIFIED

表示评测算法类型未定义。

SOURCE_CUSTOMIZED_REALTIME

用户自定义实时评测算法结果。

SOURCE_CUSTOMIZED_OFFLINE

用户自定义延时评测算法结果。

SOURCE_DEFAULT_REALTIME

八爪鱼内置实时评测算法结果。

SOURCE_DEFAULT_OFFLINE

八爪鱼内置延时评测结果。

SOURCE_MERGED

融合后的评测结果。

Evaluation中两个比较关键且复杂的字段是vis和metrics,其中vis字段类型是Visualization,metrics字段的类型是repeated Metric。

Visualization和Metric的成员组成如上数据类图所示,各个关键成员的含义如下所示。

Visualization类型包含的各个字段及其含义如下所示。

表3 Visualization类型字段

字段

说明

sim_times

仿真过程的时间序列点,以仿真开始时刻(t0)为0点,相邻时刻的时间间隔为仿真器的周期,单位为秒(s)。

frame_nums

每个仿真时刻对应的数据帧数,表明这是第几帧的数据。

stats

统计类型的数据值,是指某数据在一段时间内统计值才有展示分析的意义,如加速度均方根值(arms),随着仿真时刻不断后移,需要不断计算初始时刻(t0)到当前仿真时刻(t)的arms值。

stats字段的类型是Statistic,Statistic类型的成员具体参考stats

vector

向量类型的数据值,是指每个时刻都会有一个对应的数据值,如加速度、速度等物理量。

vector字段的类型是Vector,Vector类型的成员具体参考vector

表4 stats

字段

说明

type

是一个Type的枚举类型,表示该数据是哪种Octopus内置的Statistic类型。

value

该数据在每个仿真时刻对应的数值。

display_name

存储用户自定义的Statistic类型名称,用户自定义的数据无需对type赋值。

source

表示该数据的评测结果来源类型。

importance

表示该数据是重要类型还是次要类型。

module

表示该数据是来源于哪个算法模块。

performance

表示该数据是表示的哪个类别的算法性能。

表5 vector

字段

说明

type

是一个Type的枚举类型,表示该数据是哪种Octopus内置的Vector类型。

value

该数据在每个仿真时刻对应的数值。

display_name

存储用户自定义的Vector类型名称,用户自定义的数据无需对type赋值。

source

表示该数据的评测结果来源类型。

importance

表示该数据是重要类型还是次要类型。

module

表示该数据是来源于哪个算法模块。

performance

表示该数据是表示的哪个类别的算法性能。

Metric类型包含的各个字段及其含义如下所示。

表6 Metric类型字段

字段

说明

type

是一个Enum类型,表示该数据是哪种Octopus内置的大类指标类型。

status

是一个Result的枚举类型,用于表示该大类指标的评测结果。

其中Result有三种类型,分别为:

  • RESULT_UNSPECIFIED:该状态的结果表示评测指标是无效的,如对于红绿灯检测指标,如果仿真完成后评测函数发现场景中不存在红绿灯,则该项指标的评测是没有意义的,故评测结果展示为无效。
  • RESULT_PASSED: 该状态的结果表示评测结果为通过。
  • RESULT_FAILED:该状态的结果表示评测结果为未通过。

anomalies

用于保存每个大类指标下对应的子类指标发生异常的时间点,其数据类型为repeated Anomaly,其中Anomaly类型成员如下所示:

  • status: 是一个Result类型,与上述大类指标的status的表示相同,该字段用于存储子类指标的三种不同状态结果。
  • subtype:是一个Subtype的枚举类型,表示该子类指标是哪种Octopus内置的子类指标类型。

    其中,对于某些没有子类指标的大类指标来说,其subtype赋值为SUBTYPE_UNSPECIFIED。

  • point_type:是一个PointType的枚举类型,表示该子类指标发生特殊状态(一般是指发生异常)时的时刻点用哪种形式存储起来。

    其中PointType共有5种类型,参考PointType

  • Points:是repeated float类型,保存每个子类指标发生特殊状态的具体时间点的值。
  • Stats_indices:是repeated ui32类型,表示该子指标关联的统计类数值列表。
  • Vector_indices:是repeated ui32类型,表示该子指标关联的时间序列数值列表。

display_name

存储用户自定义的Anomaly类型名称,表示其自定义的子类指标,用户自定义的数据无需对sub_type赋值。

importance

表示该指标的重要程度。具体参考importance

source

表示该数据的评测结果来源类型。

module

表示该数据是来源于哪个算法模块。具体参考module

performance

表示该数据是表示的哪个类别的算法性能。具体参考performance

表7 PointType

字段

说明

POINT_TYPE_UNSPECIFIED

未定义的类型,遵循proto定义格式,Octopus未使用该类型,用户可根据需要对该类型赋予特定含义。

POINT_TYPE_POINT

表示该子类指标的异常时间点是离散的时间点形式,在任何时刻都可能发生异常。

POINT_TYPE_REGION

表示该子类指标的异常时间点是区间形式,一旦在某个时刻开始发生异常,则在随后一段时间内都会处于异常状态。

POINT_TYPE_ALL

表示该类指标的异常时间点是布尔形式的,从仿真开始到当前时刻的状态要么是完全通过,要么全过程都是异常的,统计类型的指标需要以这种形式表示。

POINT_TYPE_NORMAL

该类型与其他类型相反,如果该类型的点存在,则表示对应的子类指标是通过的,Octopus用该类型保存主车到达终点的时间值。

表8 importance

字段

取值

说明

CATEGORY_UNSPECIFIED

0

未定义

CATEGORY_MAJOR

1

主要

CATEGORY_MINOR

2

次要

表9 module

字段

取值

说明

MODULE_UNSPECIFIED

0

未定义

MODULE_NAVIGATION

1

导航

MODULE_LOCATION

2

定位

MODULE_PERCEPTION

3

感知

MODULE_PREDICTION

4

预测

MODULE_DECISION

5

决策

MODULE_PLANNING

6

规划

MODULE_CONTROL

7

控制

MODULE_WHOLE

8

整车

表10 performance

字段

取值

说明

PERFORMANCE_UNSPECIFIED

0

未定义

PERFORMANCE_SAFETY

1

安全性

PERFORMANCE_REGULATION

2

合规性

PERFORMANCE_COMFORT

3

舒适性

PERFORMANCE_INTELLIGENCE

4

智能型

support.huaweicloud.com/usermanual-octopus/octopus-10-0019.html