YOLOv8-v12转COCO评估指标后,评估指标偏低原因分析与修正方法

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发2.【车牌识别与自动收费管理系统开发
3.【手势识别系统开发4.【人脸面部活体检测系统开发
5.【图片风格快速迁移软件开发6.【人脸表表情识别系统
7.【YOLOv8多目标识别与自动标注软件开发8.【基于深度学习的行人跌倒检测系统
9.【基于深度学习的PCB板缺陷检测系统10.【基于深度学习的生活垃圾分类目标检测系统
11.【基于深度学习的安全帽目标检测系统12.【基于深度学习的120种犬类检测与识别系统
13.【基于深度学习的路面坑洞检测系统14.【基于深度学习的火焰烟雾检测系统
15.【基于深度学习的钢材表面缺陷检测系统16.【基于深度学习的舰船目标分类检测系统
17.【基于深度学习的西红柿成熟度检测系统18.【基于深度学习的血细胞检测与计数系统
19.【基于深度学习的吸烟/抽烟行为检测系统20.【基于深度学习的水稻害虫检测与识别系统
21.【基于深度学习的高精度车辆行人检测与计数系统22.【基于深度学习的路面标志线检测与识别系统
23.【基于深度学习的智能小麦害虫检测识别系统24.【基于深度学习的智能玉米害虫检测识别系统
25.【基于深度学习的200种鸟类智能检测与识别系统26.【基于深度学习的45种交通标志智能检测与识别系统
27.【基于深度学习的人脸面部表情识别系统28.【基于深度学习的苹果叶片病害智能诊断系统
29.【基于深度学习的智能肺炎诊断系统30.【基于深度学习的葡萄簇目标检测系统
31.【基于深度学习的100种中草药智能识别系统32.【基于深度学习的102种花卉智能识别系统
33.【基于深度学习的100种蝴蝶智能识别系统34.【基于深度学习的水稻叶片病害智能诊断系统
35.【基于与ByteTrack的车辆行人多目标检测与追踪系统36.【基于深度学习的智能草莓病害检测与分割系统
37.【基于深度学习的复杂场景下船舶目标检测系统38.【基于深度学习的农作物幼苗与杂草检测系统
39.【基于深度学习的智能道路裂缝检测与分析系统40.【基于深度学习的葡萄病害智能诊断与防治系统
41.【基于深度学习的遥感地理空间物体检测系统42.【基于深度学习的无人机视角地面物体检测系统
43.【基于深度学习的木薯病害智能诊断与防治系统44.【基于深度学习的野外火焰烟雾检测系统
45.【基于深度学习的脑肿瘤智能检测系统46.【基于深度学习的玉米叶片病害智能诊断与防治系统
47.【基于深度学习的橙子病害智能诊断与防治系统48.【基于深度学习的车辆检测追踪与流量计数系统
49.【基于深度学习的行人检测追踪与双向流量计数系统50.【基于深度学习的反光衣检测与预警系统
51.【基于深度学习的危险区域人员闯入检测与报警系统52.【基于深度学习的高密度人脸智能检测与统计系统
53.【基于深度学习的CT扫描图像肾结石智能检测系统54.【基于深度学习的水果智能检测系统
55.【基于深度学习的水果质量好坏智能检测系统56.【基于深度学习的蔬菜目标检测与识别系统
57.【基于深度学习的非机动车驾驶员头盔检测系统58.【太基于深度学习的阳能电池板检测与分析系统
59.【基于深度学习的工业螺栓螺母检测60.【基于深度学习的金属焊缝缺陷检测系统
61.【基于深度学习的链条缺陷检测与识别系统62.【基于深度学习的交通信号灯检测识别
63.【基于深度学习的草莓成熟度检测与识别系统64.【基于深度学习的水下海生物检测识别系统
65.【基于深度学习的道路交通事故检测识别系统66.【基于深度学习的安检X光危险品检测与识别系统
67.【基于深度学习的农作物类别检测与识别系统68.【基于深度学习的危险驾驶行为检测识别系统
69.【基于深度学习的维修工具检测识别系统70.【基于深度学习的维修工具检测识别系统
71.【基于深度学习的建筑墙面损伤检测系统72.【基于深度学习的煤矿传送带异物检测系统
73.【基于深度学习的老鼠智能检测系统74.【基于深度学习的水面垃圾智能检测识别系统
75.【基于深度学习的遥感视角船只智能检测系统76.【基于深度学习的胃肠道息肉智能检测分割与诊断系统
77.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统78.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统
79.【基于深度学习的果园苹果检测与计数系统80.【基于深度学习的半导体芯片缺陷检测系统
81.【基于深度学习的糖尿病视网膜病变检测与诊断系统82.【基于深度学习的运动鞋品牌检测与识别系统
83.【基于深度学习的苹果叶片病害检测识别系统84.【基于深度学习的医学X光骨折检测与语音提示系统
85.【基于深度学习的遥感视角农田检测与分割系统86.【基于深度学习的运动品牌LOGO检测与识别系统
87.【基于深度学习的电瓶车进电梯检测与语音提示系统88.【基于深度学习的遥感视角地面房屋建筑检测分割与分析系统
89.【基于深度学习的医学CT图像肺结节智能检测与语音提示系统90.【基于深度学习的舌苔舌象检测识别与诊断系统
91.【基于深度学习的蛀牙智能检测与语音提示系统92.【基于深度学习的皮肤癌智能检测与语音提示系统

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

引言

上一篇文章《YOLOv8-v12的评估指标转为COCO指标详细过程【附源码】》详细介绍了如何将YOLO在验证集上的评估结果转为COCO评估格式评估结果。但是细心的小伙伴会发现YOLO评估指标mAP50在转换成COCO评估指标后,COCO评估结果比YOLO评估结果低了1个多点。
这主要是由于YOLO默认的评估指标(如mAP@0.5、mAP@0.5:0.95)与COCO官方指标(如AP、AP@[0.5:0.95])的计算逻辑存在差异。这种差异源于两者在PR曲线采样策略、交并比(IoU)阈值设定及多任务评价维度上的不同设计。例如:YOLO默认采用线性插值法生成PR曲线,而COCO评估工具(pycocotools)则优先匹配真实数据点,导致同一模型在不同框架下指标波动。

本文将对YOLO的PR曲线采样策略中的插值方法改为COCO使用的最接近采样点的真值点使其原始评估指标与转换成COCO评估指标后的结果更加接近。但是由于还有其他计算差异,评估指标也不能完全一致。


一、AP差异的原因

  1. PR曲线采样策略不同

    • YOLOv8-v12:在计算AP时,若某个召回率(Recall)采样点没有对应的精确率(Precision)真值,YOLO会通过线性插值左右两个临近的真值点生成估算值。
    • pycocotools:遇到同样情况时,直接选择最接近采样点的真值点的精确率值,避免插值引入误差。
    • 影响:当PR曲线波动较大时(尤其是小目标检测场景),插值法会平滑曲线,导致AP偏高或偏低,而pycocotools的“真值优先”策略更符合实际数据分布。
  2. 适用范围差异
    pycocotools是COCO官方评估工具,其方法被广泛认可为标准化指标计算方式,而YOLO的默认实现可能因插值导致横向对比偏差。


二、修改方法:使YOLOv8-v12的AP计算接近pycocotools

通过调整YOLOv8-v12的AP计算逻辑,将采样策略从线性插值改为“搜索最近真值”模式。以下是关键代码修改步骤:

  1. 修改AP计算函数
    在YOLOv8-v12的验证代码中,找到AP计算部分(位于ultralytics/utils/metrics.py)的compute_ap函数中,原始代码如下:
    在这里插入图片描述
    将插值方法"interp"替换为搜索最近真值方法searchsorted,修改代码如下:
    在这里插入图片描述
    添加的代码内容:
     elif method == "searchsorted":
         q = np.zeros((101,))
         x = np.linspace(0, 1, 101)  # 101-point interp (COCO)
         inds = np.searchsorted(recall, x, side='left')
         try:
             for ri, pi in enumerate(inds):
                 q[ri] = precision[pi]
         except:
             pass
         q_array = np.array(q)
         ap = np.mean(q_array[q_array > -1])
    

注意:确保在调用AP计算时,设置method='searchsorted',禁用插值逻辑。

三、修改前后结果对比

YOLO修改前评估结果

YOLO修改AP计算逻辑前评估结果如下,mAP50为0.817。
在这里插入图片描述

YOLO修改后评估结果

YOLO修改AP计算逻辑后评估结果如下,mAP50为0.81。
在这里插入图片描述

YOLO转COCO评估结果

在这里插入图片描述
可以看到,YOLO在修改AP计算逻辑中的采样方法之前mAP@0.5为0.817,与COCO结果0.805相差了0.012。但是修改了AP计算逻辑中的采样方法之后mAP@0.5为0.81,与COCO结果0.805相差了0.005。修改后YOLO评估结果与COCO评估结果更加接近,但是由于还有一些其他计算方式的差异,导致结果还是有些许差异。


总结

通过调整采样策略和参数,可以略微修正YOLOv8-v12的AP计算结果可与pycocotools的评估结果。建议在模型对比时统一使用pycocotools作为评估工具,并关注小目标检测场景下的模型结构优化。


在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

### YOLOv7-v12 版本模型的复现训练流程 为了复现 Ultralytics 的 YOLOv7-v12 版本模型,需要遵循以下步骤和代码结构。以下是详细的说明: #### 1. 环境准备 确保安装了必要的依赖项。可以使用以下命令创建虚拟环境并安装所需的库: ```bash pip install ultralytics ``` 如果需要从头开始训练模型,则还需要安装额外的依赖项(如 PyTorch 和 torchvision),这些通常由 `ultralytics` 自动处理[^1]。 #### 2. 下载预训练模型 从 Ultralytics 提供的官方仓库中下载预训练模型,并将其放置在项目根目录下。可以选择以下任意一个模型: - `yolov12n.pt`(最小模型) - `yolov12s.pt`(小型模型) - `yolov12m.pt`(中型模型) - `yolov12l.pt`(大型模型) - `yolov12x.pt`(超大模型) 例如,下载 `yolov12s.pt` 模型: ```bash wget https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov12s.pt ``` #### 3. 加载模型 加载预训练模型以进行推理或微调。以下是一个示例代码片段: ```python from ultralytics import YOLO # 加载预训练模型 model = YOLO("yolov12s.pt") # 替换为实际使用的模型文件名[^1] ``` #### 4. 数据集准备 YOLO 模型需要一个格式化的数据集。通常,数据集应包含以下内容: - 训练图像和验证图像。 - 标注文件(通常为 `.txt` 文件,每行表示一个边界框)。 - 数据配置文件(如 `data.yaml`),定义类别、路径等信息。 以下是一个典型的 `data.yaml` 文件示例: ```yaml train: ./datasets/train/images val: ./datasets/valid/images nc: 80 # 类别数量 names: ['class1', 'class2', 'class3'] # 类别名称列表 ``` #### 5. 训练模型 使用 `ultralytics` 提供的训练接口来训练模型。可以通过命令行或 Python 脚本运行训练任务。以下是一个示例命令: ```bash yolo train model=yolov12s.pt data=data.yaml epochs=100 imgsz=640 ``` 或者通过 Python 脚本: ```python # 使用 YOLO API 进行训练 results = model.train( data="data.yaml", # 数据集配置文件路径 epochs=100, # 训练轮数 imgsz=640 # 输入图像尺寸 ) ``` #### 6. 模型评估 完成训练后,可以对模型进行评估评估过程会生成指标报告(如 mAP、精度、召回率等)。 ```python # 模型评估 metrics = model.val() ``` #### 7. 推理预测 加载训练好的模型并对新图像进行推理。 ```python # 推理 results = model("path/to/image.jpg") # 可视化结果 results[0].plot(show=True, save=True) ``` --- ### 注意事项 - 如果需要复现 YOLOv7-v12 的特定版本,请确认该版本是否已由 Ultralytics 官方支持。若未支持,则可能需要参考原始 YOLOv7 代码库并手动迁移。 -训练过程中,建议调整超参数(如学习率、批量大小等)以适应具体任务需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值