一种基于迁移学习的SAR遥感图像舰船检测方法与流程

文档序号:16899577发布日期:2019-02-19 17:50阅读:382来源:国知局
一种基于迁移学习的SAR遥感图像舰船检测方法与流程

本发明涉及计算机视觉技术领域,特别涉及一种基于迁移学习的sar遥感图像舰船检测方法。



背景技术:

sar指的是合成孔径雷达,通过其产生的遥感图像称为sar遥感图像。与传统的光学遥感器不同,sar具有一定的穿透能力,并且不受大雾和云层的影像,可以全天时、全天候的进行成像,因此sar图像广泛地应用于减灾、水利、海洋监控等领域。

舰船检测一直是遥感图像领域中重要的研究方向之一,其中sar遥感图像的舰船检测方法最常用的是cfar(恒虚警率),即通过选定一种背景杂波分布模型,通过设置一定的虚警率来进行舰船检测(胡宇.sar图像舰船检测方法研究[d].沈阳航空航天大学,2017.)。cfar算法结构简单,运算效率高,但针对不同的情况,虚警率和杂波分布模型往往需要重新设置,导致其泛化性不强,特别是在港口、码头等背景复杂的海域,会产生许多的干扰,导致基于cfar的舰船检测方法有着较高的误检率,并不能取得很好的效果。同时,由于sar遥感图像的成像特点,使得遥感图像中的舰船会产生一些残影,而且在特定应用需要使用很小的虚警率时(10^-4),很容易丢失检测目标(cozzolinod,martinogd,poggig,etal.afullyconvolutionalneuralnetworkforlow-complexitysingle-stageshipdetectioninsentinel-1sarimages[c]//geoscienceandremotesensingsymposium.ieee,2017.)。

随着深度学习的兴起,基于深度学习的目标检测技术得到了长足的发展,不论是检测速度还是检测准确度都获得了很大的提高,由于深度学习具有很强的特征提取能力和泛化能力,因此在目标检测上深度学习方法效果远远好于传统方法。由于深度学习的特性,要使得训练出来的模型能有较好的泛化能力,需要数量庞大的带标注的训练样本,而sar遥感图像几乎没有带标注的数据集,采用人工标注sar遥感图像中的舰船也十分费时费力,导致无法将现有的深度学习物体检测方法直接用于sar遥感图像的舰船检测中。



技术实现要素:

发明目的:为解决sar遥感图像没有舰船的标注,不能直接将深度学习应用于sar遥感图像舰船检测的问题,本发明提供一种基于迁移学习的sar遥感图像舰船检测方法。

本发明技术方案主要包括如下步骤:

.一种基于迁移学习的sar遥感图像舰船检测方法,包括以下步骤:

步骤1:准备相关数据集,包括光学遥感图像舰船数据集作为源域和sar遥感图像数据集作为目标域,其中光学遥感图像舰船数据集有舰船标注,sar遥感图像数据集没有舰船标注;

步骤2:基于迁移学习的思想,设计用于训练的网络和损失函数;

步骤2.1:设计目标域与源域的私有编码结构和共享编码结构,以vgg16作为基础结构,将全连接层fc6和fc7变成卷积层,同时,额外增加两个卷积层(conv6_2,conv7_2)以及一个全连接层(fc100),每个卷积层后面跟随bn操作,全连接层的输出大小为100;

步骤2.2:设计损失函数,包括相似损失函数,区别损失函数,以及分类损失和回归损失;其中相似损失函数用于目标域与源域共享编码结构,完成两个领域的共享表示;区别损失函数用于目标域、源域私有编码结构,保证每个域的独立特性;分类和回归损失用于舰船的检测;

相似损失函数;将目标域与源域共享编码结构得到的目标域图像特征与源域图像特征,通过梯度反转层(grl)和领域分类器实现最大程度的“混淆”,完成领域的共享;

具体的公式为:

其中d,0和1分别代表源域和目标域,d是已知的,则是通过目标域和源域共享编码结构得到的特征作为依据预测出来的,通过梯度反转层(grl),将该损失最大化,使得根据共享编码结构得到的特征,无法判断出该特征的来源是源域还是目标域;梯度反转层(grl)作用就是在原函数梯度前加一个负号,达到仍然是求损失的最小值的目的;

区别损失函数;通过私有和共享领域特征之间的软子空间正交性约束定义,使共享和私有编码去编码输入的不同方面;该损失函数的输入为目标域私有编码结构得到的目标域图像特征和源域私有编码结构得到的源域图像特征;

具体的公式为:

其中是源域数据通过共享编码结构得到的特征矩阵,是源域数据通过私有编码结构得到的特征矩阵,是目标域数据通过共享编码结构得到的特征矩阵,是目标域数据通过私有编码结构得到的特征矩阵;

分类和回归损失,其中分类损失采用softmaxloss,回归损失采用smoothl1loss;

具体的公式为:

分类和回归损失是用在检测结果上的,在训练过程中,是用带标签的源域数据通过上述损失来训练用于舰船检测的网络;

步骤3:使用设计的网络对数据集进行训练,得到用于sar遥感图像舰船检测的模型;

步骤3.1:将源域和目标域数据同时输入到网络中;选取源域遥感图像和目标域遥感图像,将他们均值中心化到一定范围,每张均值中心化后的源域遥感图像数据表示为xs,每张均值中心化后的目标域遥感图像数据表示为xt,将xs和xt其输入到网络中;

步骤3.2:使用私有编码结构提取私有特征,共享编码结构来提取共有特征;私有编码结构和共享编码结构采用的是修改后的vgg16网络,网络的初始参数设置为在imagenet数据库上预训练的vgg16模型参数;通过私有编码结构,输入的源域数据xt和目标域数据xt将分别得到源域的私有特征和目标域私有特征同理,通过共享编码结构,输入的源域数据xs和目标域数据xt将分别得到源域的共有特征和目标域的共有特征

步骤3.3:通过提取出的特征,计算出相似损失函数值和区别损失函数的值;

步骤3.3.1:将得到的共有特征加上一个梯度反转层,保证在计算梯度时会加上负号,再处理后的共有特征输入到一个二分类器中,判断输入的特征属于源域还是目标域,输出为其中0和1分别代表源域和目标域;通过所述相似损失函数计算公式计算相似损失函数值;

步骤3.3.2:将得到的源域私有特征目标域私有特征源域共有特征和目标域共有特征构建成相应的矩阵矩阵每行即为每张图像得到的相应特征,在根据所述区别损失函数计算公式计算区别损失函数值;

步骤3.4:选取源域所提取的共有特征,使用ssd结构进行检测,结合源域标注,得到分类和回归损失函数的值;由于舰船的尺寸具有一个大的范围,在使用ssd结构进行检测时,取conv3_3、conv4_3、conv5_3、fc7、conv6_2,conv7_2层的特征作为输入;通过检测结果和已知的源域数据标注,结合所述分类和回归损失函数计算公式计算出相应的分类和回归损失函数值;

步骤3.5:结合所有损失值,利用反向传播算法对网络进行调整:通过之前步骤计算出来的各个损失值,将各个损失值加上系数进行累加,得到总体损失值,具体公式为:

其中α,β,γ,为各个损失的系数,用来控制各个损失值的权值;通过得到的总体损失值利用反向传播算法对网络整体进行训练;

步骤4:使用得到的sar遥感图像舰船检测模型,进行舰船检测:选择一张sar遥感图

像,将其进行均值中心化,得到输入x;

将得到的x输入到已训练的模型中;

利用模型中训练好的共享编码结构提取出输入x的共享编码特征hc;

将提取出的共享编码特征hc输入到ssd检测框架下,取conv3_3、conv4_3、conv5_3、fc7、conv6_2,conv7_2层的特征,进行舰船检测。

有益效果:相比于现有技术,本发明提供一种基于迁移学习的sar遥感图像舰船检测方法,具有以下有益效果:与传统sar遥感图像舰船检测方法比较,可以有效利用深度学习的特征提取能力以及泛化能力,提高在复杂环境条件下舰船检测的准确率,同时利用迁移学习的思想,有效克服了深度学习没有标注数据时无法有效训练的弱点。

附图说明

图1是设计的用于网络训练的结构图

图2是训练模型的流程图

图3是sar遥感图像舰船检测的流程图

图4是sar遥感图像舰船检测的结果图

具体实施方式

下面结合附图和具体实例对本发明作进一步说明。

本发明涉及计算机视觉技术领域,特别涉及一种基于迁移学习的sar遥感图像舰船检测方法。

步骤1:准备相关数据集,包括光学遥感图像舰船数据集(源域)和sar遥感图像数据集(目标域),其中光学遥感图像舰船数据集有舰船标注,sar遥感图像数据集没有舰船标注;

步骤2:基于迁移学习的思想,设计用于训练的网络和损失函数,具体思想和步骤如下:

迁移学习是机器学习的一个分支,其最初的灵感来源是人类可以将以往学习的知识运用于新领域中。设计用于训练的网络采用的主要思想为,源域和目标域有着共有的特征和私有的特征,通过设计深度神经网络,可以将源域和目标域中共有的特征和私有的特征学习出来,然后利用其共有的特征来进行检测,以达到即使目标域没有标签进行训练也可以检测的目的。

步骤2.1:设计目标域与源域的私有编码结构和共享编码结构,以vgg16作为基础结构,将全连接层fc6和fc7变成卷积层,同时,额外增加两个卷积层(conv6_2,conv7_2)以及一个全连接层(fc100),每个卷积层后面跟随bn操作,全连接层的输出大小为100;

目标域、源域私有编码结构用于学习出目标域和源域的私有特征,目标域与源域共享编码结构则用于学习目标域和源域的共同特征,也就是可以进行迁移学习的部分。这里设计的私有编码和共享编码结构相同,但是它们学习得到的网络参数是不同的。

这里采用的基础结构是vgg16,vgg16具有强大的特征提取能力,为了使其更适用于sar遥感图像舰船检测,将全连接层fc6和fc7变成卷积层,并增加两个卷积层,这样可以实现更大尺度范围内的舰船检测。再在每个卷积层后进行bn操作防止梯度消失或者梯度爆炸。

步骤2.2:设计损失函数,包括相似损失函数,区别损失函数,以及分类和回归损失。其中相似损失函数用于目标域与源域共享编码结构,完成两个领域的共享表示;区别损失函数用于目标域、源域私有编码结构,保证每个域的独立特性;分类和回归损失用于舰船的检测。

损失函数的好坏关系着训练出的模型效果,整体的网络总共包括四个损失函数,分别是相似损失函数、区别损失函数、分类损失和回归损失。

首先介绍相似损失函数,其将目标域与源域共享编码结构得到的目标域图像特征与源域图像特征,通过梯度反转层(grl)和领域分类器实现最大程度的“混淆”,完成领域的共享。

具体的公式为:

其中d,0和1分别代表源域和目标域,d是已知的,则是通过目标域和源域共享编码结构得到的特征作为依据预测出来的。通过梯度反转层(grl),将该损失最大化,使得根据共享编码结构得到的特征,无法判断出该特征的来源是源域还是目标域。梯度反转层(grl)作用就是在原函数梯度前加一个负号,达到仍然是求损失的最小值的目的。

接下来是区别损失函数,通过私有和共享领域特征之间的软子空间正交性约束定义,使共享和私有编码去编码输入的不同方面。该损失函数的输入为目标域私有编码结构得到的目标域图像特征和源域私有编码结构得到的源域图像特征。

具体的公式为:

其中是源域数据通过共享编码结构得到的特征矩阵,是源域数据通过私有编码结构得到的特征矩阵,是目标域数据通过共享编码结构得到的特征矩阵,是目标域数据通过私有编码结构得到的特征矩阵。要使得ldifference尽量小,就需要私有编码结构和共享编码结构学习得到的特征尽可能不相关。

最后是分类和回归损失,其中分类损失采用softmaxloss,回归损失采用smoothl1loss。

具体的公式为:

分类和回归损失是用在检测结果上的,在训练过程中,是用带标签的源域数据通过上述损失来训练用于舰船检测的网络。

设计完成的网络结构如图1所示。

步骤3:使用设计的网络对数据集进行训练,得到用于sar遥感图像舰船检测的模型,流程图如图2所示,具体步骤如下:

模型的实现基于tensorflow框架,训练方法选择的是基于动量的随机梯度下降法。

步骤3.1:将源域和目标域数据同时输入到网络中;

具体操作是每次选取2张源域遥感图像和2张目标域遥感图像,将他们均值中心化到[-1,1]范围,每张均值中心化后的源域遥感图像数据表示为xs,每张均值中心化后的目标域遥感图像数据表示为xt,将xs和xt其输入到网络中。

步骤3.2:使用私有编码结构提取私有特征,共享编码结构来提取共有特征;

私有编码结构和共享编码结构采用的是修改后的vgg16网络,网络的初始参数设置为在imagenet数据库上预训练的vgg16模型参数。通过私有编码结构,输入的源域数据xt和目标域数据xt将分别得到源域的私有特征和目标域私有特征同理,通过共享编码结构,输入的源域数据xs和目标域数据xt将分别得到源域的共有特征和目标域的共有特征

步骤3.3:通过提取出的特征,计算出相似损失函数值和区别损失函数的值;

步骤3.3.1:相似损失函数的具体计算方法为:对步骤3.2的得到的共有特征将它们输入到一个二分类器中,该分类器用于判断输入的特征属于源域还是目标域,输出为其中0和1分别代表源域和目标域。相似损失函数目的是为了使共享编码结构学习出来的特征尽可能相似,因此该损失越大越好,为了保证所有目标损失都期望取最小,在输入到二分类器前,要加上一个梯度反转层(grl),该层作用是在计算梯度时会加上一个负号。

得到后,通过公式来计算相似损失函数值,其中d是已知的真实标签值。

步骤3.3.2:区别损失函数的计算方法为:将步骤3.2的得到的源域私有特征目标域私有特征源域共有特征和目标域共有特征构建成相应的矩阵矩阵每行即为每张图像得到的相应特征。例如是由输入的2张源域图像得到的两个源域私有特征得到的。再根据公式计算区别损失函数。

步骤3.4:选取源域所提取的共有特征,使用ssd结构进行检测,结合源域标注,得到分类和回归损失函数的值。由于舰船的尺寸具有一个大的范围,在使用ssd结构进行检测时,取conv3_3、conv4_3、conv5_3、fc7、conv6_2,conv7_2层的特征作为输入;

将步骤3.2提取出来的源域共有特征输入到ssd结构中进行检测。在使用ssd结构进行检测时,取conv3_3、conv4_3、conv5_3、fc7、conv6_2,conv7_2层的特征作为输入,其对应的stride分别为4,8,16,32,64,128,对应的anchor大小分别为16,32,64,128,256,512,通过检测结果和已知的源域数据标注计算相应的分类和回归损失函数值。其中分类损失函数采用softmaxloss,回归损失采用smoothl1loss。

步骤3.5:结合所有损失值,利用反向传播算法对网络进行调整。

通过之前步骤计算出来的各个损失值,将各个损失值加上系数进行累加,得到总体损失值,具体公式为:

其中α,β,γ,为各个损失的系数,用来控制各个损失值的权值。通过得到的总体损失值利用反向传播算法对网络整体进行训练。

步骤4:使用得到的sar遥感图像舰船检测模型,进行舰船检测,。

sar遥感图像舰船检测的流程图如图3所示,具体步骤如下:

选择一张sar遥感图像,将其进行均值中心化,得到输入x。

将得到的x输入到已训练的模型中。

利用模型中训练好的共享编码结构提取出输入x的共享编码特征hc。

将提取出的共享编码特征hc输入到ssd检测框架下,取conv3_3、conv4_3、conv5_3、fc7、conv6_2,conv7_2层的特征,进行舰船检测。其对应的stride分别为4,8,16,32,64,128,对应的anchor大小分别为16,32,64,128,256,512。

通过所设计的网络结构以及对应的anchor大小,使得anchor/stride=4,可以保证每个尺寸的物体都尽可能有相同数目的对应尺寸的anchor,即覆盖密度相同,使得大船与小船对应的anchor数目尽可能相同,解决小舰船检测不好的现象,提高小尺寸舰船的检测召回率。

最后得到舰船检测的结果,结果如图4所示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1