在Tensorflow的对象检测API中评估实例细分模型时,我希望获得自定义指标列表,总结如下:
我目前正在测试的方法是通过调整pycocotools的PythonAPI中的一些代码以及Tensorflow研究模型中的其他指标文件来修改已经存在的coco评估指标。当前,COCO评估的默认输出值为以下
Precision/mAP
Precision/mAP@.50IOU
Precision/mAP@.75IOU
Precision/mAP (small)
Precision/mAP (medium)
Precision/mAP (large)
Recall/AR@1
Recall/AR@10
Recall/AR@100
Recall/AR@100 (small)
Recall/AR@100 (medium)
Recall/AR@100 (large)
因此,我决定首先在用于培训的.config文件中的coco_detection_metrics
字段中使用eval_config
eval_config: {
metrics_set: "coco_detection_metrics"
}
然后通过向统计信息列表和统计摘要字典中添加更多项来多次编辑cocoeval.py
和cocotools.py
(与值的数量成比例),以获得所需的结果。出于演示目的,我将仅通过在IOU = 0.5的精度基础上增加IOU = 0.55的精度来显示一个示例。
因此,这是cocoeval.py内COCOeval
类的修改方法
def _summarizeDets():
stats[1] = _summarize(1, iouThr=.5, maxDets=self.params.maxDets[2])
stats[12] = _summarize(1, iouThr=.5, maxDets=self.params.maxDets[2])
以及coco_tools.py内COCOEvalWrapper
类下的编辑方法
summary_metrics = OrderedDict([
('Precision/mAP@.50IOU', self.stats[1]),
('Precision/mAP@.55IOU', self.stats[12])
for category_index, category_id in enumerate(self.GetCategoryIdList()):
per_category_ap['Precision mAP@.50IOU ByCategory/{}'.format( category)] = self.category_stats[1][category_index]
per_category_ap['Precision mAP@.55IOU ByCategory/{}'.format( category)] = self.category_stats[12][category_index]
了解一种更有效的方法来解决我的问题并轻松地请求自定义评估指标列表,而无需调整已经存在的COCO文件,将很有用。理想情况下,我的主要目标是
我的次要目标是