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

一、YOLOv4 结构

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

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

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

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

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

二、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=α(vIOU−D1)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)−Cgt2+λIOBJ1−σ(t)2

    其中, I_{BEST} 是指示函数,当预测框与真实框的 I O U 最大时为 1 ,否则为 0 ; 是指示函数,当预测框与真实框的IOU最大时为1,否则为0; 是指示函数,当预测框与真实框的IOU最大时为1,否则为0;C_{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=1−Pgt⋅log(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使用的激活函数

​ 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)=x⋅tanh(log(1+ex))

四、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分钟。

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

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

相关推荐
倒头就睡的小比特4 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼4 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光4 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark4 天前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her14 天前
并查集-听课笔记
笔记·算法·并查集
码流子4 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven4 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark4 天前
从算法设计模式看编程思维的抽象能力4
算法
2601_962218614 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法