You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过YOLOX的评估脚本生成测试集混淆矩阵?

基于YOLOX评估脚本生成混淆矩阵

当然可以通过修改YOLOX的评估脚本来生成混淆矩阵,核心思路是在评估流程中捕获每个样本的真实标签与模型预测类别,统计匹配结果构建矩阵。具体操作步骤如下:

  • 初始化混淆矩阵
    在评估脚本(通常是tools/eval.py)的评估流程启动前,根据数据集的类别数量创建空矩阵:

    import numpy as np
    # 获取数据集的类别总数
    num_classes = len(eval_dataset.class_names)
    # 创建(num_classes, num_classes)规格的零矩阵
    confusion_matrix = np.zeros((num_classes, num_classes), dtype=np.int64)
    
  • 匹配预测与真实标签并更新矩阵
    遍历每个测试样本完成推理后,需要完成预测框与真实框的匹配并更新矩阵:

    1. 先过滤掉低置信度的预测框(建议用和mAP评估一致的阈值,比如0.05);
    2. 用IOU匹配规则(比如IOU>0.5的阈值匹配,或匈牙利算法)将预测框与真实框对应;
    3. 对每一对匹配成功的预测-真实框,执行confusion_matrix[gt_class_idx][pred_class_idx] += 1;
    4. 未匹配到预测框的真实框可归为漏检、未匹配到真实框的预测框可归为误检,若需要统计这类情况,可扩展矩阵增加对应行/列。
  • 输出与保存混淆矩阵
    所有样本评估完成后,直接打印或保存矩阵:

    # 打印混淆矩阵
    print("Confusion Matrix:")
    for row in confusion_matrix:
        print(' '.join(map(str, row)))
    
    # 保存为CSV文件方便后续分析
    np.savetxt("yolox_confusion_matrix.csv", confusion_matrix, delimiter=",", fmt="%d")
    
  • 关键注意事项

    • 必须保证类别索引和数据集的类别顺序完全一致,否则矩阵行列对应会出错;
    • 匹配时的IOU阈值、置信度阈值要和评估mAP时的参数保持一致,确保结果和模型评估标准统一;
    • 若为多标签检测场景,需调整匹配逻辑(YOLOX默认是单标签检测,此情况较少见)。

内容的提问来源于stack exchange,提问作者sama acm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:27:14