YOLOV5的作者没有发布论文,因此在参考源码及博主的文章基础上学习YOLOV5的模型结构及算法。在OYLOV4的基础上,具体可参考YOLOV4模型结构及算法解析笔记-CSDN博客,YOLOV5的结构如下:
- Backbone:
New CSP-Darknet53
- Neck:
SPPF
,New CSP-PAN
- Head:
YOLOv3 Head
在这里先放上YOLOV3的网络结构图,来自于知乎深入浅出Yolo系列之Yolov5核心基础知识完整讲解 - 知乎 (zhihu.com)
YOLOV5的第一个Focus层,在V6.0之后被替换为卷积层,Focus模块能够实现二倍下采样的特征图,同时不会丢失信息,因此提高了模型的性能及效率,且二者几乎是等效的,下面细谈二者的等效性。
如图,对于一个的图像,我们按照相邻像素取值,将相同颜色的像素点拼接在一起,得到4个特征图,最后再用 一个卷积得到对应输出特征jin
Neck部分将SPP换成了SPPF,二者区别在如下图
有图可见,SPP模块是将图像分别并行通过三个池化层,然后再进行concat拼接,而SPPF是将输入特征图串行通过CBL,最大池化层,并且在每层都输出一个特征图用于将它们concat拼接,最后在经过CBL 层。通过实验可以得知,两个模块等效且SPPF模块的执行效率更高。
在Neck部分另外一个不同点就是New CSP-PAN
,在YOLOv4中,Neck的PAN
结构是没有引入CSP
结构的,但在YOLOv5中作者在PA
N
结构中加入了CSP
,网络具体结构如下图:
PAN结构图:相比于原始的FPN多了自下而上的特征金字塔。
CSP-PAN如下图:
CSPNet是一种处理的思想,可以和ResNet、ResNeXt和DenseNet结合。用 CSP 网络进行相邻 feature maps 之间的特征连接和融合 ,CSP网络解释如下图:
由图可见,CSPNet和PRN都是一个思想,将feature map拆成两个部分,一部分进行卷积操作,另一部分和上一部分卷积操作的结果进行concate,这里额外补充一个对比实验,可以证明加入CSP结构的网络在性能上得到了一定的提升: