1

我已经使用 Tensorflow 对象检测 APIfaster_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 个检测到的类,我该怎么办?

4

2 回答 2

0

迟到总比没有好 - 来自这篇文章

1.使用不同的评估配置

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

TensorFlow 对象检测 API 支持各种评估指标,详见此处的文档。PASCAL VOC 2010 检测指标给出了每个类别的 AP 分数。

2. 编辑cocoeval.pypycocotools 包中的文件

此方法涉及将 8 行代码粘贴到cocoeval.py文件中。在这篇文章中有很好的解释和记录。

于 2021-06-16T21:47:51.463 回答
0

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


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)

于 2019-12-10T12:13:43.223 回答