当前位置: 首页 > news >正文

YOLOv12增加map75指标

YOLOv12源码:https://github.com/sunsmarterjie/yolov12

第一步:更改Val.py文件

地址:该文件在yolov12-main\ultralytics\models\yolo\detect下

首先定位到def get_desc(self):这个函数上

代码修正如下:

    def get_desc(self):"""Return a formatted string summarizing class metrics of YOLO model."""return ("%22s" + "%11s" * 7) % ("Class", "Images", "Instances", "Box(P", "R", "mAP50", "mAP75", "mAP50-95)")

然后再定位到def eval_json(self, stats):这个函数上,这个函数的末尾

代码修正如下:

                # update mAP50 mAP75 and mAP50-95stats[self.metrics.keys[-1]], stats[self.metrics.keys[-2]], stats[self.metrics.keys[-3]]= (val.stats[:3] if self.is_coco else [val.results["AP50"], val.results["AP75"], val.results["AP"]])

第二步:更改metrics.py文件

首先定位到这个def ap50(self):函数

ap50ap中间增加一个函数如下所示

    @propertydef ap75(self):"""Returns the Average Precision (AP) at an IoU threshold of 0.5 for all classes.Returns:(np.ndarray, list): Array of shape (nc,) with AP50 values per class, or an empty list if not available."""return self.all_ap[:, 5] if len(self.all_ap) else []

然后再定位到mean_results(self):这个函数上

更改上图中的这三个函数     mean_results(self):      class_result(self, i):      fitness(self):

    def mean_results(self):"""Mean of results, return mp, mr, map50, map75, map."""return [self.mp, self.mr, self.map50, self.map75, self.map]def class_result(self, i):"""Class-aware result, return p[i], r[i], ap50[i], ap75[i], ap[i]."""return self.p[i], self.r[i], self.ap50[i], self.ap75[i], self.ap[i]
    def fitness(self):"""Model fitness as a weighted combination of metrics."""w = [0.0, 0.0, 0.1, 0.1, 0.9]  # weights for [P, R, mAP@0.5, mAP@0.75, mAP@0.5:0.95]return (np.array(self.mean_results()) * w).sum()

再往下定位到def keys(self):这个函数上

    def keys(self):"""Returns a list of keys for accessing specific metrics."""return ["metrics/precision(B)", "metrics/recall(B)", "metrics/mAP50(B)", 'metrics/mAP75(B)', "metrics/mAP50-95(B)"]

再往下定位def keys(self):还是这个函数

    def keys(self):"""Returns a list of keys for accessing metrics."""return ["metrics/precision(B)","metrics/recall(B)","metrics/mAP50(B)","metrics/mAP50-95(B)","metrics/mAP75(B)","metrics/precision(M)","metrics/recall(M)","metrics/mAP50(M)","metrics/mAP75(M)","metrics/mAP50-95(M)",]

    def keys(self):"""Returns list of evaluation metric keys."""return ["metrics/precision(B)","metrics/recall(B)","metrics/mAP50(B)","metrics/mAP75(B)","metrics/mAP50-95(B)","metrics/precision(P)","metrics/recall(P)","metrics/mAP50(P)","metrics/mAP75(P)","metrics/mAP50-95(P)",]

    def keys(self):"""Returns a list of keys for accessing specific metrics."""return ["metrics/precision(B)", "metrics/recall(B)", "metrics/mAP50(B)", "metrics/mAP75(B)", "metrics/mAP50-95(B)"]

到此代码更改完毕,训练的时候就能出现map75指标了

相关文章:

  • 深度学习---可视化
  • 华为云Flexus+DeepSeek征文 | Dify-LLM平台一键部署教程及问题解决指南
  • 项目部署一次记录
  • 通过chrome插件自动生成博客评论,高效发外链
  • P5734 【深基6.例6】文字处理软件
  • LVGL(lv_animimg)
  • 当前上下文中不存在名称“X509CertificateLoader”,编译.NET 9依赖
  • 数据库入门教程:以商品订单系统为例
  • LeetCode百题刷004(哈希表优化两数和问题)
  • NGINX 用户标识模块 (ngx_http_userid_module) 完整配置与最佳实践指南
  • 图论:floyed算法
  • java枚举和mybaits-plus结合实现映射输出和存储
  • 图论 判断是否有环
  • sqli-labs第二十八关——Trick with ‘union select‘
  • STM32G0xx基于串口(UART)Ymodem协议实现OTA升级包括Bootloader、上位机、应用程序
  • 语音识别——文本转语音
  • leetcode617.合并二叉树:递归思想下的树结构融合艺术
  • [yolov11改进系列]基于yolov11引入特征增强注意力机制ADNet的python源码+训练源码
  • 深度学习入门6:pytorch卷积神经网络CNN实现手写数字识别准确率99%
  • 从万有引力到深度学习,认识模型思维
  • 交互式网站备案/花生壳免费域名注册
  • wordpress复制指定内容/seo搜索工具栏
  • 大流量网站建设/清远新闻最新消息
  • yollow网站推广/谷歌chrome浏览器下载
  • 关于网站建设投稿/做百度推广多少钱
  • 广州网站营销优化开发/百度权重等级