YOLOv4网络详解

0前言

在YOLOv4论文中,作者其实就是把当年所有的常用技术罗列了一遍,然后做了一堆消融实验。

1.YOLOV4的网络改进部分

1、主干特征提取网络:DarkNet53 => CSPDarkNet53、使用Mish激活函数

2、特征金字塔:SPP结构,PAN结构

1.1 主干特征提取网络CSPDarkNet53

1.1.1 CSP结构

在YOLOv3中使用的是Darknet53,而在YOLOv4中引入了CSP结构

CSP结构的作用:能够增强CNN的学习能力、移除计算瓶颈、降低显存的使用、加快网络的推理速度
在这里插入图片描述
CSPnet结构将原来的残差块的堆叠进行了一个拆分,拆成左右两部分:
主干部分继续进行原来的残差块的堆叠;
另一部分则像一个残差边一样,经过少量处理直接连接到最后。

残差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。
在这里插入图片描述
在YOLOv4中的CSP模块之前对进行下采样,然后将其输出以此通过两个1x1的卷积层进行降维,在Part1分支上再接上一系列的ResBlock、再通过一个1x1卷积层(即Transition),然后通过concat拼接,最后通过1x1卷积层进行升维

1.1.2 Mish激活函数

YOLOv4将DarknetConv2D的激活函数由LeakyReLU修改成了Mish,卷积块由DarknetConv2D_BN_Leaky变成了DarknetConv2D_BN_Mish。

Mish是光滑的非单调激活函数,可定义为:

f(x) = x・tanh(ς(x))其中, ς(x) = ln(1+e^x),是一个softmax激活函数和。
在这里插入图片描述
在YOLOv4中使用Mish函数的原因是它的低成本和它的平滑、非单调、上无界、有下界等特点,与其他常用函数如ReLU和Swish相比,提高了它的性能。

1.1.3 CSPDarknet53网络结构

在这里插入图片描述

1.2 特征金字塔结构

1.2.1 SPP结构

在这里插入图片描述
对于输入的特征层,依次通过5x5、9x9、13x13的最大池化下采样层,将这三个分支的输出和原输入的分支进行concat拼接,组成SPP结构

SPP结构能够极大地增加感受野,分离出最显著的上下文特征。

1.2.1 PAN结构

在这里插入图片描述
PANet一种实例分割算法,能够进行特征的反复提取:

最左则部分为网络的backbone,进行提取特征;
中间部分则在提取的特征层上构建特征金字塔结构(FPN模块),将高层的语义信息融合到底层特征层;
最右侧部分则于FPN相反,将底层的语义信息融合到高层。
中间与右侧共同构成了PANet。

在PANet原论文中,特征层与特征层融合部分采用的是add方法
在YOLOv4中采样的是concat方法,将特征层在深度方向进行拼接,主要是在三个有效特征层上使用了PANet结构。

2.YOLOv4的训练技巧

2.1 Mosaic数据增强

mosaic利用四张图片,分别对四张图片进行翻转、缩放、色域变化等,并且按照四个方向位置摆好,进行图片的组合和框的组合。
在这里插入图片描述Mosaic数据增强能够扩充样本多样性,且在BN计算的时候能够同时计算四张图片的数据。

2.2 CIoU

IoU是比值的概念,对目标物体的scale是不敏感的。然而常用的BBox的回归损失优化和IoU优化不是完全等价的,寻常的IoU无法直接优化没有重叠的部分。

CIOU将目标与anchor之间的距离,重叠率、尺度以及惩罚项都考虑进去,使得目标框回归变得更加稳定,不会像IoU和GIoU一样出现训练过程中发散等问题。而惩罚因子把预测框长宽比拟合目标框的长宽比考虑进去。

2.3 学习率余弦退火衰减

余弦退火衰减法,学习率会先上升再下降,这是退火优化法的思想。

上升的时候使用线性上升,下降的时候模拟cos函数下降。执行多次。

3.YOLOv4的网络结构

在这里插入图片描述
YOLOv4网络结构可以分为三部分:CSPDarkNet53特征提取网络、SPP和PANet组成的加强特征提取网络、将提取到的特征转化为预测结果的Yolo Head

主干网络对图片进行特征提取:假设特征提取网络的输入为416x416x3,首先进行Darknet卷积,然后进行四个Resblock_body(本质上是由一系列残差网络构成的大卷积块),特征层的高和宽被不断的被压缩、通道数被扩张,最终只使用最后三个shape的特征层进行下一步的操作,因为其具有更高的语义信息;

SPP和PANet组成的加强特征提取网络:对13x13x1024的特征层进行三次卷积操作,然后接SPP结构(SPP有四个分支,利用不同大小的最大池化核对输入进来的特征层进行最大池化,池化后的结果进行堆叠),再进行三次卷积;

PANet:对三次卷积后的特征层进行上采样(2倍上采样),将上采样后的26x26特征层与在主干网络获取的26x26x512的特征层进行堆叠,然后再进行上采样与52x52x256的特征层进行堆叠,即完成特征金字塔的结构;后面操作与前同理;完成PANet结构后就提取到了很多有效的特征信息。

Yolo Head利用提取到的特征进行结果预测(与yolov3相同)。

参考文献
YOLOv4网络详解
Pytorch搭建YoloV4目标检测平台

YOLOv4是一种高效的目标检测算法,具有极高的实时性能和较低的计算复杂度。其网络结构主要由三个部分组成:骨干网络、特征金字塔和检测头。 首先是骨干网络YOLOv4采用了CSPDarknet53作为其骨干网络,相比于以往的Darknet53,CSPDarknet53通过引入CSP(Cross Stage Partial)结构来提升网络的性能。CSP结构将输入特征图分为两部分,并在其中一部分上进行卷积操作,然后将结果与另一部分进行串联操作,这样可以减少计算量并保持信息传递的完整性。 其次是特征金字塔,特征金字塔由四个不同尺寸的特征图组成,分别用于检测不同大小的目标。为了生成这个金字塔,YOLOv4引入了Panet结构,即特征金字塔网络。Panet结构通过上采样和融合操作,将不同尺度的特征图进行融合,以便在不同尺度上进行目标检测。 最后是检测头,YOLOv4采用了三个并行的检测头,分别预测不同尺度的目标框。每个检测头输出相应的目标框、置信度和类别信息。为了提高检测精度,YOLOv4还使用了多尺度训练和数据增强技术,并引入了CIoU损失函数来优化边界框的预测。 总的来说,YOLOv4网络结构的设计充分考虑了骨干网络、特征金字塔和检测头的协同作用,通过引入CSP结构和Panet结构,以及采用多尺度训练和数据增强等策略,使得YOLOv4在目标检测任务上表现出了较高的准确性和实时性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值