【YOLO学习】YOLOv4详解

news2024/10/9 21:55:53

文章目录

  • 1. 整体网络结构
    • 1.1 结构图
    • 1.2 创新点概括
  • 2. 输入端创新点
    • 2.1 Mosaic数据增强
    • 2.2 cmBN策略
  • 3. Backbone创新点
    • 3.1 CSPDarknet53
    • 3.2 Mish函数
    • 3.3 Dropblock正则化
  • 4. Neck创新点
    • 4.1 SPP模块
    • 4.2 PAN
  • 5. Prediction
    • 5.1 Loss
    • 5.2 NMS


1. 整体网络结构

1.1 结构图

在这里插入图片描述

1.2 创新点概括

 1. 输入端的创新点:训练时对输入端的改进,主要包括 Mosaic 数据增强、cmBN、SAT 自对抗训练。

 2. BackBone主干网络:各种方法技巧结合起来,包括:CSPDarknet53、Mish 激活函数、Dropblock。

 3. Neck:目标检测网络在 BackBone 和最后的输出层之间往往会插入一些层,比如 YOLOv4 中的 SPP 模块、FPN+PAN 结构。

 4. Prediction:输出层的锚框机制和 YOLOv3 相同,主要改进的是训练时的回归框位置损失函数CIOU_Loss,以及预测框筛选的 NMS 变为 DIOU_NMS。

2. 输入端创新点

2.1 Mosaic数据增强

 1. Yolov4 中使用的 Mosaic 是参考 2019 年底提出的 CutMix 数据增强的方式,但 CutMix 只使用了两张图片进行拼接,而 Mosaic 数据增强则采用了 4 张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。
 这样做增强了对正常背景(context)之外的对象的检测,丰富检测物体的背景。此外,每个小批次包含一个大的变化图像(4倍),因此,减少了估计均值和方差的时需要大 mini-batch 的要求,降低了训练成本。

在这里插入图片描述
 2. 优点

  • 丰富数据集:随机使用 4 张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好。
  • batch 不需要很大:Mosaic 增强训练时,可以直接计算 4 张图片的数据,使得 Mini-batch 大小并不需要很大,一个 GPU 就可以达到比较好的效果。

2.2 cmBN策略

 1. 两个 batch 相关的概念:

  • batch:就是图片样本数。
  • mini-batch:由于整个 batch 独立计算时,受到资源限制可能不现实,于是需要将 batch 拆分成数个 mini-batch,每个 mini-batch 单独计算后汇总得到整个 batch 的统计量,从而归一化特征。

 2. CBN 主要用来解决在 batch-size 较小时,BN 的效果不佳问题。CBN 连续利用多个迭代的数据来变相扩大 batch size 从而改进模型的效果。这种用前几个 iteration 计算好的统计量来计算当前迭代的 BN 统计量的方法会有一个问题:过去的 BN 参数是由过去的网络参数计算出来的特征而得到的,而本轮迭代中计算 BN 时,它们的模型参数其实已经过时了。

 3. CmBN 是基于 CBN 改进的,按照论文的图示的意思,主要的差异在于从滑动窗口变为固定窗口。每个 batch 中的统计不会使用 batch 之前的迭代的信息,仅会累积该 batch 内的 4 次迭代以用于最后一次迭代的更新。这一策略基本与梯度累积策略仍有不同,梯度累加仅仅累加了梯度,但是前面的图中明显可以看到 BN 的统计量实际上也累积了起来,而图中的展现的 BN 似乎更像是梯度累积。

在这里插入图片描述

3. Backbone创新点

3.1 CSPDarknet53

 1. CSP 将基础层的特征映射为两个分支,第二个分支通过 Dense block 发送副本到下一个阶段,接着将两个分支的信息在通道方向进行 Concat 拼接,最后再通过 Transition 层进一步融合。

在这里插入图片描述

 2. 为什么要采用 CSP 模块呢?
 CSPNet 全称是 Cross Stage Paritial Network,主要从网络结构设计的角度解决推理中计算量很大的问题。

 CSPNet 的作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致的。

 因此采用 CSP 模块先将基础层的特征映射划分为两部分,然后通过跨阶段层次结构将它们合并,在减少了计算量的同时,可以保证准确率。

 因此 YOLOv4 在主干网络 Backbone 采用 CSPDarknet53 网络结构,主要有三个方面的优点:
 (1) 优点一:增强 CNN 的学习能力,使得在轻量化的同时保持准确性。
 (2) 优点二:降低计算瓶颈。
 (3) 优点三:降低内存成本。

3.2 Mish函数

 1. Mish 函数图像:

在这里插入图片描述

 2. Mish 和 Leaky_relu 激活函数的图形对比如下。优点:

 (1)从图中可以看出该激活函数,在负值时并不是完全截断,而允许比较小的负梯度流入从而保证了信息的流动。

 (2)Mish 激活函数无边界,这让他避免了饱和(有下界,无上界)且每一点连续平滑且非单调性,从而使得梯度下降更好。
在这里插入图片描述

3.3 Dropblock正则化

 1. 传统的 Dropout:随机删除减少神经元的数量,使网络变得更简单。

 2. Dropblock:DropBlock 技术在称为块的相邻相关区域中丢弃特征。Dropblock 方法的引入是为了克服 Dropout 随机丢弃特征的主要缺点。Dropout 主要作用在全连接层,在卷积层上效果不太好;而 Dropblock 可以作用在任何卷积层之上。这样既可以实现生成更简单模型的目的,又可以在每次训练迭代中引入学习部分网络权值的概念,对权值矩阵进行补偿,从而减少过拟合。

 3. 之前的 Dropout 是随机选择点,现在随机选择一个区域,如下图所示。

在这里插入图片描述

Q:为什么全连接层上效果很好的 Dropout 在卷积层上效果并不好?
 中间 Dropout 的方式会随机的删减丢弃一些信息,但 Dropblock 的研究者认为,卷积层对于这种随机丢弃并不敏感,因为卷积层通常是三层连用:卷积+激活+池化层,池化层本身就是对相邻单元起作用。
 而且即使随机丢弃,卷积层仍然可以从相邻的激活单元学习到相同的信息。因此,在全连接层上效果很好的 Dropout 在卷积层上效果并不好。所以右图 Dropblock 的研究者则干脆整个局部区域进行删减丢弃。

4. Neck创新点

4.1 SPP模块

 1. SPP-Net 全称 Spatial Pyramid Pooling Networks,是何恺明大佬提出的,主要是用来解决不同尺寸的特征图如何进入全连接层的,在网络的最后一层 concat 所有特征图,后面能够继续接 CNN 模块。
 SPP 模块的主要目的是解决图像在输入到卷积神经网络时尺寸不一的问题。通过将不同大小的输入映射到固定长度的输出,SPP 模块使得神经网络能够处理任意大小的输入,从而大大提高了模型的灵活性和泛化能力。

在这里插入图片描述

 2. 具体结构如下:

在这里插入图片描述

4.2 PAN

 1. YOLOv3 中的 Neck 只有自顶向下的 FPN,对特征图进行特征融合,而 YOLOv4 中则是 FPN+PAN 的方式对特征进一步的融合。引入了自底向上的路径,使得底层信息更容易传到顶部。

 2. 下面是 YOLOv3 的 Neck 中的 FPN,如图所示:FPN 是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图。

在这里插入图片描述

 3. YOLOv4 中的 Neck 如下:

在这里插入图片描述

 4. YOLOv4 在原始 PAN 结构上进行了一点改进,原本的 PANet 网络的 PAN 结构中,特征层之间融合时是直接通过 addition 的方式进行融合的,而 YOLOv4 中则采用在通道方向 concat 拼接操作融合的,如下图所示。

在这里插入图片描述

Q:为什么要把 add 改为 concat?
 add:将两个特征图直接相加,是 resnet 中的融合方法,基于这种残差堆叠相加,可以有效地减小因为网络层数加深而导致的 cnn 网络退化问题。add 改变特征图像素值,并没有完全保留原本特征图信息,更多的可以看作对原特征图信息的一种补充,深层特征图在卷积过程中丢失了许多细节信息,通过 add 的方式得以补全,是在二维的平面上对特征图的增强。因此 add 在进行图像特征增强时使用最佳。
 concat:将两个特征图在通道数方向叠加在一起,原特征图信息完全保留下来,再对原特征图增加一些我们认为是较好的特征图,丰富了特征图的多样性,是在空间上对原特征图的增强,这样在下一次卷积的过程中我们能得到更好的特征图。

5. Prediction

5.1 Loss

 1. 经典 IOU loss,IOU 算法是使用最广泛的算法,大部分的检测算法都是使用的这个算法。不足:没有相交则 IOU=0 无法梯度计算,相同的 IOU 却反映不出实际情况。

在这里插入图片描述

在这里插入图片描述

 2. GIOU(Generalized IOU)损失:GIOU 考虑到,当检测框和真实框没有出现重叠的时候 IOU 的 loss 都是一样的,因此 GIOU 就引入了最小封闭形状 C(C 可以把 A、B 包含在内),在不重叠的情况下能让预测框尽可能朝着真实框前进,这样就可以解决检测框和真实框没有重叠的问题。

在这里插入图片描述

 如上图所示,绿框是 Prediction 框就记为 A 框,橙框是 Ground truth 框就记为 B 框,最外面的蓝框是将这两个矩形用最小矩形框起来的边界就记为 C 框,然后计算 ,计算这个值与 C 面积的比值,最后用 AB 的 IOU 减去这个比值得到 GIOU。

在这里插入图片描述

 不足:(1) 对每个预测框与真实框均要去计算最小外接矩形,计算及收敛速度受到限制。 (2) 在两个预测框完全重叠的情况下,不能反映出实际情况,这时 GIOU 就退化为 IOU。

在这里插入图片描述

 3. DIOU(Distance IOU)损失:DIOU 考虑到 GIOU 的缺点,也是增加了 C 检测框,将真实框和预测框都包含了进来,但是 DIOU 计算的不是框之间的交并,而是计算的每个检测框之间的欧氏距离,这样就可以解决 GIOU 包含出现的问题。

在这里插入图片描述

 其中 d = ρ(A,B) 是 A 框与 B 框中心点坐标的欧式距离,而 c 则是包住它们的最小方框的对角线距离。

在这里插入图片描述

 不足:DIOU 考虑了重叠面积和中心点距离,当目标框包裹预测框的时候,直接度量 2 个框的距离,因此 DIOU 收敛的更快,但并没有考虑到长宽比。

在这里插入图片描述

 4. CIOU 就是在 DIOU 的基础上增加了检测框尺度的 loss,增加了长和宽的 loss,这样预测框就会更加的符合真实框。

 公式:损失函数必须考虑三个几何因素:重叠面积,中心点距离,长宽比,其中 α 可以当做权重参数。

在这里插入图片描述

总结:
IOU_Loss:主要考虑检测框和目标框重叠面积。
GIOU_Loss:在 IOU 的基础上,解决边界框不重合时的问题。
DIOU_Loss:在 IOU 和 GIOU 的基础上,考虑边界框中心点距离的信息。
CIOU_Loss:在 DIOU 的基础上,考虑边界框宽高比的尺度信息。

5.2 NMS

 1. DIOU-NMS:DIOU-NMS 不仅考虑 IOU 的值,还考虑两个框的中心点的距离。如果两个框之间的 IOU 比较大,但是他们中心点之间的距离比较远,则会被认为是不同物体的检测框而不会被过滤掉。

 2. 公式:不仅考虑了 IOU 的值,还考虑了两个 Box 中心点之间的距离,其中 M 表示高置信度候选框, B i B_i Bi 就是遍历各个框跟置信度高的重合情况。

在这里插入图片描述

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

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

相关文章

PostgreSQL学习笔记三:数据类型和运算符

数据类型和运算符 PostgreSQL 支持多种数据类型和运算符,以下是一些常见的数据类型和运算符的概述: 数据类型 基本数据类型 整数类型: SMALLINT:2 字节,范围 -32,768 到 32,767。INTEGER:4 字节&#xff0…

vue3 vue2

vue3.0是如何变快的? diff算法优化 vue2的虚拟dom是进行全局的对比。vue3 新增了静态标记(patchFlag) 在与上次虚拟节点进行比较的时候,只对比带有patch Flag的节点,并且可以通过flag的信息得知当前节点要对比的具体内…

先进封装技术 Part03---重布线层(RDL)的科普

先进封装核心技术之一:重布线层(RDL)的科普文章 1、 引言 随着电子设备向更小型化、更高性能的方向发展,传统的芯片互连技术已经无法满足日益增长的需求。在这样的背景下,RDL(Re-distributed Layer,重布线层)技术应运而生,成为先进封装技术中的核心之一。 2、 RDL技术…

yolov8.yaml

前面说了yolov8的核心代码放在ultralytics里面,今天我们一起学习一下 YOLOv8模型下的Ultralytics文件目录结构。每个文件夹都有不同的作用,以下是对各个文件夹的解释: assets: 这个文件夹通常存放与模型相关的资源文件,可能包括训…

MySQL五千万大表查询优化实战

背景 DBA同事在钉钉发了两张告警截图,作为“始作俑者”的我很心虚,因为刚才是我在管理后台查询数据,结果很久都没出来,并且用多个维度查了N次 问题分析 这是当天上线的功能,完事我立马锁定SQL然后开启排查 # 原SQL&a…

系统性能优化

在程序员的职业生涯中,解决当前系统问题,优化性能,是走向高阶的必经之路。如果一辈子做着后台开发,写着CRUD,QPS低于10,那确实没必要去做性能优化,因为根本用不上。性能优化范围很广&#xff0c…

排序|插入排序|希尔排序|直接选择排序|堆排序的实现即特性(C)

插入排序 基本思想 直接插入排序是一种简单的插入排序法,其基本思想是: 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 单趟 当插入第 i ( i ≤ 1…

人数识别 人员超员识别系统 作业区域超员预警系统 ai#YOLO视觉

在当今复杂的生产作业与社会管理场景中,人员管理的精准性和高效性变得愈发重要。人数识别、人员超员识别系统、作业区域超员预警系统以及特殊岗位人员达标监测等,都是保障安全生产、提高运营效率和维护社会秩序的关键要素。随着人工智能(AI)技术的飞速发…

【Python实例】Python读取并绘制nc数据

【Python实例】Python读取并绘制nc数据 准备:安装netCDF库等读取nc数据相关信息绘制图形利用basemap绘图 参考 准备:安装netCDF库等 以【1960-2020年中国1km分辨率月降水数据集】中2020年降水为例。 先在Panopoly中查看数据属性,如下&#…

单细胞转录组 —— kb-python 原始数据处理

单细胞转录组 —— kb-python 原始数据处理 前言 kallisto|bustools 是一种用于预处理 scRNA-seq 数据的工作流程。 数据预处理步骤包括: 将 reads 与其来源细胞关联起来;根据唯一分子标识符(UMI)对 reads 进行去重&#xff1…

西门子S7-200 SMART高速计数器指令向导

在 Micro/WIN SMART 中的命令菜单中选择 Tools(工具)> Wizards(向导)中选择 High Speed Counter(高速计数器向导) ,也可以在项目树中选择 Wizards(向导)文件夹中的 Hi…

下载相应版本的PyTorch

1、前置条件 下载某个版本的Python,本文涉及的Python版本为3.10 2、查看该Python版本可以下载的whl文件格式 pip debug --verbose 从上图可以发现python3.10可以下载格式为cp310-cp310-win_amd64的whl文件 PyTorch各稳定版本下载链接:https://downloa…

GNN与Transformer创新结合!模型性能起飞!

近年来,图神经网络(GNN)和Transformer模型因其在处理复杂数据结构和序列依赖性方面的卓越表现而受到广泛关注。这种优势使得将GNN与Transformer结合成为图表示学习领域的一个新兴且充满潜力的研究方向。通过结合这两种模型,我们不…

软考下午题1-数据流图

问题一:求实体的名称 例题: 1.提问方式-如问题1 从子图(0层数据流图)找比较快 外部实体可以是 人、物体、系统 在子图中找到加工,与文章中加工文字相对应,继续读文章,可以找到实体 E1-巴士列表文件 E2-机械师 E3-会…

《深度学习》LSTM 长短期记忆网络 结构及原理解析

目录 一、关于LSTM网络 1、什么是LSTM网络 举例: 2、RNN网络的结构 3、Tanh双曲正切函数 二、LSTM网络结构 1、遗忘门 1)功能 2)步骤 2、输入门 1)功能 2)步骤 3、输出门 1)功能 2)步骤…

斯坦福 CS229 I 机器学习 I 构建大型语言模型 (LLMs)

1. Pretraining -> GPT3 1.1. Task & loss 1.1.1. 训练 LLMs 时的关键点 对于 LLMs 的训练来说,Architecture(架构)、Training algorithm/loss(训练算法/损失函数)、Data(数据)、Evalu…

3D看车如何实现?有哪些功能特点和优势?

3D看车是一种创新的汽车展示方式,它利用三维建模和虚拟现实技术,将汽车以更真实、更立体的形式呈现在消费者面前。 一、3D看车的实现方式 1、三维建模: 通过三维建模技术,按照1:1的比例还原汽车外观,包括车身线条、细…

uniapp学习(003-2 vue3学习 Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第15p-第p20的内容 文章目录 事件监听以及组件内置事件处理自定义模板快速创建uniapp条件渲染 v-if和v-elsev-e…

骨传导耳机哪个牌子好?五大选购妙计带你精准入手优质骨传导耳机!

随着骨传导耳机市场的蓬勃发展,此产品凭借优秀的佩戴体验以及可降低听力损伤等优点引起了广泛的关注。然而,随着热度提高,市面上开始出现了许多品牌,这些品牌实力技术各不相同,甚至其中还有一些劣质机型,这…

国内经典多模态大模型工作1——Qwen-VL系列(Qwen-VL、Qwen2-VL解读)

Qwen-VL 论文标题:《Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond》 论文链接:https://arxiv.org/pdf/2308.12966.pdf 项目:https://github.com/QwenLM/Qwen-VL/tree/master 模…