yolo算法小结

文章目录

  • yolov1
    • 工作原理
    • 限制
  • yolov2
    • 网络结构
    • 改进点
  • yolov3
    • 改进点
  • yolov4
    • 网络结构图
    • 改进点
  • yolov5
    • 改进点
  • 参考资料

YOLO的核心思想是将物体检测视为一个回归问题,它不采用传统的区域提议方法,而是通过单一的神经网络对整个图像进行预测。这意味着YOLO只需要一次网络推断就能完成检测任务,从而大大提高了检测速度。

yolov1

工作原理

  • 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object
  • 每个网格要预测B个bounding box,每个bounding box 除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数。

限制

  • 为了快速实时检测,设计成每个网格只能预测有限数量的目标(通常是两个),并且只能检测一个类别。
  • 在物体的宽高比方面泛化率低,就是无法定位不寻常比例的物体

yolov2

网络结构

在这里插入图片描述

改进点

  • Batch Normalization: YOLOv2在每一层之后加入了批量归一化(Batch Normalization),以加速训练过程并提高模型的泛化能力。
  • 高分辨率分类器: 使用更高分辨率的特征图来进行分类,这样可以更好地利用图像细节进行分类预测。
  • Anchor Boxes: 引入了锚框(Anchor Boxes),使用k-means聚类方法自适应调整先验框的尺寸。每个网格不再固定预测两个边界框,而是预测多个预定义形状的边界框。这增加了模型对不同大小和比例的物体的适应性。
  • 多尺度训练:YOLOv2支持随机调整输入图像的大小进行训练,以增强模型对不同图像尺寸的鲁棒性。
  • Darknet-19网络结构:
    使用了改进后的Darknet-19网络结构,该结构比YOLOv1使用的网络更深,具有更好的特征提取能力。
  • 类别和位置独立预测:
    分离了类别预测和位置预测,提高了检测精度。类别预测不再依赖于边界框的置信度得分。
  • 细粒度的网格预测: 采用了更细粒度的网格划分,提高了小物体的检测性能。
  • Passive Detection: 改进了非极大抑制(NMS)过程,使用被动检测策略来减少误检。
  • 类别预测改进: 在每个网格中预测类别概率时,不再强制每个网格只能预测一个类别。这允许模型更好地处理多物体和重叠物体的情况。
  • 训练数据增强: 使用了多种数据增强技术,如水平翻转、色彩空间变换等,以提高模型的泛化能力。
  • 更快的速度: 通过优化网络结构和训练过程,YOLOv2实现了更快的检测速度,同时保持了较高的检测精度。

yolov3

v3包括yolov3、yolov3-spp、yolov3-spp-ultralytics 版本,这里讲的是第三个版本。

在这里插入图片描述

改进点

YOLOv3采用了Darknet-53作为基础网络结构,它比YOLOv2使用的Darknet-19更深更强大,能够提取更高质量的特征

mosaic图像增强:选取4张图像,每张图像随机切割成不同的矩形后拼在一起,重叠区域像素值进行混合处理

SPP模块:实现了不同尺度的特征融合,使用不同大小池化核来提取多尺度的特征,池化后的特征图被拉平并按照顺序拼接。
在这里插入图片描述

IOU损失:
在 YOLOv3 中,IoU 相关的损失函数经历了从 IoU→GIoU →DIoU →CIoU的发展过程

  • IoU (Intersection over Union):
    IoU 是一种衡量两个边界框重叠程度的指标,定义为两个边界框重叠面积与它们并集面积的比例。
    IoU 本身并不是一个良好的损失函数,因为它不能区分两个具有相同 IoU 值但位置不同的边界框。
    在早期版本的 YOLO 中,IoU 有时被用来评估预测边界框的质量,但它并没有直接用于损失函数中。
  • GIoU (Generalized IoU):
    GIoU 是 IoU 的一种改进版本,它考虑了包围两个边界框最小闭合区域(Convex Hull)的面积。
    GIoU 损失函数能够更好地反映边界框之间的差异,并且在训练过程中引导预测框更快地逼近真实框。
  • DIoU (Distance IoU):
    DIoU 在 GIoU 的基础上进一步加入了中心点距离的概念,即预测框中心点与真实框中心点之间的欧几里得距离。
    DIoU 损失函数能够更加快速地收敛,并且更好地处理边界框的位置和大小。
  • CIoU (Complete IoU):
    CIoU 综合了 GIoU 和 DIoU 的优点,并且进一步考虑了边界框的长宽比(Aspect Ratio)。
    CIoU 损失函数包括了 GIoU 的部分、中心点距离的部分以及长宽比的一致性部分,它能够更全面地衡量边界框的相似性。

Focal Loss:
主要目的是减轻正负样本数量不均衡带来的影响,使模型更加关注那些难以分类的样本。
Focal Loss 是对传统的交叉熵损失(Cross-Entropy Loss)进行改进而来的,其定义为:

L focal ( p t ) = − α t ( 1 − p t ) γ log ⁡ ( p t ) L_{\text{focal}}(p_t) = -\alpha_t (1 - p_t)^\gamma \log(p_t) Lfocal(pt)=αt(1pt)γlog(pt)

这里的 p t p_t pt是模型预测的正类概率。
α t \alpha_t αt 是权重因子,可以在正负样本之间进行加权,从而进一步缓解类别不平衡问题。
能够降低易分样本的损失贡献,缺点是易受噪音干扰。

yolov4

网络结构图

在这里插入图片描述

改进点


1.数据增强方面:

  • Mosaic 数据增强
  • Random Erase:用随机值或训练集的平均像素替换图像的区域
  • Hide and Seek:随机遮挡图像中的某些区域
  • self adversarial traning: 引入噪音点增加难度。
  • dropblock: 从之前dropout随机丢弃特征图的点或者单个神经元去除,现在丢弃特征图的一个区域
  • label smooth: 标签平滑化,修改训练数据的标签为概率值,不会过分依赖于单一的标签,从而提高模型的鲁棒性和泛化能力。

2.骨干网络(backbone)
CSPDarknet53:YOLOv4 采用了 CSPDarknet53 作为骨干网络,而不是 YOLOv3 中的 Darknet-53。CSPDarknet53 引入了 CSP(Cross Stage Partial Networks)架构,通过在每个阶段引入残差连接和特征重用,提高了网络的表征能力和计算效率。
在这里插入图片描述

2.颈部网络(Neck)

SPP(Spatial Pyramid Pooling):YOLOv4 引入了 SPP 模块,以增强模型对不同尺度特征的捕捉能力。SPP 模块通过不同大小的池化窗口,提取多尺度特征,并将其融合,从而提高了模型对不同大小目标的检测能力。

PANet(Path Aggregation Network):YOLOv4 使用了 PANet 进行特征融合,PANet 在特征金字塔网络(FPN)的基础上增加了自下而上的路径聚合,进一步增强了特征融合的效果。
PAN模块的设计灵感来源于FPN(Feature Pyramid Network)和PANet(Path Aggregation Network),它旨在解决多尺度目标检测中的信息传递问题。具体来说,PAN模块通过以下几种方式工作:

自底向上路径:类似于FPN,PAN也有一个自底向上的路径,用于从浅层特征到深层特征的信息融合。这使得模型可以从低层次的特征图中获取更多细节信息,同时也能利用高层次特征图的语义信息。
自顶向下路径:与FPN类似,PAN也有一个自顶向下的路径,它将高层特征图的信息传递给低层特征图。这样做的目的是增强浅层特征图的语义理解能力。
循环连接:这是PAN的一个关键特性。在完成了自顶向下的特征融合之后,PAN会再次从低层特征图往高层特征图传递信息,形成一个循环的连接模式。这种双向的信息流动有助于更好地整合不同层级的特征,使模型能够更有效地捕捉不同尺度的目标。

在这里插入图片描述

PAN结构图

3.头部网络(Head)
改进的检测头:YOLOv4 对检测头进行了改进,包括使用了更有效的激活函数(如 Swish 或 Mish 激活函数),以及对边界框回归和分类分支进行了优化。

4.训练技巧
自适应锚框:YOLOv4 采用了自适应锚框(Adaptive Anchors),根据训练数据动态调整锚框的大小和形状,以更好地匹配目标物体。
自适应锚框聚类:通过 K-means 聚类算法来生成更适合当前数据集的锚框尺寸。
自适应训练策略:包括动态调整学习率、批量化大小等参数,以提高训练效果。

5.其他改进

  • DIOU
    考虑了边界框之间的距离因素,而不仅仅是重叠区域的比例。具体而言:
    它同样开始于对边界框得分的排序。选择得分最高的边界框。计算该边界框与其它所有边界框之间的DIOU。使用DIOU作为抑制其他框的依据,而非传统的IoU。

  • NMS
    Soft-NMS则是在这基础上进行了改进,其核心思想不是直接删除那些重叠的检测框,而是降低它们的得分,使得它们不太可能成为最终的输出。这样做的好处是可以保留更多的候选框,从而提高召回率(Recall)

  • eliminate grid sensitivity
    坐标预测值都在0-1之间,为了达到边界,在激活函数前增加大于1的系数

  • SAM(Spatial Attention Mechanism,空间注意力机制)
    用于增强模型对重要特征的关注,从而提升检测效果
    在这里插入图片描述

yolov5

改进点

backbone采用了新的CSPDarknet53结构,把普通的CSP结构改为C3结构。
在这里插入图片描述
SPP结构变为SPPF结构
在这里插入图片描述

训练策略:

  1. Multi-scale Training(多尺度训练)
    在训练过程中,输入图像的尺寸不是固定的,而是会在一定的范围内随机变化。这种方法使得模型能够在不同尺度的输入上进行训练,从而提高模型在不同大小目标上的检测能力。
    优点:增强模型的鲁棒性,使其能够更好地适应不同分辨率的输入图像。
  2. Auto Anchor(自动锚框)
    这是一种针对自定义数据集的锚框(anchor)选择方法。YOLOv5可以自动根据训练数据集中的目标大小分布来选择最适合的锚框尺寸,从而提高检测精度。
    优点:减少了手动选择锚框的繁琐工作,使得模型能够更好地适应特定的数据集。
  3. Warmup and Cosine LR Scheduler(预热和余弦学习率调度器)
    这是一种学习率调整策略。在训练初期(Warmup阶段),学习率逐渐从小值增加到初始设定值;随后,在训练过程中,学习率按照余弦函数的规律逐渐减小。
    优点:Warmup阶段有助于模型平稳启动,避免了初始阶段学习率过高导致的训练不稳定;余弦学习率调度器则可以帮助模型更好地收敛,提高训练效果。
  4. EMA (Exponential Moving Average)(指数移动平均)
    在训练过程中,使用指数移动平均的方法来维护一个模型参数的平滑版本。在每个训练步骤中,都会根据当前模型的参数更新EMA模型的参数。
    优点:EMA可以帮助模型减少因随机梯度引起的参数波动,从而提高模型的稳定性和最终性能。
  5. Mixed Precision(混合精度)
    在训练过程中使用混合精度(通常是半精度浮点数 FP16 和单精度浮点数 FP32)进行计算,以减少内存占用和提高计算效率。
    优点:可以显著减少GPU显存消耗,加快训练速度,尤其适用于内存受限的环境。
  6. Evolve Hyper-Parameters(进化超参数)
    这是一种自动化的超参数优化方法。YOLOv5使用遗传算法或其他优化算法来自动搜索和调整超参数,找到最优或次优的超参数组合。
    优点:减少了手动调整超参数的工作量,使得模型更容易调优,并且可以找到更合适的超参数设置,从而提高模型性能。

消除网格敏感度:
增加对宽度和高度的预测范围为0~4个网格大小

正负样本:
设置了模板比例、根据偏移增加了更多正样本的数量

参考资料

  1. 【目标检测】YOLO系列——YOLOv1详解)通俗易懂理解——YOLOv1原理与实现

  2. (三十二)通俗易懂理解——YOLOv1原理与实现

  3. 经典目标检测YOLO系列(二)YOLOv2算法详解

  4. 目标检测算法YOLOv4详解

  5. YOLOv5深度剖析

  6. YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍

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

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

相关文章

C/C++两点坐标求距离以及C++保留两位小数输出,秒了

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 3. 备注 1. 前言 依旧是带来一个练手的题目,目的就一个,方法千千万,通向终点的方式有很多种,没有谁与谁,我们都是为了成为更好的自己。…

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic…

python中的循环结构

注意:range()函数 累加和: 注意:if 下面如果有好几行,只执行一行 print必须和 for 开头相同格数 例题:水仙花数 注意在print语句中,一句好“ 。。。。。 ”后面必须有逗号然后再写变…

C++(一)----C++基础

1.C的发展史 C语言诞生后,很快普及使用,但是随着编程规模增大且越来越复杂,并且需要高度的抽象和建模时,C语言的诸多短板便表现了出来,为了解决软件危机,上世纪八十年代,计算机界提出了oop&…

linux top命令介绍以及使用

文章目录 介绍 top 命令1. top 的基本功能2. 如何启动 top3. top 的输出解释系统概况任务和 CPU 使用情况内存和交换空间进程信息 4. 常用操作 总结查看逻辑CPU的个数查看系统运行时间 介绍 top 命令 top 是一个在类 Unix 系统中广泛使用的命令行工具,用于实时显示…

WebGL系列教程二(环境搭建及初始化Shader)

目录 1 前言2 新建html页面3 着色器介绍3.1 顶点着色器、片元着色器与光栅化的概念3.2 声明顶点着色器3.3 声明片元着色器 4 坐标系(右手系)介绍5 着色器初始化5.1 给一个画布canvas5.2 获取WebGL对象5.3 创建着色器对象5.4 获取着色器对象的源5.5 绑定着色器的源5.6 编译着色器…

ChatGPT 3.5/4.0使用手册:解锁人工智能的无限潜能

1. 引言 在人工智能的浪潮中,ChatGPT以其卓越的语言理解和生成能力,成为了一个革命性的工具。它不仅仅是一个聊天机器人,更是一个能够协助我们日常工作、学习和创造的智能伙伴。随着ChatGPT 3.5和4.0版本的推出,其功能和应用范围…

windows电脑自动倒计时关机

今天聊一聊其他的。我时不时的有一个需求,是关于在windows电脑上定时关机。 不知道怎么地,我好几次都忘了这个自动定时关机的终端命令,于是每一次都要去网上查。 1.鼠标右击【开始菜单】选择【运行】或在键盘上按【 WinR】快捷键打开运行窗口…

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲…

网络学习-eNSP配置VRRP

虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP) VRRP广泛应用在边缘网络中,是一种路由冗余协议,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及即使在实际…

模版的价值工程

我们在做什么 工作吗 最终不过是在做模版工程模版,最终会进化 沦为后世的参考文档。仅此而已! 或者已经沦为了文档类别 其他📄 最终我们会选择EXIT 指令 尽快它是 window桌面 我们只是图像 人字🌟的🦣 😱…

leveldb源码剖析(二)——LSM Tree

LSM Tree LSM Tree:Log-Structured Merge Tree,日志结构合并树。是一种频繁写性能很高的数据结构。 LSM Tree将写入操作与合并操作分离,数据首先写入磁盘中的日志文件(WAL),随后写入内存缓存,…

Adobe After Effects的插件--------CC Particle World

CC Particle World是一个粒子效果器,用于在三维空间中生成和模拟各种粒子系统,包括火焰、雨、雪、爆炸、烟雾等等。它会自动随时间变化发射粒子。 本文部分参照 https://www.163.com/dy/article/IEJVDN760536FE6V.html 使用条件 使用该插件的图层需是2D图层。 我们新建一个…

Matlab simulink建模与仿真 第十一章(端口及子系统库)【上】

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、端口及子系统库中的模块概览 注:In模块、Out模块和Subsystem模块在第二章中均有介绍,本章不再赘述;Subsystem Examples子系统实例模块也不进行介绍。 二、使能及其子模…

camtasia2024破解版本安装包网盘下载 附带永久激活码秘钥

Camtasia 2024 🌟 新功能大揭秘,让你轻松成为视频制作达人! 嘿,亲爱的小红薯们!👋 今天我要给大家介绍一款超实用的视频编辑软件——Camtasia 2024。这款软件可是让我的视频制作技能瞬间提升了不止一个档次…

《数字信号处理》学习05-单位冲击响应与系统响应

目录 一,单位冲激响应 二,LTI系统对任意序列的系统响应 三,LTI系统的性质 通过上一篇文章《数字信号处理》学习04-离散时间系统中的线性时不变系统-CSDN博客的学习,我已经知道了离散时间线性时不变系统(LTI&#x…

Linux系统本地化部署Dify并安装Ollama运行llava大语言模型详细教程

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Nginx解析:入门笔记

🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索nginx之旅✨ 👋 大家好!文本学习和探索Nginx配置。…

认知杂谈52

今天分享 有人说的一段争议性的话 I I 1拓展人脉很重要** 咱们活在这世上啊,得明白一件事儿,知识、逻辑能力和实战经验虽然重要,但确实都不是最关键的。真正关键的是要懂得怎么和那些手里有资源的人打交道。人脉那可真是一笔无形的大财富呢…

论文解读:《LAMM: Label Alignment for Multi-Modal Prompt Learning》

系列文章目录 文章目录 系列文章目录LAMM: Label Alignment for Multi-Modal Prompt Learning学习1、论文细节理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 LAMM: Label Alignment for Multi-Modal Prompt Learning学习 1、论文细节理解 VL模型和下游任务…