YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarkn ...

打印 上一主题 下一主题

主题 809|帖子 809|积分 2427

系列文章

YOLO系列基础

YOLO系列基础合集——小白也看得懂的论文精解-CSDN博客
YOLO系列正传

YOLO系列正传(一)类别丧失与MSE丧失函数、交织熵丧失函数-CSDN博客
YOLO系列正传(二)YOLOv3论文精解(上)——从FPN到darknet-53-CSDN博客
YOLO系列正传(三)神经网络的反向传播(back propagation)与公式推导-CSDN博客
YOLO系列正传(四)YOLOv3论文精解(下)——丧失函数推导与其他优化项-CSDN博客
YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarknet-53-CSDN博客

目次
系列文章
YOLO系列基础
YOLO系列正传
YOLOv4基础介绍
从CSPNet开始
背景与改进
过渡层详解
跨阶段连接分支卷积层详解
SPP模块详解
SPP背景介绍
什么是空间金字塔池化(SPP)?
PANet网络详解
背景与挑衅
从FPN网络到PANet网络
CSPDarknet-53模子
CSP模块改进说明
SPP模块改进说明
SPP模块的结构
解释每一部门
PANet网络改进说明
 总结



YOLOv4基础介绍

YOLOv4进一步优化了YOLOv3,主要改进点包括:

  • 主干网络:使用了CSPDarknet-53替代原YOLOv3中的Darknet-53。
  • 新方法引入:例如Mish激活函数、Mosaic数据加强、DropBlock正则化和自对抗训练(SAT)。
  • 优化计谋:使用了CIoU Loss和多锚点匹配计谋,使得模子在准确率和速度上实现了更好的平衡。
 我们本文专注与YOLOv4网络结构的内容,即CSPDarknet-53的结构梳理。
从CSPNet开始

背景与改进

        跨阶段部门连接网络CSPNet(Cross Stage Partial Network)是针对现有CNN计划的一种改进结构,旨在办理冗余梯度问题并减少计算成本。实在是类似残差结构中的一种,但是相比较于最根本的残差结构,CSPNet有两点差别:


  • CSPNet在麋集层之后还有一层卷积作为过渡层
  • CSPNet在跨阶段连接分支上也有一层卷积举行信息的选择性传递。
有关CSPNet的基础内容,可以查看以下博客:
深度学习中的残差网络、加权残差连接(WRC)与跨阶段部门连接(CSP)详解-CSDN博客
以上博客讲诉了残差网络Residual、加权残差连接WRC、以及跨阶段部门连接CSP的基础信息。
本博文在上诉的基础上更进一步详解CSPNet的此两点差别
过渡层详解

过渡层的主要作用是用以在反向传播中梯度传导过程中过渡传导过程。图例如下:

(c)图是没有过渡层的CSPNet,(d)图是有过渡层的CSPNet

        我们先看a图,a图两层分支直接举行了concat拼接后举行Transition后续处理,那么在反向传播中,梯度传播到concat形成的大特征图的时候会对左右两条分支产生一样的前序梯度信息,那么在很大程度上,左右两条分支会产生冗余和重复。
我们此时看b图,b图中麋集层(DenseBlock)处理完之后先辈行了一次过渡层(Transition)操作(大多是卷积)再和另外一条分支举行concat操作。此时,当我们举行反向传播的时候,抵达concat之后的大特征图的时候梯度信息是划一的,但是梯度信息传递到过渡层的之后再传递给麋集层的时候,梯度信息和另一分支就产生了差异性,这在很大程度上避免了梯度冗余和重复。
跨阶段连接分支卷积层详解

在基础残差网络中,我们是没有这一层卷积的,图例如下:

图a:平凡的神经网络麋集层,图b:Part1为一层卷积操作的CSP改造网络 

此处CSP增加这里的卷积的来由有哪些呢?有如下 两点:


  • 避免硬件计算资源浪费
  • 增加模子表达能力
        在传统残差网络中,麋集层大多接纳瓶颈层来降低计算量,那么很明显,针对低层的瓶颈层是无法吃满硬件计算资源的,这就给另一分支的构建提供了机会。也就是说另一分支完全可以增加复杂度而不会影响模子速度。给另一分支增加卷积层等处理模块可以避免计算资源的浪费。
        其次,在残差网络中,我们接纳跳跃连接的方式是为了使得低层特征可以传递给高层输出,以不丢失低层特征信息,并以此使得模子的深度可以无限往下延深。实际上我们真正需要做的,是在尽大概少的层数里(降低推理速度)获取充足有用的特征信息,也就是说我们不需要模子无限延展,我们需要的是模子每一层的效率充足高,可以处理输出充足有用的特征信息,所以,在另一分支上增加卷积层提高模子效果的思路是完全可行的。
综上CSPNet的结构我们完全解释清楚了。
SPP模块详解

YOLOv4这一版本引入了空间金字塔池化技术(SPP:Spatial Pyramid Pooling)
图例如下:

SPP背景介绍

卷积层对全部的输入size都能正常运行,但是对于最后的检测头,若是接纳了FC层(FC层的具体输出维度是固定的)就会产生对输入图像size的要求,这也是传统的CNN架构通常要求输入图像具有固定尺寸的原因,这一要求限制了网络的灵活性,直接resize又会导致图像尺寸信息的丢失。为了降服这一限制,许多研究者提出了差别的办理方案,此中之一就是空间金字塔池化(Spatial Pyramid Pooling,SPP)。SPP通过引入多条理的池化结构,有用地办理了图像尺寸固定的问题,使得CNN能够处理差别尺寸和标准的图像。
什么是空间金字塔池化(SPP)?

        空间金字塔池化(SPP)的核心思想是通过在多个空间标准上举行池化,从而生成一个固定长度的特征向量。具体来说,SPP方法通过在卷积神经网络的最后一层卷积层上添加一个池化层,将特征图分成多个差别大小的区域举行池化操作。这些池化操作可以是1×1、2×2、4×4等差别的空间网格,如许能够在差别的标准上提取图像的特征。最终,来自各个标准的池化特征会被拼接在一起,形成一个固定长度的特征向量。
空间金字塔池化层的工作原理可以通过以下几个步调来概括:

  • 输入特征图:最后一个卷积层生成的特征图,其空间尺寸根据输入图像的大小而差别。
  • 多条理池化:SPP层将特征图分成多个差别大小的空间区域(如1×1、2×2、4×4等),并在每个区域内举行池化操作。如许,SPP层从差别标准提取特征。
  • 特征拼接:池化后的特征会被拼接在一起,形成一个固定长度的特征向量。
  • 传递至全连接层:这个固定长度的特征向量被传递给全连接层,用于最终的分类或其他任务。
通过这一过程,SPP层能够有用地从差别尺寸的图像中提取重要特征,并为后续的高层任务提供妥当的输入。
PANet网络详解

背景与挑衅

实例分割任务的主要挑衅在于怎样精确地分割图像中的每个实例,尤其是当差别实例之间存在重叠、外形复杂大概尺寸差异较大时。虽然像Mask R-CNN如许的基于深度学习的方法已经取得了较好的效果,但它们仍旧面对以下问题:


  • 特征丢失: 网络中的高层特征提供了丰富的语义信息,但缺乏充足的细节。相反,低层特征包罗更多的局部细节信息,却缺乏语义明白。
  • 边界含糊: 复杂实例的边界分割每每不敷精细,导致误分割和漏分割征象。
  • 多标准问题: 差别尺寸的物体在图像中大概有很大的差异,现有的分割方法在处理小物体和大物体时经常表现不佳。
        为了降服这些问题,PANet提出了一种新的路径聚合计谋,将低条理的细节信息与高条理的语义信息举行有用融合,从而提高了实例分割的准确性。
从FPN网络到PANet网络

FPN通过自底向上的特征金字塔模子给低维特征数据提高了更高维的特征向量支持,简单来说较低层的数据通常用于检测小目的 ,高层特征用于检测大目的。
随着网络深度的加深,越深的网络会丢失越来越多的细节信息以保持对大范围特征信息的辨认,而较低层的网络虽然保存了更多信息,但是却没有经过充足多的处理获取更高层级的特征信息。所以在以上的背景下,FPN被提出了,这使得小目的的检测头在保存大量细节信息的基础上也可以获得高层级特征向量。
大概有人就会问了,那为什么没有从低层直接向高层连接的向量给高层检测头提高更多的细节信息呢?没错,答案就是PANet层!

        图中b图展示了在左侧FPN层之后再次举行了PANet层,底层特征信息被传递给了高维数据
        PANet通过路径聚合模块,将多条理的特征举行有用融合。网络不但仅依赖于高层的抽象语义信息,同时也保存了低条理的局部细节,从而更好地适应差别尺寸、差别复杂度的物体。这种多标准特征融合方法使得PANet在处理大物体和小物体时,均能获得较好的分割效果。 
CSPDarknet-53模子

终于来到了我们本日的正题:YOLOv4的网络结构
模子图如下:
   
     YOLOv4的网络结构图    YOLOv4 CSPDarknet-53 主干网络部门如下: 
      
       标YOLOv4 CSPDarknet-53 主干网络题          大家可以参考以下YOLOv3模子的结构图:   
  YOLOv3的详解可以查看以下博客:
YOLO系列正传(二)YOLOv3论文精解(上)——从FPN到darknet-53-CSDN博客
实在,仔细的读者可以发现,主干网络的逻辑是近乎划一的。
CSP模块改进说明

YOLOv3中的Residual残差模块和CSPNet思想结合构建了CSPBlock模块,由于使用了CSP模块,麋集层也无需有瓶颈层了,全部都是一样的维度.其对比如下:

左图:YOLOv3Darknet-53网络残差结构,右图:YOLOv3CSP魔改后的残差结构 

可以看出,YOLOv4改进点无非就是以下两点:


  • Residual没有使用瓶颈层,提高了计算效率(毕竟瓶颈层是对计算是有负面影响的)
  • 使用CSP举行跨阶段连接,提升了特征提取能力
SPP模块改进说明


在YOLOv4中,SPP(Spatial Pyramid Pooling)模块是为了加强模子在处理差别标准的物体时的表现。YOLOv4在模子中加入了SPP模块,旨在通过多标准特征池化来捕捉更多的上下文信息,资助检测差别尺寸的物体。下面我将详细解释YOLOv4中SPP模块的计划。
SPP模块主要是为了达成以下目的:


  • 多标准特征提取:SPP模块通过使用差别大小的池化层(max-pooling)来捕捉差别标准的信息。这使得网络能够在不增加额外计算量的情况下,提取多标准的上下文信息。
  • 加强局部特征的上下文信息:通过对差别大小的区域举行池化,SPP模块能够更好地明白输入图像的全局上下文信息,资助模子对差别标准的物体做出更准确的预测。
SPP模块的结构

在YOLOv4的cfg文件中,SPP模块的实现如下:
  1. ### SPP ###
  2. [maxpool]
  3. stride=1
  4. size=5
  5. [route]
  6. layers=-2
  7. [maxpool]
  8. stride=1
  9. size=9
  10. [route]
  11. layers=-4
  12. [maxpool]
  13. stride=1
  14. size=13
  15. [route]
  16. layers=-1,-3,-5,-6
  17. ### End SPP ###
复制代码
解释每一部门

[maxpool]层:SPP模块在YOLOv4中包罗三个差别大小的maxpool层,每个层使用差别的池化窗口大小,分别是5x5、9x9和13x13。这些池化层分别作用于差别标准的区域来提取特征。


  • 第一层:池化大小为5x5,stride为1。这是最小的池化层,用于捕捉较小范围的上下文信息。
  • 第二层:池化大小为9x9,stride为1。它比第一个池化层捕捉更大的上下文信息。
  • 第三层:池化大小为13x13,stride为1。这是最大的池化层,可以捕捉最大范围的上下文信息。
[route]层:这些route层将差别池化层的输出连接在一起,以形成一个多标准的特征图。


  • layers=-2:未来自前一层的输出连接到当前层。
  • layers=-4:将离当前层更远的输出连接起来,举行多标准的特征融合。
  • layers=-1,-3,-5,-6:最终将全部池化层的输出(5x5, 9x9, 13x13池化的效果)通过route层归并到一起,形成一个丰富的特征图。
PANet网络改进说明

YOLOv4检测头图例如下:

此中P3、P4、P5是FPN金字塔的输出,背面的N3、N4、N5是PANet网络的输出。
我们可以清楚的瞥见FPN有一个由下向上的路径,PANet有一个由上向下的路径。如许网络不但仅依赖于高层的抽象语义信息,同时也保存了低条理的局部细节,从而更好地适应差别尺寸、差别复杂度的物体。很好的补齐了FPN的不敷和缺失。
 总结

至此,我们详细讲解了CSPNet、SPP、PANet的相干重点,以及YOLOv4模子网络CSPDarknet-53的模子结构内容!

最后,各位广大读者!看到这您也知道准备一篇类似的博客实属不易,还请多多点赞收藏哦!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表