yolov8实战第二天——yolov8训练结果分析(保姆式解读)

yolov8实战第一天——yolov8部署并训练自己的数据集(保姆式教程)-CSDN博客 

我们在上一篇文章训练了一个老鼠的yolov8检测模型,训练结果如下图,接下来我们就详细解析下面几张图。

一、混淆矩阵 

正确挑选(正确)错误没挑选(正确)
错误挑选(误检)正确没挑选(漏检)

结合这张图看,验证集共11张图,共检测出11只老鼠,一张漏报,被认为是背景。 

这样就很好理解混淆矩阵第一张图了。

预测到的老鼠11只没有误检测背景为老鼠,空白
真实样本老鼠被误检测成背景1只真实样本中没有背景图,空白

二、归一化混淆矩阵

 三、F1置信度曲线

F1 Score(F1 分数)是一种用于评估二分类模型性能的指标,它综合考虑了准确率和召回率。F1 分数曲线显示了在不同阈值下 F1 分数的变化情况。

F1 分数定义为:

由图可知:置信度阈值在0.8时,效果最好 。

四、精度置信曲线

精确率指分类为正类别的样本中真正为正类别的比例,召回率指所有正类别样本中被正确识别为正类别的比例。这两者往往需要进行权衡。

precision=(TP)/(TP+FP) (挑选正确的占挑选的比例,说明从所有挑选出来的样本找正确挑选的比例)

由图可知,置信度在0.8以上时,有较好的精确度。 

五、精确召唤度曲线(有名的PR曲线)

精准率和召回率的关系可以用一个 P-R 图来展示,以查准率 P 为纵轴、查全率 R 为横轴作图,就得到了查准率-查全率曲线,简称 P-R 曲线,PR 曲线下的面积定义为 AP:

如何理解 P-R 曲线
可以从排序型模型或者分类模型理解。以逻辑回归举例,逻辑回归的输出是一个 0 到 1 之间的概率数字,因此,如果我们想要根据这个概率判断用户好坏的话,我们就必须定义一个阈值 。通常来讲,逻辑回归的概率越大说明越接近 1,也就可以说他是坏用户的可能性更大。比如,我们定义了阈值为 0.5,即概率小于 0.5 的我们都认为是好用户,而大于 0.5 都认为是坏用户。因此,对于阈值为 0.5 的情况下,我们可以得到相应的一对查准率和查全率。

但问题是:这个阈值是我们随便定义的,我们并不知道这个阈值是否符合我们的要求。 因此,为了找到一个最合适的阈值满足我们的要求,我们就必须遍历 0 到 1 之间所有的阈值,而每个阈值下都对应着一对查准率和查全率,从而我们就得到了 PR 曲线。

最后如何找到最好的阈值点呢? 首先,需要说明的是我们对于这两个指标的要求:我们希望查准率和查全率同时都非常高。 但实际上这两个指标是一对矛盾体,无法做到双高。图中明显看到,如果其中一个非常高,另一个肯定会非常低。选取合适的阈值点要根据实际需求,比如我们想要高的查全率,那么我们就会牺牲一些查准率,在保证查全率最高的情况下,查准率也不那么低。

结论:越靠近正方形的对角越好。

六、召回置信度曲线

正样本预测正确占实际正样本的比例。
精确率和召回率是用于衡量二分类模型性能的指标。精确率指分类为正类别的样本中真正为正类别的比例,召回率指所有正类别样本中被正确识别为正类别的比例。这两者往往需要进行权衡。

R=(TP)/(TP+FN) (挑选正确占挑选正确+没挑选错误(漏报),说明正确挑选的占实际正样本的比例)

由图可知:置信度大于0.8后,召回率快速下降,说明漏报快速增加。 

七、训练过程图

 我训练了100轮。yolov8的三个损失,分别是:

  1. box_loss(边界框损失):这个损失函数用于计算预测边界框与真实边界框之间的差异。YOLOv8使用IOU(Intersection over Union)作为度量,来衡量两个边界框之间的重叠程度。box_loss通过计算预测框与真实框之间的IOU,来衡量预测框的位置准确度,并将其转化为一个损失值。通过最小化box_loss,模型可以学习到更准确的边界框位置。

  2. cls_loss(分类损失):这个损失函数用于计算预测类别与真实类别之间的差异。YOLOv8使用交叉熵损失(Cross Entropy Loss)来衡量分类准确度。cls_loss通过比较预测类别分布与真实类别标签之间的差异,来计算分类的损失值。通过最小化cls_loss,模型可以学习到更准确的类别分类。

  3. dfl_loss(特征点损失):这个损失函数是YOLOv8中引入的自定义损失函数。YOLOv8使用了特征点来预测物体的方向和角度信息,dfl_loss用于计算预测特征点与真实特征点之间的差异。通过最小化dfl_loss,模型可以学习到更准确的物体方向和角度信息。

由图可知: 

上面一排是训练的时候的三个损失和精确度,召回率。

下面一排是验证 的时候的三个损失和精确度,召回率。

八、val_batch0_label  和val_batch_pred

标签框和预测框,由图可知,漏报一个。 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gRPC框架

1、gRPC 与 Protobuf 介绍 微服务架构中,由于每个服务对应的代码库是独立运行的,无法直接调用,彼此间 的通信就是个大问题gRPC 可以实现微服务, 将大的项目拆分为多个小且独立的业务模块, 也就是服务, 各服…

如何做一名“机关算尽”的伦敦银投资者?

做伦敦银投资者有一个好处,就是这个世界上投资者均可以参与的市场会比较公平,所以我们从书中、从课程中学习到的分析方法,可以应用在该市场中。其中有一种方法,可以通过计算,算出银价转折、反转的点位等等。那我们如何…

拆解大语言模型 RLHF 中的PPO算法

为什么大多数介绍大语言模型 RLHF 的文章,一讲到 PPO 算法的细节就戛然而止了呢?要么直接略过,要么就只扔出一个 PPO 的链接。然而 LLM x PPO 跟传统的 PPO 还是有些不同的呀。 其实在 ChatGPT 推出后的相当一段时间内,我一直在等…

一些AG10K FPGA 调试的建议-Douglas

PLL AGM FPGA 在配置成功时,PLL 已经完成锁定,lock 信号已经变高;如果原设计中用 lock 信号输出实现系统 reset 的复位功能,就不能正确完成上电复位;同时,为了保证 PLL 相移的稳定,我们需要在 P…

RabbitMq的详细使用

消息队列RabbitMQ详细使用 文章目录 消息队列RabbitMQ详细使用MQ 的相关概念什么是MQ为什么要用MQMQ 的分类MQ 的选择 RabbitMQRabbitMQ 的概念四大核心概念各个名词介绍安装RabbitMQWeb管理界面及授权操作Docker 安装Hello world简单示例 Work Queues轮训分发消息消息应答自动…

Java编程中通用的正则表达式(一)

正则表达式(Regular Expression,简称RegEx),又称常规表示法、正则表示、正规表示式、规则表达式、常式、表达式等,是计算机科学中的一个概念。正则表达式是用于描述某种特定模式的字符序列,特别是用来匹配、…

设计模式(二)-创建者模式(5)-建造者模式

一、为何需要建造者模式(Builder)? 在软件系统中,会存在一个复杂的对象,复杂在于该对象包含了很多不同的功能模块。该对象里的各个部分都是按照一定的算法组合起来的。 为了要使得复杂对象里的各个部分的独立性,以及…

大模型学习之GPT系列

GPT系列 预备知识GPT-1无监督预训练有监督的微调训练 GPT-2数据集:输入表示模型实验 GPT-3模型数据集实验局限性 InstructGPTGPT-4GPT-4 新特性基础能力 参考文献 大模型 GPT演进路线图 预备知识 Transformer 结构图 GPT-1 首先使用未标注的数据训练一个预训练…

速学数据结构 | 树 森林 二叉树 的概念详讲篇

🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 📋 前言 🌈hello! 各位宝子们大家好啊,关于线性表我们已经在前面更新完了…

c YUV 转 JPEG(准备霍夫曼编码)

先取yuv 文件中一个168的块,跑通全流程 理解与思路: 1.块分割 YUV 文件分为:YUV444 YUV 422 YUV420。444:就是:12个char 有4个Y,4个U,4个 U,422:8个char 中有4个Y &#x…

西科大微机原理实验四(定时器程序设计)

任务一、 按实验要求内容新建一个ASM41.ASM文件,使用masm命令生成obj文件并输入 上述源程序中使用了外部资源,该外部资源存在于文件 LIB_TIM.OBJ中,因此使用link命令将 ASM41.OBJ 和 LIB_TIM.OBJ 一起链接生成可执行文件 使用debug加载程序并进行调试 使用-g指令,回显如下…

技术分享 | 想做App测试就一定要了解的App结构

app 的结构包含了 APK 结构和 app 页面结构两个部分 APK结构 APK 是 Android Package 的缩写,其实就是 Android 的安装包。通过将 APK 文件直接传到 Android 模拟器或 Android 手机中执行即可安装。 APK 文件其实是 zip 格式,但后缀名被修改为 apk&…

Mysql进阶-InnoDB引擎事务原理及MVCC

事务原理 事务基础 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务的四大特性: 原子性(A…

抖去推--短视频剪辑、矩阵无人直播saas营销工具一站式开发

抖去推是一款短视频剪辑和矩阵无人直播SAAS营销工具一站式开发平台。它提供了以下功能和特点: 1. 短视频剪辑:抖去推提供了一系列的剪辑工具,包括自动剪辑、特效制作、配音配乐等,可以帮助用户轻松制作出高质量的短视频。 2. 矩阵…

Java实现一个简单的贪吃蛇小游戏

一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。 然后,创建贪吃蛇游戏的Java项目命名为snake_game,并在这个项目里创建一个文件夹命名为images,将图片素材导入文件夹。 再在src文件下创建两个包&#xff0…

阿里云SLB的使用总结

一、什么是SLB 实现k8s的服务service的一种推荐方式,也是服务上云后,替代LVS的一个必选产品。 那么它有什么作用呢? 1、负载均衡,是它与生俱来的。可以配置多个服务器组:包括虚拟服务器组、默认服务器组、主备服务器…

鸿蒙原生应用/元服务开发-Stage模型能力接口(二)

ohos.app.ability.AbilityConstant (AbilityConstant)一、说明 AbilityConstant提供Ability相关的枚举,包括设置初次启动原因、上次退出原因、迁移结果、窗口类型等。本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口…

python读取csv文件

在Python中,你可以使用pandas库来读取CSV文件。以下是一个基本的例子: import pandas as pd# 读取CSV文件data pd.read_csv(filename.csv)# 显示前几行数据print(data.head()) 这里,filename.csv应该被替换为你的CSV文件的实际路径和名称。…

多合一iPhone 解锁工具:iMyFone LockWiper iOS

多合一iPhone 解锁工具 无需密码解锁 iPhone/iPad/iPod touch 上所有类型的屏幕锁定 在几分钟内解锁 iPhone Apple ID、Touch ID 和 Face ID 立即绕过 MDM 并删除 iPhone/iPad/iPod touch 上的 MDM 配置文件 支持所有 iOS 版本和设备,包括最新的 iOS 17 和 iPhone 1…

学生管理系统 数据库版

1.写SQL语句 创建school_java数据库 创建student数据表包含 id、name姓名、tel电话、sex性别字段 往student表中加10条数据 2.写Java代码(要求只用PreparedStatement对象,变化的值都用?代替) 查询student表中所有学生信息 student表中新增三…