基于YOLOv7的朱鹮目标检测算法的研究
2024-05-25黄俊霖张鹏超通信作者张家俊
黄俊霖,张鹏超(通信作者),张家俊
1.陕西理工大学机械工程学院,陕西汉中,723000
2.陕西省工业自动化重点实验室,陕西汉中,723000
0 引言
朱鹮作为濒临灭绝的鸟类之一,了解和掌握野生朱鹮的最新种群数量,是评估和保护朱鹮种群的重要依据[1]。由于朱鹮栖息地广泛,生活环境复杂,传统的人工巡察方法效率较低。随着计算机技术的发展,利用移动设备和计算机视觉技术可以长期监测朱鹮的栖息区域,因此,基于计算机视觉的方法可以有效替代人工巡察,对朱鹮的保护具有重要的意义。
然而,传统目标检测提取的特征多为颜色、纹理、结构等低层图像特征,没有充足表示位置和类别的语义信息,精度一直处于较低水平;深度学习目标检测算法[2]能直接从预处理后的图像数据中自动提取特征,不再需要人工参与特征提取,且能够学习到图像的高级语义特征,分为两阶段检测算法和一阶段检测算法。典型的两阶段检测算法如R-CNN[3]、Fast-R-CNN[4]、Faster-RCNN[5],在执行时需要分两步完成,先获得候选区域,然后进行区域内目标分类;典型的一阶段检测算法如YOLO(You Only Look Once)系列[6-10]和SSD[11](Single Shot Multibox Detector),可以直接预测出目标的类别和位置信息,检测速度较快、实时性好,但是相比于两阶段检测算法精度较低,处理实际任务中出现的遮挡、漏检等问题仍需进一步研究。本文的主要内容如下。
(1)从汉中朱鹮国家级自然保护区拍摄部分图像资料,同时在互联网中获取部分,并使用LabelImg软件对图像中朱鹮的位置进行标注,构建一个数据量相对充足的数据集。
(2)提出了一种基于YOLOv7[12]的小目标检测算法,旨在提高YOLOv7目标检测网络的准确性。首先,改进算法重新设计了预测锚框与特征融合框架,调整了颈部特征提取层的检测尺度;接着,将协调注意力机制(Coordinate Attention,CA)融入主干网络;最后,引入深度可分离卷积来轻量化整体网络。
(3)设计基于自建数据集的横向对比实验和纵向消融实验,以及基于COCO数据集的对比实验,证明改进算法模型对实际检测朱鹮的有效性。
1 基于YOLOv7的高性能朱鹮检测算法
针对实际检测中出现的朱鹮目标漏检、误检问题,基于YOLOv7网络框架设计高性能朱鹮检测算法结构,网络结构如图1所示,其中“ELAN-D”模块和“EW-DS”模块为轻量化模块,未提及模块为YOLOv7原模块[12]。本文的主要工作有以下三个方面。
图1 YOLOv7-DSCA 网络结构图
1.1 颈部扩展结构
自建野生朱鹮数据集中存在部分小目标,因此,对网络结构的优化改进需要对小目标检测进行考虑,以提高整个网络的检测能力。拓宽颈部特征聚合结构,用于生成160×160的特征图,增大网络的感受野,同时采用K-means聚类[8]方法生成针对小目标的锚框,具体操作如图1红色虚线框所示。对于所增加的检测头,仍采用YOLOv7网络的设计,在推理时执行重参数化以将多个网络转换为单头网络,等效于多个网络参与决策,因此,有更快的推理速度。之所以不采用直连结构,是因为在研究YOLOv7的论文中,实验证明直连的重参数化模块会破坏残差和拼接结构,对不同的特征图产生梯度多样性[13]。
1.2 轻量化ELAN模块
改进后的YOLOv7网络结构虽然有足够的深度,却导致网络模型的参数量及计算量较大,不适合移动设备的搭载使用,为此设计了轻量化模块“ELAN-D”模块及“EW-DS”模块。采用深度可分离卷积(DWSConv)替换ELAN模块与ELAN-E模块中的部分3×3卷积。普通卷积对输入特征图做卷积计算时计算量(Floating point operations,FLOPs)记为F1;使用深度可分离卷积代替普通卷积后的计算量,记为F2。公式如下:
标准卷积计算量:
深度可分离卷积计算量:
两者之商:
其中,DK代表卷积核大小,DF代表输入特征图大小,M代表输入特征图通道数,N代表输出特征图通道数,从式(3)可以看出,所替换标准卷积的卷积核为1时,在通道数较多的情况下对网络参数的影响较小,所替换的普通卷积的卷积核为3,替换后的理论计算量缩减为原来的1/9~1/8。
1.3 E-DSCA高效注意模块
相比于目前使用较多的SE[14]、CBAM[15]注意力机制,协调注意力机制弥补了SE注意力机制只考虑内部通道信息而忽略了位置信息的缺点;同时弥补了CBAM注意力机制无法捕获长程依赖信息的缺点。为了阐明CA注意力机制的核心概念,定义以下公式:
沿特征图X方向全局平均池化:
沿特征图Y方向全局平均池化:
沿空间维度拼接后进行卷积激活操作:
生成X方向的注意力向量:
生成Y方向的注意力向量:
权重计算:
其中,z为全局平均池化后的输出,h、w为像素点对应的横纵坐标,xc表示对应坐标像素点的值;中括号表示沿空间维度的拼接操作,F1表示利用1×1卷积的操作,表示为非线性激活操作,为输出特征图;对沿X、Y两个维度拆分得到、,、表示对得到的两个特征图进行卷积操作,表示进行sigmoid激活操作,生成0~1之间的数作为注意力机制权重,表示为、;表示最终生成的特征,表示上层输出特征,表示沿X方向的注意力向量,表示沿Y方向的注意力向量,需要注意的是,这里的乘积不是矩阵向量相乘,而是元素一一对应相乘。如图2所示,将CA注意力机制融入ELAN模块。其中“DSCBS”模块由深度可分离卷积经过批标准化操作后采用SiLU激活函数,卷积核为“3*3”,步长为2;“CBR”模块代表使用ReLU激活函数的卷积块。
图2 “E-DSCA”模块示意图
2 实验数据集与结果分析
2.1 实验数据集
由于野生朱鹮属于濒危野生动物,并且活动范围较广,栖息环境复杂,数据获取困难,所以数据集的制作采用少量实地拍摄结合网络渠道获取的数据。本次实验共获取原始图像2000张,包括3215个对象。采用8∶2的比例划分数据集,最终选择1600张作为训练集、400张作为测试集,采用LabelImg标注工具对每张图片进行标注。
2.2 实验训练环境与训练方法
实验硬件环境见表1,在此基础上搭建软件环境Ubuntu18.04LTS、Python、Pytorch、CUDA等。
表1 硬件环境
训练优化器采用随机梯度下降优化器(Stochastic Gradient Descent,SGD),可以避免模型陷入局部最优,导致最后精度过低等问题。将训练网络的初始学习率设置为0.01,学习率动量因子设置为0.937,权重衰减系数设置为0.0005,批次大小设置为8,训练次数为300轮。
2.3 性能评价指标
评价目标检测性能的指标为测试样本的平均精度均值(Mean Average Precision,mAP)、模型的参数量或模型大小和网络计算量。以Recall为横轴、Precision为纵轴绘制P-R曲线,并对其积分求出曲线下的面积即为AP(Average-Precision,AP),判断目标检测结果是否正确的评价指标为重叠度(Intersection over Union,IOU),当IOU阈值取0.5时,得到的平均精度记为PmAP@0.5,当IOU阈值在0.5到0.95之间等间隔共取10个值时,得到10个平均精度值再取均值得到的评价指标,记为PmAP@0.5:0.95。
2.4 实验结果与分析
2.4.1 横向对比实验
在自建朱鹮数据集上的实验结果见表2,从中可以看出,与YOLOv7算法相比,改进后的网络模型在检测精度方面得到提升,且参数量较少;相比大型框架YOLOv7-X,所提算法的检测精度仍有提高,并且模型参数量降低了60.14%,计算量降低了62.67%,证明引入深度可分离卷积对整体网络架构的轻量化有明显作用;相比YOLOv5l,PmAP@0.5上升超过5个百分点;与改进后的YOLOv5s算法[17]相比,对朱鹮目标的检测精度有明显的提升。为了进一步验证本文算法的鲁棒性与泛化性,将本文所提出的网络模型在公共数据集MS COCO数据集[16]上进行了实验。网络模型训练参数设置与前文保持一致,其中缺省项表示未在公开数据中找到对应数据。相比YOLOv7网络模型,本文模型在检测精度方面有明显提升;与轻量型网络算法EfficientDet-D1[18]相比,在模型参数数量与计算量方面虽有差距,但检测精度比其高出15个百分点;对比同时期的两阶段检测算法Mask R-CNN[21],改进算法作为弱势的单阶段检测算法在检测精度方面仍有优势,具体见表3。
表2 朱鹮数据集上的横向对比实验
表3 MS COCO 数据集上的横向对比实验
在改进网络模型后,因扩张Neck和引入CA,网络模型参数量与计算量均略微提升,替换深度可分离卷积后保留了CA带来的特征提取能力,同时降低了模型参数量与计算量,解决了特征提取不充分导致的部分朱鹮图片或视频检测目标丢失的问题。如图3所示为在常规环境、目标较小、遮挡等情况下的检测结果。
图3 改进前后效果对比图
2.4.2 纵向对比实验
在自建朱鹮数据集上设计消融实验,首先对YOLOv7框架的颈部提取层扩张;然后引入E-DSCA模块进行训练测试;最后引入EW-DS模块进行测试实验。结果见表4,改进后的网络模型相比YOLOv7的PmAP@0.5提升2.3%,PmAP@0.5:0.95提升3.5%,参数量降低24.3%,计算量降低32.4%。仅扩张颈部提取层后模型参数仅上升0.8M,计算量上升14.3GFLOP,同时PmAP@0.5提升了1.5%,PmAP@0.5:0.95提升了7.7%,证明特征金塔结构的扩张带来的尺度增加能解决朱鹮数据集中小目标特征捕获丢失的问题;同样,引入E-DSCA模块带来的精度提升,证明了CA注意力机制改善了正负样本不平衡的问题;使用深度可分离卷积组成的轻量化模块后,网络模型的模型参数数量及计算量均有明显减少,分别降低了37.1%以及51.9%,平均检测精度仅降低约2个百分点;然后,分别对所提模块两两组合,在同时添加扩张Neck和CA注意力机制时,PmAP@0.5有一定的提升,反映出这两模块并无较大冲突,同时,使用该算法能促进网络性能提升;同时添加深度可分离卷积和扩张Neck,模型参数量有所下降,但PmAP@0.5也有一定程度的降低;同时添加深度可分离卷积和CA注意力机制,PmAP@0.5:0.95下降明显,部分原因是两者组合特征提取过于细化,过分提取关键部位,导致过度推理,出现重复检测造成精度降低。
表4 消融实验结果
3 结论
本文提出了一种基于YOLOv7的朱鹮检测算法,对YOLOv7目标检测网络进行了检测能力的提升并压缩了网络模型。首先,在主干网络中添加协调注意力模块,使算法更准确地捕捉朱鹮特征信息;接着,扩张特征金字塔结构,增大模型对数据中较小特征的感受野;最后,替换部分卷积块,降低模型参数量。同时,设计了消融实验与对比实验证明改进方法的有效性。对解决实际朱鹮检测时,遇到目标较小、遮挡等情况下导致的检测目标丢失问题有一定参考性。