YOLOv8入门 | 重要性能衡量指标、训练结果评价及分析及影响mAP的因素【发论文关注的指标】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转


💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡


专栏目录 :《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有50+篇内容,内含各种Head检测头、损失函数Loss、Backbone、Neck、NMS等创新点改进——点击即可跳转


在深度学习目标检测领域,YOLOv8成为了备受关注的模型之一。在发论文之前我们需要对YOLOv8的实验结果进行详细的分析。以此来证明我们改进的有效性。这就涉及到了实验结果重要性能的衡量指标。本文将手把手教学如何对YOLOv8的结果分析和重要性能指标进行分析,以帮助您更好地学习深度学习目标检测YOLO系列的挑战,发表更加优质的论文

我们将重点讨论以下内容:

混淆矩阵,F1分数,查准率,查全率,PR曲线,wandb可视化等

此外,为了给审稿人留下深刻的印象。可以尝试制作一些热力图,来证明自己的改进是有效的。 

目录

1. 重要性能衡量指标

1.1 混淆矩阵

1.2 查准率,查全率,F1-Score

1.3 PR曲线

1.4 AP与mAP

2. 训练结果评价

2.1权重文件夹——weights

2.2 混淆矩阵——Confusion Matrix

2.3 F1分数——F1-score

2.4 可视化文件——events.out.tfevents

2.5 args.yaml

2.6 P曲线——P_curve

2.8 PR曲线——PR_curve 

2.9 result——损失函数、mAP可视化结果

2.10 数据集信息——label.jpg

3.影响mAP的因素

4. 优化策略


1. 重要性能衡量指标

1.1 混淆矩阵

混淆矩阵是用于评估分类模型性能的一种表格形式。它将模型的预测结果与真实标签进行比较,并将它们分类为四种不同的情况:真正例 (True Positive, TP)、真负例 (True Negative, TN)、假正例 (False Positive, FP) 和假负例 (False Negative, FN)。

在混淆矩阵中,行表示实际类别,列表示预测类别。这个矩阵的一个简单示例是:

Predicted NegativePredicted Positive
Actual NegativeTNFP
Actual PositiveFNTP

其中:

  • TP(真正例):模型正确地将猫标记为猫的数量。例如,图像中确实有一只猫,而模型也成功地将其检测为

  • TN(真负例):模型正确地将非猫标记为非猫的数量。例如,图像中没有猫,而模型也正确地将其识别为非猫【其他类别】

  • FP(假正例):模型错误地将非猫标记为猫的数量。例如,图像中没有猫,但模型错误地将一只狗误判为猫

  • FN(假负例):模型错误地将猫标记为非猫的数量。例如,图像中有一只猫,但模型未能将其识别为猫

1.2 查准率,查全率,F1-Score

MetricFormulaPurpose
准确率 (Accuracy)(TP+TN)/(TP+TN+FP+FN)准确率是指模型正确预测的样本数量与总样本数量之比。
精确率 (Precision)TP / (TP+FP)评估模型在预测为正例的样本中的准确程度
召回率 (Recall)TP / (TP+FN)评估模型对正例的预测能力
F1 分数 (F1 Score)(2×Precision×Recall) / (Precision+Recall)综合考虑精确率和召回率的调和平均值,综合评估模型的性能

下图是为了方便查看公式,更加直观

img

具体的例子:

1. 准确率(Accuracy):准确率是指模型正确预测的样本数量占总样本数量的比例。

举例:在100张图像中,模型正确地识别了80张图像中的对象,那么准确率为80%。

2. 查准率(Precision):查准率是指模型预测为正例的样本中,真正为正例的样本数量占所有预测为正例的样本数量的比例。

举例:模型预测了20张图像中有猫,但实际上只有15张图像中确实有猫,那么查准率为15/20 = 0.75。

3. 查全率(Recall):查全率是指模型正确预测为正例的样本数量占所有真正为正例的样本数量的比例。

举例:在100张图像中有50张图像中确实有猫,而模型成功地识别了其中的40张,那么查全率为40/50 = 0.8。

4. F1-Score:F1-Score是查准率和查全率的调和平均值,它综合了查准率和查全率的性能。

举例:如果一个模型的查准率为0.75,查全率为0.8,那么F1-Score为2 * (0.75 * 0.8) / (0.75 + 0.8) = 0.774。

1.3 PR曲线

在根据测试集数据评估模型时,得到各特征线性组合后的置信度得分,当确定某阈值后,若得分小于阈值则判为负类,否则为正类,计算出此时的Precision和Recall结果并保存。将阈值从大往小调整得到不同阈值下的Precision和Recall,然后以Recall为横坐标,Precision为纵坐标绘制出P-R曲线图。如果检测器的Precision随着Recall的提升而保持较高,也就是说当改变阈值,Precision和Recall仍然很高,则表示性能较优。

PR曲线的横坐标是精确率P,纵坐标是召回率R。评价标准和ROC一样,先看是否平滑。一般来说,在同一测试集,上面的比下面的好。当P和R的值接近时,F1值最大,此时画连接(0,0)和(1,1)的线,线和PRC重合的地方的F1是这条线最大的F1,此时的F1对于PRC就好像AUC对于ROC一样。一个数字比一条线更方便调型。

img

编辑

在目标检测任务中,我们通常通过比较模型的PR曲线来评估它们的性能。如果一个模型的PR曲线完全包含另一个模型的PR曲线,则可以确定前者的性能优于后者。但是,如果两个模型的PR曲线发生交叉,性能的判断就不那么直接了。

在这种情况下,我们可以利用PR曲线中P(查准率)和R(查全率)相等时的平衡点来进行比较,这个点也被称为平衡点(BEP)。平衡点处的查准率和查全率值相等,即P=R。另外,我们也可以使用F1值来评估模型的性能,F1值越大,我们可以认为该模型的性能较好。

F1值的计算公式:F_1 = \frac{2 \times P \times R}{P + R}

通过比较模型的F1值,我们可以更好地评估它们在目标检测任务中的性能表现。

1.4 AP与mAP

平均准确率(Average Precision, AP)和平均精确率 (mAP) 是用于评估目标检测或语义分割等任务性能的指标。

平均准确率 (AP):

AP是指在不同的类别下,模型对每个类别的预测结果计算出的准确率的平均值。在目标检测任务中,通常使用Precision-Recall曲线来计算AP。Precision-Recall曲线显示了在不同召回率下的精确率。

在计算AP时,首先计算Precision-Recall曲线下的面积 (Area Under the Curve, AUC),然后将其作为AP。具体计算公式为:

AP = \int_{0}^{1} p(r) dr

其中,p(r) 是在召回率 r 处的精确率。

平均精确率 (mAP):

mAP是指在所有类别上计算的AP的平均值。它提供了模型在所有类别上的综合性能评估。

下面是一个简单的例子,假设我们有一个目标检测模型,在三个类别上进行了评估(猫、狗、鸟),每个类别的AP分别为0.8、0.7和0.6。那么mAP为:

mAP = \frac{0.8 + 0.7 + 0.6}{3} = 0.7

这意味着该模型在这三个类别上的平均准确率为0.7。

通过计算AP和mAP,我们可以更全面地评估目标检测模型的性能,而不仅仅是单个类别的性能评估。

2. 训练结果评价

2.1权重文件夹——weights

在训练yolov8模型时,通常会保存模型的权重以供后续使用。在PyTorch中,使用.pt文件格式保存模型的权重。

1. best.pt: best.pt 文件通常保存了训练过程中性能最佳的模型权重。 这种情况下,“最佳”的定义可以根据任务不同而不同。例如,在目标检测任务中,“最佳”模型可能是在验证集上取得最高精度或其他评价指标的模型。 best.pt的权重通常在训练过程中周期性地保存,以便跟踪模型的最佳性能。

2. last.pt: last.pt文件保存了训练过程中最后一次保存的模型权重。 这种情况下,“最后”表示训练过程结束时保存的模型权重,而不考虑性能指标如何。 last.pt的权重可能对应于训练过程中的最后一个时刻或指定的检查点。

这两个文件对于训练过程的管理和模型权重的保存非常重要。在模型训练结束后,可以使用这些权重文件来进行推断、评估或继续训练。

值得注意的是:在恢复训练时,通常应该使用last.pt作为初始权重。这是因为last.pt保存了模型在训练结束时的权重状态,而这个状态很可能是最接近当前训练状态的。

2.2 混淆矩阵——Confusion Matrix

混淆矩阵展示了不同类别之间的预测准确率。从左到右,列表示实际类别(真实值),而行表示预测类别。每个单元格中的数值代表该类别的预测概率,数值范围从0.01到0.94。颜色越深,数值越高,表示预测越准确。

例如,在“crazing”类别下,“crazing”的预测概率为0.43,这意味着当实际类别是“crazing”时,模型有43%的概率将其认为是“crazing”。有57%的预测概率将其认为是背景部分,即background。同样,“inclusion”类别下的“inclusion”也有较高的预测概率0.77。

混淆矩阵是一个 (n+1)*(n + 1) 的矩阵,其中 n 表示类别的数量。每行代表实际类别,每列代表模型预测的类别。1代表的是背景的类别。混淆矩阵的大小取决于所涉及的类别数量,因此可以适用于各种分类任务,无论是二分类还是多分类。

2.3 F1分数——F1-score

从图中可以看出,当confidence为0.368时,all classes的F1分数为0.73;这表明该模型在.368的置信度预测类时整体表现良好,具有一定的准确性和召回率。然而,对于其他类别,模型的性能可能有所不同。因此,需要进一步的数据分析和调整模型参数来提高其泛化能力。

F1分数是精确率(Precision)和召回率(Recall)的调和平均值,它同时考虑了模型预测的准确性和覆盖面。F1分数的范围从0到1,其中1表示模型的精确率和召回率都是完美的,而0则表示模型的精确率或召回率至少有一个非常差。

精确率是指模型正确预测正类的比例,而召回率是指模型正确识别出所有正类的比例。在某些情况下,我们可能更关注其中一个指标,比如在某些医疗诊断应用中,我们可能更希望减少假阴性(即提高召回率),因为漏诊可能会带来严重的后果。但在大多数情况下,我们希望模型在这两个方面都有很好的表现,这时候F1分数就是一个很好的综合评价指标。

2.4 可视化文件——events.out.tfevents

可以用命令tensorboard打开这个文件

tensorboard --logdir=path/to/log-directory

这个是用tensorboard打开的,可以滑动每个epoch检测训练的损失,map等各项指标

2.5 args.yaml

args.yaml中是记录的一些训练阶段的参数,default里面的参数都在这里可以找到

2.6 P曲线——P_curve

图中的蓝色折线代表整体的精度,整体趋势为随着置信度的增加,精确度也在增加,在置信度为0.973时,精确度达到了1。 剩下的六条线分别表示6个类别在不同的置信度下的精度

图中的R曲线为Recall-Confidence Curve(召回率-置信度曲线),它展示了不同置信度下的召回率。具体来说,横轴表示置信度,从0.0到1.0;纵轴表示召回率,从0.0到1.0。图中主要有7条曲线:

  1. 6条彩色线:代表6个类别的召回率随置信度的变化情况。这条曲线显示了随着置信度的增加,每个类别的召回率在一定范围内【置信度分数】的先变化较小,然后在某个点之后迅速下降。

  2. 深蓝色线:代表所有类别的平均召回率随置信度的变化情况。

2.8 PR曲线——PR_curve 

图中的曲线为Precision-Recall Curve(精确度-召回率曲线),展示了不同阈值下分类器的精确度和召回率。具体来说,横轴表示Recall(召回率),范围从0.0到1.0;纵轴表示Precision(精确度),范围从0.0到1.0。图中主要有两条曲线:
1. 彩色线代表6个类别的精确度-召回率曲线,每个类别的精确度各有差异。
2. 深蓝色线代表所有类别的平均精确度-召回率曲线,其精确度也在0.749左右保持稳定。
这两条曲线都显示了随着召回率的增加,精确度略有下降的趋势,但整体上精确度保持在很高的水平。这表明分类器在识别“person”类别时表现非常出色,具有很高的准确性和稳定性。 

2.9 result——损失函数、mAP可视化结果

这个图片内有YOLOv8的损失,其中损失分为三种

定位损失box loss: YOLO V5使用 GIOU Loss作为bounding box的损失,Box推测为GIoU损失函数均值,box loss的值越小框的位置越准
dfl_ loss:  是YOLOv8的新的损失函数为目标检测loss均值,值越小目标检测的越准
分类损失cls loss: 推测为分类loss均值,值越小预测的类别越准
val/boxloss: 验证集bounding box损失
val/obj loss: 验证集目标检测loss均值
val/cls loss: 验证集分类loss均值,我训练时只有person这一类,所以为0【单类别这个值都是0】
mAP@0.5:0.95: 表示在不同的10U阈值(从0.5到0.95,步长为0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的mAP
mAP@0.5: 表示阈值大于0.5的平均mAP

result.csv这个文件就是训练过程中一些具体的数值,上面的图片就是这个csv可视化的结果,这里就不仔细介绍了。如果还是不懂的话,可以在评论区问我。

2.10 数据集信息——label.jpg

左上角图

这个图是左上角这个数据集每个类别的数量信息,我这个只有一个类别,大概有2000张图片,作为对比,下图是我之前的实验的图,他有六个类别。

右上角图

右上角图是画的标注框的的大小,我的数据集种有六个类,大概在图中的标注信息就是张右上角的样子。

下面的两幅图则分别是x和y,w和h的值分布情况,这个就是标注的txt文件里面的一些信息。

3.影响mAP的因素

mAP(Mean Average Precision)是用于评估目标检测模型性能的重要指标之一,它考虑了模型在所有类别上的准确率和召回率的平均值。以下是影响mAP指标的一些重要因素:

1. 目标检测算法的准确性:目标检测算法本身的准确性对mAP指标的影响非常大。准确性包括模型对目标的识别能力和定位能力。

2. 模型的训练数据质量:训练数据的质量直接影响了模型的泛化能力和性能。更丰富、更多样化的训练数据通常可以提高模型的mAP指标。

3. 超参数调优:模型的超参数设置(如学习率、批量大小、优化器等)会影响模型的收敛速度和性能,进而影响mAP指标。

4. 数据增强策略:合适的数据增强策略(如随机裁剪、旋转、缩放等)可以增加训练数据的多样性,有助于提高模型的泛化能力和mAP指标。

5. 先验框(Anchor Boxes)的设置:一些目标检测模型(如YOLO和SSD)使用先验框来预测目标的位置和类别,先验框的设置会影响模型的检测精度和mAP指标。

6. 后处理策略:目标检测模型通常会在预测后进行后处理,如非极大值抑制(NMS)等,以过滤重叠的边界框。后处理策略的设计会影响模型的准确性和mAP指标。

综上所述,mAP指标受到多种因素的影响,包括模型本身的设计、训练数据的质量、超参数设置以及数据增强和后处理策略等。

4. 优化策略

1. 数据增强:通过对训练数据进行各种变换,增加数据的多样性,提高模型对不同场景和变化的适应能力,改善模型的泛化能力和鲁棒性。

2. 模型优化:采用先进的模型结构或微调现有模型可提高性能。更深、更复杂的模型结构通常具有更好的特征提取能力,提高目标检测的准确性。

3. 损失函数优化:选择合适的损失函数可使模型更关注难以识别的样本,提高在目标检测任务中的性能。例如,Focal Loss可减少易分类的样本对模型训练的影响,IoU Loss可更好地优化目标的位置和形状。

4. 多尺度训练:使用不同尺度的输入训练模型可使其更好地适应不同大小的目标。这种策略可提高模型对目标的检测能力,尤其在存在尺度差异较大的情况下。

5. 网络融合:将不同的检测网络进行融合可结合它们的优点,提高模型的表现。例如,融合多尺度注意力机制和修改特征提取器,可充分利用它们在不同方面的优势,改善目标检测的性能。

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

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

相关文章

从CVPR 2024看 NeRF 最新改进&应用

三维重建领域必不可少的NeRF技术最近又有新突破了! 首先是SAX-NeRF框架,专为稀疏视角下X光三维重建设计,无需CT数据进行训练,只使用 X 光片即可,等于给NeRF开透视眼! 还有清华提出的GenN2N,一…

Canvas合集更更更之实现由画布中心向外随机不断发散的粒子效果

实现效果 1.支持颜色设置 2.支持粒子数量设置 3.支持粒子大小设置 写在最后🍒 源码,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云

VSCode 自动调整格式失效了 ESLint

ESLint【最新注意2.4.4版本有问题,需退回2.4.2版本就恢复正常了】 参考:vscode自动格式化失效_vscode保存自动格式化失效-CSDN博客

【启明智显分享】手持遥控器HMI解决方案:2.8寸触摸串口屏助力实现智能化

现代生活不少家居不断智能化,但是遥控器却并没有随之升级。在遥控交互上,传统遥控器明显功能不足:特别是大屏智能电视,其功能主要由各种APP程序实现。在电脑上鼠标轻轻点击、在手机上触摸屏丝滑滑动,但是在电视上这些A…

新的超好用的baas服务他来了!

新的超好用的BaaS服务它来了! 你是否厌倦了搭建服务的繁琐过程?你是否因为接口API的开发而头疼不已?你是否梦想着能够用最少的精力打造出最棒的应用?如果你的答案是“是”,那么恭喜你,你的救星来了&#x…

kubernetes dashboard安装

1.查看符合自己版本的kubernetes Dashboard 比如我使用的是1.23.0版本 https://github.com/kubernetes/dashboard/releases?page5 对应版本 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml修改对应的yaml,…

秋招突击——设计模式补充——单例模式、依赖倒转原则、工厂方法模式

文章目录 引言正文依赖倒转原则工厂方法模式工厂模式的实现简单工厂和工厂方法的对比 抽线工厂模式最基本的数据访问程序使用工厂模式实现数据库的访问使用抽象工厂模式的数据访问程序抽象工厂模式的优点和缺点使用反射抽象工厂的数据访问程序使用反射配置文件实现数据访问程序…

2024亚太杯中文赛数学建模选题建议及各题思路来啦!

大家好呀,2024年第十四届APMCM亚太地区大学生数学建模竞赛(中文赛项)开始了,来说一下初步的选题建议吧: 首先定下主基调, 本次亚太杯推荐大家选择B题目。C题目难度较高,只建议用过kaiwu的队伍…

决策树算法的原理与案例实现

一、绪论 1.1 决策树算法的背景介绍 1.2 研究决策树算法的意义 二、决策树算法原理 2.1 决策树的基本概念 2.2 决策树构建的基本思路 2.2 决策树的构建过程 2.3 决策树的剪枝策略 三、决策树算法的优缺点 3.1 决策树算法的优势 3.2 决策树算法的局限性 3.3 决策树算…

微服务粒度难题:找到合适的微服务大小

序言 在微服务架构风格中,微服务通常设计遵循SRP(单一职责原则),作为一个独立部署的软件单元,专注于做一件事,并且做到极致。作为开发人员,我们常常倾向于在没有考虑为什么的情况下尽可能地将服…

全面教程:在Ubuntu上快速部署ZeroTier,实现Windows与VSCode的局域网无缝访问

文章目录 1 背景介绍2 Windows上的操作3 Ubuntu上的操作4 连接 1 背景介绍 在现代工作环境中,远程访问公司内网的Ubuntu主机对于开发者来说是一项基本需求。然而,由于内网的限制,传统的远程控制软件如向日葵和todesk往往无法满足这一需求。作…

二叉树之遍历

二叉树之遍历 二叉树遍历遍历分类前序遍历流程描述代码实现 中序遍历流程描述代码实现 后序遍历流程描述代码实现 层次遍历流程描述代码实现 总结 二叉树遍历 遍历分类 遍历二叉树的思路有 4 种,分别是: 前序遍历二叉树,有递归和非递归两种…

用dify实现简单的Agent应用(AI信息检索)

这篇文章里,我们来聊聊如何使用字节最新的豆包大模型,在 Dify 上来快速完成一个具备理解需求、自主规划、自主选择工具使用的简单智能体(Agent)。 准备工作 完整准备过程分为:准备 Docker 环境、启动 Dify 程序、启动…

线性代数基础概念:矩阵

目录 线性代数基础概念:矩阵 1. 矩阵的定义 2. 矩阵的运算 3. 矩阵的特殊类型 4. 矩阵的秩 5. 矩阵的初等变换 6. 矩阵的特征值与特征向量 7. 矩阵的应用 8. 矩阵总结 总结 线性代数基础概念:矩阵 矩阵是线性代数中的另一个重要概念&#xff0…

vue目录说明

vue目录说明 主要目录说明 .vscode - - -vscode工具的配置文件夹 node_modules - - - vue项目的运行依赖文件夹 public - - -资源文件夹(浏览器图标) src- - -源码文件夹 .gitignore - - -git忽略文件 index.html - - -入口html文件 package.json - - -…

windows搭建mqtt服务器,并配置DTU收集传感器数据

1.下载并安装emqx服务器 参考:Windows系统下本地MQTT服务器搭建(保姆级教程)_mqtt windows-CSDN博客 这里我下载的是emqx-5.3.0-windows-amd64.zip版本 下载好之后,放到服务器的路径,我这里放的地方是:C…

图像信号处理器(ISP)基础算法及处理流程

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《暗光增强》 &a…

FreeRTOS之队列上锁和解锁(详解)

这篇文章将记录我学习实时操作系统FreeRTOS的队列上锁和解锁的知识,在此分享给大家,希望我的分享能给你带来不一样的收获! 目录 一、简介 二、队列上锁函数prvLockQueue() 1、函数初探 2、应用示例 三、队列解锁函…

转让北京文化传媒公司带营业性演出经纪许可证

影视文化传播倡导将健康的影视文化有效传播给观众,从而构建观众与电影制作者的良 性沟通与互动,是沟通电影制作者与电影受众的重要桥梁。影视文化泛指以电影,电视方式所进行的全部文化创造,即体现为电影,电视全部的存在…

找不到msvcp120.dll无法继续执行的原因分析及解决方法

在计算机使用中,经常会遇到msvcp120.dll文件丢失的情况,很多人对这个文件不是很熟悉,今天就来给大家讲解一下msvcp120.dll文件的丢失以及这个文件的重要性,让大家更好地了解计算机,同时也可以帮助我们更好地掌握这个文…