YOLO v7网络结构详解
YOLO v7网络结构详解
YOLO v7是当前主流的目标检测算法之一,其网络结构包括主干特征提取网络、特征加强网络和YOLO head预测部分。本文将详细介绍YOLO v7的网络结构及其在目标检测中的具体应用。
YOLO v7网络结构
与YOLO系列的网络结构相似,YOLO v7包含三个主要部分:backbone主干特征提取网络、neck特征加强网络、yolo head预测网络。
主干特征提取网络
对于输入的图片大小为(640,640,3),经过三次卷积+Batch Normalization+激活函数,特征层的宽高减半,通道数增加一倍。
在主干特征提取网络中新增了Multi-branch-concat-block多分枝堆叠模块,网络结构如图:
多分枝堆叠网络的作用:
- 多分枝特征提取网络并行提取不同尺度的特征并将特征融合,低层特征提取图片中的纹理细节信息、高层的特征提取图片中的空间信息、全局信息。有利于提取不同大小的目标,提高模型的表现力,适合复杂场景下的目标检测。
- 多个分支同时提取,能够提高模型的训练效率
- 增加多尺度特征提取
- 减少梯度消失现象,能够加强信息在不同分支间流动,模型更具鲁棒性
接着使用卷积操作+多分枝堆叠网络增加通道数
增加了另一个优化的网络模块,过度模块
通常网络的下采样结构可以采用步长为2的卷积操作、池化核为2的maxpooling操作,过度模块将两种下采样方式并行使用。左侧分支通过池化核为2 的maxpooling操作和一个1层1的卷积操作,右侧分支为一个1×1卷积和一个3×3卷积,步长为2操作,两个分支的操作将特征层宽高减半。通道数减半,再经过concat结构将通道数还原。
transition block的作用:
- 通常下采样操作,不论最大池化还是步长为2的卷积操作,都会损失一部分的特征点的空间信息,使用transition block能够融合不同尺度的特征,将不同层之间的信息融合,提高模型的鲁棒性。
- 通过1×1的卷积来减少模型的计算量,保持较高的精度。
- 在不损失信息的前提下能够调整特征层的通道数。
通过交替使用分支堆叠模块+过度模块,在主干特征提取网络不断下采样生成三个有效特征层。特征层的大小分别为(80,80, 512)(40,40,1024)(20,20,1024)。
对于主干特征提取网络增加SPPCSP结构。
SPPCSP结构:
对于输入的特征层,分为两个分支,分别经过卷积+BN+激活函数,
其中一个分支经过并行的多个尺度的池化核经过maxpooling操作,结果再经过两次卷积+BN+激活函数,另外一个分支经过一次卷积+BN+激活函数操作,可以看作是一个残差边,将两个分支的结果concat后再经过一个卷积+BN+激活函数。
SPPCSP结构的作用:
- SPP结构增大了感受野,能够适应不同大小的目标提取。
- CSP结构增加了多个分支结构,融合不同尺度的特征。提高模型的表达能力减少梯度消失。
加强特征提取网络
对于提取到的三个尺度的有效特征层,分别进行上采样和下采样。
在上采样阶段,通过将低层的特征层经过上采样与上一个尺度的特征层进行concat融合,再经过多分枝堆叠模块(并行计算多尺度特征层,并进行特征融合,由于检测不同大小的目标,并行结构有利于减少梯度消失。),上采样过程宽高增加,通道数减少。
在下采样阶段,通过transition-block过度模块对高层特征进行下采样,与下层的特征层融合。下采样过程,宽高减半,通道数增加。
经过加强特征提取得到单个尺度的有效特征层。
yolo head预测
将三个尺度的有效特征层分别经过repconv,repcon可以看作在训练过程中使用残差结构,在预测阶段用代替的3×3卷积来实现残差的功能,既能够减少计算量,又能保留残差结构的效果。
在yolo head阶段使用1×1卷积操作,卷积的通道数为3×(1+4+num_cls)。
表示的含义为,特征图可以看作在原始图像上划分成网格,每一个网格上对应3个宽高比的anchor先验框,预测结果表示对于每一个特征点对应的三个先验框,
- 其中是否包含物体
- 先验框中心点和宽高的调整参数
- 先验框中目标物体所属的类别
在预测阶段,将先验框进行NMS非极大抑制,,对于三个尺度的先验框,预测结果得到的预测框数量非常多,可能出现一个目标物体有多个预测框,为了去掉冗余的预测结果,使用非极大抑制方法
这一步是为了评估两个框的重叠程度。
NMS实现步骤:
- 对于同一个类别的预测框,根据是否存在物体和物体所属类别的概率、计算每一个预测框的置信度,对这些框的置信度进行排序;
- 选择得分最高的框,计算得分最高的框和所有其他框的IOU。(A∩B)/(A∪B)
- 如果与基准框的IOU大于某个阈值,0.7,则说明它们表示的是同一个目标,将候选框删除。