Computer vision 如何打印每个类';使用Mxnet快速RCNN进行目标检测时的平均精度

Computer vision 如何打印每个类';使用Mxnet快速RCNN进行目标检测时的平均精度,computer-vision,deep-learning,object-detection,mxnet,Computer Vision,Deep Learning,Object Detection,Mxnet,我在自己的数据集上使用更快的rcnn(mxnet)进行对象检测,该数据集有9个类(包括背景)。然而,我发现最终它只打印出了培训过程中所有9个班级的平均准确度。此外,在测试过程中,它也只打印出所有9个类的平均精度和召回率。我想知道如何在培训过程中打印出每门课的准确度,以及在测试过程中打印出每门课的召回率和准确度? 或者有人能告诉我,我应该在哪里实现我的目标? 图中会显示一个理想的示例 您可以使用Scikit学习功能sklearn.metrics.precision_recall_fscore_su

我在自己的数据集上使用更快的rcnn(mxnet)进行对象检测,该数据集有9个类(包括背景)。然而,我发现最终它只打印出了培训过程中所有9个班级的平均准确度。此外,在测试过程中,它也只打印出所有9个类的平均精度和召回率。我想知道如何在培训过程中打印出每门课的准确度,以及在测试过程中打印出每门课的召回率和准确度? 或者有人能告诉我,我应该在哪里实现我的目标?
图中会显示一个理想的示例

您可以使用Scikit学习功能
sklearn.metrics.precision_recall_fscore_support¨
。和
sklearn.metrics.classification\u报告
,用于美化版本

在测试时,您将有一个真值数组(
Y\u真
)和每个类的预测概率数组(
Y\u prob
)。使用这些方法如下

Y_pred = np.argmax(Y_prob, axis=1)
print(classification_report(Y_true, Y_pred))

         precision    recall  f1-score   support
class 0       0.50      1.00      0.67         1
class 1       0.00      0.00      0.00         1
class 2       1.00      0.67      0.80         3
avg / total   0.70      0.60      0.61         5
在培训时,每N批列出一次,需要稍微多做一些工作。如果您使用的是
module.fit
方法,则可以设置回调参数和自定义
eval\u度量

model = mx.mod.Module(symbol=...)
model.fit(..., batch_end_callback = mx.callback.Speedometer(batch_size),
          eval_metric=custom_metric, ...)
您需要为
custom\u metric
创建一个新类,该类扩展了
mxnet.metric.EvalMetric
,并实现了一个
get
方法,该方法打印(甚至返回)每个类的度量