基于两阶段计算Transformer的小目标检测

2023-12-08 11:49徐守坤顾佳楠庄丽华
计算机与生活 2023年12期
关键词:残差注意力卷积

徐守坤,顾佳楠,庄丽华,李 宁,石 林,刘 毅

常州大学 计算机与人工智能学院,江苏 常州 213164

目标检测作为计算机视觉的一个基础研究热点,在许多领域内进行应用,例如自动驾驶、智慧监控、虚拟现实和增强现实等。小目标检测是目标检测研究任务之一,其在卫星图像和自动驾驶等领域有着非常广泛的应用[1]。但是小目标携带的信息量相比常规目标要少,给小目标特征提取、识别、分类和定位都造成了很大的困难。

传统的目标检测方法通过人工提取目标特征,检测的效果不佳。近年来,随着深度学习技术不断发展,目标检测算法可以分为两个类别:第一种是两阶段(Two-stage)算法,例如Faster R-CNN(faster region-based convolutional neural networks)[2]、OHEM(online hard example mining)[3]和MKLP(multi-scale location-aware kernel representation)[4]等。这些方法都是先通过区域建议网络生成候选框,然后对候选区域进行分类和回归,最终得到目标的准确分类和定位信息。另一种是一阶段算法,例如SSD(single shot multibox detector)[5]、DSSD(deconvolutional single shot detector)[6]、YOLOv3(you only look once version 3)[7]、YOLOX(you only look once version X)[8]等,这些方法都是端到端的方法,直接通过网络获得目标的分类和定位信息。

目前现有的目标检测方法对于清晰场景下的大尺寸目标都表现出良好的检测效果,但是对于复杂场景中的小目标则会出现漏检或错检问题。由于小目标的背景复杂度高、像素低本身的特征信息不明显、易被遮挡等问题,小目标的检测性能还有很大的提升空间。YOLOX 是一个端到端的一阶段目标检测算法,其创造性地提出解耦头进一步提高了目标检测的性能和收敛速度,但是其对于小目标检测的性能不佳。图1 展示了YOLOX 对于小目标检测的失败案例,左边一张图中对后面的汽车和人出现漏检问题。右边一张图中对于两匹在草原上奔跑的马,只检测出了前面一匹,后面的马匹出现漏检问题。因此,本文主要研究如何在检测过程中有效增强小目标特征信息的鉴别性,保留并丰富小目标的浅层特征信息和上下文语义信息。

图1 YOLOX算法中小目标检测失败案例Fig.1 Failure cases of YOLOX in detecting small objects

得益于Transformer 在自然语言处理(natural language processing,NLP)领域的有效性,其能高效捕获长范围依赖关系,学习全局自注意力权重并增强全局特征表达,将Transformer 应用于目标检测成为了新的研究趋势。现有小目标检测方法中主干网络(backbone)存在对小目标特征提取不充分或是小目标在特征提取过程中丢失特征信息,造成小目标漏检的问题。本文提出了在backbone 的每一层特征提取后面增加两阶段计算Transformer(two-stage calculation Transformer,TCT),相比传统CNN 方法,引入Transformer 机制的优势是能大幅扩大对小目标特征的感受野,从而更好地捕获全局依赖关系和提高检测性能。另一方面,相比应用于小目标检测的传统Transformer 方法,使用通道级全连接进行小目标特征提取容易丢失小目标空间特征信息,造成小目标漏检问题。本文提出的两阶段Transformer 能自适应地调整自注意力的核心变量Query、Key 和Value,增强Query 和Key 之间的相关性,避免大范围背景信息淹没小目标的问题,进而突显小目标特征信息,避免小目标漏检。此外,本文总结了YOLOX中使用路径聚合网络(path aggregation network,PANet)[9]进行特征融合的局限性。现有的CSPLayer层使用压缩通道的卷积无法捕获邻域特征依赖关系,因此将其替换为不改变通道数的卷积,以进行带感受野的迭代学习,从而更好地在空间层面上学习不同信息。同时,使用PReLU 激活函数进行非线性激活,提高特征的表达能力,并且使用多个残差加法与残差乘法进行特征细化与精炼。

本文主要贡献如下:(1)提出了两阶段计算Transformer(TCT)改进现有的Transformer 结构,通过引入新颖的多分支一维空洞卷积以扩大感受野,从而准确捕获空间层面邻域依赖关系。并使用不同的融合方式以调整自注意力权重,增强全局自注意力机制的特征表达能力与信息交互能力。(2)提出了一个高效的残差连接模块,改进现有的CSPLayer 层中低效的卷积层与激活层,有利于促进信息流的交互,学习更丰富的上下文细节特征。(3)提出特征融合与精炼模块以改进路径聚合网络,从而建立多层次之间的相互管理并精炼每层的特征细节,提取到更加丰富的目标特征信息。

1 相关工作

1.1 目标检测

目标检测一直是一个热门的研究领域,随着卷积网络的不断发展,出现了很多的检测方法。目前最通用的两个方法,一个是以R-CNN系列为代表的基于候选框的两阶段目标检测算法,另一个是以YOLO系列为代表的基于回归的一阶段目标检测算法。

R-CNN[10]、Fast R-CNN[11]、Faster R-CNN 这些方法都是基于候选框计算目标的分类置信度和目标具体检测位置。赵珊等人[12]基于Faster R-CNN 提出了通道分离双注意力机制的目标检测算法,使得卷积神经网络自动学习特征间的重要性。R-FCN(regionbased fully convolutional networks)[13]引入了位置敏感分数图共享每一个ROI(region of interest)的特征计算,缓解目标分类之间的平移不变性与目标检测之间的平移变化性之间的矛盾。TSD(revisiting the sibling head in object detector)[14]将分类和边界框预测的感知分类建议任务与计算具体特征任务解耦合。Dynamic R-CNN[15]动态调整标签分配的IoU(intersection over union)阈值和回归超参数以提高检测精度。Sparse R-CNN[16]学习了一组固定的稀疏候选区域建议框。

YOLO 系列算法和SSD 算法都是经典的一阶段目标检测算法。YOLO 算法的目的就是将检测问题转变成回归问题,将整个图像输入到卷积网络中,在输出层同时预测边界框的坐标和类别的概率。SSD算法采用不同尺度的特征图进行检测,并且直接使用卷积网络预测检测结果。YOLOv2[17]对YOLOv1[18]进行了改进,增加了批标准化处理并且同时引入锚框机制。YOLOv3采用Darknet53作为主干特征提取网络,并且在分类器中使用Sigmoid 激活函数,将输出结果范围约束到0 到1 之间,提高模型检测速度。邵伟平等人[19]将MoblieNet 与YOLOv3 进行融合,提高模型的检测速度。YOLOv4[20]使用Mish激活函数,在不增加检测时间的基础上,提高了检测精度。刘晋等人[21]基于YOLOv4使用MoblieNet作为主干特征提取网络,引入通道注意力机制模块提高特征提取能力。现在YOLOX 的出现,在某种程度上做到了最佳的检测精度和检测速度。

1.2 小目标检测

小目标检测一直是一个具有挑战性的计算机视觉任务,现有的检测算法对于大尺寸目标的检测都取得了很好的效果,但是小目标的检测效果仍然不太理想。人们提出越来越多的方法用来提高小目标检测的准确度,主要分为四个类别:(1)尺度感知训练。为了提高小目标的检测准确度,旨在生成具有统一表示能力的特定尺度特征图。Liu等人[22]提出了多分支并行特征金字塔网络(multi-branch parallel feature pyramid network,MPFPN)用于恢复深层次丢失的特征信息,从而提取更加丰富的小尺寸目标特征信息。(2)过采样和强大的数据增强。文献[23]研究了过采样和数据增强对于目标检测的影响,使用一种自动化的方式来寻求目标检测的最佳数据增强策略。(3)结合上下文信息。Zhang 等人[24]通过交错级联架构提出了多尺度特征预测和细化小目标的尺寸和位置。PANet[9]在特征金字塔(feature pyramid network,FPN)的基础上增加了自上而下的路径增强,在利用浅层特征精确定位目标信息的同时也缩短了信息传输路径,进而提高小目标的检测性能。奚琦等人[25]将SSD 中的主干网络VGG16 替换为Densenet,使用连续3个3×3卷积生成特征图,减小参数量的同时降低输入图像特征信息的消耗,尽可能地保留目标细节特征信息。(4)提高输入图像分辨率。陈幻杰等人[26]对SSD算法进行改进,在提取特征时使用不同的提取方式对浅层特征和深层特征进行提取,以此改善SSD 算法对于小目标的检测效果。文献[27]将图像分割后进行超分辨率重建,再次分割送入目标检测模块,以此增强对小目标的检测。

1.3 基于Transformer的目标检测

得益于Transformer 在自然语言处理中的成功应用,人们也在积极探索其在计算机视觉上代替卷积计算来捕获图像特征全局范围内的依赖关系。ViT(vision transformer)[28]是第一个基于Transformer的图像分类方法,其分类性能优于卷积神经网络。它提出了将图像切分为尺寸为16×16 的图像块,将每个图像块看作一个整体,使用Transformer 对图像进行全局自注意力。DETR(detection transformer)[29]提出了目标检测的新范式,使用编码器和目标查询对特征图和锚框进行编码,使用解码器和前馈神经网络获得目标的预测框和类别分类。此方法虽然在检测性能上提到了提升,但还是牺牲了很大的计算量和参数量。Swin Transformer[30]提出了一个基于滑动窗口的多头注意力机制以平衡性能和效率。DAB_DETR[31]基于原始DETR 生成动态锚框,使得DETR 中的Q(Query)与传统目标检测方法中的锚框类似。该方法不仅增强了Q的可理解性,还加速了模型的收敛。

2 本文算法

本文在现有的高性能目标检测方法YOLOX 上进行改进,改进后的算法总体结构如图2 所示。TCT表示两阶段计算注意力,详细结构见图3。整个算法由特征提取主干模块、特征融合模块和检测头模块三部分组成。当传入一张640×640×3 的图像,首先对图像进行Focus 操作,在图像中间隔一个像素取值,这样就可以获得4 个独立的特征层。将4 个特征层进行堆叠,输入通道就扩充为原来的4 倍,图像的宽高变为原来的一半。通过Focus 操作可以减小模型推理的时间。再经过卷积层和TCT 结构的堆叠,获得特征信息。在最后一个TCT 结构输出之后,通过SPPNeck 使用不同池化核大小的最大池化操作进行特征提取,提高网络的感受野。网络的特征融合模块是基于PANet 结构搭建的,通过FFRM(feature fusion and refinement module)进行带感受野的迭代学习,更好地学习空间中不同尺度的特征,并且将不同尺度的特征进行融合,从而得到不同尺度目标的预测结构。在网络检测头部分使用解耦头的方式,一个分支计算目标分类,另一个分支进行边界框回归和前景背景判断。一方面,为了构建更加高效的特征提取网络,本文提出两阶段计算Transformer(TCT)用作增强特征,分两阶段自适应地调整Q(Query)、K(Key)和V(Value)以更好地计算全局自注意力权重。从而提高网络模型自适应捕获全局依赖关系的能力,提高训练阶段收敛速度,从而更准确地鉴定目标信息。另一方面,本文改进了多层次的特征融合过程,提出了一个简单而强大的模块,仅仅由3×3 卷积和PReLU 激活函数组成,在经过不同形式的残差连接之后,得到一个新的卷积神经网络模块,名为特征融合精炼模块(FFRM)。FFRM 在本模型中取得了优异的检测性能。

图2 本文方法总体框架Fig.2 Proposed overall framework

图3 传统自注意力与两阶段计算自注意力的比较Fig.3 Comparison of conventional self-attention and two-stage computational self-attention

2.1 两阶段计算Transformer

2.1.1 两阶段计算Transformer总体设计

本小节将详细介绍提出的两阶段计算Transformer(TCT)模块。本文遵循大多数Transformer 方法的做法,TCT 由两阶段计算自注意力(two-stage calculation self-attention,TCSA)和前馈神经网络(feed forward network,FFN)两部分组成。二者分别经过层归一化(layer normalization,LN)进行稳定梯度加速训练,然后使用残差加法用于保留原始信息与缩短反向传播途径。在目标检测的backbone 特征提取阶段中,将CSPLayer 输出的特征图X∈RH×W×C作为TCT 的输入特征,所提出的两阶段计算Transformer总体公式如下所示:

其中,TCSA(∙)表示两阶段计算自注意力方法,具体实现方法将在2.1.2小节详细介绍。FFN(∙)表示前馈神经网络计算操作,具体实现方法将在2.1.3 小节详细介绍。Y则为TCSA 模块计算得到的临时变量,用于传入FFN 进行前馈网络计算。LN(∙)表示层归一化,对B×C×H×W尺寸的特征图按Batch(B)划分并对C×H×W的子特征所有数值减去均值并除以标准差。

2.1.2 两阶段计算自注意力

现有的基于目标检测的多头注意力机制,如图3(a)所示。使用3 个不同的全连接计算获得Q(query)、K(key)、V(value)三个值(公式):

其中,fWQ(∙)、fWK(∙)、fWV(∙)表示不同的全连接层计算,其采用三个不同的全连接层,按通道进行全连接计算,互相不共享参数,从而以不同的权重参数分别更新Q、K 和V 的所有层次特征到下一层特征的投影系数。

与现有的基于Transformer 的目标检测方法不同,本文提出了两阶段计算模块,用一维卷积替代全连接层,并设置不同的空洞率(dilated rate)以捕获多尺度信息,同时将多尺度权重用于调整Q 与K。如图3(b)所示,使用不同的计算方式得到Q、K、V的值,具体过程如下:

(1)计算Q、K、V

在视觉Transformer 中计算Q、K、V 的方法通常使用三个通道级别全连接计算得到,其好处在于对不同层次特征信息进行稠密连接,捕获跨层次信息关联性。然而目标检测任务中,真实标签更多体现在视觉空间层面上而非通道层面,这使得捕获邻域关系比捕获跨层次通道信息更为重要。为此,本文避免使用通道级别全连接层,改进为使用一维卷积和空洞率为3 的一维空洞卷积。在不增加网络参数量的同时,尽可能地扩大特征图的感受野,以准确捕获空间层面领域依赖关系,减少卷积过程中语义信息与细节信息丢失,提高目标检测性能。

式中,fchunk(∙)表示的是对特征图按通道数拆分成两半;表示的是第i次进行1×1 一维卷积操作;fWD(∙)表示的是空洞率为3 的3×3 空洞卷积操作;Y′表示的是层归一化后的张量。

(2)计算Q′、K′、V′

为了增强全局自注意力机制的特征表达能力与信息交互能力,相比传统Transformer方法,本文提出的TCT 模块引入第二阶段对Q、K、V 进行自适应调整,Query 作为自注意力的原始特征表达,需要适当引入大感受野的空间细节以调整增加Query 的特征查询能力。而Key作为自注意力的目标位置特征,仅采用全连接层或全空洞卷积容易丢失原本特征信息,因而引入Value 早期特征尤为必要。在一阶段计算得到Key 和Value 分支后,二阶段分别对其进行2倍通道膨胀并拆分。Key 分支得到Q1和K1,Q1以矩阵乘法的方法融合Query 分支特征Q以调整其特征权重,K1则是作为原始Key分支信息。

其中,Q′表示经过两阶段自适应调整之后Query 结果,用于计算自注意力权重。

Value 分支得到K2和V′,K2以矩阵加法的方式融合Key 分支的K1信息以微调信息表征。与Query 分支乘法不同的原因在于,Query 分支将多尺度特征以乘法方式特征融合,有利于训练阶段成倍增长梯度和加速收敛。而Value 分支融合的是早期信息与当前层目标关键特征,以残差加法方式有利于稳定学习目标区域自注意力权重。

经过上述方法求得Q′、K′和V′之后,最终的注意力计算方式如下:

式中,K′T表示将K′进行转置,dk是一个缩放因子,遵循多头操作的计算公式dk=C/k,本文多头分组k取值为8,主干网络特征图通道数C为{128,256,512,1 024},因而dk={16,32,64,128}。

得益于两次跨分支信息流的特征融合,在训练阶段有效地避免了信息阻塞,促进了浅层特征与深层特征的信息交互,有效提升全局自注意力的准确性。3.5节消融实验进一步证明了该结论。

2.1.3 前馈神经网络

前馈神经网络(feed forward network,FFN)在Transformer 架构中起到增加模型表达能力、提高自注意力机制的学习容量的作用,以应对小目标被遮挡、模糊和光线暗等复杂场景。传统的FFN 一般采用Layer Normalization 和残差连接以稳定梯度和缩短反向传播路径达到加速收敛的效果,同时采用Dense+Activation+Dense以增大模型表达能力。本文提出的前馈神经网络FFN 采用双分支结构,其中一个分支经过GELU激活函数以学习逐元素门控权重,由于GELU 是具有dropout 性质的门控激活函数,将双分支相乘的操作有利于利用门控信息调整空间与通道上的有效特征。在先前的工作中,在现有的Transformer 中前馈神经网络对于特征领域信息的获取能力较弱。但是,在目标检测中相邻像素的信息对于整体目标表达非常重要。为了解决这个问题,如图4 所示,本文使用二维卷积获取特征信息,并且前馈神经网络的激活函数使用的是GELU激活函数。FFN的计算公式如下:

图4 前馈神经网络结构图Fig.4 Structure of feed forward network

式中,θ表示GELU 激活函数,fWpi(∙),i∈{0,1,2}表示的是第i次二维卷积操作,fLN(∙)表示的是层归一化操作,∈RH×W×C表示的是经过两阶段计算注意力得到的受关注特征向量经过层归一化转置后的结果。

2.1.4 窗口化、滑动窗口与多头操作

由于视觉任务中的特征图尺寸较大,基于Transformer 的检测方法普遍存在计算量大、参数量大和推理时间大的问题。因而采用适当的轻量化方法十分必要,本文遵循Swin-Transformer 的做法,给定H×W×C尺寸的特征图,进行窗口化与滑动窗口操作(shift-window operation)和多头操作(multi-head operation)。首先,按照尺寸进行窗口划分,每两个TCT中的第一个不进行滑动窗口,第二个按照H和W负方向循环位移位。然后,按通道拆分成k组通道,即k个head,本文方法中k固定设为8,从而划分为n×k个(M×M)×(C/k)尺寸的特征图用于计算多尺寸自适应转换,其中n=(H×W)/(M×M)为窗口个数,M表示窗口尺寸(本文方法中M设为8)。

窗口化与多头操作的本质是,从空间和通道维度对特征图进行分块和升维操作,从而以并行计算的方式对特征图快速迭代学习。在计算复杂度上,传统的Transformer 在计算Q、K、V 和最后重投影共采用4 次通道级全连接层,因而4 个全连接层复杂度为4HWC2,而计算自注意力权重时用到的2 次张量相乘为2H2W2C,从而传统多头自注意力的计算量为:

本文提出的TCT 将全连接层替换为卷积或空洞卷积,并额外多了2 次逐位加法和乘法,在引入尺寸为M的窗口化操作后,计算量为:

式中,Ω(TCT1)表示仅采用窗口化设计的TCT 模块复杂度,本文M取值为8。

考虑到按通道分组的多头操作,将C拆分为k组dk通道信息,最终TCT 模块的计算复杂度进一步降低为:

考虑到实际应用中,时间复杂度与常数无关且仅需保留多项式中级数最大项,从而对比二者的时间复杂度公式如下:

可以看出,相比于传统的Transformer,本文提出的TCT 在空间维度上由二次方复杂度降低为一次方复杂度,且M=8 和dk={16,32,64,128}均为较小常数,得到了极大的轻量化提升。

本文在滑动窗口内进行自注意力计算,增强特征的鉴别性,并且提高了收敛速度。如图5 所示,虽然本文方法一开始训练损失值比基准模型大,但是在50个批次之后,损失小于基准模型,模型的收敛速度得到显著提高。针对是否窗口化、窗口尺寸M、是否滑动窗口、多头操作分组k的进一步消融实验说明将在3.5.1小节中详细讨论。

图5 损失值曲线图Fig.5 Loss value graph

2.2 特征融合与精炼模块

2.2.1 高效残差连接块

现有的方法大多沿用ResNet 中的残差连接思想,使用两层卷积并与另一分支作残差连接。如图6所示,本文的基准方法CSPDarknet 主干分支运用的是1×1 卷积和3×3 卷积,并与残差分支直接相加。其中用于压缩通道的1×1卷积无法捕获邻域特征依赖关系,因此本文将其替换为不改变通道数的3×3卷积,以进行带感受野的迭代学习,从而更好地在空间层面上结合不同信息。

图6 特征融合与精炼模块结构图Fig.6 Structure of feature fusion and refinement module

得益于PReLU 激活函数在多个视觉任务中的卓越表现,其有效缓解ReLU 激活函数丢失负数区间信息的问题,在保持非线性激活功能的同时,使用可学习的负数分支斜率以对非激活区间进行抑制,对有效数值空间进行高效非线性激活,因而在主干分支的2 个卷积层后都运用PReLU 激活层。同时,残差分支使用一个1×1卷积对原始浅层特征进行卷积运算,以增强残差块的特征表达能力。相比baseline,高效残差连接块(efficient residual connection block,ERCB)更好地进行迭代学习,其特征表达能力与模型收敛速度都有所提高,3.5.2 小节的消融实验结果进一步证明了这一结论。

2.2.2 特征融合与精炼

本文的基准方法CSPDarknet 在主干网络(backbone)之后使用CSPLayer 将不同尺度特征进行特征融合,如图7 所示,CSPLayer 在两个分支上进行迭代学习并按通道拼接方式进行残差连接。由于仅仅按照通道对特征进行简单拼接的操作,忽略了每个通道之间的相互联系,本文提出更高效的特征融合与精炼模块(FFRM),利用多次残差连接操作,对每层通道数值进行细化与精炼。如图6所示,用简单的残差加法与残差乘法替代按通道拼接操作。首先用n个ERCB 层以增强模块的特征表达能力。然后用一个层归一化以稳定梯度和加速模型收敛速度,将其与早期的浅层特征残差相加以保留原始空间细节,防止重要特征信息丢失。之后经过一层3×3卷积学习到一个自适应权重,再次与浅层特征进行残差相乘,以精炼自身特征细节。

图7 CSPLayer结构图Fig.7 Structure of CSPLayer

2.3 损失函数计算

YOLOX 算法中的损失函数由三部分组成:第一个是模型预测出的x、y、w、h可以定位预测框的位置,通过度量预测框与真实框之间的交并比作为边界框回归损失函数。第二个是目标损失,所有真实框中的特征点都是正样本,其他的都是负样本,通过正负样本和特征点是否包含目标的预测结果计算交叉熵作为目标损失函数。第三个分类损失,根据模型预测出的特征点得到该特征点所预测的种类结果,然后计算真实框的种类与特征点的预测种类的交叉熵作为分类损失函数。

为了提高整个模型对小目标检测的效率,本文将目标损失中的交叉熵损失改用为Focal Loss 损失函数进行计算。交叉熵损失函数公式为:

当分类为正样本时(s=1),损失函数为-lnp,当分类为负样本时(s=0),损失函数为-ln(1-p),p表示样本的预测概率。所有的样本都采用同样的损失度量方式,但是在实际检测情况下,小目标总是比大目标难检测出来,小目标获得的预测概率比大目标要低很多,因此交叉熵损失函数并没有很好地提高模型对小目标的预测精度。

Focal Loss损失函数公式为:

式中,∂为控制难易分类样本权重的平衡系数,及控制模型对小目标的偏向程度,类别概率p表示与真实样本的接近程度,p越大说明越接近样本,分类的置信度越高,代表样本越易分类;p越小则说明分类的置信度越低,代表样本越难分类。使用∂之后,对于分类不准确的样本,损失不会改变。对于分类准确的样本,其损失值会减小。这样相当于增加了分类不准确样本在损失函数中的权重。∂值越大,易分类样本的loss 越小,这样模型就会更加注意难分类样本,本文选择∂值为2,获得了显著的检测效果。当分类为正样本时,当预测结果p趋近于1时,(1-p)在经过指数运算之后,损失函数的运算结果会很小。因此,当预测结果p比较小的时候,获得的损失函数运算结果就会比较大。对于检测模型来说,大尺寸的目标预测结果一般都比较大,但小目标的预测结果一般都比较小。因此通过Focal Loss 损失函数的计算,小目标可以获得较大的损失值,提高整个模型对于小目标的预测能力。

3 实验

3.1 实验平台及参数设置

在Linux 环境下,在Python3.7、Pytorch1.7 和CUDA11.0 的深度学习环境上实现所提出的方法。GPU 采用一块32 GB 显存的Tesla V100,CPU 型号为Intel®Xeon®Gold 5117 CPU@2.00 GHz。

对于PASCAL VOC2007 和PASCAL VOC2012数据集,本文合并二者的训练集进行联合训练300轮,并在PASCAL VOC2007测试集上评估检测性能。对于COCO2017 数据集,本文在其训练集上训练100轮,并在其验证集上评估检测性能。模型采用随机梯度下降(stochastic gradient descent,SGD)优化器以0.01的初始学习率训练,并使用余弦退火方式将学习率衰减到0.000 1,权重衰减设为0.000 5,动量固定为0.9。使用马赛克数据增强方法,以64 的小批量值和640×640 的随机裁剪尺寸进行随机梯度下降权重更新。对于TinyPerson数据集,本文在训练集上训练了100轮,并在其测试集上评估性能。

3.2 数据集介绍

实验数据集为PASCAL VOC2007[32]数据集、PASCAL VOC2012[33]数据集和COCO2017[34]数据集这3 个主流数据集以及TinyPerson[35]小目标数据集。PASCAL VOC 数据集一共有20 种不同的类别,训练集一共有16 551 张图像,测试集一共有4 952 张图像。COCO2017 数据集一共包含80 种不同的类别,训练集一共有118 287 张图像,在COCO2017 的验证集上评估本文方法效果,其由5 000 张图像组成。TinyPerson 数据集[35]一共1 610 张图像,包含两个类别sea person 和earth person,其图像中的目标都是小于20像素的人。

3.3 评价指标

使用mAP(mean average precison)作为算法检测精度的评价指标,此外还用了更加精细化的评价指标来评估模型。AP50、AP75分别表示当IoU 为0.50 和0.75 时所有目标的AP 值,mAP 表示IoU 阈值由0.50至0.95,以0.05 为步长计算的AP 值的平均值。本文定义小目标(S<322)、中等目标(322962)。其中S、M、L为图像中的目标像素,APS、APM和APL分别表示IoU 阈值为0.50 时小目标、中等目标和大目标的AP值,上述评价指标计算公式表示如下:

式中,TP、FP和FN分别表示正确检测框、误检框和漏检框的数量,P表示精确率,R表示召回率,AP值表示一个类别的检测平均精准度。

本文使用每秒处理图像的帧数(frame per second,FPS)、参数量(Parameter)以及计算量(FLOPs)来评估模型的速度和模型的复杂度。

3.4 对比实验结果

3.4.1 PASCAL VOC实验结果分析

表1 和表2 比较了本文算法与现有的先进目标检测算法在PASCAL VOC2007 测试集的实验结果。如表1 所示,本文方法取得了87.9%的mAP,达到最高,比基准模型YOLOX 高了1.9 个百分点。比二阶段的检测算法Faster R-CNN 高出14.7 个百分点,比一阶段的SSD 算法高出了11.1 个百分点,比现有的基于Transformer 的目标检测器DETReg 高出了3.7个百分点。每个类别的检测精度相比这些方法也有了显著提升,其中有17 个类别达到了最优。对于中等尺寸的物体,比如桌子,相比基准模型提升了8 个百分点;对于小尺寸的物体,比如瓶子,相较于基准提高4个百分点,植物有了10个百分点的提高。

表2 不同方法在PASCAL VOC2007测试集的检测结果对比2(IoU=0.5)Table 2 2nd comparison of detection results of different methods on PASCAL VOC2007 test set(IoU=0.5) 单位:%

图8 是本文方法与SSD、YOLOv3 和YOLOX 在PASCAL VOC2007 测试集上选取了两张图片。从图中可以看出其他方法对于较远处的轮船、马车等小目标存在严重的漏检问题,而本文方法都能精确检测出来,进一步证明了本文方法使用两阶段计算注意力可以更精炼地提取目标的语义信息和细节信息,提高检测性能。

3.4.2 COCO2017实验结果分析

为了进一步验证本文方法的有效性,在COCO-2017数据集上进行实验。如表3所示,本文方法检测精度与现有先进检测方法相比有了显著提升。本文方法与基准YOLOX_s 相比检测mAP、AP50、AP75分别提高了2.7个百分点、2.2个百分点和2.8个百分点,相比最新的YOLOv7-tiny416分别提高了8.4个百分点、9.3个百分点和9.8个百分点。值得注意的是,本文方法对于小目标检测的AP得到了显著提升,达到了25.2%,相比基准模型YOLOX_s 提高了1.3 个百分点,证明了本文方法小目标检测的有效性。本文方法的中等尺寸目标和大尺寸目标的检测精度相较于基准模型分别提升了2.3 个百分点和4.3 个百分点。取得如此显著提升的根本原因是本文模型使用两阶段计算转换器可以更好地捕获目标全局语义特征和目标的细节特征,更好提高网络模型自适应捕获全局依赖关系的能力。

表3 不同方法在COCO2017数据集的检测结果对比Table 3 Comparison of detection results of different methods on COCO2017 dataset 单位:%

图9是本文方法与YOLOv5、YOLOv7和YOLOX方法在COCO2017 测试集上选取了3 张图片。从图中可以看出其他方法对于较远处的汽车、轮船、帆船等小目标存在严重的漏检问题,而本文方法都能精确检测出来,进一步证明了本文方法使用两阶段计算注意力对小目标检测有了很大的改进。

图9 本文方法与YOLOv5、YOLOv7和YOLOX在COCO2017数据集上的定性对比Fig.9 Qualitative comparison among proposed method,YOLOv5,YOLOv7 and YOLOX on COCO2017 dataset

3.4.3 TinyPerson数据集实验结果分析

为了进一步验证本文方法对于小目标检测的有效性,在TinyPerson 数据集上进行实验。如表4 所示,本文方法检测精度与现有先进检测方法相比有了显著提升。本文方法在IoU 阈值为0.50 时的APS达到了最好的结果,相比YOLOX 增加了3.4 个百分点,相比YOLOv5 增加了2.9 个百分点,证明了本文方法小目标检测的有效性。

表4 不同方法在TineyPerson数据集的检测结果对比Table 4 Comparison of detection results of different methods on TineyPerson dataset

如图10 所示,本文选取了两组图片用于本文算法与其他方法的定性对比,从图片中可以看出本文方法的检测效果明显优于其他方法的检测效果。在目标特别微小的情况下,本文方法相比其他方法检测到的目标数量最多。由此表明本文方法对于小目标检测有很大的改进。

图10 本文方法与其他主流算法在TinyPerson数据集上的定性对比Fig.10 Qualitative comparison of proposed algorithm with other mainstream algorithms on TinyPerson dataset

3.5 消融实验结果

3.5.1 基于Transformer的目标检测

为了证明本文两阶段计算注意力模块对于目标检测的有效性,本文方法在PASCAL VOC2007 测试集上将与基准模型YOLOX 和增加Swin Transformer模块后的YOLOX 进行对照实验。如表5 所示,在增加了Swin Transformer 之后,这个模型对于目标检测的性能有了提高,但是使用TCT 之后,目标检测的性能得到了更大的提升。如表5第二行和第三行所示,增加了两阶段计算模块之后,检测的mAP相较于基准模型YOLOX 提升了2.6 个百分点,APS提升了6.4个百分点,APM提升了1.5 个百分点以及APL提升了2.3个百分点。从这些检测精度上可以证明使用两阶段计算特征注意力可以有效增强全局自注意力机制的特征表达能力与信息交互能力。

表5 两阶段计算Transformer的消融实验结果Table 5 Experimental results of ablation of two-stage calculation Transformer 单位:%

如表6 所示,本文在PASCAL VOC2007 测试集上对TCT中是否进行滑动窗口(shift_win)、窗口尺寸(M)以及多头分组(k)进行消融实验。从表6 的第一行和最后一行比较可以看出,使用滑动窗口进行跨窗口的连接计算使得检测的效率得到了提高,mAP和APS都提高了1.1 个百分点,APL提高了1.2 个百分点。从表6的前三行可以看出,不同的窗口尺寸对于检测效果也有很大的影响。当窗口较小时,虽然GFLOPs 减小了很多,但是检测的准确度也下降了。当窗口较大时,相比8×8的窗口尺寸,其GFLOPs增大了很多,并且也损失了检测的准确度。对于多头分组的消融实验可以看出,分组的多少对于计算量几乎没有影响。为了得到更优的检测效果,最终选择了k=8为模型的分组数。

表6 本文方法阈值设置消融实验结果Table 6 Ablation experimental results of proposed method for threshold setting

3.5.2 特征融合与精炼模块消融实验

为了证明本文提出的高效残差连接块的有效性,如表7 的第一行和第三行所示,在PASCAL VOC2007 测试集上同样使用CSPLayer 的级联操作条件下,使用本文高效残差连接块的检测mAP比基准YOLOX 提升了2.9 个百分点,APS提升了5.3 个百分点以及APL提升了1.3个百分点。这证明了本文的高效残差连接块对于小目标检测是有利的,它增加了空间细节特征信息和上下文语义特征信息,因此提高了小目标的检测精确度。如表7第一行、第二行和第四行所示,在增加了特征融合与精炼模块之后,对于目标的检测精度也有很大的提升,在特征融合与精炼模块中使用高效残差连接块,得到的检测mAP、APS以及APL分别比使用现有残差块提高了2.9个百分点、1.9 个百分点和1.6 个百分点,比基准YOLOX 提高了3.9 个百分点、6.7 个百分点和3.2 个百分点。从表7的最后两行可以看出,本文提出的两个模块对于目标检测都是有利的。将这两个模块同时应用,检测效果达到了最佳。使用一个特征融合与精炼模块的检测方法的检测精度得到了提升,使用两个特征融合与精炼模块的检测精度更优,mAP相比使用一个特征融合与精炼模块方法提升了0.4个百分点,APS提升了0.7 个百分点,APL提升了1.9 个百分点。

表7 特征融合与精炼模块消融实验结果Table 7 Ablation experiment results of feature fusion and refinement module 单位:%

针对本文提出的两个改进模块,进行了消融实验,从表8 中可以看出在PASCAL VOC2007 测试集上本文两个模块的检测性能得到了显著提升。本文方法使用两阶段计算注意力增强对小目标特征的关注度,在之后多尺度特征融合中采用特征融合与精炼模块,提取更加精炼的深层次小目标细节特征和语义特征,检测结果达到最佳。最终检测mAP比基准模型提升了4.8 个百分点,APS提升了8.2 个百分点,APM提升了2.5 个百分点,以及APL提升了5.3 个百分点,本文两个模块都改进了小目标检测效果。

图11 是增加不同模块的热力图可视化结果,图中颜色越红代表该区域越受到关注。从图中可以看出增加两阶段计算转换器提升了模型的检测效果,对重要的特征信息进行加权,抑制不重要的特征信息,增强主干网络中小目标的特征提取能力。增加了特征融合与精炼模块之后,整个网络对于小目标的检测变得更加精准和全面,在多尺度特征融合时,对深层特征信息使用逐元素相加和逐元素相乘结合的方式进行特征细化精炼,实验证明这样的检测效果优于按通道拼接操作。热力图的可视化再一次证明了本文方法的有效性。

图11 各模块热力图的可视化Fig.11 Visualization of heat map of each module

3.5.3 高性能评估实验

如表9 所示,本文算法的FPS 达到了24.26,虽然不是最高的,但是也能达到实时的效果。参数量相较于使用Swin Transformer 减小了2.0×106,计算量减小了1.57 GFLOPs。由此可以证明TCT 相较于Swin Transformer 不仅减小了不必要参数的增加,也能进一步说明本文方法的检测优势。使用特征融合与精炼模块后FPS 得到了提升,相比基准YOLOX 提高了1.15帧,这表明了该模块的运行速度优势明显。

表9 本文方法所有模块的性能评估实验结果Table 9 Experimental results of performance evaluation for all modules of proposed method

4 结束语

为了提高小目标检测的准确度,本文提出了两阶段计算Transformer 用于主干网络中进行特征增强,结合不同尺度特征信息并自适应地调整空间细节,以有效地保留容易丢失的小目标特征信息。在之后的多尺度特征融合中,提出了更加高效的特征融合与精炼模块,使用高效残差块提取更加丰富的细节特征信息和上下文语义信息,然后对这些信息进行细化和精炼,提高小目标检测的准确率。通过实验结果可以得出本文算法在PASCAL VOC2007+2012数据集、COCO2017数据集及TinyPerson数据集上表现突出,对小目标的检测性能也有了很大提升。未来将继续探索复杂场景中小目标的检测方法。

猜你喜欢
残差注意力卷积
基于双向GRU与残差拟合的车辆跟驰建模
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
平稳自相关过程的残差累积和控制图