一种基于YOLOv4改进的军事目标检测方法

2021-03-21 07:26郭昊昌刘镇涛
弹箭与制导学报 2021年6期
关键词:池化准确率模块

郭昊昌,于 力,刘镇涛

(西安现代控制技术研究所,西安 710065)

0 引言

目标检测算法是精确制导弹药中一项重要的技术,传统的目标检测算法包括图像分割、模板匹配等方法。但是在武器系统应用中,传统目标检测算法遇到的问题依旧没有得到彻底解决,比如战场环境复杂多变问题;弹体旋转及目标运动造成的目标旋转和尺度变化过大问题;在弹飞行过程中碰到的目标遮挡或者运动模糊问题以及在保证精度的同时如何提高算法实时性的问题[1]。

为此使用基于卷积神经网络的算法对复杂多变的目标提取丰富的深层特征来取代传统算法的手工特征,从而提高准确性与鲁棒性。目前主流的基于卷积神经网络算法包括两阶段检测算法如Fatser-RCNN算法和单阶段检测算法如SSD算法、YOLO算法等。

为了满足在目标尺寸为12像素×12像素时识别目标同时速度在每秒30帧以上的要求,使用YOLOv4算法,并且针对自建的军事目标数据集对算法做出了改动。

文中先介绍了YOLOv4网络的网络架构,然后提出了3种YOLOv4网络的改进方案:一是将网络中的空间金字塔池化模块替换成密集模块;二是使用k-means聚类对网络先验框进行优化;三是优化了空间注意力机制。最后介绍了军事目标数据集的创建以及实验结果。实验发现改进后的YOLOv4算法可以达到最佳检测精度。

1 YOLO系列算法概述

YOLO系列算法是典型的单阶段目标检测算法,与两阶段目标检测算法相比,模型检测速度大幅提高。两阶段目标检测算法由不同网络组成,先生成目标候选区域,然后再将所有目标候选区域送入分类器中分类。而单阶段目标检测算法不需要目标候选区域,直接产生物体的类别概率和位置坐标值,只需要一个网络,因此检测速度要快的多[2]。

Bochkovskiy在2020年4月提出了YOLO系列算法的最新版本YOLOv4算法[3]。与之前的YOLOv3算法相比,YOLOv4算法在提高检测速度的同时大幅提高检测精度。为了提高检测精度,使用密集模块(DENSE BLOCK)来设计一个更深更复杂的网络。密集模块包括多个卷积层,每层都包括批标准化(batch normalization),ReLU激活函数和卷积。然后多个密集模块与由卷积和池化组成的过渡模块组成了密集网络。CSP连接(Cross-Stage-Partial connection)把作为密集模块输入的特征图分成了两部分,一部分跳过密集模块直接进入下面额卷积池化层,另一部分进入密集模块。这种方式减少了计算成本,因而大大增加了模型识别速度。

模型的颈部即特征融合部分,使用了空间金字塔池化模块(SPP)和路径聚合网络(PAN)来增大模型的感受区[6]。而模型的头部是目标检测部分,依然使用了YOLOv3模型的头部。

除了对网络结构的修改之外,训练的时候也采取了许多技巧。包括DropBlock正则化方法等是在不增加计算成本的前提下提高模型预测准确率的,被统称为BoF。而另一部分技巧BoS则是在提高模型准确率的同时增加计算成本,例如Mish激活函数。图1为YOLOv4的网络架构图。与目前主流算法相比,YOLOv4算法速度更快而且准确率更高。

图1 YOLOv4网络架构

2 算法改进

与标准数据集中的目标相比,军用数据集飞行视频中的目标普遍存在目标背景复杂、目标尺度变化太快、目标旋转还有遮挡和模糊等问题,因此提出了以下几种改进方法。

2.1 网络结构优化

考虑到数据集中导引头挂飞视频图像尺寸的一致性,把YOLOv4网络中的空间金字塔池化模块(SPP bLOCK)替换为密集连接模块(DENSE bLOCK),这样使得信息在前向计算或梯度在后向计算时在整个网络中保存的更好。而且在减少计算参数的同时密集连接模块有正则化效果,可以在一定程度上减少训练时带来的过拟合。图2是改进的网络结构。

图2 改进后的网络架构

如图2中所示,网络结构的主干即提取特征部分是YOLOv4所使用的CSP Darknet53。这个主干网络就是将YOLOv3中使用的Darknet53中的残差网络和CSP模型合并起来。与YOLOv3的主干网络Darknet53相比,它在极大的减少了网络计算复杂度的同时,并没有损失模型预测的准确率,甚至还略有升高[4]。网络的颈部即特征融合部分系用PANet(Path Aggregation Network),与YOLOv3使用的多尺度特征融合算法FPN相比,它创建自下而上的信息增强路径,可以缩短低层特征到高层特征的路径长度[5]。而且创建了自适应特征池化,可以聚合每个特征层次上的每个候选区域。网络结构的头部即算法的检测部分则与YOLOv4一样,沿用了YOLOv3的头部。

2.2 用k-means聚类对先验框进行优化

2.3 空间注意力模块

卷积注意模块(CBAM)是一个用于前馈卷积神经网络的有效注意模块,一般分为通道注意模块和空间注意模块。其中空间注意模块(SAM)是使用最大池化和平均池化对输入的特征图进行压缩,然后将其再进行池化与连接,最后用7×7的卷积形成空间注意力图[6]。在YOLOv4算法中,引入了SAM机制,但是删除了空间注意模块中的最大池化和平均池化的操作。而在文中的算法框架中,在检测器的下采样和上采样部分均加入了SAM模块,可以在略微增加计算成本的前提下提升检测精度。

3 实验

3.1 数据集建立

采集了34段导引头挂飞视频和无人机挂飞视频来建立军事目标数据集,视频的分辨率为1 000像素×1 000 像素,帧率为25 帧/s。每段视频的长度在10~20 min。为了避免数据集样本的重复度过高,每隔20~30帧截取一张图片作为样本。然后使用LabelImg软件进行数据标注,获得记录样本中目标信息的标签,存储在xml格式的文件中。最后将图片和标签文件转为VOC数据集的格式来训练。最终形成的数据集有大约30 000张样本,其中包括坦克、靶标、其他等3个种类。按照7∶3的比例将所有样本分成训练集和测试集来进行训练。为了进一步减少过拟合对模型造成的影响,挂飞视频是在不同基地、不同环境下记录的,例如沙漠、戈壁、平原、山地、草原等,用以提高模型对复杂背景的自适应性。

3.2 数据增强

虽然以上数据集的样本数量已经可以支持模型训练而且还在不断扩充,但还是无法与YOLOv4使用的标准开源数据集如COCO和VOC数据集相比。因此在模型训练中使用数据增强方法来提高训练模型的精度与鲁棒性。

3.2.1 几何变换

几何变换包括旋转、翻转、平移、裁剪、缩放等,不改变图像本身的内容,而是选择了图像的一部分或是对像素进行了重分布。考虑到在弹飞行中的旋转问题以及不同的弹体姿态和不同角度飞向目标,数据增强操作可以增强实际情况中模型的泛用性。用开源python库imgaug来实现。

3.2.2 颜色变换

使用imgaug库来实现颜色变换的操作。颜色变换包括添加噪声、图像模糊、填充遮挡等改变图像像素点本身的操作。添加高斯噪声可在所有频率都产生数据点,可有效的使高频特征失真,在一定程度上可以避免过拟合对模型造成的影响。而弹在飞行过程中由于弹体抖动会产生图像的模糊,也会出现云等非目标物体对目标造成遮挡。所以图像模糊、遮挡等增强方法可以有效提高模型的鲁棒性。图3为利用imgaug开源工具包将以上几种几何变换和颜色变换的增强策略以随机比例组合,生成的数据增强后的样例。

图3 数据增强的样例

3.2.3 马赛克增强

根据Cutmix数据增强方式提出了Mosaic数据增强方法。思路是一次采用4张图片,将4张图片分别进行几何变换和颜色变换,再按照4个方向将图片和框组合。这样做的好处是可以极大的丰富检测物体的背景。而由于在数据集中军事目标所处的场景如戈壁、丘陵等十分的复杂,文中不希望模型只能识别单个特殊背景下的目标,因此使用这种方法也可以有效增强模型的鲁棒性。

3.2.4 自对抗训练

这种数据增强方法在YOLOv4中也有使用,它分为两个部分:第一部分是通过改变原始图像而非网络权重来使代价函数最小化,这样会制造图像上没有期望目标的假象,即生成了对抗样本。第二部分就是将这些对抗样本加入到样本集中使网络在所有样本上进行训练。这样做避免了遮挡变形等扰动使检测结果产生较大偏差的问题,使得网络鲁棒性更好并且更加泛用。

3.3 实验评价方法和参数设置

准确率表示预测为正样本中真正的正样本数量,其表达式为:

Pr=PT/(PT+PF)

(1)

召回率表示所有正样本中预测正确的数量,其表达式为:

Re=PT/(PT+NF)

(2)

坦克目标的准确率-召回率曲线如图4所示,可以看出,准确率和召回率是互相影响的,因此单纯以准确率和召回率来评价模型性能是不客观的。因此综合准确率和召回率算出平均精度来反映模型在每个目标类别上的表现,即召回率取为0~1间的所有值对应的准确率的平均值。

图4 准确率-召回率曲线

实验的超参数设置如下:模型迭代次数为10 000次,每100次迭代进行一次验证,记录召回率、平均检测精度等,且每1 000次生成一次权重文件;初始学习率为0.013,学习率衰减策略为在迭代次数达到8 000次和9 000次时给学习率乘以0.1,从而使用更小的学习率获得更好的收敛效果;动量设置为0.9;权重衰减为0.000 5;真值框的交并比阈值为0.213。

实验室的训练配置为AMD 3900x处理器,两块RTX2080显卡,32 G内存;操作系统为Ubuntu18.04LTS,CUDA10.0和cudnn7.5用来加速训练。

3.4 实验评价方法和参数设置

图5所示为模型训练的损失曲线,模型的训练损失随着训练迭代次数的增加在逐渐减小,同时误差波动范围也在逐渐减小。在训练迭代次数超过8 000次后,减小的趋势趋于稳定,而在超过9 000次后,损失值在0.3范围内波动并且不再减小,即达到了理想的训练效果。

图5 损失曲线

训练后产生的权重文件用于检测测试集中的图片,如图6所示为训练完成后使用测试集进行测试的结果,图中检测框的上面显示目标类别和置信度,其中坦克类和工事类分别用红色和黄色的框标出。可以看出在不同目标背境下,在目标尺寸大于12像素×12像素的时候均可以对目标作出识别,体现了模型对于小目标有较好的检测效果。但是在检测夜间环境下的可见光导引头视频中的目标的时候会出现定位不准或无法检测到的情况,可能是由于夜间可见光导引头图像中背景与目标的像素值过于接近,导致算法无法正确框出目标。

图6 改进YOLOv4网络后的检测结果

表1 主流目标检测模型的性能比较

接下来对比一下改进先验框数量前后模型的表现。先验框数量k与平均交并比的关系是随着k的增加,平均交并比的值一直在增加,而计算成本也随之增加。使用k-means聚类方法来找出最佳k值。表2显示的是在不同k值下聚类预测框的尺寸值,可以看出当k的值大于10时,会出现相似尺寸的聚类预测框,这样会造成重复计算,增加计算成本。因此认为k的值为10是最优解。

表2 不同k值的先验框尺寸

表3 k-means聚类后模型与原版模型性能比较

表4 空间注意力模块改进后的模型性能对比

通过以上比较发现,在军事目标数据集上训练时,文中提出的3种改进方法对原版YOLOv4模型的识别准确率均有不同程度的提升,其中更改网络模型结构的方式对YOLOv4模型的提升最大,而用k-means聚类方法优化先验框的方式对模型的计算成本增加最多。最后,将这3种改进方案结合后来比较与原版YOLOv4的性能。

如表5所示,应用3种改进方式改进后的YOLOv4模型识别准确率比原版模型提高了4%,是所有模型中识别准确率最高的,而识别速度下降到33.2帧,比原版模型下降了2.5帧,满足使用需求。

表5 综合改进后的模型的与原模型性能对比

4 结论

对YOLOv4算法网络结构中的空间金字塔池化模块进行了改进,同时应用k-means聚类算法对先验框进行优化,最后对空间注意模块进行了优化。通过比较发现改进后的模型虽然在识别速度上下降了1.5帧左右,但是在准确率上提高了3%,是目前所有模型中准确率最高的。不过依然存在在可见光视频中夜晚的目标有时无法正确识别的问题。同时数据集的样本数量需要持续扩充,军事目标的类别也需要增加,这样使训练出来的模型更具有鲁棒性与泛用性。

猜你喜欢
池化准确率模块
基于高斯函数的池化算法
28通道收发处理模块设计
“选修3—3”模块的复习备考
卷积神经网络中的自适应加权池化
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
用于手写汉字识别的文本分割方法
必修模块相关知识过关训练