1. 引言
近年来,卷积神经网络(CNN, Convolution Neural Net-work)在计算机视觉领域取得了巨大突破。基于深度神经网络的模型在目标检测任务中扮演着重要角色,这些模型按不同标准可分为不同类型。按照是否需要生成候选,其中YOLO系列模型 [1] - [7] 和SSD [8] 是典型一阶段算法,而Fast R-CNN [9] 和Faster R-CNN [10] 是二阶段算法。基于是否有预定义锚点,可将模型分为基于锚点检测器和无锚点检测器,其中基于锚点的方法包括Faster R-CNN和YOLOv5,而CornerNet [11] 、CenterNet [12] 和YOLOX [13] 则是著名的无锚点检测器。另外,基于Transformer [14] 模型架构的Swin-transformer [15] 算法也在图像检测任务中取得了相当不错的成绩。
与此同时,受益于近年来出现的大规模标准的无人机拍摄图像数据集如VisDrone [16] 、UAVDT [17] 等,利用深度神经网络的方法进行识别无人机图像目标物的工作已经取得了显著的突破。
尽管基于CNN的检测算法在常规目标检测任务中取得了巨大成功,但在无人机场景下对小目标的检测效果较差。主要原因是无人机航拍影像中物体尺寸变化巨大,而单层特征图在卷积神经网络中的表征能力有限。同时,航拍影像的背景复杂多变,小目标容易受到背景干扰,从而影响检测效果。因此,需要针对无人机航拍图像中小目标的检测算法进行有针对性的研究,并探索优化和改进卷积神经网络的方法,以提高算法在无人机场景下的检测能力。为了应对无人机拍摄图像中车辆检测所面临的多样性挑战,AdNet [18] 寻求在不同视角、光照、天气和背景之间对齐特征,遵循域适应的思路。GLSAN [19] 通过添加一个自适应区域,选择全局–局部检测网络的算法,找到高密度区域,并准确地检测具有大尺寸变化的对象。Gallo等人 [20] 利用YOLOv7模型解决了无组织作物条件和杂草生物变异性带来的挑战。为了应用深度学习算法在实时场景中的无人机上,许多研究致力于设计快速、轻量级的模型以实现高质量的无人机目标检测。UAV-Net [21] 全面分析了不同的骨干网络结构、预测头和模型修剪方法对实现快速目标检测的影响,并构建了更好的组合。
最近针对小目标的目标检测算法中,TPH-YOLOv5 [22] 在基于YOLOv5检测模型上添加基于transformer的预测头,以提高网络的预测回归能力,同时使用注意力机制提高对小目标关注度,实现了在大尺寸变化和高密度场景中的显着性能提升。在TPH-YOLOv5++ [23] 中,设计了CA-Trans来替换额外的预测头,同时保留该预测头的知识。通过使用稀疏局部注意力(SLA)模块,可以有效地捕获额外预测头和其他头之间的非对称信息,丰富其他头的特征。TPH-YOLOv5和TPH-YOLOv5++虽然在识别精度上有明显的提升,但其计算量也成倍增加,对硬件性能要求大,不宜部署在普遍运算性能小的无人机上。
为此,本文提出了一种面向无人机影像的目标检测算法,针对现有目标检测算法在无人机场景下难以检测小目标的问题,重新进行网络设计。本文的贡献如下:
(1) 提出了适应小目标的YOLO-ADOP (YOLO-AUX-DHead-OTA-P2)检测模型,通过添加P2识别层来检测小目标,同时去除了P5识别层用于大型目标检测。
(2) 创新性地使用解耦头和辅助训练头来分离分类和回归任务,提高目标检测精度,同时加速权重更新并减少训练批次之间的影响。
(3) 优化了损失函数计算,使用EIOU [24] 替代CIOU来更好地反映预测框与目标框的宽高差异,加速网络收敛。引入OTA (Optimal transport assignment) [25] 标签分配原则以提高准确度。
本文代码以公开:https://github.com/doctor-zai/YOLO-ADOP.git。
2. YOLO-ADOP算法概述
2.1. YOLOv5概述
YOLOv5共有YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l以及YOLOv5x五个模型,其在结构上相同,只是在宽度和高度上不同。YOLOv5采用CSPDarknet53和快速空间金字塔池化(Spatial Pyramid Pooling-Fast, SPPF)作为主干网络,采用PANet作为颈部网络,头部由三个耦合预测头组成。其模型结构简图如图1所示。

Figure 1. Simplified diagram of the YOLOv5 model architecture
图1. YOLOv5模型结构简图
2.2. YOLO-ADOP模型
本文YOLO-ADOP模型网络结构如图所示,其中红色虚线框中是新增的检测分支P2,同时减去了检测分支P5;蓝色部分是使用的解耦头;虚线箭头为新增的辅助训练头部分。
图2中CBS模块是包含了卷积、归一化处理和激活函数的一个基础模块。C3模块则是一个用于特征提取的模块,此模块不改变特征图的大小,采用了ResNet里的残差结构,其内部用于特征提取的BottleNeck数量可以进行调节。Upsample为上采样,Concat为拼接操作。

Figure 2. YOLO-ADOP model architecture diagram
图2. YOLO-ADOP模型结构图
2.2.1. 改进检测分支
如图所示,红色虚线框内为新增的P2检测部分,其作用是用于检测极小的目标。在卷积网络中,深层卷积会损失许多小目标信息,造成小目标的漏检误检;而P2检测分支的输入大部分来自于浅层主干网络,浅层网络保留了很多小目标的形状、大小和颜色等信息。所以引入P2检测分支可以更有效的提取到小目标信息,以此增加小目标识别精度。
于此同时,鉴于无人机拍摄图片中的大目标较为稀少,而使用P5检测分支来检测大目标不仅需要更多算力,还会在反向传播更新权重时引进误差,造成总体检测精度降低。因此,本文在新增P2检测分支的同时,也在算法中剔除了原本存在的P5检测分支。
2.2.2. 辅助训练头
如图3所示。辅助训练头(Auxiliary Head)的输入通道是上采样过程中3个C3的输出,然后通过卷积改变其通道数。辅助训练头在训练过程中能够起到加快中间层权重更替、减少训练批次的作用。

Figure 3. Simplified diagram of the YOLO-ADOP model
图3. YOLO-ADOP模型简图
2.2.3. 解耦头
YOLOv5的检测头中分类任务与回归任务是通过权重耦合在一起的,这种设计会造成两种任务之间的冲突。YOLOX证明如果将分类任务与回归任务解耦,可以提高模型检测精度。本文参考了YOLOX设计的解耦头,并对其解耦头进行简化,解耦头设计如图4所示。

Figure 4. Diagram of the decoupled head structure
图4. 解耦头结构图
如图4所示,解耦头的输入依次通过1 × 1、3 × 3、1 × 1的卷积后,分别得到三组,从而实现将分类任务与回归任务分离的目的。检测头解耦后减少了任务之间的差异带来的预测偏差,从而提高了模型检测的精度。
2.3. 改进损失函数(EIOU, OTA)
YOLOv5使用的损失函数为CIOU损失函数,公式如下,其中,w,h,wgt,hgt,分别表示预测框和真实框的宽高,b和bgt表示预测边界框和真实边界框的中心点,ρ表示预测值和真实值的欧式距离,wc,hc分别表示预测框和真实框的最小外接矩形的宽高,IOU表示交并比。
(1)
(2)
(3)
在回归时,当预测框和真实框的纵横比成线性时,其惩罚项就失去了原本的作用;预测框的梯度中,w和h值不能保持同步增加或者同步减少,这样就无法有效的描述回归目标,可能会导致收敛缓慢并且回归不准确。
为解决上述问题,ZHang等人提出了EIOU [24] ,公式如下所示:
(4)
EIOU延续了CIOU的中心距离损失和重叠损失,但调整了宽高损失,在惩罚过程中,可以更好的反应预测框与目标框之间的宽高差异,加速了网络收敛,有助于提升回归精度。
2.4. 标签分配原则
在本文中我们引入OTA标签分配原则 [25] ,OTA从全局的角度创新性地重新审视了标签分配,并提出将分配过程作为一个最优输运问题来定义,这是优化理论中一个经过深入研究的主题。具体来说,将每个需求者(anchor)与供应者(gt)之间的单位运输成本定义为它们分类和回归损失的加权和,然后将寻找最佳分配方案转化为在最小运输成本下解决最优输运计划,这将有效的提高识别精度。
3. 实验与结果分析
本文采用的实验数据是VisDrone数据集 [16] ,它是由中国天津大学机械学习与数据挖掘实验室AISKYYE团队制作。VISDrone作为历届比赛官方数据集,其图片数据由不同型号的小型无人机,在各种场景以及不同天气和光线情况下进行收集制作而成。数据集包含四个部分:训练集、验证集、测试集,以及测试挑战集,其中图像的最大分辨率为2000 × 1500,训练集具有6471个图片及其对应的用于训练模型的注释;验证集和测试集分别有548个和1610个图片,它们都有相应的注释,并且这两个集合用于评估模型;测试挑战集有1580个图像,并且不提供注释。训练集各类物体数量如图5所示。

Figure 5. Label distribution of VisDrone dataset
图5. VisDrone数据标签分部图
3.1. 实验环境
本文实验在Linux操作系统下进行,采用基础模型为7.0版本的YOLOv5 [7] ,使用NVIDIA GeForce RTX 3090显卡进行训练和测试。为了减少训练时间,本文实验在训练阶段都使用了相对应COCO数据集下的预训练权重。软件环境采用Python 3.9、PyTorch 1.13.1作为实验框架,使用CUDA 11.6进行GPU加速,学习率为0.01,采用带动量的随机梯度下降法(SGD)作为优化器,动量设置为0.937,权重衰减系数为0.0005。
3.2. 实验评价指标
本文采用AP50、mAP、精确度(Precision)、召回率(Recall)作为评估指标。相应的计算公式如下:
(5)
(6)
其中TP为正确分类的正样本数,FP为误报的负样本数,FN为漏报的正样本数。
(7)
(8)
mAP是在区间[0:50, 0:95]区间内,以0:05为步长10个AP值的平均值。
(9)
3.3. 实验结果与分析
3.3.1. 检测分支对检测精度影响实验分析
本文首先对检测分支的位置和数量进行实验。以YOLOv5s为基础模型,对从Neck中引出的4个检测分支P2~P5进行实验。实验中通过增加或舍弃不同的检测分支以及其对应的neck层来判断检测分支对最终结果的影响。实验数据为VisDrone数据集,epoch为300,测试图片大小固定为640 × 640,实验结果如表1所示。
,
,
和
分别表示验证集和测试集上的
和mAP。

Table 1. Detection results of different detection branch combinations
表1. 不同检测分支组合的检测结果
由表1中的第3、4和第1、2项项对比可看出,增加P2检测分支可以有效提高检测效果,原因在于P2检测分支包含更多的浅层特征,包括形状、大小和位置等信息,因此它能更准确地定位小目标,这也是它能有效提升小目标检测效果的原因。对比表1中的第1、3项和第2、4项可以看出,剔除掉P5检测分支后,检测效果不仅没有下降反而有所提升,原因在于大物体(像素占比大的物体)在VisDrone数据集里所占比重很小,而P5检测分支主要检测大物体,不适合检测小目标物体。综上,为提高检测效果,本文选用P2、P3、P4三个分支进行检测。
3.3.2. 各类IOU对比实验
本文对各类IOU进行实验,研究目前常见的CIOU、DIOU、EIOU、GIOU和SIOU以及其相关α变种对VisDrone数据集结果影响。其中CIOU为YOLOv5默认IOU,本文α取值为3,epoch为100,batch-size为64。实验结果如下表2所示。

Table 2. Impact of different IOU metrics on experimental results
表2. 不同种类IOU对实验结果的影响
由表可以看出,相较于CIOU,使用EIOU的AP50会有0.60%的提升,mAP的提升为0.10%。综上考虑本文使用EIOU作为算法。
3.3.3. 解耦头对实验的影响分析
为验证解耦头的检测效果,本文设计了耦合头与解耦头的对比实验。实验数据采用VisDrone数据集,实验图片固定大小为640 × 640,基准模型Baseline为YOLOv5s模型,D-Head为使用了解耦头的模型,实验结果如表3所示。

Table 3. Experimental results of coupled head and decoupled head comparison
表3. 耦合头与解耦头对比实验结果
从表3可以看出,使用解耦头后模型的检测效果要优于基准模型,在验证集上的AP50提升了1.32%。证明了解耦头设计的有效性。
3.3.4. OTA损失函数和辅助训练头对实验影响分析
为验证本文使用的OTA机制和辅助训练头对实验结果的影响,本文通过增加OTA和辅助训练头,来探究辅助训练头和OTA对实验结果的影响,实验结果如表4所示。

Table 4. Improvement effects of OTA and auxiliary heads
表4. OTA和辅助训练头的提升效果
从表4中可以看出,使用了OTA之后,检测效果提高了3.49%;只添加辅助训练头的检测效果提高并不明显,但其加快了训练速度,训练时长由6.1 h缩短到3.3 h;两者结合后,检测效果增加了4.78%,证明了辅助训练头的有效性。
3.3.5. 综合对比实验
最后,为了综合测试本文模型的检测效果,本文在对比基准模型的同时也对比了目前主流模型进行对比。所有模型的训练数据是Visdrone训练集,并最终在VisDrone测试集上进行验证,batch-size设置为1,验证结果如下表5所示。

Table 5. Comparative experimental results of various models on the VisDrone test dataset
表5. 各种模型在VisDrone测试集对比实验结果
(注:*表示该方法没有剔除P5检测分支)。
由表5所示,YOLO-ADOP模型在VisDrone数据集上的检测效果要优于同级别先进算法。本文算法在640分辨率下,较基准模型AP50提升了7.18%、mAP提升了4.04%,而推理时间为10.7 ms,计算量只增加了19.4 G,参数量更是只增加了5.7 M,可以满足实际的运用需求。训练过程如图6所示。
由图6所示,横轴为训练批次,设定训练批次为300,YOLO-ADOP和YOLOv5s均在200 epoch左右达到最优模型。在验证集上AP50提升了10.83%,有效证明本文算法改进的有效性。
如图7所示,更为直观的可以看出,本文算法在检测效果上超过了所有YOLOv5模型,以及同级别YOLOv8s和YOLOv7-tiny算法。本文算法与TPH-YOLO [22] 模型相比,在检测效果相似的情况下,本文算法的推理时间和计算量只是TPH-YOLO模型的38.6%和13.0%,参数量更是只是有其11.3%,可见YOLO-ADOP对于硬件要求更低、表现更优,更适合部署在无人机上。
此外,本文还分别对比了不同小目标、中等目标以及大目标的AP50值,测试结果如表6所示。
由表6可见,本文改进算法在小、中、大目标检测方面相较于基准模型均有提升,证明本文算法更适合于物体变化大的无人机拍摄场合。
3.3.6. 消融实验
为了更好的说明本文改进模块与方法对模型检测能力的提升,以及对计算量、推理时间和模型体积的影响,本文最后进行了消融实验。本消融实验是在YOLOv5s模型上逐个添加本文改进模块与方法所得出的实验结果,首先添加的是设计的解耦头,其次改变检测分支,然后使用EIOU代替CIOU优化损失函数,然后添加OTA,最后新增了辅助训练头(AUX)。消融实验的测试结果基于VisDrone测试集,测试图片分辨率大小固定为640,测试结果如表7所示。

Figure 6. Comparison of the training process
图6. 训练过程对比图

Table 6. Detection performance of YOLO-ADOP and YOLOv5 for objects of different scales
表6. YOLO-ADOP和YOLOv5对于不同尺度物体的检测效果
(注:*表示该方法没有剔除P5检测分支)。

Table 7. Results of ablation experiments
表7. 消融实验结果图
表7从上到下依次添加了本文改进的方法,从表中可以看出,本文设计的组件对检测效果均有提升。其中,本文中添加的P2检测分支对AP50作用效果最为明显,提升了2.46%,说明P2检测分支对小目标检测的有效性,可以极大减少由于检测分支设定的不合理性造成的漏检情况。剔除掉P5检测分支后,计算量、推理时间和模型体积都下降的同时,检测效果不仅没有下降,反而上升了0.65%,这表明VisDrone数据集不适合采用大目标检测分支,更进一步佐证了检测分支的设计应充分考虑数据集待检测物体大小的理念。
3.4. 实验效果
从上述的对比实验中可以看出本文改进的模型在VisDrone数据集上的检测效果要优于YOLOv5以及其他同等规模的主流模型。
图8展示了本文改进的YOLO-ADOP模型与使用的基准模型YOLOv5s在VisDrone测试集上的检测效果对比图。
从对比图结果1和结果3中可以看出,本文提出的YOLO-ADOP模型在识别远处的密集区域小目标时的检测效果要优于YOLOv5s模型,能够有效的识别到远处的行人、三轮车等目标,做到更佳的识别效果。从结果2可以看出,对于近处的密集目标识别任务,YOLOv5s只识别到了一个人,而YOLO-ADOP能够准确的识别出电动自行车以及车上的两个人,做到识别精度更高、识别误差更小的优点。从结果4可以看出,YOLO-ADOP没有做出对汽车的误判,证明其相较于YOLOv5s具有更佳的鲁棒性。综上,本文模型YOLO-ADOP拥有更良好的检测效果。

Figure 8. Comparison of detection results between YOLO-ADOP and YOLOv5
图8. YOLO-ADOP和YOLOv5检测结果对比图
4. 结论
本文提出了YOLO-ADOP算法,用于解决无人机图像目标检测的三大挑战:尺寸变化、高密度和大范围的目标覆盖。通过调整网络识别层、使用解耦头、改进IOU计算方式以及OTA标签分配机制,我们成功改进了YOLOv5s模型,将VisDrone数据集上的检测结果提升了7.18%。这对无人机应用的精确性和广泛应用领域具有重要意义。目前,无人机图像目标检测领域仍在不断探索和优化中,以实现更大的社会价值。