前言
我们知道YOLO主干网络的作用就是提取图像有用的特征,当然,"有用的特征"这一表述较为宽泛,尚未能够使用精确的数学语言进行定量解释。此外,由于主干网络是从图像分类任务中迁移而来的,大多数情况下其设计很少考虑到目标检测、语义分割等下游任务,因此它所提取的特征可能并不完全适合目标检测任务。因此,在主干网络处理结束后,仍需设计额外的模块来进一步处理这些特征,使其更适应目标检测任务。由于这部分位于主干网络之后、检测头之前,形象地被称为Neck(颈部网络)。因此,一个好的Neck(颈部网络)比较重要,常见的Neck(颈部网络)有比较出名的SPPF(空间金字塔池化模块)、FPN(特征金字塔网络)等。接下来,本文将教你改进Neck的SPPF结构,一文引进SimSPPF、SPP-CSPC 和 SPPF-CSPC网络。
SimSPPF介绍
SimSPPF 是在 YOLOv6 中提出的结构,而在 YOLOv8 网络中,SPPF 通过并行处理 5x5、9x9、13x13 三个不同尺度的最大池化操作来实现特征融合。然而,这种并行的池化方式耗时较多,影响了网络的推理速度。SimSPPF通过将多个 5x5 尺度的最大池化操作串行处理来优化这一过程。具体而言,串行的两个 5x5 最大池化的结果等效于一个 9x9 最大池化的结果,三个 5x5 最大池化的结果则等效于一个 13x13 的最大池化结果。通过这种串行处理,不仅实现了局部和全局特征的融合,还将原本不同尺度的卷积核统一为三个 5x5 卷积核,从而降低了网络复杂度并提升了计算速度。此外,SimSPPF 对激活函数也进行了优化,用 ReLU替代了 SiU 激活函数,加速了网络收敛,提高了运行效率。SimSPPF结构如下:
理论详解可以参考链接:论文地址
代码可在这个链接找到:代码地址
SPP-CSPC介绍
SPP-CSPC 是在 YOLOv7中提出的结构,作者结合了SPP结构和CSP结构,提出了SPPCSPC结构,以增加模型感受野,使得算法能够适应不同分辨率的图像。该结构在速度和表现上优于SPPF。SPPCSPC结构如下:
理论详解可以参考链接: