目标检测 YOLOv5 指标计算
目标检测 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 指标计算相关推荐
- 《深度学习与目标检测 YOLOv5》
<深度学习与目标检测 YOLOv5> flyfish 基础 深度学习基础 - 向量 深度学习基础 - 累加符号和连乘符号 深度学习基础 - 最大似然估计 深度学习基础 - 朴素贝叶斯 深度 ...
- 目标检测 YOLOv5 - 卷积层和BN层的融合
目标检测 YOLOv5 - 卷积层和BN层的融合 即Conv2d和 BatchNorm2d融合 flyfish 为了减少模型推理时间,YOLOv5源码中attempt_load已经包括两层的合并,主要 ...
- 目标检测 YOLOv5 anchor设置
目标检测 YOLOv5 anchor设置 1 anchor的存储位置 1.1 yaml配置文件中例如 models/yolov5s.yaml # anchors anchors:- [10,13, 1 ...
- 目标检测 YOLOv5 自定义网络结构
目标检测 YOLOv5 自定义网络结构(YOLOv5-ShuffleNetV2) flyfish 版本:YOLOv5:v5 具体已经借鉴的自定义网络结构包括 YOLOv5-MobileNetV3 Mo ...
- 目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等
目标检测 YOLOv5 - 如何提高模型的指标,提高精确率,召回率,mAP等 flyfish 文中包括了YOLOv5作者分享的提高模型指标小技巧和吴恩达(Andrew Ng)在做缺陷检测项目( ste ...
- 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?
参考文章:深度学习-目标检测评估指标P-R曲线.AP.mAP 文章目录 P-R曲线: AP计算: 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence score,每一类( ...
- Microsoft COCO: Common Objects in Context - 目标检测评估 指标(Detection Evaluation)
参考博客 coco官网 coco目标检测评估指标 以下12个指标用于描述COCO上的对象检测器的性能: Average Precision (AP): AP % AP at IoU=.50:.05:. ...
- 目标检测 YOLOv5网络v6 0版本总结
目标检测 YOLOv5网络v6.0版本总结 YOLOv5对比YOLOv4 输入端:在模型训练阶段,提出了Mosaic数据增强.自适应锚框计算.自适应图片缩放等: Backbone网络:融合其它检测算法 ...
- 目标检测——YOLOv5(八)
简介: YOLOv4 (2020.4.23)发布还不到 2 个月,很多人都没来及仔细看...突然 YOLOv5 (2020.6.10)又双叕来了... YOLOv5的大小仅有 27 MB,而使用 da ...
最新文章
- 如何有效地连接字符串
- Nebula3学习笔记(6): 网络系统
- python golang 小工具_使用Go语言简单模拟Python的生成器
- c 匹配mysql密码,MySQL设置密码的三种方法
- 皮卡丘为什么不进化_神奇宝贝:为什么皮卡丘一直不愿意进化?原因竟然是这个!...
- CSS 控制滚动条样式
- 配置mysql环境变量之后,仍然无法打开mysql的解决方法
- 【课程下载】基于Cocos2d-x游戏引擎实战开发超人
- scp 给ipv6_scp传输常用命令
- 漫谈CRM体系化建设2 – 如何开发客户?
- 2020年中国工程机械租赁行业现状及市场竞争格局分析,工程机械运营市场集中度极低,高空作业平台市场集中度较高「图」
- 使用微软Azure的tts文本转语音服务出现java.lang.UnsatisfiedLinkError
- 2023计算机毕业设计SSM最新选题之java中药城药材销售管理系统eah41
- 18 岁清华毕业,95后博士生杨幻睿将深度学习 “单核” 变“多核”,显著提高 “对抗性攻击” 防御力-1
- 高校教师工资管理系统java_基于jsp+Spring+mybatis的SSM简单院校教师工资管理系统...
- Pandas学习——连接
- 如何应对大促?看京东核心中间件团队的高可用实践指南
- mysql的启动命令_mysql的配置和启动命令
- JPG怎么转换成PDF?用迅读PDF大师,一键批量转换
- 嵌入式linux如何学?
热门文章
- 幻方算法(Magic Square)
- 〖Python WEB 自动化测试实战篇⑬〗- 实战 - 数据驱动在自动化测试中的应用
- 畅享10e会有鸿蒙吗,畅享10e全局领先小米10,卢伟冰嘲讽:年度“机皇”
- z6青春版刷Android11,联想Z6青春版MIUI刷机包(系统刷机最新完整固件MIUI11稳定版)...
- 关于windows的粘滞键后门漏洞
- 获取昨天、今天、明天日期
- REVIT 2016二次开发环境的搭建
- 3dsmax导入Autocad立体图问题
- 怎么用视频编辑软件去掉视频中的水印
- 开机后,电脑显示屏无信号怎么办?