YOLOV7详细解读(一)网络架构解读

2年前Java源码24958
YOLOV7详细解读(一)网络架构解读 置顶 楚楚小甜心 已于2022-09-07 23:40:41修改 2216 收藏 40 文章标签: 深度学习 目标检测 YOLOV7 人工智能 yolo 于2022-09-03 10:28:02首次发布 YOLOV7详细解读

网络架构解读 YOLOV7详细解读前言一、YOLOV7是什么?二、网络架构1、架构图总览2、CBS模块解读3、CBW模块解读4、REP模块解读5、MP模块解读6、ELAN模块解读7、ELAN-W模块解读8、UPSample模块解读9、SPPCSPC模块解读


前言

继美团发布YOLOV6之后,YOLO系列原作者也发布了YOLOV7。 YOLOV7主要的贡献在于:

1.模型重参数化 YOLOV7将模型重参数化引入到网络架构中,重参数化这一思想最早出现于REPVGG中。 2.标签分配策略 YOLOV7的标签分配策略采用的是YOLOV5的跨网格搜索,以及YOLOX的匹配策略。 3.ELAN高效网络架构 YOLOV7中提出的一个新的网络架构,以高效为主。 4.带辅助头的训练 YOLOV7提出了辅助头的一个训练方法,主要目的是通过增加训练成本,提升精度,同时不影响推理的时间,因为辅助头只会出现在训练过程中。


一、YOLOV7是什么?

YOLO算法作为one-stage目标检测算法最典型的代表,其基于深度神经网络进行对象的识别和定位,运行速度很快,可以用于实时系统。 YOLOV7是目前YOLO系列最先进的算法,在准确率和速度上超越了以往的YOLO系列。 了解YOLO是对目标检测算法研究的一个必须步骤。

二、网络架构 1、架构图总览

2、CBS模块解读 对于CBS模块,我们可以看从图中可以看出它是由一个Conv层,也就是卷积层,一个BN层,也就是Batch normalization层,还有一个Silu层,这是一个激活函数。silu激活函数是swish激活函数的变体,两者的公式如下所示 silu(x)=x⋅sigmoid(x) swish(x)=x⋅sigmoid(βx)

从架构图中我们可以看出,CBS模块这里有三种颜色,三种颜色代表它们的卷积核(k)和步长(s)不同。 首先最浅的颜色,也就是第一个CBS模块的颜色,它是一个1x1的卷积,stride(步长为1)。 其次稍浅的颜色,也就是第二个CBS模块的颜色,它是一个3x3的卷积,stride(步长为1)。 最后最深的颜色,也就是第三个CBS模块的颜色,它是一个3x3的卷积,stride(步长为2)。1x1的卷积主要用来改变通道数。3x3的卷积,步长为1,主要用来特征提取。3x3的卷积,步长为2,主要用来下采样。 3、CBW模块解读 CBW模块和CBS模块,我们可以看出来是基本一致的。由一个Conv层,也就是卷积层,一个BN层,也就是Batch normalization层,还有一个sigmoid层,这是一个激活函数。卷积核为1x1,stride(步长为1) 4、REP模块解读 REP模块分为两个,一个是train,也就是训练,一个deploy,也就是推理。训练模块,它有三个分支。 最上面的分支是3x3的卷积,用于特征提取。 中间的分支是1x1的卷积,用于平滑特征。 最后分支是一个Identity,不做卷积操作,直接移过来。 最后把它们相加在一起。推理模块,包含一个3x3的卷积,stride(步长为1)。是由训练模块重参数化转换而来。 在训练模块中,因为第一层是一个3x3的卷积,第二层是一个1x1的卷积,最后层是一个Identity。 在模型从参数化的时候,需要把1x1的卷积啊,转换成3x3的卷积,把Identity也转换成3x3的卷积,然后进行一个矩阵的一个加法,也就是一个矩阵融合过程。 然后最后将它的权重进行相加,就得到了一个3x3的卷积,也就是说,这三个分支就融合成了一条线,里面只有一个3x3的卷积。 它们的权重是三个分支的叠加结果,矩阵,也是三个分支的叠加结果。 5、MP模块解读 MP模块有两个分支,作用是进行下采样。第一条分支先经过一个maxpool,也就是最大池化。最大值化的作用就是下采样,然后再经过一个1x1的卷积进行通道数的改变。第二条分支先经过一个1x1的卷积,做通道数的变化,然后再经过一个3x3卷积核、步长为2的卷积块,这个卷积块也是用来下采样的。最后把第一个分支和第二分支的结果加在一起,得到了超级下采样的结果。 6、ELAN模块解读 ELAN模块是一个高效的网络结构,它通过控制最短和最长的梯度路径,使网络能够学习到更多的特征,并且具有更强的鲁棒性。ELAN有两条分支。第一条分支是经过一个1x1的卷积做通道数的变化。第二条分支就比较复杂了。它先首先经过一个1x1的卷积模块,做通道数的变化。然后再经过四个3x3的卷积模块,做特征提取。如图所示,最后把四个特征叠加在一起得到最后的特征提取结果。 7、ELAN-W模块解读 对于ELAN-W模块,我们也看到它跟ELAN模块是非常的相似,所略有不同的就是它在第二条分支的时候选取的输出数量不同。ELAN模块选取了三个输出进行最后的相加。ELAN-W模块选取了五个进行相加。 8、UPSample模块解读

UPSample模块是一个上采样的模块,它使用的上采样方式是最近邻插值。

9、SPPCSPC模块解读

SPP的作用是能够增大感受野,使得算法适应不同的分辨率图像,它是通过最大池化来获得不同感受野。

我们可以看到在第一条分支中,经理了maxpool的有四条分支。分别是5,9,13,1,这四个不同的maxpool就代表着他能够处理不同的对象。也就是说,它这四个不同尺度的最大池化有四种感受野,用来区别于大目标和小目标。 比如一张照片中的狗和行人以及车,他们的尺度是不一样的,通过不同的maxpool,这样子就能够更好的区别小目标和大目标。

CSP模块,首先将特征分为两部分,其中的一个部分进行常规的处理,另外一个部分进行SPP结构的处理,最后把这两个部分合并在一起,这样子就能够减少一半的计算量,使得速度变得快,精度反而会提升。

相关文章

Yolov5(v6.1)数据增强方式解析

Yolov5(v6.1)数据增强方式解析...

Java 操作RestHighLevelClient查询详解

Java 操作RestHighLevelClient查询详解...

用Python实现简单的人脸识别,10分钟搞定!(附源码)

用Python实现简单的人脸识别,10分钟搞定!(附源码)...

【涨粉10万】CSDN年度总结——再见2021

【涨粉10万】CSDN年度总结——再见2021...

2021年最全教程!微信小程序开发详解

2021年最全教程!微信小程序开发详解...

球迷 如何在Linux纯命令行玩转谷歌浏览器,边看欧洲杯,边看足球宝贝

球迷 如何在Linux纯命令行玩转谷歌浏览器,边看欧洲杯,边看足球宝贝...