这篇文章的核心研究内容是提出了一种名为 EdgeYOLO 的高效、无锚点(anchor-free)的目标检测器,旨在实现在边缘计算设备上的实时目标检测。以下是文章的主要研究内容和贡献的凝练总结:
1. 研究背景与动机
-
目标检测的重要性:目标检测是计算机视觉中的关键任务,广泛应用于自主智能系统。现有的目标检测方法主要分为两阶段(如R-CNN系列)和单阶段(如YOLO系列)方法。两阶段方法精度较高,但实时性差;单阶段方法在实时性和性能之间取得了较好的平衡。
-
边缘计算的挑战:尽管现有的单阶段检测器(如YOLO系列)在高性能GPU上表现出色,但在边缘计算设备(如Nvidia Jetson AGX Xavier)上运行时,由于计算资源有限,其性能往往难以满足实时性要求(FPS≥30)。
-
研究目标:设计一种能够在边缘设备上高效运行且精度较高的目标检测器,同时优化小目标的检测性能。
2. EdgeYOLO的核心贡献
(1) 无锚点检测器设计
-
无锚点策略:采用无锚点(anchor-free)的检测策略,避免了传统YOLO系列中锚点带来的后处理复杂性和计算开销,显著降低了模型在边缘设备上的推理时间。
-
轻量解耦头(Lite-Decoupled Head):提出了一个轻量化的解耦检测头,通过减少卷积层和通道数,并结合隐式表示层(Implicit Layers)和重参数化技术,在保持高精度的同时提升了推理速度。
(2) 增强型数据增强方法
-
改进的Mosaic与Mixup:提出了一种增强型的数据增强策略,通过灵活组合Mosaic和Mixup方法,确保每张增强后的图像都包含足够的有效目标信息,有效缓解了过拟合问题,同时提高了模型对小目标的检测能力。
(3) 混合随机损失函数
-
分阶段训练策略:设计了一种分阶段的损失函数,包括混合随机损失(Hybrid-Random Loss)和cIOU损失。混合随机损失通过引入随机因子平衡了小目标和大目标的检测精度,显著提升了小目标的检测性能。
(4) 针对小目标的优化
-
小目标检测优化:通过在数据增强中引入缩放和拼接操作,并重新设计损失函数,进一步优化了小目标的检测性能,缩小了小目标与大目标检测精度的差距。
3. 实验结果
-
数据集:在MS COCO2017和VisDrone2019-DET两个数据集上进行了广泛的实验。
-
性能表现:
-
在MS COCO2017数据集上,EdgeYOLO达到了50.6%的AP<sub>50:95</sub>和69.8%的AP<sub>50</sub>,在Nvidia Jetson AGX Xavier设备上实现了34 FPS的实时性能。
-
在VisDrone2019-DET数据集上,EdgeYOLO达到了26.4%的AP<sub>50:95</sub>和44.8%的AP<sub>50</sub>,显著优于其他实时检测器。
-
-
模型轻量化:通过设计更轻量的模型结构,EdgeYOLO在保持高精度的同时,显著减少了模型参数量(40.5M),适合在计算资源有限的边缘设备上部署。
4. 消融研究与优化技巧
-
消融研究:通过对比实验验证了轻量解耦头、分割标签以及混合随机损失函数对模型性能的提升效果。
-
优化技巧:提出了输入尺寸适配和多进程/多线程计算架构等优化方法,进一步提升了模型在边缘设备上的推理速度。
5. 结论与展望
-
总结:EdgeYOLO通过无锚点设计、增强型数据增强、混合随机损失函数和轻量解耦头等创新,实现了在边缘计算设备上的高效实时目标检测,并显著提升了小目标的检测性能。
-
未来工作:进一步优化小目标检测精度,并探索更多高效的模型优化方法,以扩展到其他像素级识别任务(如实例分割)。
这篇文章的核心创新在于其对边缘计算场景的针对性优化,通过一系列改进使得目标检测在保持高精度的同时,能够高效运行于资源受限的边缘设备。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:
官方项目地址在这里,如下所示:
摘要:本文提出了一种基于最新YOLO框架的高效、低复杂度且无锚点的目标检测器,能够在边缘计算平台上实现实时运行。我们开发了一种增强型数据增强方法,有效抑制了训练过程中的过拟合现象,并设计了一种混合随机损失函数,以提高小目标的检测精度。受FCOS启发,我们提出了一种更轻量、更高效的目标解耦头,并通过少量精度损失实现了推理速度的提升。我们的基线模型在MS COCO2017数据集上达到了50.6%的AP<sub>50:95</sub>和69.8%的AP<sub>50</sub>精度,在VisDrone2019-DET数据集上达到了26.4%的AP<sub>50:95</sub>和44.8%的AP<sub>50</sub>精度,并且满足了边缘计算设备(如Nvidia Jetson AGX Xavier)的实时性要求(FPS≥30)。如图1所示,我们还设计了参数更少的轻量化模型,以适应计算能力较低的边缘计算设备,并且这些模型也展现了更好的性能。
1. 引言
随着计算硬件性能的不断提升,基于深度神经网络的计算机视觉技术在过去十年中迅速发展,目标检测作为其中的重要组成部分,广泛应用于自主智能系统。目前,目标检测主要有两种策略:一种是以R-CNN系列为代表的两阶段策略,另一种是以YOLO为代表的单阶段策略。两阶段策略首先通过启发式方法或区域建议生成方法在第一阶段获取多个候选框,然后在第二阶段对这些候选框进行筛选、分类和回归。单阶段策略则以端到端的方式直接输出结果,将目标检测问题转化为全局回归问题。全局回归不仅可以同时为多个候选框分配位置和类别,还能使模型更清晰地区分目标与背景。在常见的目标检测数据集(如MS COCO2017)上,采用两阶段策略的模型性能略优于单阶段策略的模型。然而,由于两阶段框架的内在限制,其在传统计算设备上难以满足实时性要求,甚至在大多数高性能计算平台上也面临同样的问题。相比之下,单阶段目标检测器能够在实时性和性能之间保持平衡,因此更受研究人员关注,YOLO系列算法也在快速迭代更新。从YOLOv1到YOLOv3的更新主要集中在底层框架结构的改进,而后续的YOLO主流版本则主要关注精度和推理速度的提升。此外,它们的优化测试平台主要是配备高性能GPU的大型工作站。然而,这些最先进的模型在边缘计算设备上的FPS表现往往不尽如人意。因此,一些研究人员提出了使用参数更少、结构更轻量的网络结构(如MobileNet和ShuffleNet)来替代原有的骨干网络,以实现在移动设备和边缘设备上的更好实时性,尽管这会牺牲一些精度。在本文中,我们的目标是设计一种能够在边缘设备上实现实时运行且精度可观的目标检测器。本文的主要贡献如下:
i) 设计了一种能够在边缘设备上实现实时运行且在MS COCO2017数据集上达到50.6% AP精度的无锚点目标检测器;
ii) 提出了一种更强大的数据增强方法,进一步确保了训练数据的数量和有效性;
iii) 在模型中使用了可重参数化的结构,以减少推理时间;
iv) 设计了一种损失函数,以提高小目标的检测精度。
2. 相关工作
2.1 无锚点目标检测器
自YOLOv1问世以来,YOLO系列在实时目标检测领域一直处于领先地位。此外,还有其他优秀的目标检测器,如SSD和FCOS等。在目标检测任务中测试FPS时,以往大多数研究仅计算了模型推理的时间成本,而完整的目标检测任务包含三个部分:预处理、模型推理和后处理。由于预处理可以在视频流中完成,因此在计算目标检测的FPS时应包含后处理的时间成本。在高性能GPU工作站或服务器上,预处理和后处理仅占用一小部分时间,而在边缘计算设备上,这一部分的延迟可能超过十倍。因此,减少后处理计算可以在边缘计算设备上显著提升速度。在使用基于锚点的策略时,后处理的延迟几乎与每个网格单元的锚点数量成正比。YOLO系列通常为每个网格单元分配3个锚点。与基于锚点的框架相比,无锚点检测器可以节省超过一半的后处理时间。为了确保检测器在边缘计算设备上的实时性,我们选择基于无锚点策略构建目标检测器。目前主要有两种无锚点检测器:基于锚点的和基于关键点的。在本文中,我们采用基于锚点的范式。
2.2 数据增强
数据增强是神经网络训练中一个重要的数据处理步骤。合理使用数据增强方法可以有效缓解模型的过拟合问题。对于图像数据集,几何增强(随机裁剪、旋转、镜像、缩放等)和光度增强(HSV和亮度调整)通常应用于单个图像。这些基本增强方法通常在多图像混合和拼接之前或之后使用。目前,主流的数据增强技术,如Mosaic、Mixup、CopyPaste等,通过不同方法将多张图片的像素信息整合到同一张图片中,以丰富图像信息并降低过拟合的概率。如图2(b)所示,我们设计了一种更灵活、更强大的组合增强方法,进一步确保输入数据的丰富性和有效性。
2.3 模型压缩
通过模型压缩可以降低计算成本,从而有效提高模型的推理速度。模型压缩方法可以分为两类:有损压缩和无损压缩。有损压缩通常通过减少网络层数和通道数来构建更小的网络。无损压缩则通过重新参数化技术将多个分支模块整合为一个更精简的等效模块。有损压缩通过牺牲精度来实现更快的速度,而由于耦合结构会降低训练效率,重新参数化方法通常在模型训练完成后用于推理。通过结合有损和无损压缩方法,本文构建了不同大小的多个模型(如图1所示),以适应不同计算能力的边缘设备,并加速模型推理过程。
2.4 解耦回归
从YOLOv1到YOLOv5,对于不同尺度的特征图,获取目标位置、类别和置信度的回归使用了一组统一的卷积核。一般来说,如果任务之间关系密切,则使用相同的卷积核。然而,目标的位置、置信度和类别在数值逻辑上关系并不紧密。此外,相关实验已证明,与直接使用统一回归检测头相比,使用解耦回归检测头可以取得更好的结果,并加速损失收敛。然而,解耦头会带来额外的推理成本。作为改进,我们设计了一种更轻量的解耦头,同时考虑了模型的推理速度和精度。
2.5 小目标检测优化
自目标检测研究开始以来,小目标检测问题一直备受关注。随着目标在图像中所占比例的减小,用于表达目标的像素信息也随之减少。大目标通常比小目标多出数十倍甚至数百倍的信息,小目标的检测精度通常显著低于大目标。此外,这种差距无法通过位图图像的属性来消除。此外,研究人员发现,在训练过程中,小目标在总损失中的比例总是较小。为了提高小目标的检测效果,以往的研究提出了以下方法:(a) 在数据增强过程中,复制小目标并随机放置在图像的其他位置,以增加小目标的训练数据样本,这种方法称为复制增强;(b) 对图像进行缩放和拼接,将原始图像中的一些大目标缩放为小目标;(c) 设计损失函数,通过增加小目标损失的比例来更多地关注小目标。由于使用方法(a)处理的图像存在尺度不匹配和背景不匹配的问题,我们仅参考方法(b)和(c)来优化训练过程。缩放和拼接方法已包含在我们的数据增强中,同时我们重新设计了损失函数,可以有效提高小目标和中目标的检测精度以及模型的整体精度。
3. 方法
3.1 增强型Mosaic与Mixup
许多实时目标检测器在训练期间使用Mosaic+Mixup策略进行数据增强,这可以有效缓解训练过程中的过拟合问题。如图3(a)和(b)所示,有两种常见的组合方法,当数据集中的单张图像包含足够多的标签时,这些方法表现良好。由于数据增强中的随机过程,数据加载器可能会提供没有有效目标的图像,而标签空间中却有响应(如图3(a)所示),并且随着每张原始图像中标签数量的减少,这种情况的概率会增加。我们设计了一种如图3(c)所示的数据增强结构。首先,我们对几组图像使用Mosaic方法,组数可以根据数据集中单张图像的平均标签数量进行设置。然后,通过Mixup方法将最后一张简单处理的图像与经过Mosaic处理的图像混合。在这些步骤中,我们最后一张图像的原始边界在变换后的最终输出图像的边界内。这种方法有效增加了图像的丰富性,以缓解过拟合问题,并确保输出图像必须包含足够有效的信息。
3.2 轻量解耦头
解耦头最初在FCOS中提出,随后被用于其他无锚点目标检测器,例如YOLOX。已证实,使用解耦结构作为最后几层网络可以加速网络收敛并提升回归性能。由于解耦头采用了分支结构,这会导致额外的推理成本。因此,我们设计了一种更轻量的解耦头,减少了通道数和卷积层的数量。此外,我们为所有最后的卷积层添加了隐式表示层,以实现更好的回归性能。通过重新参数化技术,将隐式表示层整合到卷积层中,以降低推理成本。最后,我们将用于框和置信度回归的卷积层合并,以便模型能够进行高并行计算。
3.3 分阶段损失函数
对于目标检测,损失函数通常可以表示为:
其中,L<sub>cls</sub>、L<sub>iou</sub>、L<sub>obj</sub> 和 L<sub>∆</sub> 分别表示分类损失、IOU损失、目标损失和正则化损失,α、λ、µ、ζ 是超参数。我们在实验中将训练过程分为三个阶段。在第一阶段,我们采用最常见的损失函数配置:使用gIOU损失作为IOU损失,使用平衡交叉熵损失作为分类损失和目标损失,正则化损失设置为零。当训练进入最后几个启用数据增强的epoch时,进入第二阶段。此时,分类损失和目标损失的损失函数被替换为混合随机损失:
其中,p表示预测结果,t表示真实标签,r是介于0和1之间的随机数。对于图像中的所有结果,有:
这可以在小目标的精度和总精度之间实现更好的平衡。在第三阶段,我们关闭数据增强,将L1损失作为正则化损失,并将gIOU损失替换为cIOU损失。更多细节将在下一节中介绍。
4. 实验
4.1 实施细节
数据集:我们在两个流行的数据集上测试了模型的性能:常见的目标检测数据集MS COCO2017和无人机目标检测数据集VisDrone2019-DET。其中,MS COCO2017被选为我们的主要训练基准,而VisDrone2019-DET则专门用于测试小目标的检测性能。
训练:我们在配备4块RTX 3090 GPU的工作站上部署了训练环境。我们选择ELAN-Darknet作为模型的骨干网络,并在轻量化模型中用RepConv层替换了部分3×3卷积层。我们的网络使用随机梯度下降(SGD)优化器进行训练,最大学习率为0.005,每批图像数量为32。特别地,我们为每张图像设置的最大学习率为1/6400,这意味着最大学习率会随着批量大小的变化而变化。我们以5个热身epoch开始训练,学习率从0逐渐增加到0.005。考虑到MS COCO2017和VisDrone2019-DET数据集标签丰富,我们将Mosaic的组数设置为2。
推理:我们在NVIDIA Jetson AGX Xavier边缘计算设备上测试了每个模型的推理性能,该设备配备512个CUDA核心,运行在MAXN模式下。FPS在FP16精度下通过TensorRT版本7.1.3.0进行测量。主要训练超参数如下:
-
权重衰减:0.0005
-
动量:0.9
-
总epoch数:300
更多超参数请访问我们的网站:https://github.com/LSH9832/edgeyolo,所有超参数均在文件“edgeyolo/train/default.yaml”中。
4.2 结果与比较
我们选择YOLOX-L作为基线模型,并在MS COCO2017-val上将我们的检测器与其他流行的目标检测器进行比较。在计算FPS时,所有后处理时间成本均被考虑在内。此外,我们在VisDrone2019-DET数据集上对我们的模型进行了训练,该数据集主要包含小目标。在该数据集中,我们将我们的模型与其他超大型单阶段模型和在MS COCO验证集上表现良好但推理速度较慢的常规两阶段模型进行了比较。MS COCO2017-val的结果如表1所示。可以看出,在Jetson AGX Xavier设备上,EdgeYOLO是一个高精度的实时检测器,其参数较少,精度甚至超过了某些非实时模型。其总AP的提升主要来自小目标的检测性能提升,AP值提高了2.2%。VisDrone2019-DET-val的结果如表2所示。所有这些模型均首先在MS COCO2017-train上进行预训练。即使与参数更多的超大型模型相比,我们的模型在性能上仍然领先。
4.3 消融研究
为了进一步探索我们的方法的效果,我们在MS COCO2017上进行了以下实验。
解耦头
我们比较了使用耦合头和使用原始解耦头的模型。如表3所示,通过使用轻量解耦头,可以在不显著损失实时性能的情况下显著提升精度。
分割标签(效果不佳)
在数据增强过程中处理旋转标签时,如果没有分割信息,我们会在旋转后获取原始标签框的四个角点坐标,并绘制一个不倾斜且通过这四个点的框作为要使用的标签。这可能会包含更多的无效背景信息。因此,在MS COCO2017上训练我们的模型时,我们尝试使用分割标签来生成边界框,以便在图像旋转后标签仍能保持高精度。当启用数据增强且损失进入稳定下降阶段时,使用分割标签可以显著提升2% - 3%的AP。由于在训练的最后阶段关闭了数据增强,所有标签变得更加准确。此外,即使不使用分割标签,最终精度也仅下降约0.04%的AP。
损失函数
我们多次比较和测试了使用不同损失函数的方法。如表4所示,为解决样本不平衡问题而设计的Focal Loss在我们的模型训练中起到了相反的作用。另一个有趣的现象是,当使用HR损失时,与使用cIOU相比,使用gIOU会导致大目标的精度下降0.7%的AP,尽管它可以将小目标的精度提高0.3%的AP。总之,通过在训练的后期阶段使用HR损失和cIOU损失,可以获得更好的精度。
4.4 边缘计算设备的技巧
输入尺寸适配
在实践中,边缘计算设备上目标检测算法的输入源通常是一个具有固定尺寸和宽高比的视频流。目前常用的视频流宽高比为4:3和16:9。如表5所示,在实际应用中,网络输入尺寸通常设置为640×480和640×384,以减少模型计算量,这可以在不损失精度的情况下显著提升推理速度。
多进程与多线程计算架构
整个检测过程包括预处理、模型输入和后处理,这些部分可以在实际部署中拆分,并分配到多个进程和线程中进行计算。在我们的测试中,使用拆分架构可以实现约8%-14%的FPS提升。
5. 结论
我们提出了EdgeYOLO,这是一种边缘实时且无锚点的单阶段检测器,其部分代表性结果如图5和图6所示。实验表明,EdgeYOLO可以在边缘设备上以高精度实现实时运行,并且其小目标检测能力得到了进一步提升。由于EdgeYOLO采用了无锚点结构,设计复杂度和计算复杂度降低,部署到边缘设备上更加友好。此外,我们相信该框架可以扩展到其他像素级识别任务,例如实例分割。在未来的工作中,我们将进一步提升该框架对小目标的检测精度,并进行高效的优化探索。