Yolo 一小时吃透 yolov4 yolov5 原理

2024-03-24 09:30

本文主要是介绍Yolo 一小时吃透 yolov4 yolov5 原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一小时吃透 yolov4 & yolov5 原理

  • 概述
  • 网络结构
  • BOF
    • 数据增强
    • 马赛克数据增强
    • 对抗训练
    • Drop Block
  • BOS
    • SPPNet
    • CSPNet
    • CBAM
    • PANet
  • 损失函数
    • 标签平滑
    • IOU
    • GIOU
    • DIOU
    • CIOU
    • 对比
    • DIOU-NMS
    • SOFT-NMS
    • Mish 激活函数
    • 网络敏感性

概述

Yolo 之父 Joe Redmon 在相继发布了 yolov1 (2015) yolov2 (2016), yolov2 (2018) 的两年后. 在 2020 年 2 月 20 号在 Twitter 上宣布退出 CV 界.
在这里插入图片描述
俄罗斯的 Alexey 大佬扛起了 Yolov4 的重任.

网络结构

yolov3:

在这里插入图片描述

yolov4:
在这里插入图片描述

BOF

BOF (Bag of Freebies) 是一种增加训练成本但是能显著提高精度的方法集.

在这里插入图片描述

数据增强

通过调整亮度, 对比度, 色调, 缩放, 剪切, 旋转等方法增加训练图像的多样性. 从而使得模型有更强的泛化能力 (Generaliztion Ability).

不同的数据增强对比:
在这里插入图片描述

  • Mixup: 将随机的两张样本按比例混合, 分类的结果按比例分配
  • Cutout: 随机的将样本中的部分区域裁剪掉, 并填充 0 像素值, 分类的结果不变
  • CutMix: 将一部分区域裁剪掉, 并随机用训练集中的其他数据区域像素值进行填充, 结果按一定比例分配

马赛克数据增强

马赛克数据增强 (Mosaic Data Augmentation) 通过把四张图片随机裁剪混合成一张图片来实现数据增强. Yolov4 中使用的 Mostic 是 CutMix 的一种延伸. 例如:
在这里插入图片描述
Mosaic 的优点:

  • 丰富数据集: 使用 4 张随机图片缩放拼接, 丰富了检测数据集, 增加了很多小目标
  • 减少 GPU: 通过缩放, 以及一次计算 4 张图片. 充分利用了 GPU 资源, 使得 batch_size 不用很大就能达到很好的效果

对抗训练

SAT (Self Adversaraial Training) 即对抗训练. 样本会被添加很小比例的噪声, 从而增加模型的泛化能力. 如图:在这里插入图片描述

Drop Block

Drop Block 会随机 drop 图片的一个区域从而增加学习的强度. 如图:
在这里插入图片描述
公式 (了解即可):
在这里插入图片描述
Drop Block 效果:
在这里插入图片描述

BOS

BOS (Bag of Specials) 指的是可以提升检测效果但只些微增加成本的一组方法.

SPPNet

SPPNet(Spatial Pyramid Pooling) 即金字塔池化, 可以帮助我们将图像切分成各种粗细级别, 然后整合特征.
在这里插入图片描述
金字塔池化解决了固定图像尺寸的限制 (最大池化), 并提高了提取特征的效率.

CSPNet

CSPNet (Cross Stage Partial Network) CSPNet 通过将梯度的变化从头到尾地集成到特征图中, 在减少了计算量的同时可以保证准确率.
在这里插入图片描述
如上图, 将一层分为两部分. 一半不进行操作直接连接, 另一半进行卷积操作.

CBAM

CBAM (Convolutional Block Attention Module) 注意力模块, 通过空间和通道两个维度推断出注意力权重. 然后与原特征相乘来对特征进行自适应调整.
在这里插入图片描述

通道注意力模块:
在这里插入图片描述
特征的每一个通道都代表一个专门的检测器. 通道注意力是关注什么样的特征是有意义的.

空间注意力模块:
在这里插入图片描述引入空间注意力模块来关注哪里的特征是有意义的.

Yolo4 对空间注意力模块进行了简化:
在这里插入图片描述

PANet

PANet (Path Aggregation Network) 路径聚合网络, 通过添加自下而上的路径增强缩短了较低层和顶层之间的信息路径. 高层神经元反映了整个目标, 底层神经元反映了目标的基础信息.

在这里插入图片描述

  • (a) 是 FPN (Feature Pyramid Networks)
  • (b) 通过自下而上的捷径使得低层信息更好的向高层传播
  • © 允许每个提案访问所有层的信息来进行预测

yolov5 PanNet 流程:
在这里插入图片描述在这里插入图片描述

损失函数

标签平滑

标签平滑 (Label Smoothing) 是一种损失函数的修正, 可以帮助我们提高图像分类的准确性. 标签平滑将神经网络的训练目标从 “1” 调整为 “1 - 标签平滑矫正”.

在这里插入图片描述
标签平滑可以帮助我们在一定程度上避免过拟合, 帮助我们提高模型对新数据的预测能力.

未使用标签平滑:
在这里插入图片描述
使用标签平滑:
在这里插入图片描述
我们可以看出, 通过标签平滑, 分类的簇更紧密, 簇间距离更大.

IOU

在计算 IOU (Intersection over Union) 也就是交并比.
在这里插入图片描述

在使用 IOU 的时候我们会发现 2 个问题:

  1. 当预测框和实际框没有交集的时候 IOU 的值为 0, 我们就无法完成梯度计算
  2. IOU 无法精确反映预测框和真实框的重合度大小.

在这里插入图片描述
如图, 三种情况 IOU 都相同. 但是重合度依左往右递减.

GIOU

GIOU (Generalized Intersection over Union) 引入了最小封闭形状的概念, 如图中的 C:
在这里插入图片描述
GIOU 能在预测框和真实框不重叠的情况下能让预测框尽可能朝着真实框前进.

在这里插入图片描述
但在重叠的情况下, 就会产生一个问题 GIOU 的值会相等.

DIOU

DIOU (Distance IOU) 在 GIOU 的基础上添加了距离.
在这里插入图片描述

公式:
在这里插入图片描述

  • 分子: 计算预测框和真实框的中心点欧式距离 d
  • 分母: 预测框和真实框最小封闭形状的对角线长度 c

在这里插入图片描述

优点:

  • 收敛速度快: DIOU 可以直接最小化两个目标框的距离, 比 GIOU 收敛更快
  • 解决重叠: DIOU 可以提供一个朝真实框的移动方向

CIOU

CIOU (Complete IOU) 在 DIOU 的基础上增加了回归三要素: 重叠面积, 中心点距离, 长宽比. Yolov4 使用的就是 CIOU.

公式:
在这里插入图片描述

对比

在这里插入图片描述

DIOU-NMS

DIOU-NMS (Distance Intersection of Union None Maximal Suppression) 是 NMS (None Maximal Suppression) 的升级版.

公式:
在这里插入图片描述

  • M: 高置信度候选框
  • Bi: 另一个临近的框

在这里插入图片描述
当两个不同物体挨得很近时, 由于 IOU 值比较大, 往往经过 NMS 处理后, 就只剩下一个检测框, 这样会导致漏检的错误情况发生. DIOU-NMS 不仅考虑了 IOU, 还考虑了两个框中心点的距离, 从而避免相邻物体被过滤的情况.

SOFT-NMS

SOFT-NMS 在 NMS 的基础上用降分机制取代了直接剔除. 当 M 为当前得分最高框, Bi 为待处理框, Bi 和 M 的 IOU 越大, Bi 的得分 Si 就下降的越厉害.
在这里插入图片描述

Mish 激活函数

Mish (Self Regularized Non-Monotonic Neural Activation) 自正则的非单调神经激活函数, 一个可能比 Relu 都牛逼的激活函数. 平滑的激活函数允许更好的信息深入神经网络, 从而得到更好的准确性和泛化.
在这里插入图片描述
公式:
在这里插入图片描述

Mish 激活函数 vs 其他的激活函数:
在这里插入图片描述

网络敏感性

消除网络敏感性 (Eliminate Grid Sensitivity) 通过在逻辑回归激活函数前面乘上一个大于 1 的系数来避免网络难以达到边界.

在这里插入图片描述
坐标回归的预测值都在 0~1 之间. 如果左边落在了边界就很难达到.
在这里插入图片描述
当 bx=cx 和 bx=cx+1 这两种情况, 按照 Sigmod 激活函数必须得到一个极大的负值或正值才能使得 损失很小. 但如果修改公式使 σ 乘以一个系数, 那么要得到较小的损失则容易得多.

公式:
在这里插入图片描述

这篇关于Yolo 一小时吃透 yolov4 yolov5 原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841179

相关文章

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景