mmdetection 目标检测测试时打印各类别准确率(AP),打印iou为0.5时各类AP

第一个问题:测试时打印各类别准确率(AP)

方法1:在mmdet/datasets/coco.py中找到evaluate函数,大概第300多行,将classwise设为True,默认为False

    def evaluate(self,
                 results,
                 metric='bbox',
                 logger=None,
                 jsonfile_prefix=None,
                 # 是否显示每个类别
                 classwise=True,

若改动后未生效可试试运行下面的命令重新编译代码使修改生效

python setup.py install build

方法2(推荐):运行tools/test.py的时候加上 --options "classwise=True"

第二个问题:打印iou为0.5时各类AP

发现在classwise设为True后虽然打印了各类ap,但是并非是iou为0.5时的ap,于是有了此问题

方法1:在mmdet/datasets/coco.py中找到evaluate函数,设置iou阈值,iou_thrs=[0.5]  

def evaluate(self,
                 results,
                 metric='bbox',
                 logger=None,
                 jsonfile_prefix=None,
                 classwise=True,
                 proposal_nums=(100, 300, 1000),
                 iou_thrs=[0.5],
                 metric_items=None): 

方法2:测试时在指令后面加上 --show-score-thr 0.5 

方法3:修改mmdet/datasets/coco.py中的evaluate_det_segm函数以下部分

if classwise:  # Compute per-category AP
    # Compute per-category AP
    # from https://github.com/facebookresearch/detectron2/
    precisions = cocoEval.eval['precision']
    # precision: (iou, recall, cls, area range, max dets)
    assert len(self.cat_ids) == precisions.shape[2]

    results_per_category = []
    for idx, catId in enumerate(self.cat_ids):
        # area range index 0: all area ranges
        # max dets index -1: typically 100 per image
        nm = self.coco.loadCats(catId)[0]
        #precision = precisions[:, :, idx, 0, -1]
        precision = precisions[0, :, idx, 0, -1]  #在这里进行了修改
        precision = precision[precision > -1]
        if precision.size:
            ap = np.mean(precision)
        else:
            ap = float('nan')
        results_per_category.append(
            (f'{nm["name"]}', f'{float(ap):0.3f}'))

若修改源码后未生效可使用如下代码重新编译

python setup.py install build

 打印出了各类在iou为0.5时的ap

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值