基于深度学习的可见光舰船目标检测与识别
2022-03-30李秀娟李军怀乔路琪
李秀娟,李军怀,乔路琪
(1.西安理工大学 计算机科学与工程学院, 陕西 西安 710048;2.西安财经大学 信息学院,陕西 西安 710100)
0 引言
中国大陆海岸线漫长,海域辽阔,稳定的海面秩序不仅对于发展海运、开发资源意义重大,而且对于抵御外敌、巩固海防也有长远的影响。如今,在民用方面,现代化的轮船如客轮、货轮等促进了旅游业的发展或推动了国际贸易;在军用领域,舰艇是海军力量至关重要的组成部分。因此,舰船目标检测与识别技术在掌握海面信息、海事监测捕捞、海上搜救以及海上权益维护等方面都发挥着重要作用,是非常有意义的研究课题。
舰船目标检测的传统方法采用手工提取特征,如李毅等[1]对舰船图像进行不变矩特征提取后利用传统的支持向量机(Support Vector Machines,SVM)进行分类;张宇[2]采用HOG特征提取,通过线性分类器分类,实现了濒海红外目标的检测;Wijnhoven R等[3]利用HOG实现特征提取,再利用SVM进行分类。以上传统方法存在时间复杂度高、效率低和分类精度低的问题,很难满足舰船目标检测实现与部署要求。
随着深度学习目标检测技术的发展,为舰船目标的自动化、智能化识别提供了新的手段。Wang等[4]通过对YOLOv3的改进实现了对可见光图像舰船目标的检测,主要改进在于引入CFENet[5]中的CFE(Comprehensive Feature Enhancement)模块,以此提高舰船小目标的检测效果;Yang等[6]提出了一种基于旋转包围盒的无锚舰船检测方法;顾佼佼等[7]通过对Faster R-CNN引入多尺度特征融合方法实现了对红外图像舰船目标的检测;MA Z F[8]基于对YOLOv4的改进,提出了多通道融合SAR图像目标检测处理方法,在船舶数据集SSDD上实验,提高了检测精度。
本文以Faster R-CNN为检测框架,对其利用特征金字塔网络实现多尺度特征融合进行改进,在可见光图像舰船数据集上完成检测,实验表明分割精度有明显的改进。具体工作如下:
(1) 建立了可见光图像舰船数据集。通过旋转、翻转和裁剪等数据增强方法解决数据集有限的问题,最终可见光数据集包括22 260张图片,以“jpg”格式保存,真值(Ground Truth)标签以“xml”格式保存。
(2) 对Faster R-CNN进行改进。通过增加特征金字塔网络引入了多尺度特征的方法,并改进了ROI池化(ROI Pooling)方法,选用ROI对齐(ROI Align)更优化的策略。
1 目标检测与识别方法概述
1.1 传统目标检测方法
传统目标检测方法主要包括区域选择、特征提取和分类3个环节。一般首先采用滑动窗口进行区域选择,然后利用方向梯度直方图(HOG)[9]和尺度不变特征变换(SIFT)[10]等方法对目标区域进行特征提取,最后使用机器学习方法分类。这种滑动窗口的区域选择方法,根本思想是采用不同长宽比尺度对图像进行穷举遍历,产生大量冗余窗口,时间复杂度高。手工设计的特征提取方法对于多样性的变化并没有很好的鲁棒性。
1.2 基于深度学习的目标检测方法
自2012年AlexNet[11]在ILSVRC中夺冠,图像的识别与检测等任务的处理逐渐转向使用卷积神经网络(Convolutional Neural Networks,CNN)。利用CNN实现图像的特征提取优势明显[12-13],其对于目标在图像中位置的变换缩放等信息具有较强的鲁棒性,而在层数构建较深时,能够同时利用浅层卷积提取图像中的细节与纹理信息、深层卷积提取图像中的抽象与语义信息,从而较完整地获取图像的各种特征。
在几乎统一使用CNN作为特征提取方法的情况下,对于目标检测算法,主要基于是否进行候选区域的选择而分为2种:一种保留传统方法中区域选择,称为双阶段(Two-Stage)算法;另一种则抛弃区域选择的步骤,直接对目标进行预测,称为单阶段(One-Stage)算法。
R-CNN[14]是最早的双阶段算法,使用穷举思想的选择性搜索(Selective Search,SS)策略确定1 000~2 000个候选区域,利用CNN提取图像特征,在得到的特征图上进行SVM分类与回归定位。Fast R-CNN[15]的改进在于先利用CNN进行特征提取,在特征图上利用SS方法提取候选区域,避免了提取候选区域时大量重叠部分的冗余计算,加快了检测速度。Faster R-CNN[16-19]最大的创新在于用候选区域网络(Region Proposal Network,RPN)取代了SS方法,大大加快了检测速度,成为经典的检测框架。基于Faster R-CNN出现了许多检测算法,如Mask R-CNN[20]通过增加一个掩模分支以更好地完成实例分割任务。
单阶段算法中最经典的是YOLO系列算法[21-22],直接在特征图上进行目标检测。这其中应用最为广泛的是YOLOv3[23],后续的YOLOv4[24]等则是更加工程化的实现算法。单阶段算法还有SSD[25],不同于YOLOv3的特征图融合预测,SSD在不同尺度上直接进行分类预测和定位回归,提升检测效果。
综上所述,双阶段算法发展到Faster R-CNN基本成熟,而单阶段算法又以YOLO系列为代表。近来的研究工作大都在此2种算法的基础上增加了额外的网络与技巧,得到了不错的效果提升,推动了基于深度学习的舰船目标检测方面的研究。不论是从维护各种海事活动正常开展的民用角度,还是维护国家海域安全的军事角度,对舰船检测都有极高的精度要求。在水面正常情况下,以上研究检测效果没有问题,但是当受到距离、天气以及图像模糊、识别区域分辨率下降等因素的影响,容易产生虚警问题,小目标对象也容易漏检。分类和定位同时完成,单阶段算法需要综合考虑算法的精确性和处理速度,当检测距离太近或面对小目标时,单阶段算法准确性会下降。基于以上问题考虑,在对可见光舰船目标检测时,为保证检测精度,本文选取了双阶段的检测框架,而舍弃了YOLO等单阶段的算法,通过对Faster R-CNN模型的改进,进一步提高舰船目标检测精度,以期满足民用和军用对舰船检测的要求。
2 可见光图像舰船目标检测算法
2.1 基于Faster R-CNN的舰船目标检测算法
Faster R-CNN是应用十分广泛的双阶段目标检测算法,在保证精度较高的条件下,能够有较快的检测速度,其算法框架结构如图1所示,主要由4部分组成:主干网络(CNN)、RPN、ROI池化模块和分类模块。
图1 Faster R-CNN整体框架Fig.1 Overall framework of Faster R-CNN
2.1.1 主干网络
对图像进行特征的提取通过CNN来实现,本文采用了VGGNet[26]与ResNet[27]中的卷积部分。在去除最后的3层全连接层后,VGGNet-16的结构主要包括13个卷积层、13个ReLU激活函数层与4个最大池化层,如图2所示。
图2 VGGNet-16结构示意Fig.2 Schematic diagram of VGGNet-16 architecture
ResNet-101构建原理与VGGNet-16差别不大,从一层7×7的卷积层和3×3的最大池化层开始,之后包括66层的1×1卷积层和33层的3×3卷积层,如图3所示。
与VGGNet-16相比,引入许多卷积核尺寸为1×1的卷积操作,实际上没有改变特征图的大小,但引入更多的非线性因素,增强了网络的决策判别能力。1×1的卷积操作的另一个作用是将高维的特征图做降维处理,以降低计算量。ResNet-101的网络结构深,随着网络层次的增加往往会出现难以收敛、训练误差增大等问题。为此,ResNet构建了残差结构。残差结构由捷径连接(Shortcut Connections)和卷积层2部分构成。其中卷积层是CNN中的常规操作,而通过捷径连接的跳跃结构,将浅层特征直接传入深层,从而在2个过程中实现了构建深层网络的条件。
图3 ResNet-101结构Fig.3 Illustration of ResNet-101 architecture
深层D特征与浅层S特征关系可以表示为:
xD=xS+F(xS,WS),
(1)
式中,WS为浅层网络的权重;F(·)为卷积映射;xD和xS分别为深层和浅层特征。
2.1.2 候选区域网络
Faster R-CNN的第二部分是RPN,作用是提取候选区域,以作为后续检测框回归和分类的依据。RPN的实现建立在锚框上。在特征图的每个点上以{1∶2,1∶1,2∶1}3种宽高比例设置了3种尺寸,共9种矩形框。
对于每个像素点,都存在2组参数:(positive,negative)与(x,y,w,h),前者表示锚框的正负,即锚框中是否包含目标;后者表示锚框中心点坐标、锚框的宽高分别与真值的偏移量,这2组参数的学习由2条不同的路径完成,如图4所示。
图4 RPN结构Fig.4 Schematic diagram of RPN architecture
RPN在接收主干网络提取的特征图之后,首先进行一次3×3的卷积操作,在不改变特征图大小的情况下,再次融合每个点周围一定范围内的特征信息,再分为2条路径。上面一条路径通过1×1卷积输出18张特征图,对应的是每个特征图上的9个锚框的(positive,negative)正负2个参数,这2个参数通过Softmax函数进行分类,得到具体的锚框的正负信息。同理,下面一条路径通过1×1卷积输出36张特征图,对应的是9个锚框的(x,y,w,h)中心点坐标、宽、高的偏移量4个参数。上下2条路径包含的信息,包括主干网络所提取的特征图,一并被候选层收集,得到检测目标可能的候选框。
候选层首先对所有的锚框做检测框回归,得出所有锚框的偏移量。然后对前述分类得分进行排序,选取前N(在实验中具体设置,默认设置为6 000)个得分最高的锚框,采用非极大值抑制(Non-Maximum Suppression,NMS)的方法获得最终的候选区域。
2.1.3 ROI池化结构
ROI池化有2个主要作用:一是通过最大池化,将输入的候选区域转化为较小的特征图,显著提升了检测速度;二是能够输出固定大小的特征图,便于进行端到端的训练,ROI池化操作如图5所示。
图5 ROI池化Fig.5 ROI pooling
如果候选区域的输出大小为3×5,而分类网络需要得到的输入尺寸为2×2,则尽量将候选区域划分,但不必取整,因此可以划分为第2个特征图中的4个红色区域。之后对每个区域进行最大池化,将最大值复制后最终得到2×2的特征图。
2.1.4 分类网络
对于检测出的较为精确的候选框的分类,Faster R-CNN采用了全连接层与Softmax函数来实现。由于权重与偏差是在训练时已经学习好的参数,因此在做测试或推断时全连接层只能接收相同大小的图像,这也印证了ROI池化层存在的必要性。得到全连接层的输出后,利用Softmax函数求得分类得分最大的类即为具体检测得到的类别。
2.2 改进Faster R-CNN舰船目标检测算法
2.2.1 引入特征金字塔网络
特征金字塔网络[28]一经提出便有了广泛的应用,如Wu等人[29]提出的结构引入了多尺度方法,对检测结果有不错的提升。因此本文引入特征金字塔网络,将特征提取阶段的多个特征图作为RPN的输入,从而实现多尺度预测方法,增强小目标舰船的检测能力,特征金字塔网络的结构如图6所示。
图6 特征金字塔网络Fig.6 Feature pyramid network
特征金字塔网络的结构包括2个部分,一是通过卷积或者池化对图像进行下采样,得到不同层的特征图,如图6中的特征图1、特征图2和特征图3,其特征图尺寸分别为原图1/2,1/8,1/16下采样所得。特征图3进行1×1的卷积,改变其维度,使之与后续RPN的输入维度匹配,得到特征图4,由于进行了1×1的卷积,特征图4与特征图3的大小相同。
二是通过双线性插值法或最近邻插值法等对特征图上采样。上采样后要保证特征图大小相同才能进行特征融合,将特征图3~特征图1分别2倍上采样。最后,需要将融合后的特征图4,5,6送入RPN中,在输入的每个尺度的特征图上设置对应锚框,锚框仍然保持3种宽高比例,从而能够在不同尺度下获取候选区域。为了减少计算量,在不同尺度的特征图之间,选择共享RPN的参数。
2.2.2 将ROI池化改进为ROI对齐
Faster R-CNN检测网络中,采用了ROI池化的方法进行降采样。以VGGNet-16为主干网络进行特征提取为例,原图到ROI池化的过程需要1/16下采样,在获取候选区域之后,将候选区域映射到输入特征图时,需要进行取整量化;在特征图上候选区域池化时,并不一定精确位于像素点上,因此需要二次取整量化,得到的候选框与实际物体位置有微小偏差,对候选区域精度有一定的损失。
本文引入Mask R-CNN对ROI池化的改进方法,采用ROI对齐方法。ROI对齐实现过程是首先遍历每一个候选区域,对浮点数边界不做量化;其次将候选区域分割为k×k个单元,每个单元的边界也不做量化;在每个单元中计算4个固定坐标位置,用双线性插值的方法计算这4个位置的值,然后再进行最大池化,以解决特征图预测框取整操作造成的精度损失问题。综上所述,改进后的Faster R-CNN结构如图7所示。
图7 改进后的Faster R-CNN结构Fig.7 Schematic diagram of improved Faster R-CNN architecture
3 可见光图像舰船目标检测实验
3.1 可见光图像舰船数据集
可见光舰船目标数据集包括22 260张包含舰船目标的图片,图片格式为“jpg”,部分图片如图8所示,真值标签以“xml”存储,包含了图片大小、通道数、目标类别(军舰和民船)、真值框左上右下2个点的4个坐标值。图片与真值标签命名相同,以便实现对应关系。训练集与测试集采用随机采样的方式进行划分,比例大约为4∶1。
(a) 军舰
(b) 民船图8 可见光数据集Fig.8 Visible light data set
3.2 基于Faster R-CNN的舰船目标检测实验
3.2.1 实验设置与过程
实验环境基于Ubuntu 16.04,CUDA 10.2,Pytorch 1.0.0,训练在4张NVIDIA RTX 2080ti显卡上完成。
实验中采用了小批量梯度下降法作为优化方法,表示为:
(2)
式中,m为每次更新参数时样本数量;f(xi,θ)为假设函数,为了解决下降路径的震荡问题,实验使用动量(Momentum)学习法对于小批量梯度下降法的优化,其动量参数设置为0.9。
BatchSize设置为16,即一次性对网络输入16张图片,以充分利用每张显卡的内存;Epoch设为20,即将整个数据集数据在网络中循环20次,在每100次迭代(Iteration)时显示一次损失,利用Tensorboard显示模型训练收敛过程。
Faster R-CNN的训练过程可以拆分为2步:首先训练RPN;其次训练整个网络,将2个阶段循环2次(实验表明,更多次没有明显提升)。循环第一次时,加载数据集上预训练的VGGNet-16与ResNet-101对RPN进行训练,将其输出作为后续网络训练的权重。
2个阶段网络的损失函数都设置为:
(3)
在训练不同网络时,对于上述损失函数有不同的意义:训练RPN时,损失函数的两部分包括其分类损失和回归损失,分别使用了交叉熵损失函数和SmoothL1损失函数。此时,网络仅更新RPN的权重,而中止了共享卷积层权重的更新。
学习率设置为0.001,同时设置每5次数据集循环进行一次学习率衰减(Learning Rate Decay),具体为:
(4)
式中,α0为初始学习率;α为衰减后学习率;衰减因子γ设置为0.1;num_of_step设为每5个数据集循环为一次衰减周期。设置一个相对较大的学习率有利于模型的快速收敛,然而学习率过大将导致网络在一个局部最优点附近摆动而没有真正收敛,因此需要慢慢降低学习率以使模型向最优点收敛。
3.2.2 实验结果与分析
(1) 评价指标
实验的结果用类平均精度(Mean Average Precision,MAP)来表示:
(5)
即对所有类的精度APi求平均值,而APi的计算由4个步骤得出:
第1步,给定预测框与真值框的交并比,由此统计出混淆矩阵的各个值,如表1所示。
表1 混淆矩阵
第2步,计算准确率,即在所有检测为正样本目标中为真实目标所占的比例:
(6)
第3步,计算召回率,即在所有真实目标中被实际检测出的目标所占的比例:
(7)
第4步,综合考量准确率与召回率,以二者为横纵坐标做出曲线,对曲线求积分可得平均精度的值:
(8)
得到每个类精度之后,再计算出MAP的值。
(2) 实验结果
在实验划分出的测试集上,利用应用较广泛的交并比为0.5时的MAP进行评估,分别利用VGGNET-16与ResNet-101作为主干网络进行特征提取,得到结果如表2所示。
表2 Faster R-CNN检测精度
在检测速度方面,网络对于单张图像的平均检测时间达到了45 ms,即平均能达到22帧/秒的检测速度。
(3) 结果分析
在量化分析方面,基于VGGNET-16进行特征提取的检测网络平均精度能达到84.6%;采用ResNet-101进行特征提取,检测精度达到85.3%,比前者精度稍高,也印证了残差网络的有效性。然而,对于一个规模不算小的数据集来说,在测试集上的结果仍有一定提高的空间,其中比较重要的2个方面是基础Faster R-CNN检测网络所欠缺的多尺度检测方法,以及最初的ROI池化存在的精度问题。因此,考虑利用较为先进的方式对Faster R-CNN的固有模块进行改进,以期望达到更高的结果。
3.3 基于改进Faster R-CNN的舰船目标检测实验
3.3.1 改进网络实验
在经过2个方面的改进之后,使用改进Faster R-CNN对可见光数据集再次进行了训练和测试实验,为了做出较为明显的对比,实验参数设置与初始实验保持一致,即:批量大小设置为16,数据集循环输入20次,学习率设为0.001,每5次数据集循环进行一次学习率衰减,衰减因子为0.1,得到结果如表3所示。
表3 实验精度对比
在检测速度方面,由于引入了特征金字塔网络,对于单张图片的平均检测时间为58 ms,略有增加,检测速度为17 帧/秒。
利用改进的Faster R-CNN模型对舰船可见光图片进行检验,可得到检测效果如图9所示。
图9 可见光图片检测结果Fig.9 Detection results of visible light images
3.3.2 结果分析
由实验结果对比可知,优化后的网络结构引入了多尺度特征金字塔方法并将ROI池化改为ROI对齐模块,VGGNet-16和ResNet-101作为特征提取的主干网络,精度分别达到了89.6%和90.7%,与传统的Faster R-CNN结构相比精度均有提升。尤其基于ResNet-101进行特征提取的检测网络精度提升更大,与传统Faster R-CNN网络相比精度提升了5.4%,而比同级YOLO的精度提升更多,证明了本文改进的网络模型在检测精度方面的良好效果。
4 结束语
本文基于Faster R-CNN检测网络引入了特征金字塔网络,对不同层次网络得到的特征图进行融合,通过对不同尺度的融合特征图提取候选区域,达到检测不同大小目标的目的。同时,由于ROI池化本身对精度有一定的局限性,于是将ROI池化改进为ROI对齐,实现了对网络参数精度的提升。利用改进Faster R-CNN得到了比Faster R-CNN更好的实验结果。然而如何对检测网络添加优化分支对损失进行补偿,级联优化网络进行优化预处理等方式提升网络的精度,可以在之后的工作中进一步考虑和研究。