吴海斌 ,张 亚 ,胡 鹏
(安徽理工大学 人工智能学院, 安徽 淮南 232001)
随着深度学习技术的快速发展,基于深度学习的无人机航拍图像检测在城市交通、环境监测和灾害检测等领域的应用越来越广泛[1]。由于无人机飞行高度和拍摄角度的独特性,导致捕获图像中存在大量小目标,准确识别无人机图像中的小目标是提升无人机航拍目标检测的关键。
目前,基于深度学习的目标检测算法一般被分为两类。第一类是以区域卷积神经网络[2](regionconvolutional neural network,R-CNN)、快速的区域卷积神经网络[3](faster-region-convolutional neural network,Faster-R-CNN) 为代表的二阶段算法,包含候选框的提出和分类器的构建。此类方法在目标检测过程中精度较高,但检测速度较慢,难以满足现代化生产对高速实时检测的需求;易丢失图像中小目标的位置信息,导致小目标特征的学习效率较低。另一类是由Joseph 等[4]提出的以YOLO 为代表的一阶段目标检测算法,将目标检测转化为回归问题,通过网格划分特征图,得到目标的边界框位置及所属类别。此类方法检测速度较高,能够实现端到端的检测,但在准确性上表现不佳。随着YOLO_v2[5],YOLO_v3[6]和YOLO_v4[7]相继提出,在保持较高检测速度的同时检测精度也在逐步提高。YOLO_v5[8]是YOLO 系列的一个延伸,通过加入Focus 结构和自适应图片缩放,可减少算法的参数量和计算量;相对于YOLO_v4 等系列的YOLO 算法,YOLO_v5 的检测速度和精度有显著提高,但在检测小物体上由于缺乏对小目标特征的有效提取,检测精度有待提升。
针对无人机航拍图像中小目标多的问题,Zhu 等[9]提出基于transformer 的可变形检测转换器(deformable detection transformer, DDETR),利用可变形注意力模块来提高小目标的检测精度,但由于采用残差网络提取特征,导致低层次特征信息丢失,小目标检测精度依然不够理想。田港等[10]将三尺度检测模型改进为双尺度检测模型,并通过通道裁剪减小模型内存占用和计算量,但导致小目标检测的精度降低。张智等[11]通过密集高级组合模式连接双swin-transformer 骨干网络,并结合特征金字塔构建小目标特征聚合网络,在不损失语义信息的同时得到对小目标更好的特征描述,但由于改进算法在不经过训练就直接在CARPK 数据集上进行测试,导致小目标的检测精度仍较低、泛化性能较差。郝立等[12]提出复杂环境下无人机作战的小目标检测方法,可改善复杂光照下小目标的识别,但没有考虑实际应用场景,导致模型的泛化能力较低。陈映雪等[13]提出根据相邻帧信息预测当前帧丢失目标的位置范围,并利用检测结果进行修正,实现丢失目标的再召回,但该网络训练针对性强,属于专用型目标检测模型。上述小目标检测方法分别考虑了检测的速度、精度,但提高速度会导致精度下降,同时小目标种类的单一、环境的固定导致小目标检测方法分类和定位的局限性。YOLO_v5x 是YOLO_v5 中网络结构最深、精度最高的版本,针对无人机航拍图目标检测存在的问题,提出一种基于YOLO_v5 小目标检测方法,通过对YOLO_v5x 的结构进行改进,以增强图像中目标定位的准确性,提高图像分辨率低且目标较小的检测精度。
YOLO_v5 网络结构是在YOLO_v4 的基础上进行改进的,具有极强的网络部署能力[7]。YOLO_v5x是深度、宽度最大的网络,结构包含输入端、主干网络、颈部网络和输出端4 个部分,如图1。
图1 YOLO_v5x 网络结构Fig.1 YOLO_v5x network structure
图2 当a=2 时SPD 的图解Fig.2 Diagram of SPD at a=2
输入端主要对图像进行灰度处理等预操作,生成满足输入主干网络的特征图像。在网络训练时,为进一步提高检测的精度和速度,使用Mosic 数据增强方法丰富被检测对象的背景,采用自适应锚选框对图像进行缩放。主干网络也称特征提取网络,将预处图像输入Focus 模块,为每隔一个点获得相应的特征值,并连接4 个独立的特征层以获得最终结果,将图像的宽度和高度信息集中到通道中,解决下采样带来的信息丢失问题[14]。同时使用效果与跨级网络(cross stage partial,CSP)结构基本相似的C3模块替换BottleneckCSP[15]模块,减少算法的参数量,提高处理速度。Conv 模块是对输入的特征图进行卷积操作,目的是调整特征图的通道数。快速空间金字塔池化(fast spatial pyramid pooling,SPPF)模块有效避免了对特征图裁剪、缩放导致的图像失真,可提高检测精度。颈部网络进一步提取图像的特征,采用特征金字塔[16](feature pyramid network,FPN)和路径聚合结构[17](path aggregation network,PANet),前者通过自上向下传达语义特征,后者则自下向上传递定位信息,通过融合上下层的特征信息,加快信息的传播,提高目标检测的性能。输出端是对特征图不同尺度的目标进行最后的预测,包括1 个分类分支和1 个回归分支,判断特征图中是否存在对应的对象。
在计算机视觉的目标检测任务中,卷积神经网络表现突出,但输出结果的精度与图像分辨率成正相关。在多数研究场景中,输入特征图分辨率较高,图像中存在大量的冗余信息充足,跨步卷积和池化造成的特征丢失可忽略。当图像中目标较小、分辨率较低时,卷积神经网络结构受到细粒度特征信息丢失和特征模糊的影响,性能明显降低。文中在此基础上引入空间到深度(space-to-depth,SPD) 模块,SPD 是一个空间到深度的层结构[18]。基于图像转换技术,在原始图像输入神经网络前对图像进行缩放,且将其应用在网络内部和下采样特征映射中,在不丢失信道维度中信息的同时对特征图进行下采样[19]。由于无人机航拍的特殊性,获得的图像大部分分辨率低及目标较小。
注意力机制是通过给输入的特征图赋予不同的权重,选择有用的信息,从而得到更好的特征。通道注意力机制可提高算法的性能,但由于忽略位置信息,导致空间信息的缺失。文中在此基础上引入协调注意力机制,将位置信息嵌入通道注意力机制。CA 机制将通道注意力分解为沿2 个空间方向聚类特征的编码过程,在捕获远程依赖关系的同时保持精确的位置信息,最后获得1 对方向感知和位置敏感的注意图,将其应用在输入特征图,增加目标的特征表达能力[20]。无人机捕获的航拍图中,多数目标较小且覆盖区域较大,使用CA 机制可使算法更关注有用的对象,对提高网络模型的收敛具有较优的效果。CA 机制包含协调信息嵌入和协调注意力生成,如图3。
图3 协调注意力机制Fig.3 Coordinate attention mechanism
1.2.1 协调信息嵌入
在视觉任务中,位置信息对捕获空间结构十分重要。全局平均池化是将空间信息压缩到通道中,导致位置信息难以保存。因此,CA 机制将全局平均池化分解为一对一维特征操作。具体是将输入特征图X分别沿水平(level,L) 和垂直(perpendicularity,P)方向对每个通道进行全局平均池化(average pool)操作。
式中:h为高度,表示特征图X第c通道处的高度,大小为0~H;xc表示坐标的灰度值; zhc(h) 表 示高度为h的第c通道的灰度总值;w为宽度,表示特征图X第c通道处的宽度,大小为0~W; zwc(w) 表示宽度为w的第c通道的灰度总值;W为特征图X的宽度;H为特征图X的高度;C为特征图X的通道数,分别生成尺寸为C×H×1和C×1×W的特征图。
1.2.2 协调注意力生成
为更好地利用协调信息嵌入变换产生的表征,提出简单捕获感兴趣区域以及有效捕捉通道间关系的协调注意力生成变换。
边界框回归是通过预测框来定位图像中的目标,提高检测器学习特征信息的效率。YO- LO_v5 的边界框损失采用完整交并比 (complete-intersection over union,CIOU)损失函数,公式如下所示:
其中:LCIOU为CIOU 函数的损失定义;b和bt代表预测框和真实框的中心点,t 表示真实框; ρ为预测框和真实框之间的欧氏距离;d为同时包含预测框和真实框的最小封闭区域的对角线距离; β为权衡的参数; υ为衡量长宽比一致性的参数;wt和ht为真实框的宽度和高度;U为预测框和真实框的交并比。CIOU 损失函数考虑了预测框的重叠面积、中心点距离和长宽比,但描述的是相对值,没有考虑难易样本的平衡问题,导致算法在检测小目标的定位精度较低。
文中在CIOU 损失函数的基础上引入 α-IOU损失函数[21]。通过调节 α值实现不同水平的回归精度,α对不同算法或数据集的敏感程度不同。 α-IOU是通过提高IOU 目标的损失和梯度的权重来获得更好更快的回归精度,特别是在小目标的定位和检测性能上更加突出。 α-IOU可广泛用于改进最先进的检测算法,且无需引入额外的参数,同样无需增加训练及推理时间,其表达式如下:
式(11)为基于 α-IOU 损 失函数的 α-CIOU损失函数。
无人机航拍图中的目标尺寸较小,目标特征不够明显,导致算法的检测精度降低。文中在此基础上添加1 个小目标预测头,结合其他3 个预测头,在YOLO_v5x 算法中添加SPD 模块、CA 机制、α-IOU损失函数和小目标预测头。改进YOLO_v5x 算法的网络结构如图4。
图4 改进YOLO_v5x 算法的网络结构Fig.4 Network structure of improved YOLO_v5x algorithm
为评估改进算法的结构性能,采用Visdrone[22]无人机目标数据集对改进前后的算法进行目标检测实验。使用COCO 数据集[23]的评价指标(AP,AP50,AP75,APS,APM,APL)评价目标检测算法的检测精度。其中:AP 表示平均精度,指精度-召回曲线的面积;AP50,AP75分别表示计算平均精度时,以0.50,0.75为IOU 的阈值;APS表示小目标即像素面积小于32×32 的目标框检测的平均精度,是本文改进算法的核心评价指标;APM表示中等目标即像素面积在32×32~96×96 的目标框检测的平均精度;APL表示大目标即像素面积大于96×96 的目标框检测的平均精度。
采用中国移动云操作系统,搭配8core、50 GB RAM CPU、Tesla V100–32 GB GPU,使用CUDA11.6、Python 3.9 框架;设置训练次数(epoch)200、批量大小(batch-size)4,衰减系数0.000 5、学习率0.01。Visdron无人机目标检测数据集共10 209 张图像,其中训练集6 471 张、验证集548 张、测试集3 190 张,包括10 个类别,分别是行人、人、自行车、汽车、货车、卡车、三轮车、带篷三轮车、公交车和摩托车。实验算法训练过程包括5 个步骤,分别是数据集的处理、模型的搭建、参数设置、训练和验证,如图5。
图5 算法训练过程Fig.5 Model training process
实验过程包括:在相同参数、数据集和环境条件下,通过在YOLO_v5x 算法的基础上分别引入SPD 模块、CA 机制、 α-IOU损失函数以及添加小目标预测头等模块,验证改进YOLO_v5x 算法的检测效果;同时,将改进YOLO_v5x 算法与目前主流的目标检测算法进行对比实验,验证其可靠性和泛化性。
2.2.1α不同取值时的小目标检测精度
为验证 α-IOU 中 α值对改进算法检测小目标精度的影响,修改 α-IOU 中 α值为[1/2,10],在Visdron无人机目标检测数据集上选取部分图像进行训练测试,结果如图6。由图6 可看出: α=[1/2,3]时,AP和AP50随 α的增大而逐渐提升; α=(3,10]时,AP和AP50随 α的增大而逐渐下降。因此,文中后续实验均取 α=3。
图6 α不同取值时改进算法对应的平均精度Fig.6 Average accuracy of the improved algorithm with different values of α
2.2.2 添加不同模块时的小目标检测精度
为验证YOLO_v5x 算法在相同参数和环境下引入 α-IOU损失函数、CA 机制及添加SPD 模块、小目标预测头(Head)等模块时的小目标检测效果,对其进行消融实验,结果如表1。并将改进前后YOLO_v5x 算法的实验结果可视化展示,如图7。
表1 不同模块组合对应的小目标检测精度Tab.1 Small target detection accuracy corresponding to different modules
图7 改进前后算法的检测结果Fig.7 Detection results of algorithms before and after improvement
表1 中第一行作为消融实验的基线,为YOLO_v5x 算法;第二行引入CA 机制模块,通过将目标位置信息编码到通道注意中,算法更关注有用的特征信息,小目标的检测平均精度APS提高0.9%,同时检测速度也提高了6.9 帧/s;第三行引入α-IOU损失函数,通过获得更准确的边界框回归精度,实现算法对目标更精确的定位,小目标检测平均精度APS提高1.6%,检测速度也提高了8.9 帧/s;第四行在 α-IOU的基础上添加SPD 模块,在减少细粒度信息丢失的同时进行下采样,提高算法对低分辨率特征的提取能力,小目标检测平均精度APS提高3.1%,检测速度也提高了17 帧/s。由于无人机拍摄高度和角度的变化,航拍图像中小目标较多并且特征不明显,最后一行为添加CA 机制、α-IOU损失函数、SPD 模块和1 个预测头,算法的小目标检测平均精度APS得到较大提高,比原基线算法提高了11.8%,但是由于参数量的增加,检测速度降低比较明显。
图7 中左侧黄色标注的内容为观察对象,将检测结果进行局部放大显示于右下角方框。其中:第二列为小目标密集环境改进前后YOLO_v5x 算法的检测结果;第三列为在弱光环境改进前后YOLO_v5x算法的检测结果。由图7 可看出:在小目标密集的情况下,改进算法依然能够有效检测出标识框中的行人和自行车;在弱光环境导致的小目标模糊的情况下,改进算法能够有效检测出标识框中的汽车和公交车,改进的YOLO_v5x 算法表现出较强的可靠性和泛化性。
2.2.3 不同算法的小目标检测效果
为验证改进后算法的检测性能,同时选取当前较流行的算法,如RetinaNet[24]、YOLOX-S[25]、Grid-RCNN[26]和改进Double-Head RCNN[27],在Visdron数据集上进行目标检测对比实验。为突出改进的YOLO_v5x 算法在复杂环境下对小目标的检测性能,选取白天、黑夜和小目标密集3 种环境进行可视化,结果如图8。
图8 不同算法的检测结果Fig.8 Detection results of different algorithms
由图8 可看出:由于RetinaNet[24]、YOLOX-S[25]和Grid-RCNN[26]对底层特征的关注度较低,导致小目标的检测性能减弱,误检率和漏检率较高;尽管改进Double-Head RCNN[27]通过引入transformer、可变形卷积及 CARAFE-FPN 模块[28],一定程度上解决小目标特征丢失的问题,但仍会出现小目标漏检误检情况;本文算法通过减少下采样的方式防止细粒度信息丢失,并引入注意力机制和额外的小目标检测头,增强网络对不同维度位置信息的提取能力,降低了小目标的漏检率和误检率,在不同场景均获得较好的检测结果,充分体现出所提改进算法的优越性。5 种算法的检测精度如表2。
表2 不同检测算法的对比实验结果Tab.2 Comparative experimental results of different detection algorithms
根据表2 可得:本文算法的AP,AP50,AP75,APS,APM,APL分别为33.3%,52.3%,32.2%,23.9%,42.5%,44.9%,检测速度(FPS)达到8.2 帧/s;相较于一阶段算法RetinaNet 和YOLOX-S,本文算法在APS上分别高出15.7% 和13.1%,但检测速度略低;改进Double-Head RCNN 算法APS为18.1%,且APL为48.7%,最大,但 APS相比本文算法低5.8%,且本文算法的小目标检测平均精度即APS最大,在当前主流检测小目标算法中达到先进水平。
针对无人机航拍图像小目标特征模糊导致难以检测的问题,提出一种改进的YOLO_v5x 方法,且利用Visdron 数据集进行目标检测实验。通过在YOLO_v5x 算法中添加SPD 模块以及小目标检测头,减少细粒度信息的丢失,能够有效提高小目标检测的效率;引入CA 注意力机制、且在CIOU 损失函数的基础上引入 α-IOU损失函数,能够明显提高小目标的定位精度。结果表明:本文算法在Visdrone无人机目标检测数据集上可达到33.3%的平均精度,相比于原始YOLOv5x 提高了7.8%;与其他算法相比,本文算法的平均精度和小目标检测平均精度最高,能够更好地提取小目标中有用的特征信息,提高了小目标检测定位的准确性,解决了小目标特征模糊导致难以检测的问题;同时实现了不同类别小目标的检测,可增强小目标检测算法的泛化能力。