您现在的位置是:首页 >其他 >计算机视觉—YOLO V4网站首页其他

计算机视觉—YOLO V4

企鹅家的北极熊 2024-07-19 12:01:02
简介计算机视觉—YOLO V4

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的网络结构包括的三部分:

  1. Backbone: CSPDarknet53
  2. Neck: SPP,PAN
  3. 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特征抽取的到特征层:

  1. 对于输入的特征层,首先分成两部分Part1,Part2(在通道方向进行均分操作)
  2. 对Part2分支首先通过一系列的DenseBlock,在通过Transition
  3. 将Patr1和Part2的输出进行一个融合,也就是concat拼接
  4. 拼接以后在通过Transition

但是YOLO v4中的CSP结构和CSPDenseNet的优点不一样:
在这里插入图片描述

  1. 分割方式不一样:在CSP模块之前进行一个下采样,下采样的结果进行两次1 x 1 x C(输入通道数的一半)的卷积,作为两个Part
  2. 在part2上接一系列的ResBlock,在通过1 x 1 x C的卷积层
  3. part2的结果与part1进行concat通道数上的拼接
  4. 拼接后的结果进行 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结构

在这里插入图片描述

  1. 将特征层输入进行三个不同大小池化核的MaxPool2d
  2. 将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、优化策略

待更新。。。。。。。。。。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。