赵同祥,张瑞全,高树静,牛志刚
(青岛科技大学信息科学技术学院,山东青岛 266061)
随着我国在卫星和遥感成像技术领域的飞速发展,光学遥感图像的信息量和准确度踏上了更高的台阶。近年来卷积神经网络广泛应用于遥感目标检测领域,在检测精度不断提高的同时,由于不断增加网络模型深度,导致算法模型计算量大、检测速度慢、资源消耗大,不利于目标检测模型在终端设备上的移植。
在遥感目标检测中,遥感图像往往场景多变、特征不明显,Xu D 等[1-9]针对遥感目标分布密集、背景复杂等问题,对特征提取网络进行了重新设计,均有效提高了模型在复杂环境背景下目标检测的性能,但随着算法检测性能的不断提高,其模型参数以及计算量的大幅增加,限制了向硬件资源有限的设备上的移植。高凡等[10-13]在YOLOv3[14]的基础上进行了改进,利用轻量化网络MobileNet 代替DarkNet53,减小了模型的规模和计算量。但随着网络模型规模的缩减,算法模型对目标特征的利用率下降,造成了检测精度不同程度的降低。
如果能够获得参数量相对较少且性能较为良好的YOLOv5 网络,这将极大地降低向存储与运算能力有限的设备移植的限制。故改进算法在YOLOv5基础上结合DenseNe(t密集网络)的特点,将主干网络部分改进的CSP 模块进行双密集连接,模型结构如图1 所示;用于目标检测的锚框(anchor)采用K-means++重新聚类以加快网络收敛;为了适应改进网络快速目标检测的需求,将网络中CBL 模块的Leaky RelU 激活函数替换成H-swish 激活函数,达到了速度与精度之间的平衡。
图1 DN-YOLOv5网络结构图
由于YOLOv5 代码中用于自适应锚框计算的K-means 算法存在一定的局限性,其对K个初始点的选择十分敏感,选择的K个初始点对最后的聚类结果和运行时间都有很大的影响。因此将K-means聚类算法改进为适合于YOLOv5 的K-means++算法。该聚类算法的距离度量函数由使用欧氏距离进行分簇改进为IOU 作为衡量标准进行分簇,由一次性选择K个初始点改进为逐个初始点输入计算,减小原始聚类算法一次性选择K个初始点对结果的影响程度。通过K-means++聚类算法计算输出不同大小、不同数量的预测框,尽可能提高预测框与GT 框匹配度,缩短训练时间。
使用K-means++算法对数据集中的目标边框大小重新聚类,当锚框聚类数目在1~9 个时,avg_iou 大体呈上升趋势,聚类数目在9 个之后,avg_iou 增长逐渐放缓。因此在权衡了计算效率与准确率后,选择了9 个不同尺度的锚框分到三种尺度不等的预测分支上,如表1 所示。
表1 三种尺度的锚框
YOLOv5 引入了CSP1_X[15]和CSP2_X 结构,其 中CSP1_X 应用于Backbone 主干网络,由于主干网络较深,增加Resuni(t残差结构)可以增加层与层反向传播的梯度值,以缓解网络较深带来的梯度消失问题。在进一步权衡检测精度和速度后,降低模型大小,该文将CSP1_X 结构进行调整,将原来一个分支上的卷积操作去除,从原先的双分支结构重新设计为单分支结构,以减少卷积操作产生的参数量从而降低模型大小,如图2 所示。
图2 基于YOLOv5的CSP1_X模块更改方案示意图
由于主干网络中改进的CSP 模块数量较少,采用密集连接优势不明显,特征信息无法充分的复用,因此通过增加CSP1_X 模块、采用密集连接的方式,充分发挥密集连接的优势,在加强特征学习能力的同时根据DenseNet[16]自身的优势避免大量参数的产生。另外,由于参数减少,密集连接具有正则化的效果,有利于抑制过拟合现象。改进算法的主干网络部分采用DenseNet 密集连接的思想,每一个卷积层的输入来自于之前卷积层的输出,即创建从early layers 到later layers 的短路径,这种紧密的连接方式,每层相当于直接连接了输入和损失函数,缓解了输入特征与梯度信息在较深的网络中传播而产生的梯度消失现象,使得有效的特征在密集连接的模块之间传输时得以最大程度保留。
文中采用了双密集连接,即对前两层的CSP 结构分别进行了密集连接,后面的CSP 结构都有来自前两层的短路径,一方面加强对浅层小目标的提取和复用,少量的卷积核生成大量的特征,最终模型由原先的90.9 MB 压缩为48.0 MB;另一方面避免了所有层之间密集连接造成参数增多的问题,主干网络部分的密集连接如图3 所示,替换原始模型的Backbone 后如图1 所示。
图3 DN-YOLOv5之Backbone部分改进方案示意
为了加快网络检测速度,该文将网络中的Leaky RelU 激活函数改进为H-swish[17]激活函数,减少对内存的访问次数,降低延迟。
Swish 激活函数公式如式(1)所示:
其中,1/(1+e-x)就是Sigmoid 函数。当网络较浅时,Swish 只稍微优于Leaky ReLU 激活函数,但当网络较深时,使用Swish 激活函数的测试准确度远高于使用Leaky ReLU 激活函数。这主要得益于Swish 无上界有下界、非单调且平滑的特性。虽然Swish 显著提高了神经网络的准确性,但是在嵌入式环境中,其成本是非零的,因为在移动设备上计算Sigmoid 函数需要较大的代价。该实验鉴于降低成本的考虑,将CBL 模块的激活函数由Leaky ReLU 替换为Hswish,其公式如式(2)所示:
其中,ReLU6 是普通的ReLU 非线性激活函数,但是其限制最大输出为6。Swish 与H-swish 有着很好的匹配,而且在精度上无明显的差异。从部署角度来看,H-swish 有着明显的优势:第一,几乎所有软硬件框架都可以使用ReLU6 实现;第二,它消除了因为Sigmoid 问题引发的数值精度损失;第三,H-swish是一个分段函数,减少了对内存的访问次数,从而降低了延迟。
实验选用DIOR 遥感数据集[18]中4 234 张含有飞机、舰船、储罐、车辆等十类目标的遥感图像进行训练和测试,按照8∶1∶1 划分为训练集、验证集和测试集。
实验采用精确率(Precision)、召回率(Recall)、平均精准度AP (Average Precision)、均值平均精度mAP(mean Average Precision)作为评价指标与原始模型测试结果进行对比。
该实验网络模型训练参数设置如下:图像尺寸(img_size)调整为640×640,初始学习率为0.01,训练迭代数(epoch)为500,batch_size 为4,权重衰减系数(weight_decay)为0.000 5,学习率动量(momen-tum)为0.937。
原始模型与改进模型的精确度(Precision)和召回率(Recall)曲线分别如图4(a)、(b)所示。原始模型的召回率在epoch 为100 到500 区间内维持在85%上下且波动幅度不大,改进模型的召回率也较好地维持在85%较小的波动范围内。原始模型的精确率在迭代500 轮时稳定在76.03%左右,改进模型的精确率在迭代500 轮时稳定在74.17%左右。
图4 原始模型和改进模型的召回率(Recall)与精确度(Precision)曲线图
根据上述参数设置对模型进行训练,如图5 所示,改进模型与原始模型的训练集总损失曲线大体趋于相似,YOLOv5 原始算法初始Loss 为0.238 4,改进算法初始Loss 为0.239 6,二者Loss 整体呈下降趋势;当epoch等于100时,原始算法的Loss为0.080 48,改进算 法的Loss 为0.071 61;最后epoch 在500 左右时,原始算法的Loss 稳定在0.031 左右,改进算法的Loss 稳定在0.038 左右。由于改进模型加入了双密集连接,通过K-means++重新聚类锚框使得预测框与GT 框具有更高的匹配度,因此最终的Loss 损失值也十分接近于原始算法最终的Loss。
图5 训练集总损失曲线
为了验证提出的改进算法具有更好的检测效果,在相同实验配置的环境下,采用相同的数据集,对原始模型与改进后的模型进行对比实验。由表2可以看出,DN-YOLOv5 相比较于原始YOLOv5 模型,大小由90.9 MB 缩减为48.0 MB,减小了约47.2%;推理时延由55.2 ms 缩减为33.8 ms,推理加速了约39%;参数量减少了约65%,计算量下降了约68.7%。相较于现阶段的主流检测算法,DN-YOLOv5 具有良好的性能,在缩减了模型大小后,检测速度与精度之间取得了良好的平衡。原始模型与改进算法的各物体目标的AP 值如表3 所示。
表2 模型推理比较
表3 各物体目标的AP值
文中提出了一种基于DN-YOLOv5 的快速遥感目标检测方法,对原始主干网络部分的CSP1_X 模块进行轻量化的改进,鉴于密集网络具有加强特征复用、参数少的优点,在主干网络部分进行了双密集连接,并适当地增加了CSP1_X 模块的数量以适应密集连接;为了提高预测框与GT 框的匹配度,加快收敛,提高检测精度,该实验采用K-means++聚类算法对锚框重新聚类优化;并将算法中的Leaky ReLU 激活函数改进为H-swish 激活函数,进一步了提高检测速度。
实验结果表明,压缩后的模型均值平均检测精度(mAP)仅下降1.05%,模型体积却减少了47.2%,帧率(FPS)提高了57.44%。新的模型体积小、效率高,提高了对移动端等硬件资源有限设备的适应性。经过改进的算法,依然具有压缩模型和提升检测速率的空间,仍需进一步的研究改进。