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

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.xdnf.cn/news/9170.html

相关文章:

  • [QMT量化交易小白入门]-五十七、ETF历史行情分钟线下载
  • 25盘古石初赛wp(部分)
  • Java----自动装箱和自动拆包 与 泛型
  • 大模型的检索增强生成综述研究
  • 用python写节奏大师小游戏
  • TMS320F28388使用sysconfig配置SCI通信(RS485+FIFO+Modbus)
  • 第4章-操作系统知识
  • 《反事实棱镜:折射因果表征学习的深层逻辑》
  • SymPy | 其他未知数表示方程中的某一未知数
  • 测绘技术重塑低空经济格局
  • 火语言UI组件--标记
  • 蚂蚁TuGraph图数据库行业落地,开启数据处理新“视界”
  • MySQL进阶实战:窗口函数 VS 聚合函数,性能与场景全对比
  • Java 版本升级指南:从 Java 8 到 Java 11/17/21 的核心优势与新特性
  • ABAP Tools for Clean ABAP
  • dify-api的.env配置文件
  • 前端配置nginx代理
  • 预算超支、进度延误?工程企业如何实现精准管理?
  • 2025年储能产业TOP10省份及发展报告(附资料包下载)
  • 如何学习联邦学习和差分隐私
  • 家政维修平台实战10:搭建首页
  • 经典分类模型
  • 2021年江西工业互联网大赛———工业固件分析
  • 31.第二阶段x64游戏实战-封包-线程发包
  • 【科研绘图】3DMAX血管网络插件BloodVessels使用方法详解
  • 中级社会工作者《社会工作综合能力》的重点知识有哪些?
  • ASR/TTS model 通过量化提升推理速度
  • vue+ThreeJs 创造自动选择的甜甜圈(圆环)
  • 七彩喜认知症评估系统:解码大脑健康的“数字先知”
  • OpenGL Chan视频学习-7 Writing a Shader inOpenGL