实时评测和延时评测介绍
实时评测
实时评测的基本架构如上图所示,实时评测算法从仿真器和AD算法按帧接收数据,每接收一帧数据,就调用一次评测函数,在最后仿真结束时将评测结果写成评测pb文件。
实时评测的实现包括如下几个步骤:
- 代码内实现与仿真器的通信,实时接收仿真器的帧数据,也可同时接收仿真器和AD算法的数据。
- 处理每帧数据,不断更新评测结果。
- 仿真结束时,将最后一帧的评测结果作为最终的评测结果,通过EVA_PATH环境变量获取评测pb路径,经评测结果写入到评测pb文件中。
延时评测
如上图所示,延时评测以仿真pb文件作为输入,进行评测逻辑处理后,将评测结果写成评测pb。
其中仿真pb是通过八爪鱼提供的sim_osi.proto进行序列化和反序列化,评测pb是通过八爪鱼提供的eva.proto进行序列化和反序列化的。
延时评测算法的实现有如下几个步骤:
- 在代码内通过SIM_OSI_PATH环境变量获取仿真pb路径,通过EVA_PATH环境变量获取评测pb路径。
通过文件Open的方式打开仿真pb路径,读取字节流,利用sim_osi.proto中的SimData反序列化仿真pb中的内容。该步骤会得到一个SimData的内存对象,用户通过访问对象中的字段即可获取自己关注的数据。
- SimData中包含仿真器输出的整个仿真过程数据,用户处理根据自身评测逻辑处理所有帧数据。
- 用户自定义的评测指标包含通过,不通过等结果,将该结果写入到eva.proto中的Evaluation类中,然后通过文件Open的形式打开评测pb路径,将评测结果写成评测pb文件。
- 写成评测pb文件后,延时评测镜像的工作就完成了,仿真平台的控制程序在运行自定义评测容器时会主动将评测pb文件上传到对象存储中,前端通过下载该评测pb文件进行解析,可以将自定义评测结果和内置评测结果一样完全兼容地进行展示。
评测算法代码开发完成后,将代码构建成算法镜像上传到仿真平台评测管理模块即可被仿真任务使用。在制作评测算法镜像的Dockerfile中,建议将评测代码编译成的二进制文件COPY到系统的/usr/bin目录下,便于在前端界面填写评测镜像的运行命令时直接填写该二进制文件的名称即可。在镜像中新建一个shell脚本来运行评测代码也是可以接受的方案。