yolov5原理

目录

1 网络结构

1.1 整体网络结构参考

1.2 backbone C3结构

1.3 Neck

1.3.1 SPPF

1.3.2 带C3结构的FPN-PAN

1.4 Head


1 网络结构

1.1 整体网络结构参考

 yolov5 6.0版本  参考

https://blog.csdn.net/qq_37541097/article/details/123594351

yolov5原理_第1张图片

1.2 backbone C3结构

可以看出yolov5- 5.0后面的版本主干主要由CSP模块变成了C3模块,yolov5-5.0之前的版本主干还是和yolov4类似的CSP结果,可参考

YOLOV5网络结构_Laughing-q的博客-CSDN博客_yolov5结构图

CSP和C3区别如下:

之前讲yolov4 yolov4原理_xd_MrCheng的博客-CSDN博客

时CSP结构如下:

yolov5原理_第2张图片

一般来说CBM1只起到下采样2倍,真正意义上的CSP结构如下,把CBM1不要(因为CBM1只是为了下采样2倍)

 yolov5原理_第3张图片

其中CBM结构都是卷积核1x1且步长为1的卷积层

残差模组Resunit则是一个1x1的卷积加一个3x3的卷积,在相加

而C3结构和CSP结构有些不一样,C3结构如下:

yolov5原理_第4张图片

 其中CBM换成了CBS, 表示激活函数有Mish换成了SiLu

并且相对CSP,C3结构经过残差模组Resunit后少了一个卷积层, 直接连到了Concat,正好只有3个CBS,或者说只有3个卷积,可能才叫C3,并且C3中的残差模组,有的地方也叫BottleNeck1

单纯的C3结构是不会进行下采样的,每次下采样都是C3前面会接一个3x3且步长为2的卷积

1.3 Neck

1.3.1 SPPF

在Neck部分的变化还是相对较大的,首先是将SPP换成成了SPPF(Glenn Jocher自己设计的),两者的作用是一样的,但后者效率更高。SPP结构如下图所示,是将输入并行通过多个不同大小的MaxPool,然后做进一步融合,能在一定程度上解决目标多尺度问题。


yolov5原理_第5张图片

SPP结构

yolov5原理_第6张图片

 SPPF结构

 而SPPF结构是将输入串行通过多个5x5大小的MaxPool层,这里需要注意的是串行两个5x5大小的MaxPool层是和一个9x9大小的MaxPool层计算结果是一样的,串行三个5x5大小的MaxPool层是和一个13x13大小的MaxPool层计算结果是一样的。

也就说用两个串联的5x5的MaxPool层替代一个9x9的maxPool层,因为两个5x5的串联的池化层效果就是9x9的池化层.

用3个串联的5x5的MaxPool层替代一个13x13的maxPool层, 以此减小计算时间。二者效果基本是一样的。但计算时间SPPF比SPP减半了

这和用2个3x3的卷积来替代5x5的卷积一样,减小计算量

1.3.2 带C3结构的FPN-PAN

在YOLOv4中,Neck的PFN和PAN结构是没有引入CSP结构的,但在YOLOv5中作者在FPN和PAN结构中加入了C3结构,但注意,Neck中C3中用到的叫bottleneck2, 和backbone中的bottleneck1(即残差模组resunit)是不一样的,bottleneck2没有残差连接,如下图:

Neck中的C3结构:

yolov5原理_第7张图片

yolov5-Neck

yolov5原理_第8张图片

 YoloV5-Neck

1.4 Head

yolov5的head和yolov4,yolov3一样

你可能感兴趣的:(2022-目标检测,yolo,目标检测)