YOLO介绍—datawhale

news2024/11/16 11:29:18
  1. 速度快:YOLO的设计目标是实现快速的对象检测,它在保持相对高准确度的同时,能够实现高帧率的实时检测。

  2. 易于实现:YOLO的架构相对简单,易于理解和实现,这使得它在学术和工业界都得到了广泛的应用。

  3. 版本迭代:YOLO自2016年首次发布以来,已经经历了多个版本的迭代(如YOLOv5、YOLOv6、YOLOv7等),每个版本都在性能和效率上有所提升。

  4. 社区支持:YOLO拥有一个活跃的开发者社区,提供了大量的教程、工具和预训练模型,这使得小白也可以快速上手并应用YOLO。

  5. 灵活性:YOLO的架构允许用户根据特定需求调整网络结构,例如改变输入图像的尺寸或调整网络的深度。

YOLO 数据集格式

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../dataset/  # dataset root dir
train: images/train/  # train images (relative to 'path') 128 images
val: images/val/  # train images (relative to 'path') 128 images

# Classes
nc: 2  # number of classes表示类别的数量,这里设置为2,意味着数据集中有两类物体需要被识别。
names: ["0", '1']  # class names包含了每个类别的名称。这里有两个类别,名称分别是"0"和"1"。这些名称在训练和测试过程中用于引用特定的类别。

数据集配置

path:数据集的根目录,设置为/数据集/。
train和val:分别包含训练和验证图像的目录。这些路径是相对于路径目录的。在这种情况下,训练图像位于images/strain/中,验证图像位于images/val/中。
类配置

nc:数据集中的类数,设置为2。这意味着模型将被训练以识别两类不同的对象。
names:类名列表,用于在培训和测试期间引用特定的类。在这种情况下,这两个类分别命名为“0”和“1”。

YOLO 训练日志

在使用YOLO进行训练时,生成的exp/detect/train类型的文件夹是训练过程中的一个关键组成部分。

  • 模型权重 (.pt.pth 文件): 训练过程中保存的模型权重,可以用于后续的测试或继续训练。

  • 日志文件 (.log 文件): 包含训练过程中的所有输出信息,如损失值、精度、速度等。

  • 配置文件 (.yaml.cfg 文件): 训练时使用的配置文件副本,记录了数据路径、类别名、模型架构等设置。

  • 图表和可视化: 有时YOLO会生成训练过程中的性能图表,如损失曲线、精度曲线等。

  • 测试结果: 如果训练过程中包括了测试阶段,可能会有测试结果的保存,如检测结果的图片或统计数据。

 

  1. F1_curve.png, PR_curve.png, P_curve.png, R_curve.png: 包含模型性能的不同评估指标曲线图,如F1分数(F1_curve.png)、精确率-召回率曲线(PR_curve.png)、精确率(P_curve.png)和召回率(R_curve.png)。

  2. results.csv: 一个CSV文件,包含模型训练或测试的结果数据。

  3. results.png: 包含训练结果的汇总图表或图像。

  4. train_batch*.jpg: 包含训练过程中不同批次的图像和它们的标注。

  5. val_batch0_labels.jpg, val_batch0_pred.jpg: 验证集批次的图像,可能包含真实标签(labels)和模型预测(pred)的可视化。

  6. weights/: 一个目录,通常包含模型训练过程中保存的权重文件,如.pt.pth文件。

        在训练过程中和训练完成后,都可以查看训练日志。可以优先查看results.png,图像的内容类似如下。从验证集上的损失 (val/box_loss, val/cls_loss, val/dfl_loss) 和性能指标可以评估模型在未见数据上的泛化能力。在下面的训练日志中,我们发现模型在验证集发生了过拟合。

缩写作用描述
epoch表示模型在整个训练数据集上进行了一次前向和后向传播的完整周期。
train/box_loss衡量模型预测的边界框与真实边界框之间差异的损失值。
train/cls_loss衡量模型预测的类别与真实类别之间差异的损失值。
train/dfl_loss衡量模型对难分类样本的关注程度,减少易分类样本的影响。
metrics/precision(B)在训练过程中,预测为正类别中实际为正类别的比例。
metrics/recall(B)在训练过程中,所有实际正类别中被模型正确预测为正类别的比例。
metrics/mAP50(B)在50%的IoU阈值下计算,衡量模型的整体性能。
metrics/mAP50-95(B)在0.5到0.95的IoU阈值范围内计算,提供更全面的模型性能评估。
val/box_loss模型在未见过的验证集上的边界框损失,用于监控模型的泛化能力。
val/cls_loss模型在验证集上的分类损失,用于监控模型的泛化能力。
val/dfl_loss模型在验证集上的难易样本平衡损失。

训练指标(第一行):

  1. train/box_loss:训练期间的边界框回归损失随着时间的推移而减少,表明模型在预测边界框坐标方面正在改进。
  2. train/cls_loss:分类损失也呈下降趋势,表明模型正在学习更准确地对对象进行分类。
  3. train/dfl_loss:这可能是指 “Distribution Focal Loss”,其下降趋势反映了模型定位能力的改进。
  4. metrics/precision(B):精度会波动,但最终会提高,但存在一些不稳定性,这可能表示过度拟合或噪声。
  5. metrics/recall(B):召回率持平在 1.0 时,这意味着训练集上的完美召回率,可能表明模型检测到所有相关对象,没有遗漏任何对象。

验证指标(第二行):

  1. val/box_loss:验证边界框损失减少,但与训练损失相比显示出更多的不稳定性,这表明模型在验证集上的一致性可能较低。
  2. val/cls_loss:与训练类似,分类损失减少,但模式表明存在一些波动。
  3. val/dfl_loss:分布焦点损失减少,跟随其他验证损失的趋势。
  4. metrics/mAP50(B):50% IoU 的平均精度均值随着时间的推移而提高,表明检测对象的整体性能更好。
  5. metrics/mAP50-95(B):该指标跟踪一系列 IoU 阈值 (50-95%) 的性能,其逐渐增加表明模型的检测质量在更广泛的难度级别范围内正在提高。

一般观察:

  • 训练与验证:与验证损失相比,训练损失通常更平滑、更一致,验证损失显示更多的波动,这是一些噪声或潜在过度拟合的典型迹象。
  • 性能指标:mAP50 和 mAP50-95 都在增加,这表明该模型在各种场景中的目标检测性能都在提高

        如果模型效果很好,通常这些图的走势应该表现出较为平稳的下降趋势或稳定的性能提升。以下是各个图的预期走势:

训练损失(Train Loss)相关图:

  1. train/box_loss(边界框损失):

    • 期望走势: 边界框损失应逐渐减小,呈下降趋势,且下降的幅度较为平滑,说明模型在边界框回归任务上逐渐学会了精确定位目标。
    • 不理想的情况: 如果有较大的波动或者在某个阶段不再下降,可能意味着学习率设置不佳或模型未能充分学习。
  2. train/cls_loss(分类损失):

    • 期望走势: 分类损失应呈下降趋势,表明模型在目标分类任务上的表现逐渐提升。
    • 不理想的情况: 如果损失出现反弹或者收敛得过早,可能意味着模型过拟合、欠拟合或学习率问题。
  3. train/dfl_loss(分布焦点损失):

    • 期望走势: 这类损失应像其他损失一样,逐渐减小并趋于稳定。
    • 不理想的情况: 如果有明显波动或下降缓慢,可能表明模型在回归边界框的质量上有难度。

验证损失(Validation Loss)相关图:

  1. val/box_lossval/cls_loss:

    • 期望走势: 验证集上的损失应该和训练集上的趋势相似,逐步下降并趋于平稳。如果验证集的损失持续降低,说明模型在未见过的数据上也表现出良好的泛化能力。
    • 不理想的情况: 如果验证集损失在早期就稳定不变或开始增大,说明可能发生了过拟合,即模型在训练集上表现很好,但在验证集上效果不佳。
  2. val/dfl_loss:

    • 期望走势: 验证集上的分布焦点损失也应像训练集一样,逐步下降,表明模型在更广泛的数据上表现良好。

评价指标(Metrics)相关图:

  1. metrics/precision(B)(精度):

    • 期望走势: 精度应逐步提升,且最终稳定在较高水平。精度的提升意味着模型减少了错误的正例预测。
    • 不理想的情况: 如果精度波动较大或迟迟不提升,可能意味着模型在学习过程中表现不稳定。
  2. metrics/recall(B)(召回率):

    • 期望走势: 召回率应逐渐提升并保持稳定在较高水平(例如 0.8-1.0),表明模型能够找到几乎所有的目标。
    • 不理想的情况: 召回率长期不变,或者在训练过程中大幅波动,可能表示模型在找到所有目标上存在困难。
  3. metrics/mAP50(B)(平均精度,IoU=50%):

    • 期望走势: mAP50 应呈持续上升趋势,达到某个稳定值。较高的 mAP50 表明模型在较为宽松的 IoU 阈值下表现良好。
    • 不理想的情况: 如果 mAP50 迟迟不提升,可能意味着模型对目标的定位和分类效果都不理想。
  4. metrics/mAP50-95(B)(平均精度,IoU=50-95%):

    • 期望走势: mAP50-95 也应逐步上升,但一般比 mAP50 要慢一些,因为这反映了模型在更严格的 IoU 阈值下的性能。较高的 mAP50-95 表示模型能在多种精度要求下正确预测目标。
    • 不理想的情况: 如果 mAP50-95 很低,说明模型在较高精度要求下(即 IoU 较大时)表现不佳。

总结

  • 良好表现的模型:训练和验证损失应该逐渐降低,最终趋于稳定。评价指标(如精度、召回率、mAP 等)应呈现逐步上升,并在高值区域趋于平稳。
  • 需要注意的情况:如果验证损失和训练损失出现较大差距,验证集上的损失不再下降,或评价指标不提升甚至下降,通常表明模型在验证集上的泛化能力较差,即可能过拟合。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习(西瓜书)第 14 章 概率图模型

14.1 隐马尔可夫模型 机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测。概率模型(probabilistic model)提供了一种描述框架&a…

快讯丨深蓝L07将于9月20日正式上市

9月13日获悉,继第二十七届成都车展首发亮相后,深蓝汽车全新“科技智享中型轿车”——深蓝L07,将于9月20日迎来正式上市! 作为深蓝汽车旗下第二款轿车力作,深蓝L07携#左手深蓝超级增程,右手华为乾崑智能#两…

自动驾驶:LQR、ILQR和DDP原理、公式推导以及代码演示(六、ILQR正则化和line search)

(六)ILQR正则化和line search 1. ILQR正则化 在iLQR中,我们通常线性化系统动力学并对目标函数进行二阶近似。在反向传播步骤中,我们需要计算逆矩阵(控制变量对目标函数的二阶导数矩阵),用以更…

通信工程学习:什么是FDMA频分多址

FDMA:频分多址 FDMA(Frequency Division Multiple Access,频分多址)是一种在无线通信领域广泛应用的多址技术。该技术通过将可用的频谱资源按频率划分,把传输频带划分为若干较窄且互不重叠的子频带(或称信道…

IP-Adapter学习

参考:https://baijiahao.baidu.com/s?id1803373544569190578&wfrspider&forpc IP-Adapter 是 SD中比较重要的controlnet,由腾讯公司出品。主要原理:提取图像特征,并嵌入预训练文本,最终加入到扩散图像中。简…

阿里云社区领积分自动打卡Selenium IDE脚本

脚本 感觉打卡比较麻烦,要点开点按钮这种机械化的操作。 所以就自己整了个脚本: { “id”: “f9999777-9ad6-40e0-9435-4f105919c982”, “version”: “2.0”, “name”: “aliyun”, “url”: “https://developer.aliyun.com”, “tests”: [{ “id”…

bp的模块被隐藏了

看我们现在没有代理那个模块了 我们点击查看 这里有被我们隐藏的模块,比如代理等,把前面的眼睛点一下 这个模块就出来了,如果想把他固定在任务栏里 拖动这个位置 就好了,如果有其他问题可以留言,看到可进我的努力给你…

【JUC并发编程系列】深入理解Java并发机制:Synchronized机制深度剖析、HotSpot下的并发奥秘(四、synchronized 原理分析)

文章目录 【JUC并发编程系列】深入理解Java并发机制:Synchronized机制深度剖析、HotSpot下的并发奥秘(四、synchronized 原理分析)1. 虚拟机环境2. 基本数据类型占多少字节3. JVM对象头3.1 Klass Pointer3.2 实例属性3.3 对齐填充3.4 查看Java对象布局3.5 论证压缩效…

Failed building wheel for opencv-python-headless

Failed building wheel for opencv-python-headless 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人…

PD虚拟机的优点有哪些,哪个版本的 Parallels Desktop 最稳定?

在如今多元化的操作系统环境中,Parallels Desktop 作为一款强大的跨平台虚拟机软件,提供了一个无缝集成Mac与Windows操作系统的解决方案。这篇文章将深入探讨Parallels Desktop的优点以及 Parallels Desktop 版本哪个最稳定,帮助你做出更明智…

探索Python的神秘力量:Borb库的奇妙之旅

文章目录 探索Python的神秘力量:Borb库的奇妙之旅背景:为何选择Borb?Borb库是什么?如何安装Borb库?简单库函数使用方法场景应用常见Bug及解决方案总结 探索Python的神秘力量:Borb库的奇妙之旅 背景&#x…

基于SpringBoot的考研资讯平台设计与实现

需要项目源码请联系我,目前有各类成品 毕设 javaweb ssh ssm springboot等等项目框架,源码丰富。 专业团队,咨询就送开题报告,活动限时免费,有需要的朋友可以来留言咨询。 一、摘要 随着现在网络的快速发展&#xff…

Kafka入门-C#操作

目录 1. 安装 zookeeper 1.1、官网下载Zookeeper 1.2、创建data文件夹 1.3、修改配置文件 1.4 启动Zookeeper服务:zkServer 1.5 客户端连接Zookeeper:zkCli 2.安装kafka 2.1、官网下载kafka,解压 2.2、修改配置 2.3 运行 .\bin\windows\kafka-server-start.bat .\…

CI/CD持续集成和持续部署以及相关软件的使用

目录 一:CI/CD是什么? 1.1 持续集成(Continuous Integration) 1.2 持续部署(Continuous Deployment) 1.3 持续交付(Continuous Delivery) CI/CD 的好处包括: 二:git…

Holynix: v1

确认物理地址 00:0C:29:BC:05:DE ip扫描 arp-scan -l 端口扫描 nmap 192.168.48.167 访问一下80端口 burp抓包 找到一个登录框 想着burp抓包试试 将抓到的包放入kali中的文件中使用sqlmap注入试试 sqlmap 存在sql注入 sqlmap -r password --batch --random-agent 发现…

电脑提示丢失mfc140u.dll的详细解决方案,mfc140u.dll文件是什么

遇到电脑显示“缺少 mfc140u.dll 文件”的错误其实是比较常见的。这种提示通常表示某个应用程序在尝试运行时未能找到它所需的关键 DLL 文件,导致无法正常启动。不过,别担心,本文将一步步引导你通过几种不同的方法来解决这个问题,…

【红动中国-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

AV1 Bitstream Decoding Process Specification--[3]:约定

原文地址:https://aomediacodec.github.io/av1-spec/av1-spec.pdf没有梯子的下载地址:AV1 Bitstream & Decoding Process Specification摘要:这份文档定义了开放媒体联盟(Alliance for Open Media)AV1视频编解码器…

DebateGPT:通过多智能体辩论监督微调大模型

人工智能咨询培训老师叶梓 转载标明出处 这些模型的训练通常依赖于资源密集型的人工反馈,这不仅成本高昂,而且耗时。为了解决这一问题,一篇名为《FINE-TUNING LARGE LANGUAGE MODELS WITH MULTI-AGENT DEBATE SUPERVISION》的论文提出了一种…

Sybase「退役」在即,某公共卫生机构如何实现 SAP Sybase 到 PostgreSQL 的持续、无缝数据迁移?

使用 TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代 OGG, Kettle 等同步工具,以及基于 Kafka 的 ETL 解决方案,「CDC 流处理 数据集成」组合拳,加速仓内数据流转,帮助企业…