【问题标题】:How to evaluate Tensorflow Object Detection API on only one particular class?如何仅在一个特定类上评估 Tensorflow 对象检测 API?
【发布时间】:2019-12-07 14:37:41
【问题描述】:

我已经使用 Tensorflow 对象检测 API faster_rcnn_inception_resnet_v2_atrous_coco 在大约 10 个类上训练了一个对象检测模型。当我运行model_main.py 文件来评估模型时,它似乎只给出了所有 10 个类的平均平均精度 (AP) 和平均召回率 (AR),如下所示:

Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.331
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.479
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.395
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.600
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.407
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.333
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.358
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.544
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.548
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.600
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.545
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.551

但是,如果我只想评估 1 个特定类的性能,而不是所有 30 个检测到的类,我应该怎么做?

【问题讨论】:

    标签: tensorflow computer-vision artificial-intelligence object-detection-api faster-rcnn


    【解决方案1】:

    在检测后添加以下代码以过滤感兴趣的对象-


    objectOfInterest = 1  # Interested object class number as per label file 
    box = np.asarray(boxes)
    cls = np.asarray(classes).astype(np.int32)
    scr = np.asarray(scores)
    bl = (cls == objectOfInterest) 
    classes = np.extract(boolar,cls)
    scores = np.extract(boolar,scr)
    boxes = np.extract(boolar,box)
    

    【讨论】:

    • 我的意思是评估,而不是展示。我认为它在 model_main.pymodel_lib.py 中,但我不知道如何修改它们以仅评估 1 个类
    • 对于模型检测中类数的变化,您需要创建具有相同类数的数据集并相应地训练模型。查看此链接以获取有关如何创建自己的数据集的更多信息 - github.com/tensorflow/models/blob/master/research/…
    【解决方案2】:

    迟到总比没有好 - 来自this 帖子

    1.使用不同的评估配置

    只需将模型的*.config 文件中的metrics_set 值更改为"pascal_voc_detection_metrics"

    TensorFlow 对象检测 API 支持各种评估指标,文档here 中有详细说明。 PASCAL VOC 2010 检测指标给出每个类别的 AP 分数。

    2。编辑 pycocotools 包中的 cocoeval.py 文件

    此方法涉及将 8 行代码粘贴到 cocoeval.py 文件中。 this 帖子中对此进行了很好的解释和记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 2017-11-27
      • 2019-01-09
      • 2020-08-23
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      相关资源
      最近更新 更多