目录
1.YOLOv5的网络结构图
2.YOLOv5的网络结构
2.1输入端
输入图像,进行图像的预处理,在预处理阶段会进行Mocaic数据增强/自适应锚框计算/自适应图片缩放等处理。
-
Mocaic数据增强 :利用随机缩放、随机裁剪、随机排布的方式进行拼接;
-
自适应锚框计算:针对不同的数据集,都会有初始设定长宽的锚框。在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算两者差距,再反向更新,迭代网络参数。
-
自适应图片缩放 :在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。
2.2主干网络(Backbone Network)
提取一些通用的特征表示 。其中主要包括CSP结构+Focus结构。
-
特征提取 :骨干网络是用于提取图像特征的主要组件。它接受输入图像并通过一系列卷积和池化层提取特征。这些特征从原始像素级别逐渐升级,捕获了图像中的结构、纹理和上下文信息。
-
多尺度特征:骨干网络通常包括多个分支,每个分支负责提取不同尺度的特征。这是为了捕获图像中不同尺度的物体和结构。小物体通常需要更高分辨率的特征来识别,而大物体可以使用更低分辨率的特征。
-
信息融合:一些现代的骨干网络使用跳跃连接(Skip Connections)和特征金字塔(Feature Pyramid)等技巧,以帮助有效融合不同尺度的特征。这有助于提高模型对不同尺度信息的感知。
-
预训练模型:骨干网络通常在大规模图像数据上进行预训练。这使它们能够捕获通用的图像特征,然后可以在特定任务上进行微调。
2.2.1CSP结构
输入特征图分成两部分,一部分经过一个小的卷积网络(称为子网络)进行处理,另一部分则直接进行下一层的处理。然后将两部分特征图拼接起来,作为下一层的输入。
具体来说,CSP结构包括以下几个步骤:
将输入特征图分成两部分,一部分进行子网络的处理,另一部分直接进行下一层的处理。
在子网络中,先使用一个卷积层将输入特征图进行压缩,然后进行一系列卷积操作,最后再使用一个卷积层进行扩张。这样可以提取出相对较少的高层次特征。
在下一层中,将经过子网络处理的特征图与直接处理的特征图进行拼接,然后再进行一系列卷积操作。这样可以将低层次的细节特征和高层次的抽象特征结合起来,提高特征提取的效率。
2.2.2Focus结构
用于特征提取的卷积神经网络层,用于将输入特征图中的信息进行压缩和组合,从而提取出更高层次的特征表示。对输入特征图进行行下采样,减少计算量和参数量。
2.3颈部网络(Neck Network)
进一步提升特征的多样性。其中主要是SPP结构+PAN结构
Neck网络结构 | 具体说明 |
---|---|
SPP(Spatial Pyramid Pooling)结构 | 一种金字塔池化结构,可以对不同大小的特征图进行池化,从而增强模型对不同尺度目标的感知能力。具体地,SPP结构将输入特征图分别进行1x1、2x2和3x3的池化操作,并将不同尺度的池化结果拼接起来,作为SPP结构的输出。 |
PAN(Path Aggregation Network)结构 | 一种多尺度特征融合结构,它可以将不同层次的特征进行有效融合,并且避免信息丢失。具体地,PAN结构首先通过上采样将较高层次的特征图尺度与较低层次的特征图尺度对齐,然后通过特征融合模块将它们进行融合,并最终输出融合后的特征图。 |
-
特征增强:颈部网络位于骨干网络和Head输出端之间,用于进一步处理特征。它的主要目标是增强骨干网络提取的特征,以提高目标检测性能。
-
多尺度特征融合:颈部网络通常包括多层卷积层和上采样层,用于将不同尺度的特征图进行融合。这有助于将不同尺度的信息结合在一起,使模型能够更好地检测不同大小的目标。
-
减小特征图的分辨率:有时,颈部网络还可以减小特征图的分辨率,以加速计算并提高效率。这对于实时目标检测任务非常重要。
骨干网络和基准网络的区别:骨干网络以提取原始图像的特征,包括多尺度的信息;颈部网络负责进一步处理和融合这些特征,提高性能。
2.4Head输出端
生成目标框,模型执行非极大值抑制去除重叠的目标框,保留最可信的目标框,完成目标检测结果的输出 ,采用GIoU_Loss做Bounding box的损失函数。
3.YOLOv5目标检测的执行流程
1.输入图像首先通过骨干网络,以提取原始图像的特征,包括多尺度的信息;然后通过颈部网络,负责进一步处理和融合这些特征,提高性能。特征提取过程中通道数是不断增加的,尺寸是不断减小的。
2.将特征图输入到head输出端当中,进行自上而下的融合,再进行自下而上的融合,然后会取几个特征层的图片进行检测。会设置不同尺寸的anchor来分别预测不同尺寸的目标。
目标检测通常是在模型的输出端(即检测头)完成的。下述过程即是在输出端所完成的操作。
3.检测:生成目标框,类别概率和中心点,确定图像中的目标位置和类别。
4.后处理:模型执行非极大值抑制去除重叠的目标框,保留最可信的目标框。
5.输出结果:输出检测到的目标的位置和类别。