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

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

前言

如下图是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'))

运行上述代码后,打印结果如下:

计算出这些模型评估结果之后可以更加方便的进行不同分类模型的性能对比,或者模型改进前后的性能对比


相关文章
|
9月前
|
数据采集 机器学习/深度学习 人工智能
YOLOv11浅浅解析:架构创新
YOLOv11是YOLO系列最新升级版,通过C3k2模块、SPPF优化和解耦检测头等创新,显著提升检测精度与速度,mAP提高2-5%,推理更快,支持多平台部署,适用于工业、安防、自动驾驶等场景。
|
算法 计算机视觉
【YOLOv8训练结果评估】YOLOv8如何使用训练好的模型对验证集进行评估及评估参数详解
【YOLOv8训练结果评估】YOLOv8如何使用训练好的模型对验证集进行评估及评估参数详解
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
26812 3
|
机器学习/深度学习 资源调度 算法
YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS
YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS
5031 6
|
关系型数据库 决策智能
YOLOv11改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
YOLOv11改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
2107 6
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
7146 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
机器学习/深度学习 人工智能 文字识别
ultralytics YOLO11 全新发布!(原理介绍+代码详见+结构框图)
本文详细介绍YOLO11,包括其全新特性、代码实现及结构框图,并提供如何使用NEU-DET数据集进行训练的指南。YOLO11在前代基础上引入了新功能和改进,如C3k2、C2PSA模块和更轻量级的分类检测头,显著提升了模型的性能和灵活性。文中还对比了YOLO11与YOLOv8的区别,并展示了训练过程和结果的可视化
26066 0
|
XML 数据格式 Python
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
该文章提供了一个Python脚本,用于将VOC格式的XML标签文件转换为YOLO训练所需的TXT格式,包括修改数据集类别、输入图像与标注文件夹地址、转换过程和结果展示。
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)
|
人工智能 并行计算 数据可视化
即插即用 | YOLOv8热力图可视化方法详解,揭秘AI如何「看」世界!【附完整源码】
即插即用 | YOLOv8热力图可视化方法详解,揭秘AI如何「看」世界!【附完整源码】