(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)−Cgt]2+λIOBJ[1−σ(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设计的底层逻辑

相关推荐
XH华40 分钟前
初识C语言之二维数组(下)
c语言·算法
南宫生1 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_1 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子1 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
菜鸡中的奋斗鸡→挣扎鸡2 小时前
滑动窗口 + 算法复习
数据结构·算法
Lenyiin2 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码2 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
scan7242 小时前
LILAC采样算法
人工智能·算法·机器学习
菌菌的快乐生活2 小时前
理解支持向量机
算法·机器学习·支持向量机
大山同学2 小时前
第三章线性判别函数(二)
线性代数·算法·机器学习