论文地址:https://arxiv.org/pdf/2309.11331.pdf
目录
摘要
1介绍
2 相关研究
2.1 实时物体检测器
2.2 基于Transformer的目标检测
2.3 用于目标检测的多尺度特征
3方法
3.1 准备工作
3.2 低阶gather和distribute分支
3.3 高阶收集和分发分支
3.4 增强的跨层信息流
3.5 掩模图像建模预训练
4 实验
4.1 设置 数据集
4.2 比较
4.3 消融研究
4.3.1 GD结构的消融研究
4.3.2 LAF的消融研究
4.3.3 其他模型和任务的消融研究
5 结论
在过去的几年中,YOLO系列模型已成为实时目标检测领域的领先方法。许多研究通过修改架构、增强数据和设计新的损失函数,将基线推向了一个更高的水平。然而,我们发现先前的模型仍然存在信息融合问题,尽管特征金字塔网络(FPN)和路径聚合网络(PANet)已经缓解了这个问题。因此,本研究提出了一种先进的Gather-and-Distribute(GD)机制,该机制通过卷积和自注意力操作实现。这种新设计的模型名为Gold-YOLO,它增强了多尺度特征融合能力,并在所有模型尺度上实现了延迟和精度的平衡。此外,我们首次在YOLO系列中引入了MAE风格的预训练,使得YOLO系列模型能够从无监督预训练中受益。Gold-YOLO-N在COCO val2017数据集上取得了令人出色的39.9%平均精度(AP),在T4 GPU上的帧率达到了1030 FPS,这超过了之前的SOTA模型YOLOv6-3.0-N,在相似的帧率下提高了2.4%。PyTorch代码可在https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO找到,MindSpore代码可在https://gitee.com/mindspore/models/tree/master/research/cv/Gold_YOLO找到。
目标检测是一项基础的视觉任务,旨在识别物体的类别并定位其位置。它可以广泛应用于智能安防、自动驾驶、机器人导航和医学诊断等各种应用领域。高性能低延迟的目标检测器在边缘设备上的部署越来越受到关注。
在过去几年中,研究人员对基于卷积神经网络的检测网络进行了广泛研究,将目标检测框架逐渐从两阶段(如Faster RCNN和Mask RCNN)演变为一阶段(如YOLO),以及从基于锚点的方法(如YOLOv3和YOLOv4)过渡到无锚点的方法(如CenterNet、FCOS和YOLOX)。通过NAS,研究者研究了[12, 7, 17]最优网络结构的目标检测任务,而[16, 23, 19]则通过蒸馏探索了提高模型性能的另一种方法。特别是YOLO系列模型,单阶段检测模型由于其简单的结构和速度与准确性之间的平衡而在工业界广受欢迎。
骨干网络的改进也是视觉领域中一个重要的研究方向。正如在调研[20]中所描述的,[26, 27, 59, 21]在精度和速度之间取得了平衡,而[9, 35, 22, 18]在精度方面表现出色。这些骨干网络在不同的视觉任务中改进了原始模型的性能,涵盖了从对象检测到更高级的任务。检测到像图像修复这样的低级任务。通过使用具有变换器的编码器-解码器结构,研究人员构建了一系列类似DETR的目标检测模型,例如DETR [3]和DINO [56]。这些模型可以捕捉对象之间的长距离依赖关系,使基于变压器的检测器能够在速度上达到与大多数经典检测器相当或更好的性能。尽管基于变压器的检测器表现出优异的性能,但与基于卷积神经网络(CNN)的模型相比,它们在速度上还有所不足。基于CNN的小型对象检测模型仍然在速度-准确性平衡方面占主导地位,例如YOLOX [11]和YOLOv6-v8[W3e2, f 4oc8,u s1 4o]n。实时对象检测模型,尤其是适用于移动部署的YOLO系列,是主流的实时对象检测器。主流实时对象检测器由三个部分组成:主干网络、中间网络和头网络。主干网络的架构已经得到广泛研究[41, 43, 9, 35],而头网络的架构通常非常简单,由几个卷积或全连接层组成。YOLO系列中的中间网络通常使用特征金字塔网络(FPN)及其变种来融合多级特征。这些中间模块基本上遵循图3所示的架构。然而,当前的信息融合方法存在一个明显的缺陷:当需要在不同层之间整合信息时(例如,融合第1层和第3层),传统的FPN-like结构无法无损传输信息,这妨碍了YOLO的更好信息融合。
基于全球信息融合的概念,TopFormer在语义分割任务中取得了显著的成果。在本文中,我们在TopFormer理论的基础上提出了一种新颖的聚集与分发机制(GD),用于在YOLO中全局融合多层次特征并将全局信息注入到更高层次。这显著提升了脖子部分的信息融合能力,同时并不显著增加延迟,改善了模型在不同对象尺寸上的性能。具体而言,GD机制包括两个分支:一个浅层聚集与分发分支和一个深层聚集与分发分支,分别通过一个基于卷积的块和一个基于注意力的块提取和融合特征信息。为了进一步促进信息流动,我们引入了一个轻量级的相邻层融合模块,该模块在局部范围内结合了相邻层次的特征。我们的Gold-YOLO架构超过了现有的YOLO系列,有效验证了我们提出的方法的有效性。
为了进一步提高模型的准确性,我们还引入了一种预训练方法,其中我们使用MAE方法在ImageNet 1K上预训练主干网络,这显著提高了模型的收敛速度和准确性。例如,我们的预训练Gold-YOLO-S在相似速度下实现了46.4%的AP,优于之前的SOTA YOLOv6-3.0-S的45.0%的AP。
图1:Tesla T4 GPU中最先进的高效目标检测器对比。延迟和吞吐量(批大小为32)是一个方便的参考。(a)和(b)用TensorRT 7和8进行测试;分别。
经过多年的发展,YOLO系列模型已经在实时物体检测领域变得流行起来。YOLOv1-v3 [39, 40, 41] 构建了最初的YOLO模型,实现了单阶段的物体检测检测结构由三个部分组成,骨干-颈部-头部,通过多尺度分支预测不同大小的物体,成为一种代表性的单阶段目标检测模型。YOLOv4[2] 优化了之前使用的darknet骨干结构,并提出了一系列改进,如Mish激活函数、PANet和数据增强方法。YOLOv5 [13] 继承了改进的数据增强策略和更多的模型变体的YOLOv4 [2] 方案。YOLOX [11] 将多正样本、无锚点和解耦头部结合到模型结构中,为YOLO模型设计设定了新的范例。YOLOv6 [32, 31] 首次将重新参数化方法引入到YOLO系列模型中,提出了EfficientRep骨干和Rep-PAN颈部。YOLOv7 [48] 着重分析梯度路径对模型性能的影响,并提出了E-ELAN结构来增强模型的能力而不破坏原始的梯度路径。YOLOv8 [14] 充分发挥了之前YOLO模型的优势,并将它们整合起来,实现了当前YOLO系列的SOTA。
图2:建议的Gold-YOLO架构。
Vision Transformer (ViT)是对广泛用于不同图像识别任务的卷积神经网络(CNNs)的一种有竞争力的替代方法。 DETR [3]将Transformer结构应用于目标检测任务,重构了检测流程,并消除了许多手动设计的部分和NMS组件,简化了模型设计和整体流程。结合可变形卷积的稀疏采样能力和Transformer的全局关系建模能力,Deformable DETR [61]提高了收敛速度,同时提高了模型的速度和准确性。DINO [56]首次引入了对比去噪、混合查询选择和向前两次方案。最近的RT-DETR [36]改进了编码器-解码器结构,以解决缓慢的DETR-like模型问题,在准确性和速度上超越了YOLO-L/X。然而,DETR-like结构的局限性阻碍了它在小型模型领域展示足够的优势,而YOLO仍然是准确性和速度平衡的SOTA。
传统上,不同层级的特征携带了关于不同大小对象的位置信息。较大的特征包含低维纹理细节和较小对象的位置。相反,较小的特征包含高维信息和较大对象的位置。Feature Pyramid Networks (FPN) [34] 最初的想法是,通过相互协助来增强网络性能。FPN通过跨尺度连接和信息交换提供了一种有效的体系结构设计,从而提高了各种大小对象的检测精度。
在FPN的基础上,Path Aggregation Network (PANet) [49] 集成了一个自底向上的路径,使不同层级之间的信息融合更加充分。同样,EfficientDet [44] 提出了一个可重复使用的模块(BiFPN),以增加不同层级之间信息融合的效率。M2Det [60]引入了一个具有U形和特征融合模块的高效MLFPN架构。Ping-Yang Chen [5]通过使用双向融合模块改善了深层和浅层之间的交互。与这些层间工作不同的是,[37]使用集中式特征金字塔(CFP)方法探索了单独的特征信息。此外,[53]将FPN扩展为具有非相邻层之间交互的渐进特征金字塔网络(AFPN)。针对FPN在检测大对象方面的局限性,[30]提出了一个改进的FPN结构。YOLO-F [6]实现了。然而,由于网络中存在过多的路径和间接的交互方法,传统的FPN融合结构在速度慢、跨层信息交换和信息损失方面仍然存在缺陷。
图3:(a)是传统颈部信息融合结构示例图。(b)及(c)为AblationCAM[38]可视化
YOLO系列的颈部结构如图3所示,采用传统的FPN结构,包括多个分支用于多尺度特征融合。然而,它只能充分融合相邻层级的特征,对于其他层级的信息,只能间接地递归获取。在图3中,显示了传统FPN的信息融合结构:现有的第1、2和3层级从上到下排列。FPN用于不同层级之间的融合。当第1层级需要从其他两个层级获取信息时,存在两种不同的情况:
1)如果第1层级需要利用第2层级的信息,它可以直接访问和融合这些信息。
2)如果第1层级想要使用第3层级的信息,第1层级应该递归地调用相邻层级的信息融合模块。具体来说,必须首先融合第2层级和第3层级的信息,然后通过将第2层级的信息组合起来,第1层级可以间接获得第3层级的信息。
这种传输模式可能导致在计算过程中丢失大量信息。层级之间的信息交互只能交换被中间层级选择的信息,未被选择的信息在传输过程中被丢弃。这导致特定层级的信息只能充分辅助相邻层级,并减弱对其他全局层级的辅助。因此,信息融合的整体效果可能受到限制。
为了避免传统FPN结构在传输过程中的信息损失,我们放弃了原始的递归方法,构建了一种新颖的聚集和分发机制(GD)。通过使用统一的模块来聚集和融合所有层级的信息,然后将其分发到不同的层级,我们不仅避免了传统FPN结构中固有的信息损失,还增强了颈部部分信息融合的能力,而不会显著增加延迟。因此,我们的方法可以更有效地利用骨干网络提取的特征,并且可以轻松地集成到任何现有的骨干-颈部-头部结构中。
在我们的实现中,gather和distribute过程涉及到三个模块:特征对齐模块(FAM),信息融合模块(IFM)和信息注入模块(Inject)。
• gather过程包括两个步骤。首先,FAM从不同的层级收集和对齐特征。其次,IFM融合对齐的特征以生成全局信息。
• 在从gather过程获取融合的全局信息后,inject模块将此信息分配到每个层级,并使用简单的注意力操作进行注入,从而增强分支的检测能力。
为了增强模型对不同尺寸对象的检测能力,我们开发了两个分支:低阶gather和distribute分支(Low-GD)和高阶gather和distribute分支(High-GD)。这些分支分别提取和融合大尺寸和小尺寸特征图。详细信息请参见4.1和4.2节。如图2所示,neck的输入包括由backbone提取的特征图B2、B3、B4、B5,其中Bi ∈ RN×CBi×RBi。批量大小由N表示,通道数由C表示,维度由R = H × W表示。此外,RB2、RB3、RB4和RB5的维度分别为R、12R、14R和18R。
在该分支中,从backbone中选择输出B2、B3、B4、B5特征进行融合,以获取保留小目标信息的高分辨率特征。结构如图4(a)所示。
低阶特征对齐模块。在低阶特征对齐模块(Low-FAM)中,我们采用平均池化(AvgPool)操作对输入特征进行下采样和统一大小。通过将特征调整为组中最小特征大小(RB4 = 14R),我们获得Falign。低阶FAM技术在最小化计算复杂度的同时,确保信息的高效聚合,并用于后续处理的转换器模块。
目标对齐大小的选择基于两个相互冲突的考虑:(1)为了保留更多的低级信息,较大的特征尺寸更好;然而,(2)随着特征尺寸的增加,后续块的计算延迟也会增加。为了控制neck部分的延迟,需要保持较小的特征尺寸。
因此,我们选择RB4作为特征对齐的目标尺寸,以在速度和准确性之间取得平衡。
低阶信息融合模块。低阶信息融合模块(Low-IFM)设计包括多层可参数化卷积块(RepBlock)和分裂操作。具体而言,RepBlock以Falign(通道= sum(CB2,CB3,CB4,CB5))为输入,生成Ffuse(通道= CB4 + CB5)。中间通道是可调节的值(例如256),以适应不同的模型大小。由RepBlock生成的特征随后在通道维度上分割为Finj_P3和Finj_P4,然后与不同层级的特征融合。
公式如下:
信息注入模块。为了更有效地将全局信息注入到不同层级中,我们从分割经验中汲取灵感,并采用注意力操作来融合信息,如图5所示。具体而言,我们输入本地信息(指当前层级的特征),以及全局注入信息(由IFM生成),分别表示为Flocal和Finj。我们使用两个不同的Convs来使用Finj进行计算,得到Fglobal_embed和Fact。而使用Conv使用Flocal计算Flocal_embed。然后,通过注意力计算融合特征Fout。由于Flocal和Fglobal之间的尺寸差异,我们使用平均池化或双线性插值对Fglobal_embed和Fact进行缩放,以使其与Finj的尺寸对齐。在每个注意力融合的最后,我们还添加了RepBlock来进一步提取和融合信息。在低阶段,Flocal等于Bi,所以公式如下:
高GD将由低GD生成的特征{P3,P4,P5}融合在一起,如图4(b)所示。
图4:收集-分布结构。(a)中,Low-FAM和Low-IFM是低阶段特征下层支路的对齐模块和下层支路的信息融合模块。(b),High-FAM和High-IFM是高级特征对准模块和高级信息模块,分别为融合模块。
高阶特征对齐模块。高阶特征对齐模块(High-FAM)由avgpool组成,用于将输入特征的维度减小到统一的尺寸。具体而言,当输入特征的尺寸为{RP 3,RP 4,RP 5}时,avgpool将特征尺寸减小到该组特征中最小的尺寸(RP 5 = 18R)。由于变压器模块提取了高级信息,池化操作有助于信息聚合,同时减少了变换器模块后续步骤的计算需求。
高阶信息融合模块。高阶信息融合模块(High-IFM)包括变压器块(下面会更详细地解释)和一个分割操作,其中包括三个步骤:(1) 使用变压器块将从High-FAM获得的Falign组合起来,得到Ffuse。(2) 通过Conv1×1操作将Ffuse通道减少到sum(CP 4, CP 5)。(3) 通过分割操作将Ffuse沿通道维度划分为Finj_N4和Finj_N5,然后用于与当前层级特征进行融合。
公式如下:
等式8中的变压器融合模块包含若干个堆叠的变压器,其中变压器块的数量用L表示。每个变压器块包括一个多头注意力块、一个前馈网络(FFN)和残差连接。为了配置多头注意力块,我们采用了与LeViT [15]相同的设置,将关键字K和查询Q的头部维度分配为D(例如,16)通道,而V = 2D(例如,32)通道。为了加速推理过程,我们用批归一化替代了速度不友好的操作,即层归一化,用于每个卷积,并将所有GELU激活替换为ReLU。这减小了变压器模块对模型速度的影响。为了建立我们的前馈网络,我们遵循[28, 55]中提出的构建FFN块的方法。为了增强变压器块的局部连接,我们在两个1x1卷积层之间引入了深度可分离卷积层。我们还将FFN的扩展因子设置为2,以平衡速度和计算成本。
图5:信息注入模块和轻量级相邻层融合(LAF)模块
信息注入模块。在High-GD中,信息注入模块与Low-GD中完全相同。在高阶段,Flocal等于Pi,因此公式如下:
仅使用全局信息融合结构,我们已经取得了比现有方法更好的性能。为了进一步提高性能,我们从YOLOv6 [31]中的PAFPN模块获得启示,并引入了Inject-LAF模块。该模块是注入模块的增强版本,包括一个轻量级相邻层融合(LAF)模块,添加到注入模块的输入位置。 为了在速度和准确性之间取得平衡,我们设计了两个LAF模型:LAF低层模型和LAF高层模型,分别用于低层注入(合并相邻两层的特征)和高层注入(合并相邻一层的特征)。它们的结构如图5(b)所示。 为了确保来自不同层级的特征图与目标大小对齐,我们的实现中的两个LAF模型仅使用三种运算符:双线性插值对太小的特征进行上采样,平均池化对太大的特征进行下采样,1x1卷积对与目标通道不同的特征进行调整。 我们模型中的LAF模块与信息注入模块的结合有效地平衡了准确性和速度之间的关系。通过使用简化的操作,我们能够增加不同层级之间的信息流路径数量,从而提高性能而不显著增加延迟。
最近的方法,如BEiT [1]、MAE [24]和SimMIM [51],已经证明了掩模图像建模(MIM)对视觉任务的有效性。然而,这些方法并非专门为卷积网络(convnets)定制。SparK [45]和ConvNeXt-V2 [50]是在探索掩模图像建模在卷积网络中的潜力方面的先驱。
在这项研究中,我们采用了基于SparK [45]方法的MIM预训练,成功地识别并克服了将MAE风格的预训练成功扩展到卷积网络(convnets)时的两个关键障碍。这些挑战包括卷积操作无法处理不规则和随机遮罩的输入图像,以及BERT预训练的单尺度性质与卷积网络的分层结构之间的不一致性。 为了解决第一个问题,未遮罩的像素被视为3D点云的稀疏体素,并采用稀疏卷积进行编码。对于后一个问题,我们开发了一个分层解码器,用于从多尺度编码特征中重建图像。该框架采用UNet风格的架构来解码多尺度稀疏特征图,其中所有空间位置都填充有嵌入式掩码。我们在ImageNet 1K上为多个Gold-YOLO模型的主干进行预训练,取得了显著的改进。
表1:在COCO 2017验证集上与其他YOLO系列检测器的比较。FPS和延迟以FP16精度在相同环境中的Tesla T4上进行测量,使用TensorRT 7。我们所有的模型都进行了300轮的训练。我们的模型的准确性和速度性能都是在输入分辨率为640x640的情况下评估的。'†'表示使用了自蒸馏方法,'⋆'表示使用了MIM预训练方法。
我们在Microsoft COCO数据集上进行了广泛的实验证明了提出的检测器的有效性。在消融研究中,我们在COCO train2017上进行训练,并在COCO val2017数据集上进行验证。我们使用标准的COCO AP度量,以单一尺度图像作为输入,并在不同IoU阈值和目标尺度下报告标准的平均精度(AP)结果。 实现细节。我们遵循了YOLOv6-3.0 [31]的设置,使用相同的结构(除了neck)和训练配置。网络的主干采用了EfficientRep Backbone,而头部采用了Efficient Decoupled Head。优化器学习计划和其他设置也与YOLOv6相同,即使用带有动量和余弦衰减学习率的随机梯度下降(SGD)。我们使用了热身(warm-up)、分组权重衰减策略和指数移动平均(EMA)。自蒸馏和锚辅助训练(AAT)也在训练中使用。我们采用了强大的数据增强,包括Mosaic [2, 13]和Mixup [57]。 我们在1.28百万张ImageNet-1K数据集上对主干进行了MIM无监督预训练 [8]。遵循Spark [45]中的实验设置,我们使用了LAMB优化器 [54] 和余弦退火学习率策略,遮罩比例为60%,遮罩补丁大小为32。对于Gold-YOLO-L模型,我们采用了批量大小为1024,而对于Gold-YOLO-M模型,采用了批量大小为1152。由于其小型主干的容量有限,Gold-YOLO-N未使用MIM预训练。 所有我们的模型都在8个NVIDIA A100 GPU上进行训练,速度性能是在搭载TensorRT的NVIDIA Tesla T4 GPU上测量的。
我们的重点主要是评估模型在部署后的速度性能。具体来说,我们测量吞吐量(每秒帧数,批量大小为1或32)和GPU延迟,而不是FLOPs或参数数量。为了比较我们的Gold-YOLO与YOLO系列中其他最先进的检测器,如YOLOv5 [13]、YOLOX [11]、PPYOLOE [52]、YOLOv7 [48]、YOLOv8 [14]和YOLOv6-3.0 [31],我们在相同的Tesla T4 GPU上使用TensorRT测试了所有官方模型的FP16精度的速度性能。
Gold-YOLO-N展示了显著的进步,相比YOLOv8-N、YOLOv6-3.0-N和YOLOv7-Tiny(输入大小=416),分别提高了2.6%/2.4%/6.6%,同时在吞吐量和延迟方面提供了可比较或更优越的性能。与YOLOX-S和PPYOLOE-S相比,Gold-YOLO-S在速度更快(50/27 FPS,批量大小为32)的情况下,AP分别提高了5.9%/3.1%。
Gold-YOLO-M在准确性方面超过了YOLOv6-3.0-M、YOLOX-M和PPYOLOE-M,分别提高了1.1%、4.2%和2.1%的AP,并且速度相当。此外,与YOLOv5-M和YOLOv8-M相比,它分别提高了5.7%和0.9%的AP,同时达到更高的速度。Gold-YOLO-M相对于YOLOv7的性能提升显著,速度提高了98FPS(批量大小=32),同时保持相同的AP。
Gold-YOLO-L相对于YOLOv8-L和YOLOv6-3.0-L也实现了更高的准确性,分别提高了0.4%和0.5%的准确性优势,同时在批量大小为32时保持了相似的FPS。
为了验证我们关于FPN的分析的有效性,并评估所提出的汇聚和分发机制的功效,我们独立地研究了GD中的每个模块,关注AP、参数数量和在T4 GPU上的延迟。Low-GD主要针对小型和中型目标,而High-GD主要检测大型目标,而LAF模块增强了这两个分支。实验结果显示在表2中。
表2:GD结构的消融研究。测试模型为Gold-YOLO-S,在T4 GPU上进行评估。
在这个消融研究中,我们进行了实验,比较了LAF框架内不同模块设计的效果,并评估了不同模型大小对准确性的影响。我们的研究结果为支持现有的LAF结构确实是最优的提供了证据。模型1和模型2之间的差异在于LAF是使用add还是concat,而模型3在模型2的基础上增加了模型的大小。模型4基于模型3但舍弃了LAF。实验结果显示在表3中。
表3:LAF的消融研究。使用TensorRT 7在T4 GPU上进行评估。
GD机制是一个通用的概念,可以应用于YOLO之外的其他模型。我们已经将GD机制扩展到其他模型,并取得了显著的改进。 在实例分割任务中,我们替换了Mask R-CNN中的不同neck,并在COCO实例数据集上进行训练/测试。结果如表4所示。
表4:实例分割任务的消融研究。
在语义分割任务中,我们替换了PointRend中的不同neck,并在Cityscapes数据集上进行训练/测试。结果如表5所示。
表5:语义分割任务的消融研究。
在目标检测任务中,我们替换了EfficientDet中的不同neck,并在COCO数据集上进行训练/测试。结果如表6所示。
表6:GD机制在其他目标检测模型上的性能。
本文重新审视了传统的特征金字塔网络(FPN)架构,并对其在信息传递方面的限制进行了批判性分析。随后,我们开发了Gold-YOLO系列模型,用于目标检测任务,取得了最先进的结果。在Gold-YOLO中,我们引入了一种创新的汇聚和分发机制,经过精心设计,旨在增强信息融合和传递的效力和效率,避免不必要的损失,从而显著提高了模型的检测能力。我们真诚希望我们的工作能够在解决现实问题方面发挥价值,并且也可能激发该领域的研究人员产生新的思路。