YOLOV7详细解读(一)网络架构解读
YOLOV7详细解读
网络架构解读
- YOLOV7详细解读
- 前言
- 一、YOLOV7是什么?
- 二、网络架构
- 1、架构图总览
- 2、CBS模块解读
- 3、CBW模块解读
- 4、REP模块解读
- 5、MP模块解读
- 6、ELAN模块解读
- 6、ELAN-W模块解读
- 6、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模块解读
待更新
6、ELAN模块解读
待更新
6、ELAN-W模块解读
待更新
6、SPPCSPC模块解读
待更新