目录
1 YOLO v5模型结构
YOLO v5模型根据其深度、宽度的差异可以分为四个不同规模的模型,分别为YOLO v5nano、YOLO v5samll、YOLO v5middle以及YOLO v5large,鉴于本文后续研究主要在YOLO v5nano以及YOLO v5small(后续简写为YOLO v5n与YOLO v5s)上开展,现将YOLO v5s的模型结构绘制如图2.3中所示。
图2.3 YOLO v5small结构示意图
结合图2.3可以看到,YOLO v5主要由三个大的结构组成,即骨干网络Backbone,Neck以及检测头Head部分。在Backbone中,主要是由CBR模块、CSP1模块以及SPPF模块组成。Backbone作为输入图片在检测网络中首先经过的阶段,其主要作用即提取图片中不同尺度下的特征,并作为输出提供给Neck部分。输入图片在预处理阶段被调整为像素大小为640×640的RGB三通道图像,在原YOLO v5网络中第一层为Focus层,即对输入为640×640×3的图片进行切片处理,输出为320×320×12的特征图,随后再进行后续模块的处理,在本研究中,为提升模型在GPU等硬件平台上的效率并便于后续部署,将该层替换为该模型中常见的CBR模块。CBR模块由卷积层、BN层以及ReLU激活函数层组成,为YOLO v5模型中最基础的模块。同样是为了便于在终端硬件上行的部署,已经原模型中SiLU激活函数全部替换为图2.3中的ReLU激活。CSP1模块的结构如图2.3右下角所示,其中包含了两个分支,即输入经过两个分支的处理后经Concat算子拼接后再经CBR模块处理。需要注意到,CSP1模块后缀的数值即表示在该模型的分支中出现残差块的数量,例如在YOLO v5s的Backbone中,CSP1模块中残差块的重复次数分别为1、2、3、1;残差块的结构如图2.3右上角所示,由两个CBR模块以及一个带有Shortcut的ADD操作构成,此处的带有Shortcut的ADD操作也被称为Skip-Connection操作,即完成残差模块中两个分支的相加运算。Backbone中还有一个SPPF模块,如图2.3右部所示,其由CBR模块以及三个串行的Maxpool最大池化组成,四路输出经Concat拼接,主要作用在于通过多次池化,完成对高层次语义特征的提取与融合。
观察图2.3中的Neck部分,可以显著地看到一个自上而下的通路与一个自下而上的通路,此即一个FPN+PAN的组合结构。其中FPN即特征金字塔网络(Feature Pyramid Network)[27],用来处理来自Backbone中多个尺度的输出,进而构建出高级语义特征信息,而PAN即通道聚合网络(Path Aggregation Network)[149],在FPN中传递的底层位置信息已经较为模糊的情