模型评估指南

在构建模型的过程中,需要做出许多重要的决策。通过使用模型指标,可以回答以下问题:模型是否准备好投入生产?误报率是否过高?模型最新版本与之前的版本相比如何?使用Roboflow的开源CVevals包,可以评估托管在Roboflow上的对象检测分类模型。CVevals将数据集中的基准真实值(添加到图像的注释)与模型在验证数据集上的预测结果进行比较,并利用这些信息计算数据集上的评估指标。

在本指南中,将展示如何使用CVevals来评估一个零售货架对象检测数据集。到本教程结束时,将获得模型在验证数据集上的精确度召回率、F1分数以及显示模型性能的混淆矩阵。还将简要回顾如何在分类数据集上运行评估。

可以使用这些指标来决定模型是否准备好投入生产,如果还没有,提供数据以了解可能需要做什么来改进模型,以准备投入生产。

步骤1:安装CVevals

CVevals包包含在一个GitHub仓库中。这个仓库包含许多示例,展示了如何评估不同类型的模型,从Roboflow模型到最先进的零样本模型,如Grounding DINO和CLIP。对于本指南,将专注于评估Roboflow模型的示例。

要安装CVevals,请运行以下代码:

git clone https://github.com/roboflow/evaluations.git cd evaluations pip install -r requirements.txt pip install -e .

这段代码将下载包并将其安装在本地机器上。现在可以开始评估模型了!

步骤2:配置评估

假设正在处理一个零售货架对象检测模型,该模型可以找到货架上的空位以及产品所在的位置。想知道模型在验证数据集上返回了多少误报。还想能够可视化模型返回的边界框。可以使用CVevals来完成这两个任务。

CVevals的工作分为三个阶段:

  • 指定一个来源,从中加载基准真实数据;
  • 指定一个来源,从中加载模型预测(在这个例子中,将使用Roboflow);
  • 将基准真实数据与预测结果进行比较,以计算评估指标。

在这个例子中,可以使用examples/roboflow_example.py脚本。这个脚本从Roboflow加载数据,并在验证数据集上运行模型。

要使用这个脚本,需要:

  • Roboflow API密钥
  • 工作区ID
  • 模型ID
  • 模型版本号

可以在文档中了解如何检索这些值。还需要选择一个位置来存储将在评估中使用的数据。建议将数据存储在一个新文件夹中。对于本指南,将在这个路径上存储数据:/Users/james/cvevals/retail-shelf-data/。如果文件夹尚未存在,它将被创建。

步骤3:运行评估

要运行评估,请使用以下命令:

python3 examples/roboflow_example.py --eval_data_path=<path_to_eval_data> \ --roboflow_workspace_url=<workspace_url> \ --roboflow_project_url=<project_url> \ --roboflow_model_version=<model_version> \ --model_type=object-detection

将上一节中记录的值替换到上述命令中的尖括号内。然后,运行该命令。

如果正在处理一个单标签分类数据集,将--model_type的值设置为classification。如果正在处理一个多标签分类数据集,请使用--model_type=multiclass。

这段代码将:(i)检索基准真实数据,在本例中来自Roboflow;(ii)在验证集中的每张图像上运行推理;(ii)返回预测结果。当推理在每张图像上运行时,控制台将打印出类似这样的消息:

evaluating image predictions against ground truth <image_name>

评估脚本所需的时间将取决于数据集中有多少验证图像。

评估完成后,将在控制台上看到关键指标,如下所示:

Precision: 0.7432950191570882 Recall: 0.8083333333333333 f1 Score: 0.7744510978043913

计算机上还将出现一个名为output的新文件夹,其中包含两个子文件夹:

  • matrices:数据集中每张图像的混淆矩阵。
  • images:图像上绘制了基准真实值和模型预测。

有一个特殊的矩阵叫做aggregate.png,它反映了模型在整个数据集上的性能。这就是零售货架示例的混淆矩阵的样子:

可以使用这个混淆矩阵来了解数据集中的真实和误报率,并确定这些值是否表明模型已经准备好投入生产。从上面的矩阵中,可以判断任何类别的误报率是否过高。如果是,可以使用这些信息回到模型并计划改进策略。

例如,如果某个类别的误报率很高,可能希望为给定的类别添加更多代表性的数据,然后重新训练模型。有了改变后的模型,可以再次运行评估,看看更改如何影响模型性能。

让打开output/images目录中的一张图像来可视化模型预测:

可以使用这些图像来可视化模型性能。基准真实值——注释——在绿色边界框中。模型预测显示在红色框内。

从上面的图像中,例如,可以看到模型已经识别出图像中的许多空间,但它错过了底层货架上的两个。如果需要深入了解模型性能,这些图像可以作为有用的参考。例如,如果看到有很多误报,可以查看图像来可视化误报的实例。

在本指南中,计算了与对象检测模型相关的精确度召回率和F1指标。还计算了可以用来更好地了解模型性能的混淆矩阵。

有了这些信息,可以决定模型是否准备好投入生产。如果模型的性能不如预期,可以使用这些信息来制定下一步的计划。

CVevals还具有许多其他功能,例如允许:比较不同的置信度水平,以了解哪一个最适合投入生产;在数据集上评估各种零样本模型(Grounding DINO、CLIP、BLIP等)的性能;以及比较零样本模型的提示。

要了解库中可用的其他功能,请查看项目README。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485