目标检测 YOLOv5 指标计算

flyfish

主要在文件metrics.py中
计算每一个类的AP(average precision)指标
YOLOv5 AP计算代码参考地址

在给定召回率和精度曲线的情况下,计算AP

该计算AP的方式与faster-rcnn相同

def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names=()):

参数说明
tp: true positive
conf: 目标的置信度,取值范围0-1
pred_cls: 预测目标类别
target_cls: 真实目标类别,target也可以用gt表示
plot: 在mAP@0.5的情况下,是否绘制P-R曲线
save_dir: P-R曲线图的保存路径

ap_per_class函数会调用compute_ap

计算混淆矩阵 (confusion matrix)

图中的actual values可以叫ground truth

class ConfusionMatrix:

def __init__(self, nc, conf=0.25, iou_thres=0.45):self.matrix = np.zeros((nc + 1, nc + 1))self.nc = nc  # number of classesself.conf = confself.iou_thres = iou_thres

nc:类别个数
conf:目标置信度阈值
iou_thres :IOU的阈值

预测的结果

detections
一共6列 每列代表的意思 x1, y1, x2, y2, conf, class
一行表示预测目标的位置(x1, y1, x2, y2),预测目标的置信度(conf),预测目标属于什么类别(class)
shape是[7, 6]

[
[3.20333e+02, 1.08333e+00, 4.08333e+02, 2.37667e+02, 8.51074e-01, 0.00000e+00],
[8.02667e+02, 4.18000e+02, 1.06133e+03, 7.14667e+02, 8.42773e-01, 0.00000e+00],
[1.18067e+03, 5.42500e+01, 1.27667e+03, 3.76667e+02, 7.18262e-01, 0.00000e+00],
[5.24667e+02, 5.51667e+02, 7.94000e+02, 7.10000e+02, 6.36230e-01, 0.00000e+00],
[9.87333e+02, 0.00000e+00, 1.05400e+03, 6.83333e+01, 6.34766e-01, 0.00000e+00],
[1.06800e+03, 0.00000e+00, 1.14133e+03, 6.29167e+01, 4.94629e-01, 0.00000e+00],
[6.27000e+02, 5.50667e+02, 8.03333e+02, 7.13333e+02, 3.66455e-01, 0.00000e+00]
]

标注的真实情况

labels
一共5列 class, x1, y1, x2, y2
一行表示 目标真正属于什么类别(class),目标的真实位置(x1, y1, x2, y2)
shape是[7, 5]

[
[0.00000e+00, 3.21000e+02, 2.99988e+00, 4.02000e+02, 2.40000e+02],
[0.00000e+00, 7.69001e+02, 4.23000e+02, 1.05900e+03, 7.16000e+02],
[0.00000e+00, 4.29000e+02, 5.49000e+02, 7.85999e+02, 7.16000e+02],
[0.00000e+00, 1.17000e+03, 1.87000e+02, 1.28000e+03, 3.95000e+02],
[0.00000e+00, 1.08200e+03, 9.99969e-01, 1.14900e+03, 6.30000e+01],
[0.00000e+00, 1.19800e+03, 3.10000e+01, 1.28000e+03, 2.28000e+02],
[0.00000e+00, 9.85999e+02, 9.99969e-01, 1.05300e+03, 6.30000e+01]
]

预测的目标类别 ,一共预测了7个目标
detection_classes:
[0, 0, 0, 0, 0, 0, 0]

目标的真实类别,一共7个目标
gt_classes:
[0, 0, 0, 0, 0, 0, 0]

通过预测的目标位置和真实的目标位置计算iou的结果

iou = general.box_iou(labels[:, 1:], detections[:, :4])iou:
[
[0.90478, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000],
[0.00000, 0.85991, 0.00000, 0.03201, 0.00000, 0.00000, 0.05168],
[0.00000, 0.00000, 0.00000, 0.67960, 0.00000, 0.00000, 0.41423],
[0.00000, 0.00000, 0.51112, 0.00000, 0.00000, 0.00000, 0.00000],
[0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.72117, 0.00000],
[0.00000, 0.00000, 0.40877, 0.00000, 0.00000, 0.00000, 0.00000],
[0.00000, 0.00000, 0.00000, 0.00000, 0.87777, 0.00000, 0.00000]
]

iou结果的筛选

举例说明
看一眼上面的iou结果,0.90478在第0行,第0列;最后一行的0.87777在第6行第4列
matches:

[
[          0           0     0.90478]
[          1           1     0.85991]
[          2           3      0.6796]
[          3           2     0.51112]
[          4           5     0.72117]
[          6           4     0.87777]
]

代码是用x存储着阈值在什么位置,哪行哪列

x:
[0, 1, 2, 3, 4, 6],
[0, 1, 3, 2, 5, 4]

最后输出的混淆矩阵如下

matrix:
[[          6           1][          1           0]]

该代码实现的结果与上图相比 预测值(predicted value)与实际值(actual value)调换了一下。代码实现结果如下

深度学习基础 - 指标

目标检测 YOLOv5 指标计算相关推荐

  1. 《深度学习与目标检测 YOLOv5》

    <深度学习与目标检测 YOLOv5> flyfish 基础 深度学习基础 - 向量 深度学习基础 - 累加符号和连乘符号 深度学习基础 - 最大似然估计 深度学习基础 - 朴素贝叶斯 深度 ...

  2. 目标检测 YOLOv5 - 卷积层和BN层的融合

    目标检测 YOLOv5 - 卷积层和BN层的融合 即Conv2d和 BatchNorm2d融合 flyfish 为了减少模型推理时间,YOLOv5源码中attempt_load已经包括两层的合并,主要 ...

  3. 目标检测 YOLOv5 anchor设置

    目标检测 YOLOv5 anchor设置 1 anchor的存储位置 1.1 yaml配置文件中例如 models/yolov5s.yaml # anchors anchors:- [10,13, 1 ...

  4. 目标检测 YOLOv5 自定义网络结构

    目标检测 YOLOv5 自定义网络结构(YOLOv5-ShuffleNetV2) flyfish 版本:YOLOv5:v5 具体已经借鉴的自定义网络结构包括 YOLOv5-MobileNetV3 Mo ...

  5. 目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等

    目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等 flyfish 文中包括了YOLOv5作者分享的提高模型指标小技巧和吴恩达(Andrew Ng)在做缺陷检测项目( ste ...

  6. 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?

    参考文章:深度学习-目标检测评估指标P-R曲线.AP.mAP 文章目录 P-R曲线: AP计算: 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence score,每一类( ...

  7. Microsoft COCO: Common Objects in Context - 目标检测评估 指标(Detection Evaluation)

    参考博客 coco官网 coco目标检测评估指标 以下12个指标用于描述COCO上的对象检测器的性能: Average Precision (AP): AP % AP at IoU=.50:.05:. ...

  8. 目标检测 YOLOv5网络v6 0版本总结

    目标检测 YOLOv5网络v6.0版本总结 YOLOv5对比YOLOv4 输入端:在模型训练阶段,提出了Mosaic数据增强.自适应锚框计算.自适应图片缩放等: Backbone网络:融合其它检测算法 ...

  9. 目标检测——YOLOv5(八)

    简介: YOLOv4 (2020.4.23)发布还不到 2 个月,很多人都没来及仔细看...突然 YOLOv5 (2020.6.10)又双叕来了... YOLOv5的大小仅有 27 MB,而使用 da ...

最新文章

  1. 如何有效地连接字符串
  2. Nebula3学习笔记(6): 网络系统
  3. python golang 小工具_使用Go语言简单模拟Python的生成器
  4. c 匹配mysql密码,MySQL设置密码的三种方法
  5. 皮卡丘为什么不进化_神奇宝贝:为什么皮卡丘一直不愿意进化?原因竟然是这个!...
  6. CSS 控制滚动条样式
  7. 配置mysql环境变量之后,仍然无法打开mysql的解决方法
  8. 【课程下载】基于Cocos2d-x游戏引擎实战开发超人
  9. scp 给ipv6_scp传输常用命令
  10. 漫谈CRM体系化建设2 – 如何开发客户?
  11. 2020年中国工程机械租赁行业现状及市场竞争格局分析,工程机械运营市场集中度极低,高空作业平台市场集中度较高「图」
  12. 使用微软Azure的tts文本转语音服务出现java.lang.UnsatisfiedLinkError
  13. 2023计算机毕业设计SSM最新选题之java中药城药材销售管理系统eah41
  14. 18 岁清华毕业,95后博士生杨幻睿将深度学习 “单核” 变“多核”,显著提高 “对抗性攻击” 防御力-1
  15. 高校教师工资管理系统java_基于jsp+Spring+mybatis的SSM简单院校教师工资管理系统...
  16. Pandas学习——连接
  17. 如何应对大促?看京东核心中间件团队的高可用实践指南
  18. mysql的启动命令_mysql的配置和启动命令
  19. JPG怎么转换成PDF?用迅读PDF大师,一键批量转换
  20. 嵌入式linux如何学?

热门文章

  1. 幻方算法(Magic Square)
  2. 〖Python WEB 自动化测试实战篇⑬〗- 实战 - 数据驱动在自动化测试中的应用
  3. 畅享10e会有鸿蒙吗,畅享10e全局领先小米10,卢伟冰嘲讽:年度“机皇”
  4. z6青春版刷Android11,联想Z6青春版MIUI刷机包(系统刷机最新完整固件MIUI11稳定版)...
  5. 关于windows的粘滞键后门漏洞
  6. 获取昨天、今天、明天日期
  7. REVIT 2016二次开发环境的搭建
  8. 3dsmax导入Autocad立体图问题
  9. 怎么用视频编辑软件去掉视频中的水印
  10. 开机后,电脑显示屏无信号怎么办?