1.1 单阶段目标检测算法——YOLOv7
YOLO算法是单阶段目标检测算法最典型的代表,这类算法基于卷积神经网络实现了端到端直接回归目标对象的类别与位置,运行速度很快,可以应用于实时检测系统。而YOLOv7是目前YOLO系列中比较先进的算法,在准确率和速度上都超越了以往YOLO系列算法,在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测器1。YOLOv7算法的主要贡献如下:
(1)引入了重参数化技术。可以将这一技术理解为模型集成技术1。
(2)提出了ELAN高效网络架构。提高了运算效率。
(3)提出一种辅助头的训练方法,主要目的是在不增加推理时间的基础上,通过增加训练成本,以提升模型精度。
YOLOv7的模型架构如下图所示,该网络主要由主干网络(Backbone)和检测头(Head)等两部分组成。主干网络由CBS、MP、ELAN等模块组成,用于提取图片中的特征。检测头(Head)由CBS、SPPCSPC、UPSample、ELAN-W、MP、REP、CBM等模块组成,用于融合骨干网络的多尺度特征,并由此回归出目标物体的具体类别和位置。
1.1.1 主干网络(Backbone)
该网络用于提取图片特征,由四个连续的CBS模块、4个ELAN模块和3个MP模块组成。
CBS模块是由卷积层、BatchNorm层和SiLu激活函数组成,其中SiLu激活函数的表达式如下。
如图所示,共有三种颜色的CBS模块,分别代表不同卷积核大小(k)和步长(s)。第一个模块(颜色最浅)的卷积核大小为1x1,步长为1,主要用来改变通道数;第二个模块的卷积核大小为3x3,步长为1,主要用于提取特征;第三个模块(颜色最深)的卷积核大小为3x3,步长为2,主要用于下采样。
ELAN模块通过控制最短和最长的梯度路径,构成了一个高效的网络结构,使网络在学习到更多特征的同时,具有更强的鲁棒性。ELAN模块有两条主分支,第一条主分支经过一个卷积核大小为1x1的CBS模块进行通道数的变化,第二条主分支由一个卷积核大小为1x1的CBS模块和四个卷积核大小为3x3,步长为1的CBS模块组成。最后将四个分支特征图堆叠在一起作为最后的特征提取结果。
MP模块用于下采样,主要有两个分支。第一条分支通过最大池化进行下采样,第二条分支通过使用卷积核大小为3x3,步长为2的CBS模块进行下采样,最后将两个分支的结果堆叠在一起作为输出。
1.1.2 检测头(Head)
检测头的作用是融合骨干网络提取的多尺度特征,再通过融合后的特征进行基于锚框的目标物体类别与位置的回归。该部分网络主要有SPPCSPC、CBS、UPSample、ELAN-W、MP、REP、CBM等模块组成。
SPPCSPC模块有两条主分支构成,第一条主分支通过系列卷积和四种不同步长的最大池化达到了扩大感受野的目的,增强了算法对不同分辨率图像的适应性;下主分支则只是通过一个1x1的CBS模块进行处理。最后将这两条主分支的输出堆叠在一起后,再进行一次1x1的CBS模块处理。
UPSample模块的作用是将底层特征融入到浅层特征中,是一个上采样的模块,其上采样的方式是最近邻插值。
ELAN-W与ELAN模块非常相似,差异仅体现在下主分支所选取的用于堆叠的特征图数量,本模块每个CBS模块的输出都将用于后续堆叠,故最终特征图由6个分支特征图堆叠而成。
REP模块是一种比较流行的重参数化结构,这种结构可以起到集成学习类似的效果。他的具体原理是在推理时将训练得到多条支路的参数融合在一起,所以其训练时的结构与推理时不同,在训练时,该模块有三条分支,分别是用于特征提取的3x3卷积、用于平滑特征的1x1卷积和一个恒等映射;在推理时,该模块仅由一个3x3卷积和一个BatchNorm层组成。
CBM模块由卷积层、BatchNorm层和sigmod激活函数组成。
1Wang C Y, Bochkovskiy A, Liao H Y M. YOLOv7: Trainable bag-of-freebies setsnew state-of-the-art for real-time object detectors[J]. arXiv, 2022, abs/2207.02696.
测试