【问题标题】:how to print out each class's Average Precision using Mxnet Faster RCNN for object detection如何使用 Mxnet Faster RCNN 打印每个类的平均精度以进行对象检测
【发布时间】:2018-05-14 03:04:02
【问题描述】:

我正在使用更快的 rcnn(mxnet) 对我自己的数据集进行对象检测,该数据集有 9 个类(包括背景)。但是,我发现最后它只打印出训练过程中所有 9 个类的平均准确率。此外,在测试过程中,它也只打印出所有 9 个类别的平均精度和召回率。我想知道如何在训练过程中打印出每个班级的准确率,以及在测试过程中每个班级的召回率和精度? 或者有人可以告诉我应该在哪里看才能接近我的目标? 一个理想的例子将显示在图像中。 enter image description here

【问题讨论】:

    标签: computer-vision deep-learning object-detection mxnet


    【解决方案1】:

    您可以为此使用 Scikit-learn 函数 sklearn.metrics.precision_recall_fscore_support¶sklearn.metrics.classification_report 是美化版。

    在测试时,您将获得一组真实值 (Y_true) 和一组预测每个类别的概率 (Y_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_metric

    model = mx.mod.Module(symbol=...)
    model.fit(..., batch_end_callback = mx.callback.Speedometer(batch_size),
              eval_metric=custom_metric, ...)
    

    您需要为 custom_metric 创建一个新类,该类扩展 mxnet.metric.EvalMetric 并实现一个 get 方法来打印(甚至返回)每个类的指标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 2021-10-14
      • 1970-01-01
      • 2022-10-20
      • 2019-11-06
      • 2020-11-23
      相关资源
      最近更新 更多