计算机视觉—YOLO V4
- 1、YOLO V4
- 1.1、网络结构
- 1.1.1、BackBone:CSPDarknet53
- 1.1.2、Neck:SPP结构
- 1.1.3、Neck:PAN结构
- 1.1.4、YOLO v4整体结构
- 1.2、优化策略
1、YOLO V4
原论文下载地址:https://arxiv.org/abs/2004.10934
1.1、网络结构
相比之前的YOLOv3,改进了下Backbone,在Darknet53中引入了CSP模块(来自CSPNet)。在Neck部分,采用了SPP模块(Ultralytics版的YOLOv3 SPP就使用到了)以及PAN模块(来自PANet)。Head部分没变还是原来的检测头。
YOLO v4的网络结构包括的三部分:
- Backbone: CSPDarknet53
- Neck: SPP,PAN
- Head: YOLO v3
1.1.1、BackBone:CSPDarknet53
在YOLO v3中使用的主干网络是 Darknet53,在YOLO v4中运用的主干网络叫:CSPDarknet53,引入了CSP结构
CSP结构有什么具体的作用呢?原论文是这么说的:(换句话说就是YOLO v4的优点)
- Strengthening learning ability of a CNN(增强CNN学习能力)
- Removing computational bottlenecks(降低计算瓶颈)
- Reducing memory costs(减少内存使用)
也就是说加入CSP结构以后不仅从网络上做了提升,还在物理性能上做了优化,减少显存的使用。
1、这个CSP结构来自于CSPDenseNet这篇论文,具体结构如何:如下图
通过CNN特征抽取的到特征层:
- 对于输入的特征层,首先分成两部分Part1,Part2(在通道方向进行均分操作)
- 对Part2分支首先通过一系列的DenseBlock,在通过Transition
- 将Patr1和Part2的输出进行一个融合,也就是concat拼接
- 拼接以后在通过Transition
但是YOLO v4中的CSP结构和CSPDenseNet的优点不一样:
- 分割方式不一样:在CSP模块之前进行一个下采样,下采样的结果进行两次1 x 1 x C(输入通道数的一半)的卷积,作为两个Part
- 在part2上接一系列的ResBlock,在通过1 x 1 x C的卷积层
- part2的结果与part1进行concat通道数上的拼接
- 拼接后的结果进行 1 x 1 x 2C的卷积
2、知道了CSP的结构以后,看一下CSPDarknet53的整体结构:
还是用上面提到的UP主的杰作
k代表卷积核的大小
s 代表步距
c 代表通过该模块输出的特征层channels
注意,CSPDarknet53 Backbone中所有的激活函数都是Mish激活函数
注意每一个ResBlock中的通道数发生了变化,作者在DownSample中的ResBlock就展开画了。并且DownSample1中的part分支并没有减半。从DownSample2才开始减半。
1.1.2、Neck:SPP结构
- 将特征层输入进行三个不同大小池化核的MaxPool2d
- 将1得到的三个输出与SPP输入特征层进行Concat拼接
通过SSP结构在一定程度上解决多尺度问题
1.1.3、Neck:PAN结构
PAN(Path Aggregation Network)结构其实就是在FPN(从顶到底信息融合)的基础上加上了从底到顶的信息融合,如下图(b)所示。图中最左边的部分就是BackBlone主干网络。
但YOLOv4的PAN结构和原始论文的融合方式又略有差异,如下图所示。图(a)是原始论文中的融合方式,即特征层之间融合时是直接通过相加的方式进行融合的,但在YOLOv4中是通过在通道方向Concat拼接的方式进行融合的。
1.1.4、YOLO v4整体结构
还是采用UP主:太阳花的小绿豆的图片https://blog.csdn.net/qq_37541097/article/details/123229946?spm=1001.2014.3001.5502
1.2、优化策略
待更新。。。。。。。。。。