基于改进YOLOV3的遥感图像舰船目标检测
2022-02-12何维娟
何维娟,江 涛,王 欣
(云南民族大学 数学与计算机科学学院,云南 昆明 650500)
随着社会经济发展,水上交通越来越繁忙,舰船之间会发生碰撞、翻倒和沉船等事故[1],因此,水上安全变成急需解决的一大问题.舰船是水上交通的重要载体,如何快速并准确地识别舰船位置和检测舰船类型,对舰船水上安全航行和违法行为检测等有重要的意义,近年来,研究人员在遥感图像开发中进行了很多研究,公开的目标检测数据集以及大量检测算法相继被提出,提高舰船检测的准确率变成了舰船检测的主要任务.随着遥感技术的快速发展,目标检测取得了很大的成功,但是在舰船遥感图像中依旧存在很多难题,从当前舰船遥感图像目标检测的研究来看,存在以下几个普遍的问题:舰船的种类较多并且大小不一,导致检测难度增大;舰船检测目标较小,使其所占像素点较少;舰船图像的成像受天气、岸边建筑和光照等因素的影响,从而引起舰船物体视觉的改变.
传统的船舶检测方法是基于船舶自动识别系统和舰船特征[2-3],例如,Li等[4]提出了一种改进的空间聚类算法,从而来识别异常行为的舰船;Zhang等[5-6]利用AIS数据来判断舰船是否碰撞,虽然这些研究在一定条件下都获得了不错的效果,但是在复杂的场景下实用性较差,在实际应用中,由于存在识别精度低、检测速度慢等诸多问题,传统的舰船检测依旧难以达到理想的检测效果.
近年来,在各种图像识别[7]中,基于深度学习的方法可以分为2种:一种是一阶段回归方法,包括SSD[8]、YOLOV 1[9]、YOLOV 2[10]、YOLOV3[11]等;另一种是两阶段区域建议方法,包括R-CNN[12]、Fast R-CNN[13]、Faster R-CNN[14]、R-FCN[15]等.在这两类目标检测算法中,虽然在精度上两阶段算法更优于一阶段算法,但是在检测速度上却又远远不足,因为两阶段检测算法普遍存在特征提取耗时长,难以达到实时的效果.为此,本文选择了一阶段中兼具精度与速度都良好的YOLOV3算法为框架基础进行研究,为提高舰船检测的效果.对尺度特征进行改进.
1 YOLO V3基本原理
YOLOV3引入了FPN结构,使用了Darknet网络.YOLOV3是从YOLOV1和YOLOV2发展来的,但该方法借鉴了SSD方法中的多尺度思想,在保留了YOLO系列方法采用单阶段网络进行高帧率检测的同时,进一步具备了检测微小目标和多尺度目标的能力.经过优化迭代,它与SSD一样准确,但是比Faster R-CNN和SSD检测速度更快,如图1为Darknet-53网络结构.
图1 Darknet-53网络结构
YOLOV3网络将输入的图像分为S×S个网格,目标的中心点落在某个网格,则这个网格就预测该目标,YOLOV3网络可预测3种不同的尺度,每一种规模的尺度都可预测3个边界框,每个框除了要得到目标的位置(tx,ty,tw,th)外,还要预测置信度值.(tx,ty)是相对于预测框的位置,(tw,th)是相对于整体图片的大小,因此都在(0,1)之间取值,得到的张量为S×S×[3×(4+1+n)],预测出的检测框表示为:
(1)
式中:(x0,y0)为物体所在单元格的左上角坐标,(bx,by)检测框的中心坐标,pw和ph分别为先验框的宽度和高度,σ()为tx和ty归一化到0~1;bw和bh分别为检测框的宽度和高度.
2 改进YOLOV3的方法
2.1 舰船目标检测过程
舰船的总体检测过程如图2所示,获取舰船目标检测数据集以后,通过标注获得xml文件,将数据进行预处理,随后输入YOLOV3检测网络提取特征,最终得到检测结果.
2.2 增加网络检测尺度
YOLOV3 算法使用的是DarkNet-53 网络结构,通过将特征金字塔模型引入网络,合并输入图像的浅层和高层特征,使该网络结构能够识别具有多尺度特征的图像.该网络主要由卷积层和池化层组成,配置的3个尺度的采样特征图,其中尺寸大小13×13的是下采样特征图,而尺寸大小分别为 52×52 、26×26的是上采样特征图.与单尺度特征识别相比,这种多尺度特征识别可以提高 YOLOV3 算法对不同尺度输入图像的适应性和检测的准确率.
图2 舰船目标检测流程
通常,DarkNet-53 网络对大目标物体具有理想的检测效果,而对小目标物体的检测效果则较低.为此,在对 YOLOV3 算法的原始研究的基础上,文中将着重于改进多尺度特征检测模块,以提高识别图像中较小的舰船准确度.为了实现这一目标,结合检测目标的属性,将原始算法中的 3 个尺度扩展为4 个尺度,通过K-means聚类方法来获得锚,并从中选取12个锚点框,其尺寸分别为: (5, 4)、(6, 13)、(13, 6)、(23, 10,)、(10, 24)、(36, 18)、(17, 40)、(73, 32)、(33, 76)、(59,212)、(107,121)、(191, 73).
因此,特征检测可以基于每个尺度上的 3 个不同的锚点框.改进后的多尺度特征预测的总体框架如图 3 所示.图3的检测构架表明.此框架所做的改进主要是在YOLOV3-Darknet53的基础上,将输出的特征尺度由52×52增加到104×104,添加了一个104×104的特征尺度.
图3 多尺度预测构架
3 实验
在这一节中,使用自制的DSTD数据集,训练了经典的YOLOV3算法,以及与改进的YOLOV3算法进行实验,讨论了改进的YOLOV3算法的可行性.
3.1 实验平台及参数设置
实验使用了Windows10系统,其中硬件环境为:中央处理器Intel i7-8750H,内存32G,显卡为显存8G的NVIDIA GeForce RTX 2080.所有算法均基于Darknet-53在GPU下进行训练和检测.
文中除了特别说明以外,使用DSTD数据集所进行的训练实验中相关实验参数如表1所示.
在YOLOV3算法下,训练阶段设置 batch为64,输入图像为416×416,学习率为 0.001,训练迭代次数为 4 000,权重衰减为0.000 5,训练过程得到正常收敛效果.
表1 实验参数
3.2 数据集
数据集质量的高低直接影响检测结果的好坏,现在常见的数据集都是面向自然场景下的多目标检测任务,数据集中的单类目标场景往往很单一,相应目标数量也很少,针对特定场景和特定目标的数据集并不多见.因此,本文实验选择了自制的DSTD数据集,该数据集是面向遥感场景的大规模水面舰船目标检测数据集,其主要来源为DIOR、DOTA、NWPU-VHR、TGRS-HRRSD-Dataset-master等几个开源数据集,数据集中包含4 854张舰船图片,87 076 个舰船实例.DSTD数据集具有针对性强、规模较大;目标尺寸变化大;图片变化大;类内多样性高等特点,DSTD数据集部分舰船图像数据示例如图4.
为了使进行实验时训练和测试数据分布具有充分的相似性,因此在4 854张DSTD舰船遥感图像中,随机获得2 911幅舰船图像当作训练集,测试集为剩下的1 943幅图片(表2).由于每幅图片至少包含一艘舰船,有的一副图片包含多艘舰船,因此,舰船目标数量不等于总的图片数.
图4 DSTD数据集部分舰船图像数据示例
表2 舰船目标数据集
3.3 实验结果
3.3.1 评价指标
本实验结果使用召回率(Recall)、平均精度(AP)以及帧率(FPS)作为评价指标.
1) 召回率(Recall)
(2)
式中:TP和FN分别为预测正确的样本数量和预测错误的样本数量.
2) 平均精度(Average Precision,AP)
(3)
平均准确率定义为 P-R 曲线下方的面积.
3) 帧率(FPS) 目标检测每秒可以检测的帧数,使用此指标可以评估到目标检的速度.
3.3.2 实验结果
为了提高舰船遥感图像目标检测的检测精度,分别用YOLOV3和改进后的YOLOV3对DSTD数据集进行训练,并获得各自的权重文件,YOLOV3模型训练时,使用官方代码和默认参数,YOLOV3算法和改进的YOLOV3算法对数据集进行训练 4 000 次Batches,最后进行结果评估,模型训练损失函数曲线如图5所示.
如图5所示,初始迭代损失(loss)高达5607,改进YOLOV3实验的损失值在200多次时就下降至个位数.而YOLOV3的损失值在300多的时候才降为个位数,总体来说,本文实验中YOLOV3和改进的YOLOV3的损失值差异并不是很明显,曲线基本重合,但相对而言,改进的YOLOV3较YOLOV3学习能力更强,收敛速度更快,训练效果更好.
图5 损失函数
在对YOLOV3进行改进后,文中在测试数据集上进行了与YOLOV3的对比实验,实验结果如表3所示,由表中可以看出,在相同的实验环境里,本节提出改进后的方法要比原始 YOLOV3 模型的速度稍慢一点,但是在识别精度上却有很大的提高,YOLOV3算法精度为60.46%,改进的YOLOV3算法精度为72.56%,精度提高了12.1个百分点;YOLOV3的召回率为87.50%,改进后的YOLOV3的召回率可达到91.13%,提高了3.63%个百分点.改进后的YOLOV3能够保持一定速度的基础上使精度有很大的提高,综合考虑,改进后的YOLOV3明显优于原始YOLOV3模型.
表3 实验对比结果
4 结语
本文针对舰船遥感图像检测中小目标检测普遍存在精度较低的问题,以YOLOV3网络模型为基础,对YOLOV3中尺度的选择进行优化及改进,实现了对舰船检测的有效检测,在自制具有规模较大、舰船目标较多等优点的DSTD遥感舰船目标检测数据集上进行训练以及对比测试,实验结果表明,本文对YOLOV3中尺度的改进,与原始的YOLOV3算法相比,召回率提高了3.63%,精度提高了12.1 %.该舰船检测方法有效地解决了由小目标问题引起的错误检测和漏检问题,相比于YOLOV3舰船检测算法,在保证一定速度的前提下,拥有更高的舰船检测准确率,为舰船检测的研究奠定了基础.