由于物联网(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数据集上的准确性和延迟之间实现了更好的权衡。
1、简介
无人机(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的位置编码和特征提取能力。
2、本文方法
2.1、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的轻量级家族,适合于部署在嵌入式设备中。
2.2、FasterX
FasterX的框架如图3所示。FasterX的主要部分由PixSF-Head、SlimFPN和辅助Head组成。所提出的FasterX在Jetson NX和Jetson Nano GPU嵌入式平台上实现了高效和实时的基于深度学习的目标检测。接下来将详细描述这个设计。
1、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中,位置解码的公式如下:
其中,和表示中心点从网格单元格左上角的偏移量,和分别表示对象的宽度和高度因子。这些值在原始地图的比例尺范围内,需要通过和当前特征图相对于原始地图的Stride进行链接。网格坐标系表示网格单元格的左上角坐标。此外,表示Head的输入,表示Head中的卷积操作。
综上所述,通过将编码后的特征映射到原始映射的固定位置,并结合网格和降采样倍数,将公式(1)可以看作是一个特征位置的嵌入。受此启发,本文设计了一种利用位置嵌入到Head中的位置编码解码器,称为PixSF-Head。
如图5所示,编码器使用Focus在HR特性中沿着通道方向连接pixel-patchs。这样,每个像素点的通道就包含了Patch位置信息(左上角、右上角、左下角、右下角)。
此外,为了降低编码成本,建立像素-图案之间的位置关系,使用了一个简单的1×1卷积来进行特征提取和降维。然后,将其输入到Decoupled-Head,分别进行回归和分类任务。
在解码器部分,利用pixelshufflfle操作将编码器提取的特征恢复到维数。具体来说,使用深度的1×1卷积将映射到,其中设置为2。该编解码器可以用以下方式来描述:
其中,表示编码器,表示解码器。为输入,大小为,是 multiple factor,注意需要被或整除。激活函数按元素应用,ω是整个解耦层中包含的参数。
2、SlimFPN
Anchor-Free目标检测器主要采用特征金字塔网络(FPN)进行多尺度预测,可以提取多层次目标特征,提高在线特征选择能力。在YOLOX的路径聚合网络(PANet)中,设计了一个基于FPN的自下而上结构PAFPN来补充定位信息,使FPN具有自下而上的梯度更新。在PAFPN结构中,Neck的输入和输出在不同阶段与主干层的输出相同。PAFPN的结构可以表述为:
其中P4为FPN的最低层,为2次降采样,为融合算子,Cat为通道级联。
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会导致大目标精度的下降,但它可以提高三种模型的推理速度,这是对精度和速度的一种权衡。
3、Head with attention
在传统的目标检测头层中,回归和分类总是在最后阶段,其中大部分的权重在定位和回归任务之间共享。Double head RCNN 首先提出了一个double head layer,采用不同的卷积提取流进行回归和分类任务,以最小化回归和分类共享的特征部分。从那时起,这个想法就被用于最近流行的单阶段检测器中。为了进一步提高Head的提取能力,PPYOLOE和TOOD尝试利用注意机制来提高特征提取能力,并在COCO数据集中验证了集成在Head中的注意力模块的有效性。
在无人机的图像中,较大的覆盖区域总是包含复杂和多样的背景。为了提高头部层的特征提取能力,我们采用了注意机制来关注兴趣区域。本文采用卷积信道注意模块(CBAM),利用该模块改进头部层的特征表示。同时,CBAM是一个轻量级模块,可以轻松嵌入头部层,提高检测性能,如图6所示。
4、标签分配策略和损失
正负样本的标签分配对检测器有至关重要的影响。标签赋值被分配给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可以分别表示为:
其中为CostMatrix的平衡因子,为预测值与标签之间的距离。和是调整不平衡类的超参数。对于回归部分,可以定义为:
其中也是平衡因子。然后,用度量高宽比和GT的距离,计算预测框与GT中心点的距离(·)。
5、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与Aux.Head上的特征之间的距离。值得注意的是,Aux.Head只在训练过程中执行,没有推理成本。