本发明涉及到图像识别领域,具体涉及一种基于fasterr-cnn的卫星图像海上舰船识别方法。
背景技术:
遥感图像中目标的识别一向是遥感领域的热门课题,舰船作为海上运输和作战的重要工具,更是遥感图像目标检测中不可忽视的一块。近十几年来受渔业活动监测需求的影响,许多国家开展了关于舰船遥感检测识别的研究,也有许多国家已经建立十分成熟的船舶遥感探测和监视系统。目前将卫星遥感图像运用于海上舰船识别的研究较少。海上舰船识别相比与舰船监测,需要更多细节信息以及更加强大的计算能力,在过去由于计算能力的有限,很难对舰船识别做出精准判断。舰船的分类识别可以帮助军方对监控海域舰船做出及时精确的决策。随着近几年遥感图像分辨率的提高,计算机计算能力的增强,以及日益发展的图像处理与人工智能技术,使得舰船的精准检测,识别,分类成为可能。
早期针对海上舰船识别这一课题,主要可以分为舰船检测与舰船分类两个模块。舰船检测可以分为海陆分离和目标候选区域提取两个部分。由于舰船在一张图中所占区域较小,而陆地区域大,且对象多而复杂,因此对图进行海陆分离,只对海面部分进行检测,可以大大提高舰船检测的准确度与效率,海陆分离主要有阈值分割法与区域生长法。阈值分割法利用海面及陆地的灰度纹理不同对图像中不同区域进行分割,区域生长法利用选取好的种子点进行区域生长从而分割图像中不同的区域。目标区域选取的目标是将疑似舰船的图像区域从遥感图像中分离。目标区域选取的主要方法有:基于阈值检测法,基于分形模型检测法,基于视觉显著检测法。基于阈值检测法主要是利用一个固定的阈值分割图像,这种方法运算速度快,计算复杂度低,但对于复杂度较高的图像,如有海浪影响的图片,效果并不理想,易产生虚警信息。基于分形模型检测法是根据与舰船等人造物体相比,海浪等自然物体有显著的分形特征,这一差别使区分舰船与其它背景成为可能。目前的研究成果有利用高阶分形维特征与缝隙特征对海面目标进行检测的方法,利用海面雷达反射信号的高阶分形特征检测海面目标等。基于视觉显著检测法是根据人类视觉系统在面对复杂场景时会选择性聚焦到自身感兴趣的部分这一特性提出的一类检测方法,这类检测方法在近些年较为热门,研究者提出很多可行方法,如利用视觉显著度模型,融合多种特征对目标进行检测选择等。
将舰船目标检测到并提取后可以通过船舰分类技术对舰船进行进一步的识别。舰船分类主要可以分为特征提取和分类两个部分。特征提取主要是从分离出的目标区域图像提取特征,常见的舰船特征有:灰度,纹理,形状等,除此之外,也有提取舰船的尾迹特征,小波特征等,以法国的ird系统为例,它提取了灰度,对称性,周长,密实度,面积,偏度,标准方差等28特征,并利用遗传算法对特征进行选择。利用提取到的特征对舰船进行分类,科研人员尝试了不同的分类器,包括神经网络分类器,贝叶斯网络分类器等,如法国的ird系统使用误差后向传递多层感知器神经网络作为分类器,并且在该神经网络中用遗传算法代替bp算法来选择最优权重。但以上这些分类器往往需要大量的训练数据以保证其准确性,因此也有研究者利用svm对舰船进行分类,并使用150个样本对svm进行训练与测试,得到了较好的结果。
在早期对于遥感图像海上舰船识别这一主题的研究较多的是将检测与识别分开。随着遥感图像分辨率的提高,图像处理与人工智能技术的发展,近几年目标检测算法得到了快速的发展,通过目标检测算法可以将舰船目标的定位与分类一同进行。
早期图像识别一直围绕对图像中目标物体分类展开,也有研究者希望将目标检测与深度学习结合,但一直没有取得较大成果。直到r-cnn算法的出现,较好的结合了目标检测与深度学习算法,打破了两者的界限。
2013年,yannlecun团队提出了著名的overfeat算法,这个算法对图像进行不同尺度缩放,对缩放后的图像进行卷积。再利用滑动窗口在卷积结果上滑动圈出区域,然后对每个区域进行分类。overfeat的定位模型与分类模型在卷积层方面完全相同,只是用回归层替代分类层。overfeat是一种典型的onestage的目标检测方法,不用产生候选框,直接将目标定位问题转化为回归问题处理。但马上overfeat算法就被r-cnn算法全面超越。
r-cnn算法以及其发展出来的算法都是典型的twostage的目标检测方法,先产生一系列候选框作为样本,再利用卷积神经网络对其进行分类。
2014年,rossb.girshick提出了r-cnn算法,r-cnn算法利用选择性搜索算法选出候选区域,将候选区域输入到卷积神经网络,由神经网络学习得到候选区域的特征向量,利用svm对特征向量进行分类,分类后对候选区域做边框回归定位目标。事实上,r-cnn算法在卷积神经网络提取候选区域的特征时伴随了大量的重复运算,导致算法运算速度慢问题。
之后经过spp-net和fasterr-cnn的改进,大幅减少r-cnn算法的重复运算。2015年,任少庆、何恺明以及rossbgirshick等人提出了fasterr-cnn(fasterregionswithcnn)。fasterr-cnn主要利用rpn网络代替了选择行搜索算法,快速高效地提出了目标的候选区域,并且通过使rpn与fastr-cnn共享网络参数,使所有计算没有重复,进一步提高了算法的速度。
目前,针对海上卫星图像中舰船的识别方面研究较少,同时很多海上船舶检测系统还沿用早期的单图像识别方法,识别步骤繁多,多用于监测船只行动。与常见的航拍等遥感图像舰船识别不同之处在于,卫星图像覆盖范围广,可以进行空天地的实时监测,可以对特殊地域(比如海洋中央位置,不适合航拍)进行成像,但是卫星图像存在分辨率较低,目标图像尺度较小的问题。与传统的航拍遥感图像的图像特征不同,所以航拍遥感图像的新技术不能直接应用在卫星图像舰船识别上,本发明因此提出一种基于fasterr-cnn算法实现卫星图像海上舰船识别的方法。
技术实现要素:
针对现有技术的不足,本发明设计出了一种基于fasterr-cnn的卫星图像海上舰船识别方法,本发明处理速度快,精度高,对不同类型的一个或多个舰船目标都可以进行有效地识别。
为达到上述目的,本发明技术方案提供一种基于fasterr-cnn的卫星图像海上舰船识别方法,使用基于目标选择的卫星图像分割算法将原始卫星图像数据进行分割,基于生成对抗网络增加训练样本,根据fasterr-cnn算法建立卫星图像海上舰船训练数据集,利用fasterr-cnn算法和训练数据集生成卫星图像海上舰船识别模型,建立经纬度匹配模型,基于像素与经纬度映射关系,支持精准经纬度匹配,实现对卫星图像中海上舰船的识别。
而且,所述基于目标选择的卫星图像分割算法,实现如下,
根据海面和陆地的差异将图像进行分割,选择海面图像作为备选区域,根据卫星图像的高分辨率部分图像颜色特征单一的特点,使用基于灰度直方图的分割算法,并对分割后的海洋部分图像边缘采用形态学方式进行扩展,将部分陆地信息和全部舰船信息分割进入海面部分,确保目标的完整性;按照扩展之后的边缘结果进行最终的图像分割,得到具有目标信息的分割结果。
而且,使用生成对抗网络增加训练样本,包括对经生成对抗网络生成的卫星图像进行目标位置随机变换,将分割边缘位置像素与海面随机位置像素进行变换,得到目标分布随机的卫星图像。
而且,卫星图像海上舰船识别模型中,舰船类别分为舰船和民用船两种。
而且,所述的经纬度匹配模型,以图像各个顶点的经纬度作为基准,计算出图像的经纬度参照距离,计算公式如下:
refx=refy×cos(reflaradian)
其中,polar_radii为南北极半径,equator_radii为赤道半径,reflat为参照点纬度,reflaradian为参照点纬度转化而成的弧度,refy是纬度参照距离,refx是经度参照距离;
再根据图片的实际像素大小地理位置距离和像素点距离确定换算的系数,利用计算出的换算系数和经纬度参照距离,确定像素距离对应的地理位置距离,根据地理位置距离计算出经纬度坐标,完成精准经纬度匹配。
本发明的优点在于:
1、数据来源为卫星图像本专利的海上舰船识别基于卫星图像检测,卫星图像覆盖范围广,可以进行空天地的实时监测,可以对特殊地域(比如海洋中央位置,不适合航拍)进行成像。与普通遥感图像相比,卫星图像有较大区别(本专利方法使用的是卫星图像的高分辨率部分图像进行操作,所以没有颜色信息),与传统的海上舰船遥感图像(航拍等)相比分辨率较低,目标图像尺度较小,因此创新提供了相应的处理技术手段。
2、数据集建立的创新基于卫星图像不容易获取,价格较高,舰船信息较少等原因,使用生成对抗网络来建立数据集,保证训练数据集的数据量来达到使模型效果更好的目标。
3、神经网络的优化基于卫星舰船识别模型,对选择的神经网络参数进行优化调整,最终确定优选的参数。
4、卫星图像分割技术根据卫星图像的特点(范围广、精度高、目标尺度小),将原始的卫星图像进行分割,采用自己建立的分割算法——基于目标选择的卫星图像分割算法,确保分割之后的图像不会出现目标分离、目标丢失、目标分辨率降低等问题不会出现。
5、卫星图像经纬度匹配技术在原始卫星图像分割技术基础上进行识别之后对经纬度需要重新标定并计算识别位置的经纬度情况,为达到目的,建立自己的经纬度匹配模型——基于基本的像素-经纬度映射关系,加入部分优化技术方案,建立一种新的数据存储方式,实现精准经纬度匹配。
附图说明
图1为本发明实施例的流程框图。
具体实施方式
以下结合附图和实施例详细说明技术方案。
本发明所提供方法对所有的卫星图像的舰船识别都是可行的,但是为了方便表达,实施例中以nwpu-resisc4的舰船数据集为例进行阐述。
根据对数据集舰船类型的统计与筛选,假设舰船类别分为舰船和民用舰两种。
实施例中,利用fasterr-cnn对卫星图像中的海上舰船进行识别,将舰船数据集制作成voc数据集格式,作为fasterr-cnn的输入,生成识别模型,利用训练好的识别模型对卫星图像中的舰船进行识别,包括以下几个步骤:
步骤1对获取的卫星图像进行分割,得到具有目标舰船信息的图像。
卫星图像检测,与普通遥感图像相比,卫星图像有较大区别(本方法使用的是卫星图像的高分辨率部分图像进行操作,所以没有颜色信息),与传统的海上图像舰船相比分辨率较低,目标图像尺度较小。直接获取的卫星图像高分辨率图像每张存储大小约1g-3g,其中舰船信息只占整个图像的1/100甚至更小,所以利用整幅图像进行训练和验证对于实验环境的要求太高,而且结果精度极低。所以根据卫星图像的特点(范围广、精度高、目标尺度小),将原始的卫星图像进行分割,采用建立的分割算法,基于目标选择的卫星图像分割算法。为了保证分割后的图像不会对结果产生影响,需要确保分割之后的图像不会出现目标分离、目标丢失、目标分辨率降低等问题。
采用基于区域和目标轮廓扩展的图像分割方法,可以根据图像的灰度、纹理、颜色和图像像素统计特征的均匀性等图像空间的局部特征,把图像中的像素划归到各个区域中,进而将图像分割成若干个不同区域。实施例中,考虑海上图像特点,优选执行包括以下几个步骤:
步骤1.1根据海面和陆地的差异将图像进行分割,选择海面图像作为备选区域,本发明进一步提出优选实现方式如下:卫星图像的高分辨率部分图像具有颜色特征单一的优点,根据此特点使用基于灰度直方图的分割算法,基于灰度直方图的分割算法和直方图分布特性紧密相关,当直方图呈现双峰或近似双峰特性时,能准确地选取阈值,因为海陆边缘处的舰船与陆地相似性比较大,所以对分割后的海洋部分图像边缘采用膨胀、腐蚀、开闭等形态学方法进行扩展,将部分陆地信息和全部舰船信息分割进入海面部分,具体实施时通过实验确定参数确保目标的完整性,而传统的海陆分割算法通常将舰船部分图像归纳进入陆地,造成舰船信息丢失;
步骤1.2按照步骤1.1扩展之后的边缘结果进行最终的图像分割,得到具有目标信息的分割结果。
通过以上步骤可以预先生成训练样本的数据集。后续使用的测试集、待检测图像也将按照同样的方式进行分割处理。
步骤2使用生成对抗网络对获得的图像进行数据集扩展,随机分布的数据集扩展方法。
本发明进一步提出扩展实现包括以下子步骤:
步骤2.1准备样本图像数据集,样本数据集由步骤1所得。
步骤2.2图像生成:设定一个固定维度的均匀分布z,经过生成模型后产生一个新的向量,作为resultimage,记作res(z);从准备好的样本图像数据集中随机选择一张图片,将图片转化成向量,作为realimage,记作rea;将res(z)或者rea作为判别网络的输入,经过判别网络后输入值为一个0到1之间的数,用于表示输入图片为realimage的概率,real为1,result为0。
步骤2.3对经生成对抗网络生成的卫星图像进行目标位置随机变换,根据步骤1中的图像分割技术,将分割边缘位置像素与海面随机位置像素进行变换,这样可以得到目标分布随机的卫星图像。这是本发明新提出的扩展方式。
步骤2.4具体实施时,还可以根据需求,进行筛选,输出符合数据集要求的卫星图像,舍弃多余图像。
步骤3整理数据集,对图片进行标注,将原始卫星图像海上舰船进行标记。
具体实施时,可以将原始卫星图像做成voc2007形式的数据集;
首先是图片的命名格式,虽然图片的命名理论上不会影响训练。因为训练的数据都是从txt文件中读取图片的名称。但是为了统一数据集,仍然建议批量、有规律的命名数据图片。
建议和pascal_voc2007一样使用jpg格式。
命名之后,就可以进行标注了。使用标注工具进行标注后,标注工具得到一份标注的集合的txt文件,记录图片和标注信息。
实施例中,步骤3实现如下,
步骤3.1数据规范。数据集中图片原本就采用“ship_”+序号的规律形式命名,图片也全部是jpg格式,因此不需要对图片格式和命名进行修改。
步骤3.2利用标注工具对图片进行标注。实施例中,利用标注工具将每张图像中舰船和民用舰标注出来,其中舰船用“jun”表示,民用舰用“min”表示,并标识出每个目标对象在图像上的像素位置。这些数据全部保存在和图像同名的.xml文件中。
步骤4根据fasterr-cnn算法建立卫星图像海上舰船训练数据集:
本步骤根据fasterr-cnn算法建立卫星图像海上舰船训练数据集,建立规定格式的训练数据集。
总体来看,voc格式的数据集格式如下:
---voc2007
------annotations
------imagesset
---------main
------jpegimages
annotations中存放的是.xml文件,文件中记录描述每张图片的信息。
imagessetmain中存放txt文件,每个文件中写入训练和测试所用的数据(也就是图片名称的集合)。
jpegimages中存放的是数据集中的图片。
建立数据集的过程如下,
首先是annotations中的xml文件,这些文件是根据标注信息得到的txt文件生成的。读入txt文件、遍历图片得到文件。jpegimages中只是存放图片,所以在生成annotations时,同时拷贝了每张图片到jpegimages中,也就完成了这两个文件夹的内容。
然后制作main中的四个txt文件。txt内容即是图片名字,所以遍历一遍annotations得到文件。test.txt是测试集,大概是整个数据集的50%;trainval是训练和验证数据集,也就是整个数据集的剩余的50%;train.txt是训练集,是trainval的50%;val.txt是验证集,trainval剩余的50%,这样就完成voc2007格式的数据集的制作。
实施例中,将数据集制作成voc数据集格式,实现如下,
步骤4.1建立voc数据集格式文件夹。
voc格式的数据集格式如下:
------voc2007
------annotations
------imagesset
------main
------jpegimages
按照格式建立voc20007文件夹,在voc2007文件夹中建立annotations,imagesset,jpegimages三个文件夹,在imagesset中建立main文件夹。按照voc数据集格式,将所有图像数据放入jpegimages文件夹中,将相应的.xml文件放入annotations文件夹中。
步骤4.2生成记录训练集,测试集等的4个txt文件,txt文件中的内容是各个集合中图像的名字。利用一段小程序,随机抽取50%的数据集图像作为测试集,将抽取到的图像名字保存在test.txt文件中,剩余的50%的图像作为训练和验证集,将剩余图像的名字保存在trainval.txt文件中;在训练和验证集中随机抽取50%的图像数据作为训练集,将抽取到的图像名字保存在train.txt文件中,训练和验证集剩余的图像作为验证集,图像名字保存在val.txt中。将test.txt,trainval.txt,train.txt,val.txt放入imagesset的main文件夹中。
步骤5将制作好的数据集作为fasterr-cnn的输入,训练出识别模型,利用模型对待识别图片进行识别。
所述的利用fasterr-cnn算法和训练数据集生成卫星图像海上舰船识别模型,实现对卫星图像中海上舰船的识别,使用步骤4根据fasterr-cnn算法建立的卫星图像海上舰船训练数据集,用fasterr-cnn算法进行训练卫星图像海上舰船识别模型,然后对卫星图像中海上舰船进行识别,包括以下几个步骤:
步骤5.1读取train.txt中内容,根据内容找到数据集中用于训练的图像,将这些图像输入算法,开始训练模型。
步骤5.2将整张图像输入cnn,进行特征提取,得到featuremap;
步骤5.3用rpn生成建议窗口(proposals),每张图片生成300个建议窗口;
rpn原理:算法在图片上生成一系列大小不同的矩形框,称作anchors。rpn利用softmax对anchors区域进行分类得到foreground和background(检测目标是foregrounnd);rpn对anchors进行boundingboxregression的偏移量计算,以获得精确的proposal。结合两种计算得到准确的建议窗口(proposals)。
步骤5.4把步骤3.3中计算出的建议窗口映射到cnn的最后一层卷积featuremap上;
步骤5.5通过roipooling层使每个roi生成固定尺寸的featuremap;
roipooling原理:在将proposal映射回featuremap的尺度后,roipooling将每个proposal水平方向和竖直方向都分成7份,对每一份都进行maxpooling处理,这样处理后,即使大小不同的propossal,输出的结果都是7*7大小的。
步骤5.6利用softmax对proposal进行分类,将分类结果和准确结果对比;利用softmaxloss(探测分类概率)和smoothl1loss(探测边框回归)对分类概率和边框回归(boundingboxregression)联合训练,得到训练模型;
步骤5.7训练结束后保存得到的模型。利用测试集测试训练好的模型,观测模型的识别精度是否达到目标。
实施例中,通过训练得到的优化参数为:卷积神经网络选择vgg16网络,训练迭代次数为20000轮,学习率为0.000075。
步骤6使用经纬度匹配模型确定目标经纬度信息。
由于地球是不规则的球体,两极鼓,赤道扁,不能简单作为一个球体来计算;其次每纬度在地理上的距离是一致的,但每经度在地理位置上的距离是不同的,因此不能直接转换。本发明需要在原始卫星图像分割技术基础上进行识别之后对经纬度需要重新标定并计算识别位置的经纬度情况,因此建立经纬度匹配模型,以图像各个顶点的经纬度作为基准,计算出图像的经纬度参照距离。具体计算公式如下:
refx=refy×cos(reflaradian)
其中:polar_radii为南北极半径,equator_radii为赤道半径,reflat为参照点纬度,reflaradian为参照点纬度转化而成的弧度。refy是纬度参照距离,refx是经度参照距离。
再根据图片的实际像素大小地理位置距离和像素点距离确定换算的系数。利用计算出的换算系数和经纬度参照距离算出像素距离对应点的地理位置距离,根据地理位置距离和经纬度参照距离计算出经纬度坐标,完成精准经纬度匹配。
步骤7根据上述的转化规则,将待检测图像按照步骤1中的方法进行分割,按照步骤6的规则建立经纬度匹配文件进行保存。
实施例中,建立一种新的数据存储方式,因为原始图像需要进行分割等操作,部分位置会出现像素缺失或者无经纬度等情况,所以图像存储的同时会保存一张和图像对应的像素-经纬度匹配文件。
步骤8利用训练好的模型对步骤7得到的图像进行识别,识别图像上是否存在舰船,民用舰等,如果存在,准确定位舰船在图像上的位置,得到相应的经纬度。
具体实施时,可以采用计算机软件技术实现自动运行流程。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。