Žiadny popis

XGJ_zhaoyuan 5974d309a7 修改keepInLane_LST、warningDelayTimeofReachDecel_LST的代码逻辑 13 hodín pred
config 92bfcb679d 根据交通信号识别及响应数据修改新增功能性指标中的bug;去掉安全性中PET指标;增加PGVIL中的画图功能 1 deň pred
custom_metrics 08f3150662 增加指标绘图数据csv保存及绘图功能,csv保存到项目本地data路径,修改多个bug,包括shake等,data_process增加车身坐标系转换功能 2 týždňov pred
modules 5974d309a7 修改keepInLane_LST、warningDelayTimeofReachDecel_LST的代码逻辑 13 hodín pred
scripts 92bfcb679d 根据交通信号识别及响应数据修改新增功能性指标中的bug;去掉安全性中PET指标;增加PGVIL中的画图功能 1 deň pred
templates 059c4672e0 自定义指标最终版 2 mesiacov pred
test 059c4672e0 自定义指标最终版 2 mesiacov pred
README.md 2398085e06 解决自定义逻辑混乱bug;最终报告添加单用例结果信息 1 deň pred

README.md

自动驾驶评估系统

系统概述

本系统是一个模块化的自动驾驶评估框架,用于对自动驾驶系统的各项性能指标进行全面评估。系统采用组件化设计,支持内置指标和自定义指标的灵活配置,能够并行处理多种评估任务,并生成结构化的评估报告。

系统架构

系统由以下核心组件构成:

1. 配置管理器 (ConfigManager)

负责加载、解析和合并配置文件,支持内置指标配置和自定义指标配置的智能合并。主要功能包括:

  • 配置文件加载与解析
  • 内置配置与自定义配置的合并
  • 配置拆分(从全量配置中提取自定义部分)

配置管理特性:

  • 自动拆分功能:能够从全量配置文件(all_metrics_config.yaml)中自动提取出自定义指标部分,生成独立的自定义配置文件(custom_metrics_config.yaml)
  • 智能合并策略:采用三级合并策略,确保自定义指标配置能够正确覆盖或扩展内置指标配置
  • 结构完整性保障:在拆分过程中保留指标的name和priority等关键属性,确保配置结构完整

2. 指标加载器 (MetricLoader)

负责动态加载内置和自定义评估指标模块。主要功能包括:

  • 内置指标模块的动态加载
  • 自定义指标脚本的发现与加载
  • 指标模块的验证与注册

3. 评估引擎 (EvaluationEngine)

系统的核心组件,负责协调各个指标模块执行评估任务。主要功能包括:

  • 并行执行多个评估指标(内置与自定义指标均支持并行处理)
  • 收集和整合评估结果,包括内置指标和自定义指标的统计结果
  • 处理评估过程中的异常
  • 支持整体评估结果统计(如 overall_result、threshold_checks 等),并将其集成到最终报告中
  • 评分统计逻辑通过调用 Score 评分模块实现,自动根据配置权重和阈值计算各级别得分

4. 日志管理器 (LoggingManager)

负责系统日志的配置和管理,支持多级日志记录。主要功能包括:

  • 日志系统初始化
  • 多级日志记录
  • 日志文件管理

5. 数据处理器 (DataProcessor)

负责加载和预处理评估所需的数据。主要功能包括:

  • 数据文件的加载与验证
  • 数据格式转换与预处理
  • 提供统一的数据访问接口

6. 评估流水线 (EvaluationPipeline)

整个系统的控制器,负责协调各个组件完成评估流程。主要功能包括:

  • 组件初始化与配置
  • 评估流程的执行与监控(包括内置与自定义指标的并行评估)
  • 自动调用评分统计逻辑,整合各类评估结果
  • 评估报告的生成与输出,报告中包含整体统计结果和各项指标详细信息

7. 图表生成器 (ChartGenerator)

负责生成各类评估指标的可视化图表。主要功能包括:

  • 功能指标图表生成
  • 舒适性指标图表生成
  • 安全性指标图表生成
  • 交通指标图表生成
  • 支持多种图表类型(折线图、散点图、双轴图等)
  • 高质量图表输出(支持自定义DPI)

目录结构

├── scripts/
│   └── evaluator_enhanced.py    # 评估引擎主程序
├── modules/
│   ├── lib/
│   │   ├── metric_registry.py   # 指标注册系统
│   │   ├── data_process.py      # 数据处理模块
│   │   ├── score.py             # 评分计算模块
│   │   ├── common.py            # 通用工具函数
│   │   ├── chart_generator.py   # 图表生成模块
│   │   └── log_manager.py       # 日志管理模块
│   └── metric/
│       ├── safety.py            # 安全性指标模块
│       ├── comfort.py           # 舒适性指标模块
│       ├── traffic.py           # 交通规则指标模块
│       ├── efficient.py         # 效率指标模块
│       └── function.py          # 功能指标模块
├── config/
│   ├── all_metrics_config.yaml  # 全量指标配置
│   └── custom_metrics_config.yaml # 自定义指标配置
├── templates/
│   ├── custom_metric_template.py  # 自定义指标模板
│   └── unified_custom_metric_template.py # 统一自定义指标模板
└── custom_metrics/                # 用户自定义指标目录

模块详细说明

modules 目录

lib 子目录

  • metric_registry.py: 提供指标注册基础设施,包含BaseMetric基类,所有自定义指标都需继承此类
  • data_process.py: 负责数据预处理,提供统一的数据访问接口
  • score.py: 实现评分计算逻辑,根据配置文件中的权重和阈值计算最终得分,支持整体评估结果(overall_result)与阈值检查(threshold_checks)等统计,并与评估引擎集成,自动输出到最终报告。
  • common.py: 包含系统通用工具函数和辅助方法
  • chart_generator.py: 实现各类评估指标的可视化图表生成功能
  • log_manager.py: 提供集中式日志管理,支持多级日志记录和文件轮转

metric 子目录

  • safety.py: 实现安全性相关指标,如TTC(碰撞时间)、碰撞风险等
  • comfort.py: 实现舒适性相关指标,如加速度平滑度、抖动指标等
  • traffic.py: 实现交通规则相关指标,如车道保持、信号灯遵守等
  • efficient.py: 实现效率相关指标,如行程时间、能耗等
  • function.py: 实现功能性指标,如感知准确度、决策合理性等

custom_metrics 目录

用于存放用户自定义的指标实现脚本。系统会自动扫描此目录下符合命名规范的Python脚本,并将其作为自定义指标加载。

命名规范

  • 文件名必须以metric_开头
  • 后跟三级指标名称,如metric_safety_safeTime_CustomTTC.py
  • 三级指标名称必须在自定义配置文件中有对应配置

实现方式

  • 基于类的实现:继承BaseMetric基类,实现calculate方法
  • 基于函数的实现:提供evaluate函数

templates 目录

包含自定义指标开发的模板文件,用户可以基于这些模板快速开发自己的指标。

  • custom_metric_template.py: 基础自定义指标模板,提供完整的类结构和注释
  • unified_custom_metric_template.py: 统一风格的自定义指标模板,包含更多标准化实现

运行流程

1. 初始化阶段

  1. 解析命令行参数,获取配置文件路径、数据路径、报告路径等
  2. 初始化日志管理器,配置日志系统
  3. 初始化配置管理器,加载并合并内置和自定义配置
  4. 初始化指标加载器,加载内置指标模块和自定义指标脚本
  5. 初始化评估引擎和数据处理器

2. 评估阶段

  1. 数据处理器验证并加载评估数据
  2. 评估引擎并行执行各个指标模块的评估任务
  3. 收集内置指标和自定义指标的评估结果
  4. 处理和合并评估结果

3. 报告生成阶段

  1. 整合评估结果,添加元数据信息
  2. 生成JSON格式的评估报告
  3. 将报告保存到指定目录

使用方法

基本用法

python scripts/evaluator_enhanced.py --configPath config/all_metrics_config.yaml --dataPath data_dir --reportPath report_dir --logPath logs

参数说明

  • --configPath: 指标配置文件路径
  • --dataPath: 评估数据目录路径
  • --reportPath: 评估报告输出目录
  • --logPath: 日志文件路径
  • --customMetricsPath: 自定义指标脚本目录(可选)
  • --customConfigPath: 自定义指标配置文件路径(可选)

自定义指标开发指南

概述

本系统支持用户自定义评估指标,您可以通过编写Python脚本来实现自己的指标计算逻辑,并将其集成到评估系统中。

开发步骤

  1. custom_metrics目录下创建新的Python脚本,遵循命名规范
  2. 基于模板实现自定义指标逻辑
  3. 在自定义配置文件中添加对应的配置项
  4. 运行评估系统,指定自定义指标目录和配置文件

示例

from modules.lib.metric_registry import BaseMetric

class MyCustomMetric(BaseMetric):
    def __init__(self, data):
        super().__init__(data)
    
    def calculate(self):
        # 实现您的计算逻辑
        return {
            "value": 42.0,
            "score": 85,
            "details": {"max": 100, "min": 0}
        }

使用自定义指标

python scripts/evaluator_enhanced.py --configPath config/all_metrics_config.yaml --dataPath data_dir --reportPath report_dir --logPath logs --customMetricsPath custom_metrics --customConfigPath config/custom_metrics_config.yaml

扩展性设计

1. 新增内置指标

  • 在对应类别模块中添加新方法
  • 系统会自动注册和识别

2. 添加自定义指标

  • 基于模板创建新的指标脚本
  • 放置在自定义指标目录
  • 无需修改核心代码

3. 新增指标类别

  • 创建新的类别模块
  • 在注册系统中添加类别支持

系统优势

  1. 模块化设计: 系统各组件职责明确,便于维护和扩展
  2. 灵活配置: 可以根据配置选择性运行指标,提高效率
  3. 可扩展性: 支持用户自定义指标,无需修改核心代码
  4. 并行处理: 多指标并行评估,提高处理效率
  5. 异常处理: 完善的异常捕获和日志记录机制,提高系统稳定性