实时目标检测,依托NanoDet,使用辅助Head进一步提升YOLOX性能,一种基于YOLOX模型的轻量级深度学习架构FasterX,用于边缘GPU上的实时目标检测。大量的实验表明,与最先进的模型相比,FasterX模型在VisDrone2021数据集上的准确性和延迟之间实现了更好的权衡。
由于物联网(IoT)节点等边缘GPU设备的计算资源有限,因此在无人机(uav)上的实时目标检测是一个具有挑战性的问题。为了解决这一问题,本文提出了一种基于YOLOX模型的轻量级深度学习架构FasterX,用于边缘GPU上的实时目标检测。
首先设计了一个有效的、重量轻的PixSF-Head来代替原来的YOLOX-Head,以更好地检测小物体,它可以进一步嵌入到深度可分离卷积(DS Conv)中,以实现更轻的Head。然后,在Neck中开发了一种更薄的结构,称为SlimFPN,以减少网络的参数,这是在精度和速度之间的权衡。
此外,在Head中嵌入注意力模块,以提高预测Head的特征提取效果。同时,还改进了标签分配策略和损失函数,以缓解无人机数据集的类别不平衡和Box优化问题。
最后,提出了在线蒸馏的辅助Head,以提高PixSF-Head的位置嵌入和特征提取能力。
本文轻量级模型的性能在NVIDIA Jetson NX和Jetson Nano GPU的嵌入式平台上进行了实验验证。大量的实验表明,与最先进的模型相比,FasterX模型在VisDrone2021数据集上的准确性和延迟之间实现了更好的权衡。
无人机(uav)被认为是大规模环境传感和监测的一个高效的物联网(IoT)节点,广泛应用于城市、农业、监测等任务。视觉目标检测是无人机应用中的一个热点,它是一种能够对无人机摄影中的所有目标进行定位和分类的方法,如行人、汽车、自行车等。近年来,基于深度学习的目标检测在准确性和效率方面都取得了显著的进展,并提出了许多优秀的网络。两阶段模型通常精度较高,但效率较差,在计算资源有限的无人机平台上难以实现。近年来,基于YOLO的一期模型被广泛应用于嵌入式系统中。但是,在基于Anchor的YOLO模型中,它并不能解决以下问题:
- Anchor需要手动重新设计,以适应不同数据集的Anchor分布;
- 正样本和负样本之间的不平衡。同时,平衡检测精度和实时需求仍然是一项具有挑战性的任务。
为了克服这个问题,许多研究人员已经致力于开发高效的检测器架构,如FCOS和FSAF。基于Anchor-Free、NanoDet、YOLOX-Nano、YOLOX-Tiny和YOLOX-S的轻量级模型也是典型的代表。这些检测器基于COCO、VOC等方面进行了模型评价,促进了目标检测领域的发展。
然而,无人机在边缘设备检测的应用存在两个实际问题:
- 与COCO数据集和VOC数据集相比,无人机数据集存在目标规模变化较大、目标较小等具体问题,图2中可以直观地看到;
- 无人机实时边缘监控存在一定的硬件瓶颈。因此,这是小目标的检测精度与模型推理速度之间不可调和的矛盾。
对于无人机,目前提高小目标精度的简单有效方法可以归纳为2点:
- 提高输入图像分辨率,放大目标;
- 在不改变输入图像分辨率的情况下,增加一个小目标特征图,增加一个大分辨率检测Head,这是特征图上的放大策略。
无论如何提高精度,上述两种方法都会导致模型的GFLOPS成本急剧上升,严重影响推理,不利于边缘实时检测。因此,这些方法不能简单地应用于轻量级模型。
近年来,无人机嵌入式部署的相关工作陆续提出。其中,Zhang等人提出的模型压缩方法已经在vis无人机2021数据集上得到了广泛的验证,证明了其有效性,可作为优化方案之一。与模型压缩不同,本文主要关注小目标和检测器结构的优化,以实现无人机边缘GPU设备的实时推理性能。受PP-PicoDet、NanoDet、ESPCN和YOLOX的启发,作者提出了一种用于无人机检测的边缘GPU友好的Anchor-Free检测器FasterX,它比轻量级检测器YOLOX更精确、更轻。随着添加更多的预测Head,FasterX在参数、GFLOPS成本和推理时间上仍然保持了准确性和效率的优势。
综上所述,本文的主要贡献如下:
- 提出了一种新型的轻量级PixSF-Head,大大缓解了Head造成的推理难题,其中增加了一个检测Head P4。此外,PixSF-Head是由一种新的位置编码器-解码器(Fcous和像素折叠)构建的。PixSF-Head不仅对无人机数据集Visdrone2021有效,而且在VOC2012基准数据集上得到了实验验证;
- 开发了一种更薄的结构来取代Neck的PAFPN结构,称为SlimFPN。SlimFPN去掉了PAFPN的上采样结构,通过Ghost模块统一了Neck所有分支的输入通道数,大大降低了网络参数;
- 采用动态标签分配策略SimOTA对训练过程进行优化,获得全局优化结果。同时,采用Focal Loss(FL)和CIoU损失的加权和,来缓解GT的类别不平衡和长宽比不平衡。
- 提出了一种新的在线蒸馏辅助Head,以提高PixSF-Head的位置编码和特征提取能力。
YOLOX
YOLOX是基于Anchor-Free框架设计的,放弃了YOLO系列的基于Anchor的策略(YOLOv2-v5)。由于它在当前COCO数据集上的YOLO系列中取得了最先进的结果,本文选择它作为基线。YOLOX总共有6种不同的网络宽度和深度设置的模型,包括YOLOX-Nano、YOLOX-Tiny、YOLOXS、YOLOX-M、YOLOX-L和YOLOX-X。其中,YOLOX-Nano、YOLOX-Tiny和YOLOX-S都属于YOLOX的轻量级家族,适合于部署在嵌入式设备中。
FasterX
FasterX的框架如图3所示。FasterX的主要部分由PixSF-Head、SlimFPN和辅助Head组成。所提出的FasterX在Jetson NX和Jetson Nano GPU嵌入式平台上实现了高效和实时的基于深度学习的目标检测。接下来将详细描述这个设计。
Lightweight PixSF head
对于无人机目标检测应用,目标在整体图像场景中相对较小(小目标< 32×32像素,中等目标32×32~96×96像素,大目标> 96×96像素,由COCO数据集定义)。例如,在VisDrone2021数据集中,超过60%的目标是小目标,如行人、自行车、汽车和汽车。虽然许多基于深度学习的目标检测方法可以获得较高的精度,但由于目标小、背景复杂,这些方法在无人机数据集中表现较差。
近年来,许多研究和综述已经开始探索使用一个额外的检测Head(P4-Head)来提高对小目标的检测精度。预测Head的4个Head结构可以减轻目标尺度变化的影响,降低小目标检测网络的优化难度。如图4所示,比较了4个Head结构下轻量级系列YOLOX的3种基准模型。4个Head的YOLOX-Tiny的AP50平均精度(mAP)和AP50平均精度远远优于3个Head的结构。
虽然4个Head的结构非常有效,但在GPU嵌入式设备上的参数和GFLOPS显著增加。特别是由于多分支结构的进一步扩展,GFLOPS值严重增加,不利于GPU并行计算。表一显示了在Jetson NX和Nano平台上的延迟结果。以YOLOX-S为例,与原生YOLOX相比,在Jetson NX平台和Nano平台上,具有4个Head结构的YOLOX的推理延迟分别增加了85%和353%。为了解决这一问题,本文设计了一种基于4个Head结构的轻量级PixSF-Head,该结构在精度和速度之间存在权衡。
在超分辨率重建领域,通常构建像素级损失函数进行像素级监督,实现从低分辨率图像(LR)到高分辨率图像(HR)的映射,其中像素级损失函数(L2损失)和卷积操作隐含包含位置信息。同样,在目标检测中也存在位置约束。在预测位置回归的置信度时,需要将位置预测解码到输入坐标范围,以适应损失监督。在YOLO中,位置解码的公式如下:
综上所述,通过将编码后的特征映射到原始映射的固定位置,并结合网格和降采样倍数,将公式(1)可以看作是一个特征位置的嵌入。受此启发,本文设计了一种利用位置嵌入到Head中的位置编码解码器,称为PixSF-Head。
如图5所示,编码器使用Focus在HR特性中沿着通道方向连接pixel-patchs。这样,每个像素点的通道就包含了Patch位置信息(左上角、右上角、左下角、右下角)。
此外,为了降低编码成本,建立像素-图案之间的位置关系,使用了一个简单的1×1卷积来进行特征提取和降维。然后,将其输入到Decoupled-Head,分别进行回归和分类任务。
SlimFPN
Anchor-Free目标检测器主要采用特征金字塔网络(FPN)进行多尺度预测,可以提取多层次目标特征,提高在线特征选择能力。在YOLOX的路径聚合网络(PANet)中,设计了一个基于FPN的自下而上结构PAFPN来补充定位信息,使FPN具有自下而上的梯度更新。在PAFPN结构中,Neck的输入和输出在不同阶段与主干层的输出相同。PAFPN的结构可以表述为:
PANet结构通过将上层特征图和现有特征图相结合,可以将定位特征传播到高语义特征层。然而,从梯度传播的角度来看,有利于小目标检测的P4预测层已经计算出了在PANet结构之前的损失。因此,P4-Head在梯度上不能共享PANet结构的优势,但有利于大目标的P10-Head可以完全共享PANet结构的优势。
考虑到具有大量通道的PANet在结构上是多分支的,导致边缘GPU设备的延迟推断,本文设计了一种没有PANet作为Neck的轻量级SlimFPN结构。SlimFPN通过获取主干网中每个阶段的输出来形成多级特征图。网络的提取参数随着网络深度的增加而增加,从而导致特征通道的增加。大量的通道会增加边缘GPU设备的计算成本。
因此,在SlimFPN中,对特征的大参数分支进行通道缩放,以降低推理速度。如图3的SlimFPN部分所示,由于每个阶段的主干通道随着深度的增加而增加,所以使用P3的输入C作为表示其他输入级别的基础。考虑到平衡通道不可避免地会导致信息损失,通过Ghost模块实现参数缩减,以提高空间提取能力,减轻信息损失。
与PANet相比,所提出的SlimFPN可能会导致一些准确性的损失,但其影响不显著。这是因为大多数无人机物体被认为是小目标。一方面,它受益于FPN在特征融合方面的强大性能。自上而下的结构可以确保深层语义信息被转移到浅层特征图中,从而为小目标提供语义支持。另一方面,PANet的自下而上结构主要针对大目标,对P4-Head不起监督作用。因此,SlimFPN会导致大目标精度的下降,但它可以提高三种模型的推理速度,这是对精度和速度的一种权衡。
Head with attention
在传统的目标检测头层中,回归和分类总是在最后阶段,其中大部分的权重在定位和回归任务之间共享。Double head RCNN 首先提出了一个double head layer,采用不同的卷积提取流进行回归和分类任务,以最小化回归和分类共享的特征部分。从那时起,这个想法就被用于最近流行的单阶段检测器中。为了进一步提高Head的提取能力,PPYOLOE和TOOD尝试利用注意机制来提高特征提取能力,并在COCO数据集中验证了集成在Head中的注意力模块的有效性。
在无人机的图像中,较大的覆盖区域总是包含复杂和多样的背景。为了提高头部层的特征提取能力,我们采用了注意机制来关注兴趣区域。本文采用卷积信道注意模块(CBAM),利用该模块改进头部层的特征表示。同时,CBAM是一个轻量级模块,可以轻松嵌入头部层,提高检测性能,如图6所示。
标签分配策略和损失
正负样本的标签分配对检测器有至关重要的影响。标签赋值被分配给RetinaNet,Faster RCNN通过Anchor和GT之间的IOU阈值的交集直接划分正样本和负样本。YOLOV5使用Anchor和GT之间的长宽比来进行正采样。FCOS以GT中心区域的Anchor作为正样本,ATSS根据GT附近最近Anchor的统计特征来确定样本。上述标签分配策略在全局训练过程中没有变化。为了获得全局最优的匹配结果,采用了SimOTA动态标签分配策略对训练过程进行了优化。
SimOTA首先通过中心先验确定候选区域,然后计算GT与候选区域中的候选框之间的IOU值,最后通过对IOU求和得到动态参数K。此外,SimOTA使用Cost矩阵为每个GT分配K个候选框进行网络训练,其中Cost矩阵是通过直接计算所有候选箱和GT的损失得到的。原SimOTA采用CE损失和IOU损失的加权和计算Cost矩阵,可表示为:
在无人机场景中,GT的样本类别和高宽比往往分别不平衡。以VisDrone2021数据集为例,行人的样本为79337,而三轮车的样本为4812。同时,GT的高宽比也不平衡。高宽比(最大侧/最小侧)的范围很宽,从1到接近5的上限。然而,大部分的GT都在1到2.5之间。在这种情况下,YOLOX的原始标签分配丢失无法很好地处理它。为了解决这一问题,对于类别不平衡,使用Focal Loss来使网络更加关注样本较少的类别。同时,对于高宽比不平衡,采用CIOU损失代替IOU损失,这可以引入高宽比监督信息来拟合GT BOX。因此,Focal Loss和CIOU Loss可以分别表示为:
Auxiliary Head for Online distillation
本文利用位置约束设计了编解码器PixSF-Head,提高了对小目标的检测能力。同时,使用改进的SimOTA方法对网络进行训练。然而,对于轻量级网络,由于模型在LAD开始时,动态匹配和位置编码和解码方法是随机初始化的,因此这些方法可能不会得到很好的结果。
为了解决这个问题,在轻量级的PixSF-Head中设计了一个在线蒸馏的辅助Head。如图7所示在头部设计了两个流(Stu.Head and Aux.Head),Stu.Head (即PixSF-Head)是原始结构的Head,是蒸馏层。Aux.Head设计为指导SimOTA为teacher-head(PixSF-Head)分配标签分配结果。
如图7 (c)所示,用Aux.head引导下的SimOTA标签分配结果代替Stu.head的原始标签分配结果,以提高Stu.head的整体表达能力。此外还添加了一个额外的pixel-level alignment任务来增强Stu.head的能力。
实验
性能对比
消融实验
PixSF head and SlimFPN
首先探讨了4个Head结构对YOLOX的影响。以4个Head结构YOLOX-S为例,如表IV(第2行)所示,mAP和AP50分别显著提高了1.89%和4.59%,验证了4个Head结构的有效性。然而,添加一个检测Head使GFLOPs从26.8变化到60.14,Jetson Nano的延迟从52.52 ms变化到238.22 ms,Jetson NX的延迟从14.70 ms变化到27.26 ms。
为了缓解这种情况,在Head用DS Conv代替卷积算子是轻量级模型的可行设计。如表IV所示(FasterX-S部分,第1行和FasterX-很小的部分,第1行)所示,用DS Conv代替了一般的卷积,尽管mAP和AP50略有减少,但延迟显著降低。实验结果表明了DS Conv算子的有效性。
为了证明PixSF-Head方法的有效性能,比较了一般的卷积算子,DW Conv算子和PixSF算子。为了展示PixSF-Head的灵活嵌入性,还将DW Conv嵌入到PixSF-Head中,设计了一个更轻的Head。如表IV(FasterX-S部分,第2和第4行,FasterX-small部分,第2和第4行,FasterX-Nano部分,第1和第3行)可以看出,DW+PixSF方法在延迟和检测精度方面优于一般卷积算子和DW算子。以FasterXS为例,与使用DW操作符的4个Head结构相比,不仅mAP和AP50分别降低了0.62%和0.57%,而且Jetson Nano和NX的推理时间也分别降低了12.8%和9.8%以上。这些结果表明,所提出的PixSF-Head不仅能提高检测精度,而且还能提高推理速度。
将在特征聚合部分中说明精度和速度之间的权衡。如Tabel IV(FasterXS部分,第2行,FasterX-Small部分,第2行和FasterX-Nano部分,第1行)所示,以FasterX-S为例,与PANet(FasterX-S部分,第1行)相比,尽管SlimFPN方法的mAP和AP50分别下降了0.66%和1.23%,参数从7.61下降到4.96,GFLOPs从24.88下降到22.87。这些结果表明,SlimFPN不仅可以减少网络的大小,而且可以保持检测精度。这是因为自顶向下的结构可以确保深层语义信息被转移到浅层特征图中,从而为小目标提供语义支持。
为了进一步验证PixSF-head的通用性,在VOC2012数据集上进行了实验,实验目标的数量比无人机数据集更大。表V中的实验结果表明,DS Conv和PixSF-head的组合可以进一步实现模型容量和精度之间的权衡。
Attention mechanism
为了提高目标检测的头部层的解耦性能,采用CBAM来改进Head层的特征表示。如Tabel IV(FasterX-S部分,第5行,FasterX-很小的部分,第5行和FasterX-Nano部分,第4行)所示,可以看出CBAM对精度有积极的影响。因为它不仅监督通道,而且还通过使用空间概率图来提取兴趣区域。
Improved SimOTA
为了验证所提出的动态标签分配策略的有效性,将改进后的SimOTA与基本的标签分配机制进行了比较。如表四所示,用改进后的SimOTA替换了原来的SimOTA。实验结果表明,改进后的SimOTA在三种模型中都能取得良好的效果。以FasterX-S为例(FasterX-S部分,第6行),在没有额外的计算资源的情况下,mAP和AP50分别增加了0.42%和1.39%。
Auxiliary Head
此外,为了说明辅助Head在线蒸馏的效率,探讨了辅助Head对FasteX的效果。为了提高辅助Head的提取能力,采用了具有大量参数的YOLOX-X Head进行训练监督。在训练过程中,采用了网络预热策略。首先,对PixSF-Head和辅助Head进行联合训练50个Epoch。然后,使用辅助Head的标签结果来引导PixSF-Head。从表四可以看出,mAP和AP50在使用辅助Head进行在线蒸馏后有了显著的改善。
Backbone
在本文中,使用CSPDarknet53作为FasterX的主干。没有从理论上建模骨干和推理速度之间的关系,而是直接报告了Jetson设备下当前流行的轻量级骨干(如MobileNetV2、GhostNet和Effificientnet-Lite)的FPS和延迟。如表六所示,Effificientnet-Lite4的检测精度最好。同时,延迟在所有骨干中最高。CSPDarknet53骨干能够在不牺牲更多计算时间的情况下以更高的检测精度操作。因此,在CSPDarknet53主干中实现了检测精度和推理速度之间的平衡。