对象检测/分类任务的性能指标(用于图像)

Posted

技术标签:

【中文标题】对象检测/分类任务的性能指标(用于图像)【英文标题】:Performance metrics for object detection/classification tasks (for images) 【发布时间】:2021-09-23 19:03:33 【问题描述】:

我在计算对象检测/分类模型的评估指标时遇到问题。 假设来自 Tensorflow Model Zoo 的模型用于训练以检测对象并按照其网络教程中所述进行正确评估。 这是问题所在:我不确定如何计算性能指标,例如特异性、敏感性、F1 分数和 IOU——它们中的大多数是基于真阳性、假阳性、假阴性和真阴性值——而不仅仅是 AP 和从标准“coco_detection_metrics”中调用值。 Tensorboard 可能对某些人有用,但这还不够,如果没有针对某些任务的其他指标,这还不够。 那么,有人可以为社区更清楚地说明这一点吗?一些代码脚本非常适合改编。

例如,作为向前迈出的一步:我是否应该将不同的 metrics_set 添加到“eval_config”以便能够检查我感兴趣的指标?

eval_config 指标集:“coco_detection_metrics” use_moving_averages: 假 我该如何解决这个问题?哦,天哪。

【问题讨论】:

【参考方案1】:

您可以在评估数据上获得模型的结果。然后,您可以获取这些结果并将它们用于您自己的指标,或者从 sklearn 获取指标并应用于您的结果。

# Given val_input, val_y_true as inputs to the model and labels.
y_pred = trainedmodel.predict(val_input)

那么你真的可以做任何你想做的事。例如

from sklearn.metrics import precision_recall_curve, auc

precision, recall, thresholds = precision_recall_curve(val_y_true, y_pred)
auc_trained_model = auc(fpr_keras, tpr_keras)

plt.figure(1)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(precision, recall, label='trainedmodel (area = :.3f)'.format(auc_trained_model))
plt.xlabel('precision')
plt.ylabel('recall')
plt.title('PR curve')
plt.legend(loc='best')
plt.show()

例如,这将绘制模型的 PR 曲线。

【讨论】:

我用过Tensorflow Object Detection API,所以经过训练,只有一个扩展名为V2的文件作为评估输出。如果我使用教程中提到的方式,它只会给我mAP。 (tensorflow-object-detection-api-tutorial.readthedocs.io/en/…) 那么,我如何在 Spyder 或 PY 中编写相同的代码,我的意思是,任何可以让我控制在 Matlab 中查看变量的平台。然后,你的答案可能对像我这样的新手有用,看在上帝的份上。无论如何,谢谢。 首先,提供更详细的信息会很有用。你在说什么.v2。评估输出是什么意思?也许如果你提供一些代码sn-ps,问题会更清楚。

以上是关于对象检测/分类任务的性能指标(用于图像)的主要内容,如果未能解决你的问题,请参考以下文章

性能测试的分类以及性能测试的指标

性能测试常见分类及关注指标

怎样分析linux的性能指标

机器学习算法分类及其评估指标

机器学习面试--算法评价指标

分类器性能度量指标之ROC曲线、AUC值