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

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指标了

http://www.lryc.cn/news/2386800.html

相关文章:

  • Avalanche 六期 Workshop 精华合集|Grant 机会、技术深度、项目实战一文回顾!
  • 【MySQL】第九弹——索引(下)
  • leetcode-295 Find Median from Data Stream
  • 【后端高阶面经:缓存篇】37、高并发系统缓存性能优化:从本地到分布式的全链路设计
  • 西门子 S1500 博途软件舞台威亚 3D 控制方案
  • 洛谷 P3374 【模板】树状数组 1(线段树解法)
  • 欣佰特科技| SIL2/PLd 认证 Inxpect毫米波安全雷达:3D 扫描 + 微小运动检测守护工业安全
  • 大模型量化原理
  • dify-api的.env配置文件
  • 【Linux】Linux 操作系统 - 18 , 重谈文件(二) ~ 文件描述符和重定向原理 , 手把手带你彻底理解 !!!
  • 第五十三节:综合项目实践-车牌识别系统
  • AI时代新词-AI伦理(AI Ethics)
  • 湖北理元理律师事务所债务优化服务中的“四维平衡“之道
  • Git Push 失败:HTTP 413 Request Entity Too Large
  • 第10章 网络与信息安全基础知识
  • GO语言学习(九)
  • go 访问 sftp 服务 github.com/pkg/sftp 的使用踩坑,连接未关闭(含 sftp 服务测试环境搭建)
  • Linux多线程(二)之进程vs线程
  • 【MogDB】测试 ubuntu server 22.04 LTS 安装mogdb 5.0.11
  • AI时代新词-数字孪生(Digital Twin)
  • 【HW系列】—web常规漏洞(文件上传漏洞)
  • 如何实现 C/C++ 与 Python 的通信
  • python炸鱼船
  • 使用AutoKeras2.0的AutoModel进行结构化数据回归预测
  • 好用但不常用的Git配置
  • ULVAC VWR-400M/ERH 真空蒸发器 Compact Vacuum Evaporator DEPOX (VWR-400M/ERH)
  • P1068 [NOIP 2009 普及组] 分数线划定
  • PPT连同备注页(演讲者模式)一块转为PDF
  • 第三十二天打卡
  • 项目三 - 任务8:实现词频统计功能