YOLOv8的多分类模型如何计算准确率(Accuracy)、精确率(Precision)、召回率(recall)和F1-Score模型评估参数

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

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

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

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】

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

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

在这里插入图片描述

前言

如下图是YOLOv8训练的多分类结果文件,只给出了混淆矩阵与TOP1与TOP5的准确率曲线。并没有给出最终各个类别的准确率(Accuracy)、精确率(Precision)、召回率(recall)和F1-Score等评估参数。因此我们需要额外计算每个类别的准确率(Accuracy)、精确率(Precision)、召回率(recall)和F1-Score评估参数。以及这些参数平均值本文的计算方式同样可以适用于其他分类模型的评估参数计算。
有了这些参数之后可以更加方便的进行不同分类模型的参数对比,或者模型改进前后的参数对比。
在这里插入图片描述

1.安装sklearn库

因为我们参数计算需要使用到机器学习库sklearn,因此我们需要先安装该库,命令如下:

pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple

2.计算每个分类的评估参数

我的验证集目录如下,每个类别里面放置的是该类别对应的图片:
在这里插入图片描述
详细代码如下,其中real_labels pre_labels 分别代表真实标签与预测标签。

# -*- coding: utf-8 -*-
from ultralytics import YOLO
import matplotlib
import os
matplotlib.use('TkAgg')
from sklearn.metrics import accuracy_score, precision_score,f1_score,recall_score
from sklearn.metrics import classification_report

# 验证结果
model = YOLO('runs/classify/train/weights/best.pt')
# 模型标签
names = {0: 'Bacterial Blight', 1: 'Brown Streak Disease', 2: 'Green Mottle', 3: 'Healthy', 4: 'Mosaic Disease'}
# 验证集路径
base_path = 'datasets/Data/val'

# 将names的key与value值互换,存入dict_names中
dict_names = {v: k for k, v in names.items()}
# 存储真实标签
real_labels = []
# 存储预测标签
pre_labels = []
# 遍历base_path下的所有文件夹,每个文件夹是一个分类
for i in os.listdir(base_path):
    label = dict_names[i]
    # 获取base_path下的所有文件夹下的所有图片
    for j in os.listdir(os.path.join(base_path, i)):
        # 获取图片的路径
        img_path = os.path.join(base_path, i, j)
        # 检测图片
        res = model.predict(img_path)[0]
        # 图片真实标签
        real_labels.append(label)
        # 图片预测标签
        pre_labels.append(res.probs.top1)
print("每个类别的精确率、召回率和F1-Score:")
print(classification_report(real_labels, pre_labels, target_names=list(names.values())))

运行上述代码后,打印结果如下:
在这里插入图片描述
分别计算出了每个类别的准确率(Accuracy)、精确率(Precision)、召回率(recall)和F1-Score参数,并且给出了平均参数,就是macro avg那一行。

3. 单个平均参数计算

上面已经给出了所有的评估结果,如果我们只想单独计算的平均的准确率、精确率、F1分数和召回率,代码如下:

# 计算并打印一系列评估指标,包括准确率、精确率、F1分数和召回率
# 参数:
# real_labels: 真实标签列表,表示样本的真实类别
# pre_labels: 预测标签列表,表示模型预测的样本类别
print('单独计算的准确率、精确率、F1分数和召回率:')
# 1. accuracy_score: 准确率,表示预测正确的样本占总样本的比例
print('accuracy_score:',accuracy_score(real_labels, pre_labels))
# 2. precision_score: 精确率,表示预测为正类且实际为正类的样本占预测为正类样本的比例
print('precision_score:',precision_score(real_labels, pre_labels, average='macro'))
# 3. f1_score: F1分数,是精确率和召回率的调和平均值,综合评估精确度和召回率
print('f1_score:',f1_score(real_labels, pre_labels, average='macro'))
# 4. recall_score: 召回率,表示预测为正类且实际为正类的样本占实际正类样本的比例
print('recall_score:',recall_score(real_labels, pre_labels, average='macro'))

运行上述代码后,打印结果如下:
在这里插入图片描述
计算出这些模型评估结果之后可以更加方便的进行不同分类模型的性能对比,或者模型改进前后的性能对比
如果文章对你有帮助,麻烦动动你的小手,给点个赞,鼓励一下吧,谢谢~~~

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/526109.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql 连接查询和子查询

学习了mysql基本查询, 接着学习连接查询和子查询。 4,连接查询 连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等。通过连接运算符可以实现多个表查询。在关系数据库管理系统中,表建…

rsync实时同步(上行同步)

目录 一、实现实时同步 1. 定期同步的不足 2. 实时同步的优点 3. Linux内核的inotify机制 4. 发起端配置rsyncinotify 4.1 修改rsync源服务器配置文件 4.2 调整inotify内核参数 4.3 安装inotify-tools 4.4 在另一个终端编写触发式同步脚本 4.5 验证 二、使用rsync实现…

直播美颜SDK:AI视觉技术在直播平台中的创新与实践

在直播平台里,主播们通过各种形式的内容吸引着观众,而其中一项重要的技术创新便是直播美颜SDK的应用。本文将探讨这一技术在直播平台中的创新与实践。 一、直播美颜SDK的背景 随着社交媒体的兴起,人们对于自己的形象越来越注重,尤…

【php开发支付宝web支付】

首先介绍下 我用的框架ci 在吐槽下百度的其他人的写的都很垃圾,还不如自己看支付宝的开发手册了 1、composer安装支付宝的sdk composer require alipay/alipay-sdk-php安装完毕 不多哔哔 代码展示 先点地址登录支付宝以后再上我这重点下 支付宝沙箱地址 $ord…

C/C++中局部变量static用法实例

1. 普通局部变量存储于进程栈空间,使用完毕会立即释放,静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0,并且静态局部变量存储于进程的全局数据区,即使函数返回&#xff0…

企业3D数字化网络展馆成为企业文化传承与发扬的圣地

在河北这片古老而富饶的土地上,文明的火种薪火相传,燕赵之风历久弥新。河北企业也多年持续稳居我国第五的宝座,企业文化展馆不仅是企业形象的展示窗口,更是企业文化传承与发扬的圣地。 与短暂的行业展会不同,企业展馆是…

Mac下载的软件显示文件已损坏,如何解决文件已损坏问题

当在Mac上下载的软件显示文件已损坏时,这可能是因为多种原因导致的,包括网络问题、下载中断、软件未完整下载、文件传输错误等。解决这个问题需要采取一些步骤来排除可能的原因,并尝试修复文件。下面将详细介绍一些常见的解决方法&#xff1a…

让WIN7运行WIN10软件的插件

GitHub - vxiiduu/VxKex: Windows 7 API Extensions 安装包才5.23M。 程序 - 属性 - VxKex:勾选 Enable Qt6版的Raptor登录后报错Device offline OpenSCAD的WIN10版

交易要想成功澳福总结几点

100%使用基本面分析的投资者能保证每次交易都能成功吗?100%使用技术分析的投资者能保证每次交易都能成功吗?在fpmarkets澳福看来无论是基本面分析还是技术分析都不能保证100%交易成功。 投资者不能只依赖一种分析进行投资交易。在fpmarkets澳福看来成功的…

vue3中项目优化(Web Worker的使用)

1.Web Worker的作用 本人的理解:js是单线程执行代码,也就是代码需要从上往下执行,而使用Web Worker后相当于分了一条线程出来执行代码,那么两条线程肯定是比一条线程执行的快。 2.新建Web Worker文件 在public文件夹下新建work…

【第二十六篇】Burpsuite实现请求方式修改+请求体文件选取

有时我们想将请求包的请求方法或请求体进行修改,这些操作可以由burpsuite完成,以节省时间。 文章目录 修改请求方法请求体文件选取修改请求方法 例如,某请求包的请求方法为GET: 如果我们想将其修改为POST且传递POST参数、上传文件,可以按以下步骤: 1、修改请求方法 2…

避雷!网络安全学习五大误区,你还不知道?

尽管安全问题老生常谈,但一些普遍存在的误区仍然可能让企业随时陷入危险境地。 为了有效应对当前层出不穷且不断变换的网络威胁,最大程度规避潜在风险,深入了解网络安全的发展趋势必不可少。即使部署了最新且最先进的硬件和解决方案并严格遵守…

LeetCode-热题100:138. 随机链表的复制

题目描述 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。…

【数据结构与算法】力扣 142. 环形链表 II

题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统…

倒计时 抢登CCF-C NSPW’24论文战场,4月12日截稿,等你来征服

会议之眼 快讯 2024年NSPW(The New Security Paradigms Workshop)即新安全范式研讨会将于 2024 年 9月16日-18日在美国宾夕法尼亚州贝德福德举行!NSPW是一个专注于信息安全领域的年度会议,该会议旨在为那些挑战计算机安全领域主流…

小小算式(1 + 2) * (3 + 4)背后的大道理

目录 前缀表示法(波兰表达式) 中缀表达法 后缀表达法(逆波兰表达式) 三种表达法的相互转换 练习:逆波兰表达式求值 前缀表示法(波兰表达式) 波兰表示法(英语:Polis…

第四十七周:文献阅读+AGCN+Wavenet network

目录 摘要 Abstract 文献阅读:结合自适应图卷积和CNN-LSTM的多站点水质预测模型 现有问题 提出方法 方法论 Adaptive graph convolution network(自适应图卷积网络) WaveNet network(WaveNet网络) CNN-LSTM混…

php反序列化漏洞——phar反序列化漏洞

一.什么是phar文件 类比java语言 JAR是开发Java程序一个应用,包括所有的可执行、可访问的文件,都打包进了一个JAR文件里使得部署过程十分简单。 PHAR("Php ARchive")是PHP里类似于JAR的一种打包文件 对于PHP 5.3 或更高版本,Ph…

【UE 网络】DS框架学习路线

目录 0 引言1 如何学习DS框架1. 熟悉Unreal Engine基础2. 学习网络编程基础3. 掌握UE网络概念4. 实践和实验5. 加入社区和论坛6. 官方示例和案例研究7. 专业书籍和在线课程 2 DS框架重要知识点有哪些1. 网络复制2. 远程过程调用(RPC)3. 客户端服务器架构…

0点起C语言

用sizeof()来查看在你的平台上到底占用多少你多少字节的内存。 Int x sizeof(int); Int xsizeof(shrt int); Int xsizeof(long); Int xsizeof(long double); 等等。 http://www.enet.com.cn/article/2012/0822/A20120822153730_2.shtml #—是个预处理的标志,表示对文…