基于改进YOLOv4的无人机目标检测方法

2021-09-23 12:48邹金霖赵晓林
空军工程大学学报 2021年4期
关键词:像素点内存卷积

田 港, 张 鹏, 邹金霖, 赵晓林

(空军工程大学装备管理与无人机工程学院,西安, 710051)

目标检测已经在车辆检测、人脸检测、自动驾驶、安全系统等领域广泛应用并发挥着重要的作用。相比于传统检测方法,基于深度学习的检测模型具有检测精度高、速度快等优点。基于深度学习的检测模型有one-stage和two-stage两种:one-stage检测模型主要有YOLO[1]、SSD[2]、DSSD[3]等模型,其核心是基于回归的思想,不需要使用区域候选网络,可以直接经主干网络预测出军事目标类别、位置;以two-stage检测模型为代表的有R-CNN[4]、SPP-Net[5]、Fast R-CNN[6]、Faster R-CNN[7]、Mask R-CNN[8]等模型,其基本思想是通过卷积神经网络对图像进行特征提取,然后经过区域候选网络生成候选框,再经过“抠图”和进一步的特征表示,最后就可以通过分类和回归得到军事目标的类别和位置。two-stage系列因其繁琐的检测过程导致检测速度远不能满足实时性的要求。

近年来,目标检测在战场感知中的地位愈加突出。基于无人机平台的目标检测具有视野大、监测范围广等优点,但由于载重、能耗等方面的限制,无人机平台能够搭载的存储和算力是有限的。因此,一般检测模型在无人机上直接部署时会面临模型占用内存大、实时性差的问题。因此,在保证检测精度的前提下有效解决上述问题,能够有效提升无人机侦察的检测速度,有助于战场指挥员或机载系统及时全面分析战场形势,做出更合理的决策。

YOLO作为one-stage检测模型中的经典模型,较好地兼顾了检测精度和速度,因此应用较为广泛。本文以YOLOv4[9]检测模型作为主模型,在保证检测精度的情况下,首先,将三尺度检测模型改进为双尺度检测模型。其次,对双尺度检测模型进行了通道裁剪。实验表明,两种改进方法均达到了减小模型内存占用,提升检测速度的目的。

1 YOLOv4模型

YOLOv4是Alexey等人提出的一种目标检测模型,该模型结构如图1所示,由CSPDarknet53、SPP、PANet、YOLO Head模块组成。其目标检测过程共分为4步:①图像输入;②特征提取;③特征融合;④结果预测。图像输入模型后,主干网络CSPDarknet53对输入图像进行特征提取,由图1可知CSPDarknet53一共有5个大残差块,最后一个大残差块的输出经3次卷积后输入SPP模块,SPP模块对输入进行最大池化操作。池化的结果经过拼接和卷积处理后送入PANet模块,第3和第4个大残差块的输出也分别经过一次卷积送入PANet。PANet是一个特征融合模块,它可以将输入的3个不同尺寸特征图进行卷积及上采样或下采样操作后进行特征融合,使得不同层的特征通过采样后融合成高层特征,增强特征的表达能力。PANet将融合后的结果输入给YOLO Head,进行预测输出。YOLOv4采用了多尺度输出,分别输出52×52,26×26,13×13这3种尺度的特征图到检测层中。每个cell会预测出3个bounding box,每个bounding box都有自己的位置信息以及置信度,最终通过阈值来保留较为准确的预测框。

图1 YOLOv4检测模型

YOLOv4的损失函数是基于YOLOv3的损失函数得到的,不同的是YOLOv4使用了CIOU(complete intersection over union)误差,这使得模型预测框的回归速度更快、检测精度更高。YOLOv4损失函数见式(1):

Loss=Lloc+Lcls+Lconf

(1)

式中:Lloc表示预测框的回归误差;Lcls表示分类误差;Lconf表示置信度误差。

2 YOLOv4模型改进

2.1 YOLOv4模型结构改进

在YOLOv4检测模型中,原图经过下采样,其像素一直在减小,最终生成3个不同大小的特征图,分别为52×52,26×26,13×13。特征图中像素点和输入图像中像素点对应关系为:

(2)

式中:X表示输入图像边长的像素个数;Y表示特征图边长的像素个数;n表示特征图中一个像素点对应原图中像素点的个数。

YOLOv4模型输入图像大小为416×416,52×52、26×26以及13×13特征图中一个像素点分别对应输入图像8个、16个以及32个像素点,当输入图像被下采样至13×13时,图像中小于32×32像素的目标均会被压缩至不到一个像素点,这样目标特征信息丢失较为严重,因此在13×13特征图上检测32×32像素以下的目标意义不大。

本文使用的数据集,目标长宽都分布在0~38像素,属于中小目标[10],因此负责从13×13特征图中检测的YOLO Head3模块对于中小目标的检测意义不大,反而会使得模型参数冗余,导致模型内存占用过大,消耗计算资源,影响检测速度。

针对目标尺寸特点,对原模型的检测层进行了改进,改进后的模型结构如图2所示,保留了负责从52×52和26×26特征图中检测中小目标的YOLO Head1和YOLO Head2模块。移除了负责检测大目标的YOLO Head3模块和其相关的采样卷积过程,但保留了与之对应的13×13特征图,该特征图属于深层特征图,里面包含较强的定位特征,52×52、26×26的浅层特征图里面包含较强的语义信息,通过上采样,将13×13特征图中的强定位信息传递到浅中层特征层中进行特征融合,以加强对中小目标的定位精度。模型中小尺度YOLO Head1对应的初始候选框大小为[12,16,19,36,40,28],中尺度YOLO Head2对应的初始候选框大小为[36,75,76,55,72,146]。

图2 YOLOv4改进模型

相比在3个尺度上预测输出的原模型,本文改进后的模型仅需要在2个尺度上进行检测,减少了模型参数,节省了计算资源,模型检测速度更快。

2.2 YOLOv4模型裁剪

目前模型裁剪方法主要有权重裁剪[11]、神经元裁剪[12]、卷积核裁剪[13]以及通道裁剪[14]。

权重裁剪的核心思想是使权重稀疏化,该方法需要多次迭代,并且裁剪一次就需要对模型修复一次,耗时耗力。神经元裁剪是将模型中输出为零的神经元进行删除,该方法虽然操作比较简单,但是裁剪出来的模型性能较差。卷积核裁剪是对卷积核中的参数进行处理,从而降低运算消耗,但目前该方法的相关技术还不够成熟,对于模型速度提升很有限。

通道裁剪流程如图3所示,是将卷积层中不重要的通道全部删除。该方法裁剪力度大,效果明显,同时带来的精度损失也大,但是通过微调可以将裁剪后的模型恢复到很好的精度,并且该方法不需要专门的软硬件支持。通道裁剪方法适用于含有批归一化层即BN(batch normalization)层的模型,如YOLO模型。对于没有批归一化层的模型该方法并不适用,如R-CNN模型。

图3 通道裁剪流程

2.2.1 BN层稀疏化训练

在YOLOv4模型中,通过卷积层和激活函数中间的BN层对每一个输入的mini-batch进行归一化,使网络收敛更快,获得更好的训练效果。YOLOv4模型中BN层的输入和输出之间关系为:

(3)

式中:m为每次输入的mini-batch;γ为BN层的缩放因子;β为BN层的偏置项;μ为BN层的均值参数;σ为BN层的方差参数;ε项可避免分母为0。

进行模型通道裁剪首先需要对BN层进行稀疏化训练,本文通过在初始损失函数中引入L1正则化来对BN层的缩放因子γ进行稀疏化训练,每个特征通道对应一个缩放因子γ,引入L1正则化的损失函数为:

(4)

式中:x,y分别为模型的输入和输出;W为模型的参数,第1项为初始损失函数,第2项为L1正则损失项,λ为两项的平衡因子。本文用稀疏后的缩放因子γ来判断特征通道对输出重要性。γ值越大说明对应的通道对输出越重要,反之,说明该通道对输出影响较小。因为引入L1正则化后,稀疏化之后的模型中许多缩放因子γ都会趋近于零,这说明卷积层输出值无论多大,在输入到BN层之后,经过BN层的变换输出bout都会变为:

(5)

所以,缩放因子γ趋于零对应的特征通道对模型输出贡献很小,这些不重要的特征通道可以将其裁剪掉。

2.2.2 模型通道裁剪

如图4所示,对已经稀疏化的缩放因子进行排序,根据剪枝率求得缩放因子的阈值。当缩放因子大于或等于该阈值时,该缩放因子对应的特征通道将被保留。当缩放因子小于该阈值时,该缩放因子对应的特征通道将会被剪掉,见图4。

图4 通道裁剪

通常情况下,剪裁后的模型其检测精度会有不同程度的下降。裁剪的通道数越多,参数越少,检测精度下降的就越明显。为了恢复一定的检测精度,需要用数据集将裁剪后的模型重新训练,在这个过程中,裁剪模型中的参数会根据训练样本数据进行调整,以恢复至较高的检测精度。

3 实验结果与分析

3.1 数据采集

本文以坦克、飞机、舰艇作为被侦察对象,使用高仿真模型,按照1∶20搭建缩比场景,然后用四旋翼无人机进行视频采集,采集完成后截取部分帧作为数据样本。对采集到的数据样本进行旋转、拼接、曝光、添加椒盐噪声等增广处理,最终共制得图像3 400张,其中2 720张用来训练,680张用来测试验证,图5为部分数据样本。

图5 无人机航拍数据集样本

3.2 数据标注

如图6所示,本文用Labellmg软件对图像中的目标进行标注,一共3类目标:坦克(tank)、飞机(plane)、舰船(ship)。具体标注流程:①打开图片,在图片上创建包围目标的最小矩形框;②对创建的不同矩形框进行命名;③对单张图片中所有目标命名保存后,软件自动生成对应的xml文件;④使用格式转换代码将xml文件转换为txt文件,txt文件包含用于训练的目标坐标位置等信息。

3.3 评价指标

目前在目标检测领域有多种性能评价指标,如精确度、召回率、平均精确率、平均精准率均值mAP、检测速率等。以下分别为精确度(P)和召回率(R)的计算公式:

(6)

(7)

式中:WTP为被正确识别的目标个数;WFP为被错误识别的目标个数;WFN为没有被正确识别出来的目标个数。

AP为单类目标PR曲线与坐标所围成的面积,该指标能够综合考虑精确度和召回率,对于单类目标的识别效果评价较为全面。mAP为各类目标AP值的加和平均值,即表示模型整体检测精度,mAP越高检测效果越好。FPS为模型一秒能够检测的图片数量,FPS值越大说明模型的检测速度越快。

3.4 实验配置与训练

本文实验所用配置如下:计算机系统采用Ubuntu18.04;CPU采用Intel Core i5-9500;GPU采用NVIDIA GeForce RTX 2060 ti;深度学习框架采用Darknet[15]。训练时,模型输入大小为416×416,batch-size为32,初始学习率为0.001,稀疏率为0.001。

训练过程中训练集损失函数和验证集损失函数变化情况如图7所示。当模型迭代至150个epoch后,两者的损失函数值均已收敛至0.6附近,因此实验中epoch取160。

图7 损失函数变化曲线

3.5 模型对比与分析

为了验证改进模型的有效性,本文设置了3组实验进行对比分析。

实验1:使用YOLOv4原模型,模型结构见图1。

实验2:使用2.1节方法,对YOLOv4原模型预测层进行改进,生成YOLOv4-A模型,模型结构见图2。

实验3:使用2.2节方法,对YOLOv4-A模型进行通道裁剪改进,微调生成YOLOv4-B模型。

在输入大小为416×416的情况下,对上述3种模型使用3.2节所述数据集进行训练测试,模型性能对比结果见表1。

从表1的实验数据可以发现:

表1 模型性能对比

1)YOLOv4-A模型比YOLOv4原模型mAP降低了0.22%,但模型的内存占用少了26.56%,检测速度提升了11.63%。主要原因在于YOLOv4-A模型少了一个预测尺度,使得模型参数量减少。

2)YOLOv4-B模型是在YOLOv4-A模型的基础上进行了通道裁剪,模型检测精度会有明显降低,为了恢复检测精度进行了微调,微调后YOLOv4-B模型较YOLOv4-A模型mAP降低了1.30%,但模型内存占用减少了85 MB,FPS也提高了10帧/s。首先mAP的降低是因为裁剪模型在最后微调的时候参数量无法增加,这使得模型精度只能在有限的范围内进行调整提升。其次内存占用和FPS再次得到优化是因为对模型进行了通道裁剪,将不重要的通道进行了裁剪操作,因此参数量更少,推理速度更快。

3)最终改进模型YOLOv4-B较YOLOv4原模型在mAP仅降低1.52%的前提下,模型内存占用减少了60%,仅103 MB。FPS增加了15帧/s,取得了35%的提升。

表2为实验1原模型与实验3最终改进模型的召回率对比,召回率越高说明模型的检出效果越好。

表2 各目标召回率对比 %

从表2可看出,改进模型的飞机、舰船、坦克召回率较原模型分别下降了0.57%、1.19%、1.01%。这说明YOLOv4-B在对飞机进行检测时,每检测100个目标,比原模型多漏检不到1个目标。同理,在对舰船、坦克每检测100个目标时,YOLOv4-B比原模型仅多漏检1个目标。因此YOLOv4-B和YOLOv4模型在实际检测中效果应基本一样。

从图8的对比可以发现,YOLOv4-B模型没有因为模型的大幅压缩,显著地影响到对目标的检测效果。YOLOv4-B和YOLOv4原模型均可以将图像中的3类目标正确检测出来。

图8 实际检测效果对比

通过对mAP、Recall以及实际检测效果的分析,本文提出的最终改进模型YOLOv4-B在与YOLOv4原模型检测效果基本一致的情况下,内存占用和检测速度均取得了较大提升。

4 结语

本文针对检测模型内存占用大、上机部署时实时性差的问题,提出了一种基于YOLOv4的无人机目标检测模型。在保证检测精度的前提下,针对目标尺寸特点,将三尺度检测模型改进为双尺度检测模型;并进行了通道裁剪。通过实验数据能够看出,该方法减小了模型内存占用、提升了检测速度。

猜你喜欢
像素点内存卷积
基于全卷积神经网络的猪背膘厚快速准确测定
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
基于局部相似性的特征匹配筛选算法
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密
图像采集过程中基于肤色理论的采集框自动定位