当前位置:首页 期刊杂志

基于深度学习的复杂气象条件下海上船只检测

时间:2024-05-04

熊咏平,丁 胜,邓春华,方国康,龚 锐

(1.武汉科技大学 计算机科学与技术学院,武汉 430065; 2.智能信息处理与实时工业系统湖北省重点实验室,武汉 430065)(*通信作者电子邮箱dchzx@wust.edu.cn)

0 引言

遥感图像中的舰船检测问题一直是图像处理和模式识别领域的热门课题,在军用和民用领域都有广阔的应用前景。由于光学遥感图像容易受光照和云雾等影响,目前基于遥感图像的舰船检测主要围绕着合成孔径雷达(Synthetic Aperture Radar, SAR)[1]展开。然而,光学图像的细节特征丰富,随着光学遥感卫星的分辨率不断提高,在海域舰船小目标检测、识别方面具有SAR图像不能比拟的优势,同时可以作为SAR图像目标检测的重要补充。

海洋经济[2]是21世纪人类发展的主要支撑点之一,由于海洋上作业的风险巨大,为了保证船只作业安全,利用卫星成像技术和人工智能技术对海上目标进行快速有效的识别,是人类有效利用海洋资源的一项基本能力,因此,开展海上船只目标自动检测的研究具有重要意义。

传统的目标检测方法借助机器学习基本理论,首先通过对目标特征,如梯度方向直方图(Histogram of Oriented Gradients, HOG)[3]、尺度不变特征转换(Scale Invariant Feature Transform, SIFT)[4]特征等进行提取,并将提取到的特征输入到如支持向量机(Support Vector Machine, SVM)[5]、迭代器(AdaBoost)[6]等分类器进行分类识别。这些提取的图像特征本质上是一种手工设计的特征,针对不同的图像检测问题,提取到的特征好坏对检测性能有着直接的影响,因此,需要研究人员针对所要解决的问题领域设计出适应性更好的特征;但由于针对某个特定的识别任务,泛化能力较差,难以在实际应用问题中设计出具有通用性和鲁棒性的特征。此外,传统机器学习方法从提取图像底层特征到提取表观特征流程相对复杂,并且严重依赖于人工的特征设计,因此,基于传统的机器学习方法的目标检测遇到瓶颈,期待更有效的方法提取图像特征。

近年来深度学习在图像识别领域取得了很好的效果[7],与传统的机器学习相比,深度学习方法通过多层网络直接对图像卷积和池化操作来提取图像本质特征,在图像识别领域优势明显,并取得了突破性进展;深度学习的发展,特别是卷积神经网络(Convolutional Neural Network, CNN)[8]的出现,为图像特征提取带来全新的解决方法。CNN是局部连接网络,在CNN中,图像中小块区域作为底层输入数据,信息通过前向传播经过网络中各个层,在每一层中都由过滤器构成,以便能获得观测数据的一些显著特征,其层次间的紧密联系和空间信息使其特别适用于图像处理和理解,并能自动从图像中抽取出丰富的相关特性,因此通过CNN能更好地提取图像特征。

2014 年,Girshick等[9]在CVPR(IEEE conference on Computer Vision and Pattern Recognition)大会上提出了R-CNN(Region with CNN feature)网络,该网络在全连接层前加了一个空间金字塔(spatial pyramid pooling)[10]层,使得该网络在全连接层输入不需要归一化图像尺寸,从而使得提取的特征有更好的尺度不变性,降低了过拟合的可能,在 VOC(Visual Object Classes) 2012 数据集上,将目标检测的平均准确率(mean Average Precision, mAP)提升到53.3%。2015 年Girshick[11]和Ren等[12]又相继提出了 Fast R-CNN和 Faster R-CNN, 提高了准确率和检测速度; 2016 年Redmon等[13]提出的YOLO (You Only Look Once) v1以 45 FPS(Frames Per Second)真正达到了可以检测视频的速度,这为快速检测视频运动目标指明了方向; Liu等[14]提出了SSD(Single Shot multibox Detector)物体检测模型,在实时性和准确率都高于YOLO v1,在VOC数据集测试,mAP达到了74.3%,速度达到了46 FPS;随后,Redmon等[15]又提出了YOLO v1升级版YOLO v2,在VOC数据集上测试,将mAP提升至78.6%,并且大幅提高了检测速度,达到了67 FPS的实时检测的效果;同年,基于区域的CNN目标检测[16]和基于耦合CNN的弱监督学习[17]也被提出来,使得标记成本大幅降低,近几年目标检测方法在速度和准确率不断取得新的突破。本文在深度学习模型YOLO v2基础上,设计了自动判别恶劣天气模糊和良好天气清晰图像的算法,提出了适合小目标检测的多尺度算法,并针对遥感图像中的舰船特点改进YOLO网络中的非极大值抑制方法,结合显著性和自适应分割算法进一步提高检测精度。实验表明,设计的海上舰船检测模型能够克服YOLO算法小目标识别效果差的缺点,有效对复杂海情环境下的不同类别和尺度的舰船进行检测和识别。

1 基于深度学习的目标检测框架

本文采用YOLO v2为基础的目标检测模型,首先,通过卷积和池化自动提取目标的本质特征,在此基础上,本文对YOLO v2模型结构进行了改进,通过增加多尺度检测、改进非极大值抑制和显著性检测的图像分割等步骤,提高目标检测的精度,特别是小目标检测能力。本文海上船只目标检测模型的框架,由两个阶段组成,首先用YOLO v2模型自动提取海上船只的本质特征,然后利用这些特征进行目标检测。海上船只目标检测的框架如图1所示。

图1 海上船只目标检测框架Fig. 1 Marine ship target detection framework

使用batch normalization稳定模型的训练,最终得到了基础模型Darknet-19,本文是将Darknet19-448的模型作为初始模型进行训练的。检测过程和YOLO类似,按照如下操作训练:

1)将待检测图像缩放成416×416的大小,并将图像分割成13×13的网格;

2)利用CNN进行特征提取,然后全连接部分则用来负责预测;

3)利用非极大值抑制(Non-Maximum Suppression, NMS)过滤多余的边框bounding box,保留置信度最高的边框。

其实现的基本原理是:一幅图像被分割成13×13的网格,某个物体的中心如果落在此网格中那么此网格就负责预测该物体。最终输出为一个13×13×n的张量,每一个1×1×n的维度就对应原图13×13个网格中的一个,1×1×n中包含了类别预测和bounding box坐标预测。

2 主要方法介绍

2.1 清晰图像自动筛选算法

实验采用的数据是2017年中国计算机学会大数据与计算智能大赛主办方方一信息科技公司提供的海上船只图像,分辨率为1 024×1 024,图像分为清晰和非清晰两种场景,共有3类船只,分别是货船、游艇、游轮,比赛数据库一共有17 085张图片,其中13 668张作为训练样本,3 417张作为测试样本,其图片主要场景为云、雨、雾和干扰岛屿等,如图2所示。

为了保证训练模型鲁棒性,在训练之前首先需要将图像筛选为清晰和不清晰两个类别,然后对不清晰图像采用去雾算法得到清晰图像。考虑到训练图像数量大,人工筛选清晰和非清晰图像工作量巨大,本文设计了一个新的分类算法自动区分清晰和非清晰两个类别的图像,对于清晰图像直接进行训练, 而对于不清晰图像采用去雾算法后进行训练。本文结合暗通道先验去雾算法[18]的基本物理特征和亮度值差异以及由此产生的显著性特征,对清晰和非清晰图像进行分类,整个图像自动筛选算法流程如图3所示。基本过程如下:

1) 从图像显著性角度分析,非清晰图像背景和目标差别不明显,表现出来的亮度变化不敏感,因此图像的显著性差异较小。从信息论角度分析,信息可分为冗余部分和变化部分,人们的视觉对变化部分更敏感,因此本文采用基于谱残差模型的显著性区域检测算法[19],由于该算法针对不同颜色和模式的区域对应显著性值更高,而均匀或模糊区域的显著性值更低,因此可以从该图像的谱残差模型显著性特征出发,首先将图像分块(本文为16),然后计算每块的残差值作为显著性特征,并将残差值作为显著性特征组合叠加,以对清晰和非清晰图像进行划分。

图2 遥感场景图Fig. 2 Remote sensing scene images

2)对于非清晰图像,亮度值较高,像素区域中亮度值相差不大,因此,整体上图像相关性较高;而清晰图像,像素区域亮度值差异更大,其相关性较低。因此,可以将相关系数的值作为分类器区分两类图像的一个特征,其过程是将图像分为若干块(本文为16),对这些块求其协方差矩阵,计算各块之间的相关性特征,然后取相关性最小值作为图像的相关系数,作为相关性特征。

3)根据暗通道先验理论:非清晰图像亮度值普遍较高;而清晰图像某一些像素区域总会有至少一个颜色通道具有很低的值,即存在某些区域,该区域的亮度值很小,接近于0。因此通过计算估计的图像的透射率,作为分类器区分两类图像的一个特征,其公式为:

(1)

4)对于非清晰图像,其亮度值较高,而清晰图像亮度值较低,故可以将图像的亮度值作为筛选的特征。采用RGB图像对应的YCbCr色彩空间,其中Y为颜色的亮度成分,而Cb和Cr则是蓝色和红色的浓度偏移量成分。将Y计算分离出来,由于非清晰的图像亮度值较大,反映到数据上就是Y值偏大,而清晰图片由于背景是海,所以其亮度值较小,直观感受就是图片偏暗,反映到数据上就是Y值偏小。因此,可以把图像在色彩空间YCbCr中的Y提取出来作为分类的特征。

图3 图像自动筛选算法流程Fig. 3 Flow of automatic image filtering algorithm

2.2 多尺度检测小目标模型

YOLO v2在检测目标时将原始图像先划分为13×13的网格,能实现大尺寸的目标检测,但是每个网格有目标的两个候选框,但在本实验中即使是划分了13×13网格也不能保证检测完全,因为实验中有很多极小的船只,而原图分辨率为1 024×1 024,划分为网格后这些小船只依然很小,容易漏检。本文采用多尺度对不同尺大小的船只目标检测,其基本思想是:首先分别通过不同尺度大小的窗口在遥感图像滑动假设图像大小为H×W,尺度大小为S×S,则令窗口步长为2S/3,记作stride。当窗口滑出图像之外时将窗口的外边界与图像的外边界重合,以防止图像信息的漏检或冗余检测,如图4所示。

图4 窗口滑动示意图Fig. 4 Schematic diagram of window sliding

此时窗口数目计算如下:

(2)

(3)

其中:row为窗口垂直滑动的个数,col为窗口水平滑动的个数。最终得到的总窗口数为row×col。

将不同的尺度的所有候选框汇总,按照IOU将概率低的候选框去掉,保留概率最高的候选框。多个尺度的检测信息共享一个坐标系,最后会去掉大量的无效框,保证检测结果的准确性。具体算法如下:

输入 图片大小H×W,尺度大小S×S,步长stride;

输出 滑窗后所有候选框集合。

1)

初始化dis_ver=0,dis_hor=0,flag_ver=0,flag_hor=0

2)

WHILE 窗口垂直滑动距离dis_ver

3)

dis_hor=0,flag_hor=0

4)

WHILE 窗口水平滑动距离dis_hor

5)

将窗口得到的候选框保存

6)

IFflag_hor=1 DO

7)

BREAK

8)

dis_hor=dis_hor+stride

9)

IFdis_hor+S≥WDO

10)

将窗口滑动到W-S,dis_hor=W-S

11)

flag_hor=1

12)

IFflag_ver=1 DO

13)

BREAK

14)

dis_hor=dis_hor+stride

15)

IFdis_ver+S>WDO

16)

将窗口滑动到W-S,dis_ver=W-S

17)

flag_ver=1

18)

return 候选框集合

2.3 改进的非极大值抑制算法

在YOLO v2中默认存在多物体交叠的现象,传统的非极大值抑制(NMS)是针对一个类别,因此NMS会对属于同一类的目标进行抑制,而属于不同类的目标则不抑制;而本文研究对象是遥感影像中海上船只识别,船只分布较为稀疏,不存在多条船只交叠现象,一个检测得到的边框值只对应一个类别,这样就不会出现同一个框检测对应两个不同类别的物体而造成的误检。因此,实验可以对所有检测到的不同类别的船只一并进行NMS,而无需对每个类别分别进行非极大值抑制,进一步提高海上船只目标检测的精度。

2.4 结合显著性检测的图像分割方法

在对图像目标检测后仍然会有小的误差,如图5所示,该图是从1 024×1 024图像上截取的部分区域。可以看出检测结果和真实标记位置还有一定的误差,反映到数据上就是检测区域和真实区域重叠率不高,即IOU偏小。为了使目标检测区域更精准,考虑到目标区域和其周边区域存在的差异程度较大,表现出目标显著性特征明显,因此,本文引入图像显著性区域检测方法。顾及到图像目标的空间信息,本文采用基于上下文感知显著性检测算法[20]将已检测到的目标区域提取对应显著性特征图,在此基础上采用自适应阈值的图像分割方法,可以将目标定位得更精准,进一步提高准确率。

图5 图像初步检测结果Fig. 5 Preliminary image detection results

本文图像分割分4步处理:

1)采用视觉显著性算法对目标图像处理,计算显著性特征,提取目标区域,得到显著图;

2)使用拉普拉斯算子对显著图像进行锐化,并对图像进行闭运算,更有利于前景和背景分离,使轮廓更清晰;

3)采用OTSU自适应阈值分割算法[21],并将所得图像二值化;

4)计算轮廓的边界,通过对像素值的遍历来找到能完全包含目标的最小矩形,得出的最小矩形即为检测图像修正后的轮廓。

如图6所示:图6(a)为目标检测得到的示意图,可以看到边界框过大;为了提高检测精度,需要进一步缩小边界框范围,图6(b)是经过显著性算法处理后得到的结果,可以看出货船的大致轮廓可以得到,但是边界变得模糊不清;这个对后续计算会造成一定的误差,因此在显著性算法处理的结果上进行拉普拉斯算子锐化处理,然后对图像进行闭运算,得到二值图像;最后通过遍历图像素得到轮廓的边界,最终效果如图6(d)所示,边界框为最终目标框。

图6 图像显著性处理效果对比Fig. 6 Effect of image saliency processing

3 实验结果分析

3.1 数据训练

本实验采用的是64位Ubuntu操作系统,硬件配置为 Intel Xeon E5-2620 v2 处理器,GPU型号为NVIDIA GeForce GTX 960,显存为6 GB,在darknet平台上使用YOLO v2进行训练,训练样本13 668张,测试样本3 417张。

实验首先在训练样本中采用自动筛选算法,得到9 513张清晰图像和4 155张非清晰图像,对非清晰图像,采用暗通道去雾算法得到清晰图像,然后对所有图片进行训练,由于训练的图片中含有各种气象和环境场景的图片,根据CNN的特性,光照、海面环境等重要影响因素会被模型自动学习,另外,由于本文训练过程中包含了批量归一化(Batch Normalization)操作,因此能大幅提高模型的泛化能力,从而有效克服不同光照强度等影响。当迭代次数为8 500时,模型的平均损失值loss基本稳定在0.2附近,图7显示的是训练过程中迭代6 000~8 500次的平均损失曲线图,实验发现,训练迭代8 500次后随着迭代次数增加,平均损失函数值基本不变,表明训练过程收敛。

3.2 实验结果分析

召回率-准确率曲线衡量一个分类器的性能指标,以货船为例,测试集图像总共有货船K个,而训练好的模型检测到的货船目标数为N个,其中确实为货船的有M个,则召回率和准确率定义如下:

召回率:recall=M/K

准确率:precision=M/N

图8~10是普通非极大值和改进的非极大值抑制情况下召回率与准确率的关系曲线的对比,其中AP(Average Precision)表示目标检测的平均准确率。

图7 训练6 000~8 500次平均损失曲线Fig. 7 Average loss curve for training from 6 000 to 8 500 times

图8 货船召回率-准确率曲线对比Fig. 8 Comparison of recall-precision curve of cargo ship

实验设定IOU为0.7,采用4个尺度检测船只,分别是300、500、700和1 024。通过图8~10比较可以看出,随着尺度的增加,船只检测上准确率和召回率所围成的面积是依次提高,反映到数据上为AP逐渐提高,当采用3个尺度(500、700和1 024)检测时,游轮和货船的检测效果会逐步提升,这表明在一定范围内,随着尺度的缩小,目标检测的精度会进一步提高,但并不是越多越好,对300尺度来说,游艇这样的小目标检测,有更好的效果。对货船和游轮而言,由于目标本身比较大,因此尺度设置小对检测效果的提升没那么显著,但对游艇而言,由于其尺寸相对较小,因此增加300这样的小尺度,能检测到目标较小的游艇,因而游艇检测效果提升幅度相对更高。

从YOLO v2结构上分析,原因是游艇的尺寸较小,而YOLO对大目标的检测更为精确,因此大目标会将与之重叠率较高但置信度不高的小游艇抑制掉,这些被抑制掉的游艇大都不是游艇,反映到数据上就是准确率提高了。货船、游轮和游艇这三类目标在不同尺度下检测的mAP如图11所示,可以看到,随着尺度增加,总的平均精度mAP随着尺度增加均有不同程度的增长,同时表明,改进的非极大值抑制后mAP相对于原始非极大值抑制精度也有提高。

图9 游轮召回率-准确率曲线对比Fig. 9 Comparision of recall-precision curve of cruise ship

图10 游艇召回率-准确率曲线对比Fig. 10 Comparision of recall-precision curve of yacht

图11 综合评价曲线mAPFig. 11 Comprehensive evaluation curve of mAP

3.3 效果对比

图12为3种算法的检测效果对比图,图12(b)与图12(a)相比,虽然多尺度检测会导致重框,但是相比之前的单一尺度检测,增加了多尺度检测后其框的准确性提高了,图12(a)中的框只框中了一部分,漏掉了图像顶部的小目标,但是在图12(b)中框被拉长,从而将整只货船框中,此外图12(b)比图12(a)多检测出了一只游艇,图12(c)则消除了多余的重框,并且保证概率大的,即框选更准确的框得以保留下来。

图12 不同算法检测效果对比Fig. 12 Comparison of detection results by different algorithms

如图13所示为经过显著性图像分割后得到的结果对比。

图13 图像分割前后边界对比Fig. 13 Boundary comparison before and after image segmentation

由图13可以看出,经过显著性检测结合图像分割后,其框的准确性得到了明显提高。

3.4 不同方法对比实验

为了说明本文方法的有效性,实验还与其他一些常用的深度学习检测算法对比,在本实验条件下,约定IOU>0.7为目标检测正确,结果如表1所示,采用基于深度学习的目标检测算法Fast R-CNN、Faster R-CNN、YOLO v1和YOLO v2作实验对比,mAP和FPS作为性能指标比较参数。

表1 不同检测算法对比Tab. 1 Comparison of different detection algorithms

以上实验中YOLO采用的初始模型均为darknet19模型,Faster R-CNN初始模型为ResNet50。从表1可以看出,用去模糊算法处理图片后进行训练对YOLO和Faster R-CNN的模型精度均有较大提高,而显著性对YOLO算法效果提升相比Faster R-CNN更为明显,分析原因为Faster R-CNN对目标检测已经较为精准了,再进行修正其结果提升空间不大,而YOLO v2目标框没有Faster R-CNN那么精细,因此通过显著性修正的提升空间更大。最重要的方法是多尺度检测,通过多尺度滑窗可以大幅提高YOLO v2算法检测精度,分析原因为YOLO v2算法最大的缺陷在于小目标检测效果较差,而采用多尺度滑窗检测则正好弥补了这个缺陷。总之,虽然改进的检测算法速度有所减缓,但是检测精度大幅提高,简而言之,本算法通过牺牲了小部分的速度来大幅提高检测的精度,比原始的YOLO v2检测算法能够更加有效地对复杂海情环境下的不同类别的船舰进行识别。

4 结语

本文以YOLO v2网络为基础,建立针对复杂海情和气象条件下对船只检测的端到端的快速检测网络,为了提高船只特别是小船只的检测精度,本文通过改进的非极大值抑制、多尺度检测和图像分割等方法来改进检测效果。实验结果表明,在复杂海情船只检测中将mAP从72.7%提高到84.5%,说明了本文提出的目标检测方法有效性;但是由于遥感影像中背景复杂,类别之间差异不明显,仍然存在部分误检现象,今后可在检测网络的基础上建立识别网络,对误检船只进行二次判断,进一步提高目标检测精度;另外,随着YOLO版本升级,将继续深入研究YOLO v3[22]对海上船只检测。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!