如何仅在一个特定类上评估Tensorflow对象检测API?

我已经从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

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

shenjie63293713 回答:如何仅在一个特定类上评估Tensorflow对象检测API?

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


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)

,

迟到总比不到好 - 来自 this 帖子

1.使用不同的评估配置

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

TensorFlow 对象检测 API 支持多种评估指标,文档 here 中有详细说明。 PASCAL VOC 2010 检测指标为每个班级提供 AP 分数。

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

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

本文链接:https://www.f2er.com/2957361.html

大家都在问