(6)YOLOv4算法基本原理以及和YOLOv3 的差异

server/2024/12/26 4:32:17/

YOLOv4__2">一、YOLOv4 结构

YOLOv4 网络模型由CSPDarknet53特征提取网络、PANet(PathAggregation Network,路径聚合网络)、SPP(Spatial Pyramid Pooling,空间金字塔池化)等组成,并引入了 Mish激活函数、自对抗训练(Self-adversarial training)、实现速度和准确性的良性结合,YOLOv4 的网络结构如下图所示。

360截图20241212155657179 - 副本

YOLOv4 合并了 CSPNet(Cross Stage Partial Networks,跨阶段部分连接网络)来当作其特征提取网络,解决了其他大型卷积神经网络中梯度信息重复的问题,从而在精度和速度方面取得了不错的效果。

​ CSPDarknet53 是 YOLOv4 模型的主体,用于提取目标特征,由 CSP和 Darknet-53 构成。完成目标的提取后,需要对提取的目标进行融合,YOLOv4 特征融合网络包括 SPP 与 PANet。

​ SPP 网络位于特征提取网络CSPDarknet53 之后,使用了四种不同比例的最大池化来处理输入的特征图,其功能是使卷积神经网络的输入不受固定大小的限制。

YOLOv4 使用了 PANet 网络,它在 SPP 网络之后,即在 FPN 网络自底向上的结构中添加自顶向下的结构,充分利用浅层特征,针对不同的检测器层次,融合不同主干层的特征,进一步提高特征提取能力。

YOLOv4__16">二、YOLOv4 损失函数

​ 损失函数为深度学习的核心组成模块,其功能大致分为以下两个方面:其一是在训练过程中根据损失函数的分布曲线判断训练成果;二是判断真实结果与预测结果的差值。YOLOv4 网络的损失函数如下式所示。

根据提供的文件内容,YOLOv4的损失函数由三部分组成,分别是IOU损失(ciou)、置信度损失(conf)和类别损失(class)。具体的损失函数定义如下:

  1. IOU损失(ciou)
    L I O U = α ( v I O U − 1 D ) 2 L_{IOU} = \alpha \left( v_{IOU} - \frac{1}{D} \right)^2 LIOU=α(vIOUD1)2

    其中,$ v_{IOU} 是通过坐标框 是通过坐标框 是通过坐标框(x, y, w, h) 计算得出的预测框与真实框的交并比 计算得出的预测框与真实框的交并比 计算得出的预测框与真实框的交并比IOU , , D 是两个框体中心点的距离, 是两个框体中心点的距离, 是两个框体中心点的距离,\alpha$是用于平衡损失函数中各项权重的超参数。

  2. 置信度损失(conf)
    L c o n f = ( 1 − λ ) I B E S T [ σ ( t ) − C g t ] 2 + λ I O B J [ 1 − σ ( t ) ] 2 L_{conf} = \left(1 - \lambda \right) I_{BEST} \left[ \sigma(t) - C_{gt} \right]^2 + \lambda I_{OBJ} \left[ 1 - \sigma(t) \right]^2 Lconf=(1λ)IBEST[σ(t)Cgt]2+λIOBJ[1σ(t)]2

    其中,$ I_{BEST} 是指示函数,当预测框与真实框的 I O U 最大时为 1 ,否则为 0 ; 是指示函数,当预测框与真实框的IOU最大时为1,否则为0; 是指示函数,当预测框与真实框的IOU最大时为1,否则为0C_{gt} 是真实框的置信度标签; 是真实框的置信度标签; 是真实框的置信度标签;\sigma(t) 是预测框的置信度;是 是预测框的置信度;是 是预测框的置信度;是I_{OBJ} 指示函数,当预测框包含目标时为 1 ,否则为 0 ; 指示函数,当预测框包含目标时为1,否则为0; 指示函数,当预测框包含目标时为1,否则为0\lambda$是用于平衡正负样本权重的超参数。

  3. 类别损失(class)
    L c l a s s = 1 − P g t ⋅ log ⁡ ( P ) L_{class} = 1 - P_{gt} \cdot \log(P) Lclass=1Pgtlog(P)
    其中, P g t P_{gt} Pgt是真实框的类别概率, P P P是预测框的类别概率。将这三部分损失函数组合起来,得到YOLOv4的总损失函数:

L o s s = L I O U + L c o n f + L c l a s s Loss = L_{IOU} + L_{conf} + L_{class} Loss=LIOU+Lconf+Lclass

​ 这个损失函数的设计旨在优化目标检测模型在预测框的定位精度、置信度评分以及类别预测上的性能。通过最小化这个损失函数,YOLOv4模型能够在训练过程中学习到更准确的目标检测能力。

YOLOv4_49">三、YOLOv4使用的激活函数

​ Mish激活函数是一种自门控的激活函数,它结合了ReLU和Sigmoid的优点,能够在不同输入范围内提供非线性激活。Mish激活函数在YOLOv4中使用,旨在提高模型的性能和泛化能力。
M i s h ( x ) = x ⋅ tanh ⁡ ( log ⁡ ( 1 + e x ) ) Mish(x) = x \cdot \tanh(\log(1 + e^x)) Mish(x)=xtanh(log(1+ex))

image-20241212162203550

YOLOv4__YOLOv3__58">四、YOLOv4 和 YOLOv3 的差异

​ 2020 年 4 月 23 日年 YOLOv4的问世,改变了 YOLOv3 对小目标检测的问题,使检测更加准确。

YOLOv4 相对于 YOLOv3 在输入端引入了 Mosaic 数据增强,在骨干网络中使用不包含全连接层的 CSPDarknet53 模块结构,并使用特征金字塔(Feature Pyramid Networks,FPN)和路径聚合(Path Aggregation Network,PAN)结构进行信息传递与融合。

​ 训练方面,损失函数由 YOLOv3 的二分交叉熵损失函数变为 CIoU_Loss,对损失函数进行优化有助于网络模型在规定的周期内进行局部寻优。

​ 激活函数方面,将 YOLOv3 使用的 Leaky ReLU 激活函数改为 Mish 激活函数。

​ 检测方面,预测框筛选策略由传统的 NMS 变为 DIoU_NMS,不仅考虑了 IoU 的数值,还考虑到了预测框中心点之间的距离关系。

五、往期回顾

​ yolo入门教程:《吐血录制,yolo11猫狗实时检测实战项目,从零开始写yolov11代码》,视频全程25分钟。

image-20241212090014863

(1)yolo11猫狗实时检测实战项目,从零开始写yolov11代码
(2)yolo实战:从零开始学yolo之yolov1的技术原理
(3)YOLOv1训练过程,新手入门
(4)YOLOv2和yolov1的差异
(13)10张结构图,深入理解YOLOv11算法各个模块
高清视频,3分钟揭秘神经网络技术原理
在这里插入图片描述

Transfermer的Q、K、V设计的底层逻辑


http://www.ppmy.cn/server/152887.html

相关文章

Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法

问题描述 如下图所示,对于 java 项目某些依赖,IDEA 提示,引用了含有漏洞的依赖。如果是单个依赖,可以考虑直接升级版本即可。但是对于传递性依赖,比如 flink 项目中,依赖的部分模块,它们自己依…

Git:查看分支、创建分支、合并分支

一、查看分支 查看的git命令如下: git branch # 列出本地已经存在的分支,并且当前分支会用*标记 git branch -r # 查看远程版本库的分支列表 git branch -a # 查看所有分支列表(包括本地和远程,remotes/开头的表示远程分支&…

DAOBase 推出 DAO POP:赋能创作者与社区,畅享链上未来

随着时代快速发展,链上生态也在飞速扩张。DAOBase 致力于为社区、创作者和品牌提供赋能,帮助他们充分挖掘去中心化技术的潜力。今天,我们很高兴为大家带来 DAO POP —— 一款彻底改变玩法的功能,让社区代币的发行和管理变得前所未…

Flask中@app.route()的methods参数详解

诸神缄默不语-个人CSDN博文目录 在 Flask 中,app.route 是用于定义路由的核心装饰器,开发者可以通过它为应用指定 URL 映射及相应的处理函数。在处理 HTTP 请求时,不同的业务场景需要支持不同的 HTTP 方法,而 app.route 的 metho…

高性能Web网关:OpenResty 基础讲解

一:概述 OpenResty是由国人章亦春开发的一个基于Nginx的可伸缩的Web平台。 openresty 是一个基于 nginx 与 lua 的高性能 web 平台,其内部集成了大量精良的 lua 库、第三方模块以及大数的依赖项。用于方便搭建能够处理超高并发、扩展性极高的动态 web 应…

PostgreSQL技术内幕21:SysLogger日志收集器的工作原理

0.简介 在前面文章中介绍了事务模块用到的事务日志结构和其工作原理,本文将介绍日志的另一个部分,操作日志,主要去描述SysLogger日志的工作原理,流程以及其中关键的实现:日志轮转,刷盘性能问题等&#xff…

16×16LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告+仿真+单片机源程序)

资料下载地址:​1616LED点阵字符滚动显示-基于译码器与移位寄存器(设计报告仿真单片机源程序)​ 1、功能介绍 设计1616点阵LED显示器的驱动电路,并编写程序实现在1616点阵LED显示器上的字符滚动显示。1616点阵LED显示器可由4块88点阵LED显示器构成。可采…

1387. 将整数按权重排序 中等

我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数: 如果 x 是偶数,那么 x x / 2如果 x 是奇数,那么 x 3 * x 1 比方说,x3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 1…