嵌入式设备上的高性能目标检测 Octave-YOLO | 自注意力模块与 CFPNe t架构的高效融合 !

技术

点击下方卡片,关注「集智书童」公众号

点击加入👉「集智书童」交流群

picture.image

picture.image

picture.image

picture.image

picture.image

想要了解更多:

前沿AI视觉感知全栈知识👉「分类、检测、分割、关键点、车道线检测、3D视觉(分割、检测)、多模态、目标跟踪、NerF」

行业技术方案 👉「AI安防、AI医疗、AI自动驾驶」

AI模型部署落地实战 👉「CUDA、TensorRT、NCNN、OpenVINO、MNN、ONNXRuntime以及地平线框架」

欢迎扫描上方二维码,加入「 集智书童-知识星球 」,日常分享论文、学习笔记、问题解决方案、部署方案以及全栈式答疑,期待交流!

免责声明

凡本公众号注明“来源:XXX(非集智书童)”的作品,均转载自其它媒体,版权归原作者所有,如有侵权请联系我们删除,谢谢。

picture.image

尽管目标检测算法取得了快速进展,但在嵌入式设备上处理高分辨率图像仍然是一个重大挑战。理论上,当前实时目标检测器中使用的全卷积网络架构能够处理所有输入分辨率。

然而,处理高分辨率图像所需的大量计算资源使得它们在实际应用中难以实现实时性。为了解决这个问题,实时目标检测模型通常在推理时对输入图像进行下采样,这导致了细节的丢失和准确度的降低。

对此,作者开发了Octave-YOLO,旨在嵌入式系统的约束下实时处理高分辨率图像。作者通过引入跨频率部分网络(CFPNet)实现了这一点,该网络将输入特征图划分为低分辨率、低频和高分辨率、高频部分。这种配置使得复杂的操作,如卷积瓶颈和自注意力机制,能够仅在低分辨率特征图上进行,同时在高分辨率图上保留细节。

值得注意的是,这种方法不仅显著减少了卷积任务的计算需求,而且还允许以极小的额外成本集成通常在实时应用中难以实现的注意力模块。此外,作者将深度可分离卷积纳入核心构建块和下采样层中,以进一步降低延迟。实验结果表明,Octave-YOLO在计算需求显著减少的同时,性能与YOLOv8相当。

例如,在1080x1080分辨率下,Octave-YOLO-N的速度是YOLOv8的1.56倍,在COCO数据集上实现了几乎相同的准确度,同时参数和FLOPs减少了大约40%。

1 Introduction

实时目标检测在计算机视觉领域扮演着至关重要的角色,旨在准确迅速地识别图像中物体的类型和位置。这项技术在自动驾驶、机器人、物体追踪、无人机等多个实际应用中得到了广泛利用。近年来,深度学习算法的出现显著提高了目标检测系统学习图像中复杂模式的能力,从而增强了检测的准确性和鲁棒性。尽管在利用目标检测的嵌入式设备上获取高分辨率图像很容易,但由于计算和内存的限制,实时检测仍然需要将原始高分辨率图像降采样到如640x640或512x512的低分辨率。这导致了详细信息丢失,降低了检测较小物体的能力,从而影响了整体准确性。

本研究旨在克服这些限制,并在受限制的嵌入式环境中提高YOLO在高分辨率设置下的推理速度。作者提出了跨频率部分网络(CFPNet)结构,该结构通过将输入特征图分割成高频高分辨率部分和低频低分辨率部分进行处理。这种方法使得模型在推理和训练期间能够在低频低分辨率域进行复杂计算,同时保留高分辨率信息,以高效率实现具有竞争力的性能。此外,作者积极采用深度可分离卷积以减少计算冗余,进一步降低延迟。

picture.image

作者的具体贡献包括:

  • 频率可分离块(FSB). 对YOLOv8的C2f模块的增强,FSB利用CFPNet将输入特征图划分为高频和低频分量。这个块只通过卷积瓶颈处理低频部分,通过集成深度可分离卷积进行空间和通道分离,优化卷积效率。
  • 频率可分离自注意力(FSSA). 为了提高效率,作者用FSSA模块替换了传统自注意力机制,后者在计算和内存上通常较为沉重。通过CFPNet分割特征图,只有低分辨率低频分量接受自注意力处理。这种修改有效地将全局表示能力以极小的额外成本集成到YOLO中,从而提升了模型性能。
  • 深度可分离降采样. 作者用深度可分离卷积替换标准的3x3卷积,明确了分辨率降低和通道增加的任务,在降采样时保留信息并减少延迟。

采用这些方法,作者成功开发了一系列实时端到端目标检测器,命名为Octave-YOLO-N / S / M / B / L / X。如图1所示,在COCO数据集等基准上的广泛测试表明,Octave-YOLO在各个尺度上显著超过了之前模型在计算准确性权衡方面的表现。值得注意的是,作者的Octave-YOLO-N/S模型与YOLOv8-N/S相比保持了稍好的性能,同时在处理高分辨率延迟方面大约快了1.56倍。此外,较大的Octave-YOLO-X模型与YOLOv8-X相比,参数减少了58.35%,操作减少了45.65%。

2 Related Work

Frequency Domain Vison Tasks

在计算机视觉领域,像在频域内进行多尺度特征融合的方法已经得到了广泛的研究。在深度学习出现之前,多尺度表示已经被用于局部特征提取,如SIFT特征。在深度学习时代,这些表示因其鲁棒性和泛化能力而继续发挥关键作用。

FPN [23]和PSP [32]等框架在网络的末端集成不同深度的卷积特征,用于目标检测和分割任务。MSDNet [19]和HR-Nets [33]引入了具有多个分支的网络架构,每个分支保持各自的空间分辨率,从而允许进行不同尺度的处理。

徐等人 [41] 提出了一种在频域内学习计算机视觉任务的新方法。他们使用输入图像的离散余弦变换(DCT)作为卷积网络的输入。这种方法在计算机视觉任务中展示了满意的结果,即使大部分参数被剪枝,准确度也只有轻微下降。钟等人 [44] 通过集成频域和像素域信息,在目标检测中实现了高准确度,增强了检测能力。蔡等人 [3] 开发了一种用于图像翻译的鲁棒方法,通过将基于GAN [17]的图像到图像翻译分解为低频和高频组件,并在同一频域内处理它们。

此外,多尺度视觉 Transformer [10] 通过适应不同尺度的图像,在视觉 Transformer (ViT)架构中展示了其有效性。这是通过多头池化注意力模块实现的,该模块可以通过池化层处理不同尺度的输入,从而提高了模型在不同图像分辨率下的适应性和性能。

八度卷积 [5] 应运而生,旨在提高计算机视觉模型的效率和准确度,可以在降低计算成本的同时提取各种频率的特征。与标准卷积不同,八度卷积考虑了卷积网络的输入和输出特征图中的高频和低频组件,如图2所示。低频组件捕捉目标的总体形状和结构特征,但通常存在冗余。高频组件用于捕捉边缘和详细纹理。在八度卷积中,低频组件指的是通过池化得到的特征图,而高频组件指的是没有经过池化的原始特征图。由于低频组件的冗余性,其特征图大小被设定为高频组件的一半。八度卷积可以替代传统的卷积操作,通常在减少计算量的同时实现更高的性能,因为低频特征图的分辨率是原始分辨率的一半。值得注意的是,尽管低频特征图的分辨率降低,但使用与普通卷积相同大小的卷积核,实际上可以有效地将感受野加倍。

picture.image

除了在计算和内存上节省显著,八度卷积通过扩大感受野大小,增强了识别性能,这有助于高低频率之间的有效沟通,并捕捉更多全局信息。

在八度卷积中,从输入中提取高频和低频信息,并将这些组件融合以创建新的高低频输出。通过调整和等超参数来控制输入和输出中高低频特征图的比例。将这些参数设置为0或1,使得网络只能接收高频输入或只产生低频输出。这种参数设置的灵活性允许对卷积过程进行微调,以针对特定任务或计算效率进行优化。

Object Detection

一般目标检测旨在给定输入图像中定位预定义的目标,并同时对目标的类别进行分类。目前,已经提出了各种基于深度学习的方法来解决目标检测问题。这些方法可以大致分为两类:两阶段检测器和单阶段检测器。

两阶段检测器主要基于R-CNN[13],在第一阶段通过区域 Proposal 提取区域,然后根据推理的概率值将提取的区域分配到不同的类别。随后,基于R-CNN[13]提出了更高效的模型,如fast R-CNN[12]、faster R-CNN[31]、mask R-CNN[18]和cascade R-CNN[3]。然而,尽管这些两阶段检测器的性能非常出色,但它们的延迟较长,速度较慢。

为了克服这些问题,研究者们开始研究单阶段检测器。常见的单阶段检测器包括SSD[27]、YOLO系列[2, 14, 15, 22, 37]、Retina-Net[24]等。这些检测器不区分区域 Proposal 和分类,而是将它们视为单一回归问题。

除了基于CNN的架构,近期研究还出现了基于Transformer的架构。基于Transformer的目标检测器(DETRs)[4]通过移除手工制作组件(如非极大值抑制(NMS))简化了目标检测流程,并实现了端到端的目标检测。然而,DETRs的高计算成本使其难以实现实时目标检测。尽管已经提出了一些实时目标检测器,如RT-DETR[29],但DETR系列目标检测器在没有相应领域的预训练模型的情况下很难应用到新领域,因此最广泛使用的实时目标检测器仍然是YOLO系列。

YOLO Series

YOLO系列作为代表性的单阶段目标检测器,最初在2015年发表[30]。它使用单个神经网络完成目标检测问题中的所有必要步骤。因此,它不仅实现了非常好的检测性能,还实现了实时速度。YOLOv4[2]在 Backbone 结构中引入了CSP网络[38],以提高CNN的学习能力,使网络在保持特征图估计准确性的同时变得轻量化。此外,还引入了PAFPN[26]模块到网络的 Neck 结构中。

YOLOv5[14]在 Backbone 网络的起始结构中引入了聚焦模块,以加快输入图像的处理速度。YOLOX[11]仍然使用CSP-DarkNet作为其 Backbone 网络,但用SiLU[8]替换了ReLU[16],以解决梯度方差问题。作者还引入了解耦头,分别实现置信度和边界框回归预测,并使用SimOTA实现了 Anchor-Free 点检测Head。YOLOv6[22]将EfficientRep[40]作为网络的 Backbone 。YOLOv7[37]将E-ELAN结构引入到 Backbone 网络中,用于高效的多尺度特征训练。作者将E-ELAN结构融入到他们的研究中,通过管理最短和最长梯度路径,促进了网络的有效学习和收敛。Jocher等人[15]提出了YOLOv8。作者引入了C2f模块作为 Backbone 配置模块。YOLOv9[39]提出GELAN来改进架构,并引入PGI来增强训练过程。YOLOv10[35]建议在无需NMS的训练中使用一致的双重分配,以实现高效的端到端检测。这些YOLO系列使用CSPNet或ELAN及其变体作为主要的计算单元。

Cross stage partial network (CSPNet)

王等人引入了一种新的卷积神经网络 Backbone 结构,即跨阶段部分网络(CSPNet)[38],该结构专为高效视觉任务设计。CSPNet的主要目标是在增强模型学习能力的同时,减少不必要的冗余计算。如图3.(a)所示,这是通过将基础层的特征图分割成两部分,并分别处理每一部分以分割梯度流来实现的。CSPNet通过在层间部分整合和转换特征图,实现梯度的更丰富组合。这种架构特别适合于在计算资源有限的设备上需要快速推理时间的现实应用。它均匀地分配网络各层的计算负载,并减少内存成本。实际上,通过CSPNet生成的特征金字塔显著降低了内存使用,节省了昂贵的DRAM的制造成本和所需空间。此外,CSPNet在训练过程中防止梯度信息的重复,确保梯度流的多样性,这反过来又使得网络能更高效地学习。这最终提高了模型的准确性和推理速度。在本文中,作者使用八度卷积将特征图分离并整合到高分辨率和低分辨率频率域中。

picture.image

3 Methodology

作者设计了实验设置,以探究不同因素对人工智能模型性能的影响。实验设计分为三个主要阶段:数据收集、数据预处理和模型训练与评估。

Cross frequency partial network (CFPNet)

作者首先受到八度卷积和CSPNet[38]的启发,提出了一种跨频率部分网络(CFPNet)结构。该结构将特征图分为高频和低频部分,并对它们进行不同的处理,以减少冗余计算并提高效率。如图3.(a)所示的传统的CSPNet,将输入层的特征图沿通道轴分为两部分。一部分通过计算块,另一部分与处理过的特征图结合后进入下一阶段。这个计算块可以是任何计算块,如卷积块、注意力块或残差块。另一部分直接穿越整个阶段,然后与经过计算块的部分整合。由于只有部分特征图进入计算块进行处理,这种设计有效地减少了设计变量、操作、内存流量和峰值内存的数量,使系统能够实现更快的推理速度。作者通过整合八度卷积,沿频率轴而不是通道轴分割和结合特征图,增强了这种高效的CSPNet。如图3.(b)所示,作者用八度卷积替换了传统CSPNet中分割和结合特征图的全过程。八度卷积通过参数和,轻松控制输入和输出中高频和低频特征图的比率。

具体来说,作者首先使用设置为零的的八度卷积将输入层的特征图分为高频和低频特征图。随后,低频部分通过计算块,并与处理过的低频特征图结合进入下一阶段。高频部分直接穿越整个阶段,不经过复杂的计算过程,并与经过计算块的低频部分整合。在这个过程中,使用设置为零的的八度卷积跨频率融合低频和高频特征图,恢复输入层的原始分辨率,且具有没有多频率的普通特征表示。

作者的方法不仅涉及只传递部分特征图,而且由于具有高频部分一半分辨率的低频特征图通过计算块,因此比传统CSPNet具有更好的效率。此外,通过增大感受野大小,它有助于低频与高频之间的有效通信,并捕获更多全局信息,这可以增强识别性能。作者将这种CFPNet结构应用于YOLO的构建块和自注意力模块,实现了在不过度牺牲性能的情况下提高效率。

Frequency separable block (FSB)

图4:(a)在YOLOv8中使用的原始C2f构建块。(b)频率可分块(FSB)。(c)频率可分自注意力模块(FSSA)。

picture.image

除了干细胞和下采样层之外,YOLO通常在所有阶段通过相同结构的卷积构建块从输入特征图中提取特征和学习模式。YOLOv5中引入的C3块,它结合了CSPNet和YOLOv8中提出的C2f块(图4.(a)),采用了ELAN [42],这两种结构都是朝向有效的特征提取和融合的努力。它们通过将输入特征图分成两部分,并通过多样化的梯度路径分别处理这两部分,旨在同时提高性能和计算效率。然而,这些设计只考虑了通道 Level 的分离,并没有解决多尺度特征表示问题。作者将之前介绍的CFPNet应用于设计高效的基础构建块。作者提出了如图4.(b)所示的频率可分块(FSB),这是对YOLOv8中C2f模块的增强。与YOLOv8中的C2f模块类似,但作者不是采用分裂,而是使用八度卷积将输入特征图划分为高频和低频部分,只允许低频部分通过卷积瓶颈。此外,受到Xception [6]的启发,作者在瓶颈中引入了深度可分卷积,以实现更高效、更快速的运算,通过深度卷积分离空间混合,通过逐点卷积分离通道混合。最后,作者再次使用八度卷积将处理过的低频部分与保留的高频部分融合。因此,作者实现了FSB,这是一个在模型中广泛使用的、效率极高且性能下降最小的构建块。

Frequency separable self-attention (FSSA)

自注意力机制[34]因其卓越的全局上下文理解能力,已在各种视觉任务[28, 9]中得到广泛应用。然而,在实时目标检测领域,自注意力计算所带来的高计算成本和内存消耗一直是个挑战。在YOLOv10[35]中,提出了部分自注意力方法以解决这一问题。他们将整个通道的特征在11卷积后分成两等份,只将其中一份送入注意力计算块。作者通过采用CFPNet结构提出了一种改进方法——频谱可分自注意力(FSSA)模块,如图4(c)所示。首先,输入特征图通过八度卷积被分为低频和高频两部分。随后,只有低分辨率低频特征图送入自注意力计算块,该块由多头自注意力(MHSA)和前馈网络(FFN)组成。这

两部分再通过八度卷积连接和融合。此外,作者将MHSA中的LayerNorm[1]替换为BatchNorm[20],以加快推理速度,并防止由于二次计算复杂度引起的过度开销,仅在最低分辨率主干网的最后阶段之后放置。通过仅在低分辨率低频特征图上进行操作,作者的FSSA模块以极低的成本将全局表征能力集成到模型中,显著提升了性能。由于低频特征图主要捕捉全局信息,低分辨率特征图大幅降低了MHSA操作的复杂度,这些操作具有二次计算需求,而且没有显著影响MHSA在提取全局信息方面的性能。

Depthwise separable downsampling

通常,YOLO网络在主干和 Neck 使用标准的三乘三卷积,并具有2的步长,以同时降低分辨率并增加通道数。与FSB中使用的深度分离瓶颈类似,作者通过深度可分离卷积将分辨率降低和通道增加的任务分开,实现了一个更高效的降采样层。这种方法在降采样时保留了信息,同时降低了延迟。

4 Experiment

在本节中,作者将介绍实验设置、数据集描述、实现细节以及从作者方法获得的结果分析。

Implementation Details

作者使用来自COCO [25]的训练和验证数据集大约训练了网络500个周期。采用了SGD优化器。初始学习率为1E2,最终学习率为1E-5,采用余弦调度器,权重衰减为5E3。动量为0.937。在训练过程中,作者以批处理大小64进行了500个周期的训练,输入网络的图像被缩放至640×640像素。在实验中,作者使用Ubuntu 20.04.1作为操作系统,Python 3.10、PyTorch 2.2.0和Cuda 11.7作为桌面计算软件环境。实验选用的硬件为NVIDIA RTX 3090显卡。神经网络的实现代码是基于Ultralytics 8.1.24版本进行修改的。所有模型的延迟是在配备ONNX运行时[7]的NVIDIA RTX 3090 GPU上测试的。

Comparison in resolution

表1展示了在多种分辨率下,Octave-YOLO与YOLOv8之间的延迟对比。当输入图像处于较低分辨率320时,Octave-YOLO与YOLOv8之间的延迟差异很小。然而,随着输入图像分辨率的提升,延迟差异逐渐增大。特别是在1080分辨率下,Octave-YOLO显示出显著的差异,延迟减少了超过3.7毫秒。这归功于以CFPNet为中心的Octave-YOLO设计,使其能够更有效地处理较低分辨率下的复杂计算。

picture.image

Comparison with state-of-the-arts

如表2所示,作者的Octave-YOLO在几乎与现有技术水平相当的性能下,实现了更短的端到端延迟和更低的各种模型规模下的计算成本。作者首先将Octave-YOLO与基准模型YOLOv8进行比较。在N/S/M/L/X五个变体上,作者的Octave-YOLO实现了43.75% / 40.18% / 53.67% / 58.35% / 58.36%的参数减少,仅用-0.54% / -0.22% / 1.78% / 1.13% / 1.86%的准确度下降,便达到了39.08% / 42.31% / 45.50% / 45.55% / 45.65%的计算量减少。此外,对于较小尺寸的N和S模型,准确度甚至有所提高。与其它YOLO模型相比,Octave-YOLO在准确度与计算成本之间的权衡表现更为优越。

picture.image

随着摄影技术的进步,普通大众使用无人机或智能手机获取4K或更高分辨率图像已不是难事。然而,由于实时目标检测受到内存和计算能力的限制,大多数检测器在推理时会将图像下采样到较小的分辨率,如640x640或320x320,这可能会损害图像的细节部分并影响准确度。另一方面,Octave-YOLO在较低分辨率下进行计算的同时保留了高分辨率特征图,即使在较高分辨率下也能实现可接受的推理速度。

Model Analyses

4.4.1 Ablation study.

作者在表3中展示了Octave-YOLO-N的消融实验结果。最初,引入带有FSB和深度可分离瓶颈的CFPNet,在保持36.5% AP的竞争力的性能的同时,将延迟减少了0.96毫秒。此外,深度可分离下采样使得参数减少了0.5M,GFLOPs减少了1.0,延迟减少了0.25毫秒,有效证明了其影响。进一步地,通过引入FSSA模块,作者仅在0.1 GFLOPs和0.17毫秒的额外开销下,实现了0.2 AP的提升,展示了与原始YOLOv8几乎相同的性能。

4.4.2 深度可分离瓶颈分析。

picture.image

在表4中,作者将FSB中引入的深度可分离瓶颈作为计算块与C2f中使用的传统瓶颈进行了比较。使用深度可分离瓶颈相比于传统瓶颈,AP损失了0.3,但在延迟上实现了44毫秒的改进。作者利用深度可分离瓶颈来提升模型的效率。

picture.image

4.4.3 Analyses for FSSA.

作者引入了FSSA,通过在极小的额外成本下融入全局建模能力来提升性能。首先,作者基于Octave-YOLO-N验证了其有效性。具体而言,最初作者引入了一个传统的 Transformer 块,它通过CFPNet使用所有的特征图,而无需频域分割,包括MHSA后接FFN,并将其称为Trans。如表格5所示,尽管传统的 Transformer 块相较于FSSA展现出稍好的性能,但它带来了无法管理的0.75毫秒的额外开销。相比之下,FSSA在几乎可以忽略的延迟增加0.24毫秒的情况下,提升了模型的性能,同时保持了高效率。

Visualization

这段分析的目的是比较YOLOv8-S和Octave-YOLO-S在从COCO测试集提取的图像上进行目标检测的性能。作者研究了不同场景和目标类别之间的差异。

如图5左侧所示,一辆巴士停在了车道上,右侧远处可见一辆汽车。YOLOv8未能检测到远处的汽车,而Octave-YOLI则成功识别了它。

picture.image

在中间部分,多人围坐在一张桌子旁,人和物体的边界框存在重叠。Octave-YOLO在检测重叠的瓶子方面表现出色,而YOLOv8在识别人方面表现出能力,但在处理具有重叠边界框的物体时遇到了困难。

转到右侧,一张夜间照片显示出YOLOv8在低光照条件下检测除人以外物体时的局限性。相比之下,尽管照明环境具有挑战性,Octave-YOLO在识别沙发、餐桌和瓶子等物体时展现了鲁棒的性能。

5 Conclusion

在本文中,作者介绍了Octave-YOLO,一种多尺度目标检测器,能够在内存和计算资源有限的嵌入式设备上实时处理高分辨率图像。

首先,作者提出了CFPNet,用以将输入特征图划分为高频和低频部分。然后,作者在低分辨率、低频区域处理复杂的计算,并将其与保留的高频区域结合,从而减少了冗余计算并提高了效率,同时减轻了高分辨率输入图像的负担。

此外,作者还设计了应用CFPNet的建筑模块和自注意力模块,极大地提高了效率,而精度损失极小。广泛的实验表明,Octave-YOLO与其他先进检测器相比,在性能相当的同时显著降低了延迟,有效地证明了其优越性。

参考

[1].Octave-YOLO: Cross frequency detection network with octave convolution.

picture.image

扫码加入👉「集智书童」交流群

(备注: 方向+学校/公司+昵称 )

picture.image

点击下方“ 阅读原文 ”,

了解更多AI学习路上的 「武功秘籍」

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论