Yolov9添加mAP0.75/mAP75评价指标

前言

考虑到不用数据集对于评价指标的需求不同,当数据集mAP0.5过高,直逼1时,可考虑添加mAP0.75作为评价指标之一。

目前比较先进的Yolov5、Yolov7和Yolov8对于如何添加mAP0.75已经有了成熟的指导教程,这里也给出我尝试过较为成功的教程,供大家学习参考。

Yolov7添加mAP0.75教程链接:https://blog.csdn.net/qq_44177768/article/details/129894379

Yolov8添加mAP0.75教程链接:https://blog.csdn.net/qq_43471945/article/details/133643543

Yolov9代码官方版https://github.com/WongKinYiu/yolov9

注意,Yolov8添加的教程可以考虑加上该博客评论区第一个的大神读者评论的说的内容。

Yolov9添加mAP0.75详细教程

 修改脚本1:找到Val_dual.py

PS:本文修改的代码为Yolov9官方版v0.1,版本更迭应该不会影响这些base代码。

step1

定位172-173行代码

将这两行代码修改为:

    s = ('%22s' + '%11s' * 7) % ('Class', 'Images', 'Instances', 'P', 'R', 'mAP50', 'mAP75', 'mAP50-95')
    tp, fp, p, r, f1, mp, mr, map50, map75, ap50, map = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0

step2

定位262-263行代码

修改为

        ap50, ap75, ap = ap[:, 0], ap[:, 5], ap.mean(1)  # AP@0.5, AP@0.75, AP@0.5:0.95
        mp, mr, map50, map75, map = p.mean(), r.mean(), ap50.mean(), ap75.mean(), ap.mean()

step3

定位268-277行代码

修改为

    pf = '%22s' + '%11i' * 2 + '%11.3g' * 5  # print format
    LOGGER.info(pf % ('all', seen, nt.sum(), mp, mr, map50, map75, map))
    if nt.sum() == 0:
        LOGGER.warning(f'WARNING ⚠️ no labels found in {task} set, can not compute metrics without labels')

    # Print results per class
    if (verbose or (nc < 50 and not training)) and nc > 1 and len(stats):
        for i, c in enumerate(ap_class):
            LOGGER.info(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap75[i], ap[i]))

step4

定位 eval\.summarize

修改为

eval.summarize()
map, map50, map75 = eval.stats[:3]  # update results (mAP@0.5:0.95, mAP@0.5)

step5

定位 for i\, c in enumerate\(ap_class\)\:

修改为

    for i, c in enumerate(ap_class):
        maps[c] = ap[i]
    return (mp, mr, map50, map75, map, *(loss.cpu() / len(dataloader)).tolist()), maps, t

修改脚本2:找到untils.loggers.__init__.py脚本

定位65行代码

修改为

        self.keys = [
            'train/box_loss',
            'train/cls_loss',
            'train/dfl_loss',  # train loss
            'metrics/precision',
            'metrics/recall',
            'metrics/mAP_0.5',
            'metrics/mAP_0.75',
            'metrics/mAP_0.5:0.95',  # metrics
            'val/box_loss',
            'val/cls_loss',
            'val/dfl_loss',  # val loss
            'x/lr0',
            'x/lr1',
            'x/lr2']  # params

至此完成全部修改

效果展示

运行Train_dual脚本,如下图所示,mAP0.75指标打印成功。

保存结果,如下图所示,runs/train/yolov9/results.txt中mAP0.75指标保存成功。

运行Val_dual.py脚本,如下图所示,mAP0.75指标打印成功。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值