在构建模型的过程中,需要做出许多重要的决策。通过使用模型指标,可以回答以下问题:模型是否准备好投入生产?误报率是否过高?模型最新版本与之前的版本相比如何?使用Roboflow的开源CVevals包,可以评估托管在Roboflow上的对象检测和分类模型。CVevals将数据集中的基准真实值(添加到图像的注释)与模型在验证数据集上的预测结果进行比较,并利用这些信息计算数据集上的评估指标。
在本指南中,将展示如何使用CVevals来评估一个零售货架对象检测数据集。到本教程结束时,将获得模型在验证数据集上的精确度、召回率、F1分数以及显示模型性能的混淆矩阵。还将简要回顾如何在分类数据集上运行评估。
可以使用这些指标来决定模型是否准备好投入生产,如果还没有,提供数据以了解可能需要做什么来改进模型,以准备投入生产。
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 .
这段代码将下载包并将其安装在本地机器上。现在可以开始评估模型了!
假设正在处理一个零售货架对象检测模型,该模型可以找到货架上的空位以及产品所在的位置。想知道模型在验证数据集上返回了多少误报。还想能够可视化模型返回的边界框。可以使用CVevals来完成这两个任务。
CVevals的工作分为三个阶段:
在这个例子中,可以使用examples/roboflow_example.py脚本。这个脚本从Roboflow加载数据,并在验证数据集上运行模型。
要使用这个脚本,需要:
可以在文档中了解如何检索这些值。还需要选择一个位置来存储将在评估中使用的数据。建议将数据存储在一个新文件夹中。对于本指南,将在这个路径上存储数据:/Users/james/cvevals/retail-shelf-data/。如果文件夹尚未存在,它将被创建。
要运行评估,请使用以下命令:
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的新文件夹,其中包含两个子文件夹:
有一个特殊的矩阵叫做aggregate.png,它反映了模型在整个数据集上的性能。这就是零售货架示例的混淆矩阵的样子:
可以使用这个混淆矩阵来了解数据集中的真实和误报率,并确定这些值是否表明模型已经准备好投入生产。从上面的矩阵中,可以判断任何类别的误报率是否过高。如果是,可以使用这些信息回到模型并计划改进策略。
例如,如果某个类别的误报率很高,可能希望为给定的类别添加更多代表性的数据,然后重新训练模型。有了改变后的模型,可以再次运行评估,看看更改如何影响模型性能。
让打开output/images目录中的一张图像来可视化模型预测:
可以使用这些图像来可视化模型性能。基准真实值——注释——在绿色边界框中。模型预测显示在红色框内。
从上面的图像中,例如,可以看到模型已经识别出图像中的许多空间,但它错过了底层货架上的两个。如果需要深入了解模型性能,这些图像可以作为有用的参考。例如,如果看到有很多误报,可以查看图像来可视化误报的实例。
在本指南中,计算了与对象检测模型相关的精确度、召回率和F1指标。还计算了可以用来更好地了解模型性能的混淆矩阵。
有了这些信息,可以决定模型是否准备好投入生产。如果模型的性能不如预期,可以使用这些信息来制定下一步的计划。
CVevals还具有许多其他功能,例如允许:比较不同的置信度水平,以了解哪一个最适合投入生产;在数据集上评估各种零样本模型(Grounding DINO、CLIP、BLIP等)的性能;以及比较零样本模型的提示。
要了解库中可用的其他功能,请查看项目README。