1.本发明涉及卫星图像目标检测技术领域,尤其涉及一种基于深度学习的卫星图像目标检测方法。
背景技术:2.在目标检测领域,很多目标检测算法对原始图像的输入大小都是存在一定限制的,例如:faster r-cnn要求原始图像的输入大小是1000x 600pixel;ssd要求原始图像的输入大小是300x 300pixel或者512x 512pixel;yolo要求原始图片的输入大小是416x 416pixel或者544x 544pixel。卫星图像的目标检测和普通场景的目标检测最大的区别在于卫星图像尺寸很大,比如16000x 16000pixel,并且在图像中目标通常很小且容易聚集在一起。
3.标准的深度神经网络,如alexnet、resnet、vgg与googlenet,都是针对低分辨率图像进行图像分类与目标检测的框架,所以对于卫星图像这样的高分辨率图像进行目标检测并不适用。
4.在大尺寸图像中检测小物体是卫星图像目标检测领域感兴趣的主要点之一。早期的工作是利用本地滑动窗口和hog特征描述来确定目标的位置,但这种传统方法的缺点是不适用于不均匀背景的数据集,此时检测效果不理想。
5.在一些研究报告中,也有使用yolo框架完成卫星图像的目标检测,该框架使用单一卷积层预测目标类别和边界。这种方法结合获取背景信息的能力在卫星图像的目标检测中能起到一定效果,但是缺点也很显著。卷积本身不具有旋转不变性,而卫星图像中的物体不会因为物体发生旋转而改变属性,所以说需要训练一个具有旋转不变性的网络。当某类数据样本少时,可能会造成过拟合使得训练结果不理想。卫星图像往往图片尺寸很大,单靠下采样是不可行的。
6.因此,现有技术需要进一步改进和完善。
技术实现要素:7.本发明的目的在于克服现有技术的不足,提供一种基于深度学习的卫星图像目标检测方法。
8.本发明的目的通过下述技术方案实现:
9.一种基于深度学习的卫星图像目标检测方法,该方法主要包括如下具体步骤:
10.1)准备数据集,数据集中包含了开放水域的船、在港湾的船、飞机以及飞机场这四类目标的卫星图。
11.2)对训练数据集进行预处理,采用滑动窗口将训练数据集裁剪成指定尺寸大小。
12.3)扩充数据集,对输入的训练图像在色相和饱和度上进行旋转和缩放。
13.4)采用超分辨率技术来增强卫星图像。
14.5)由于飞机场图像少,并且飞机场与其他样本在尺度上存在较大差异,所以单独
针对飞机场训练了一个检测模型。
15.6)构造针对卫星图像目标检测的卷积神经网络模型,借鉴yolo框架,在yolo基础上降低下采样率以及减少网络层数来提高对小目标和密集目标的检测。
16.7)项目中使用到的网络模型在8层和16层卷积层间增添了直通层。
17.8)模型中设置扰动层,通过优化前一层与当前层的凸组合来扩展自身结构。
18.9)项目中使用到的网络模型结构除了18层卷积层的激活函数使用linear激活函数,结构中在18层前的所有卷积层,其激活函数都采用leakyrelu加上batch normalization(批量归一化处理)。
19.10)准备测试数据集。对测试数据的处理与训练数据的处理过程类似。
20.11)对结果后处理。目标检测过程中,重叠部分会被重复检测到两次,把非极大值抑制方法应用于边界框预测的全局矩阵,来减轻此类重叠检测。
21.12)将不同检测模型、不同划分区域的检测结果合并在一起,得到最终一张卫星图像的输出。
22.进一步的,步骤1)还包括:从收集的卫星图像中挑选出如下四类目标构成训练数据集:开放水域的船、在港湾的船、飞机以及飞机场。数据集的选择上需要满足如下几个条件:在数据集中需要包含尺度变化明显的图像;目标类别特点鲜明;希望能从检测结果中判断背景对于目标检测的影响。
23.进一步的,步骤2)还包括:因为数据集中图片分辨率太大,所以需要采用滑动窗口裁剪成指定尺寸后再作为模型的输入。裁剪后相邻小图会有15%的重叠,重叠比例是为了保证每个区域都能被完整检测到。
24.进一步的,步骤3)还包括:对输入的训练图像在色相和饱和度上进行旋转和缩放是一种增强数据的手段。
25.进一步的,步骤4)还包括:对于卫星图像,地面采样距离(gsd)是用来衡量图像质量的方法,表示了图像单个像素所表征的实际物理距离。可以通过降低卫星图像中的地面采样距离实现图像增强。
26.进一步的,步骤5)还包括:由于飞机场数据量相对于其他类图像存在严重不平衡;另一方面,飞机场相对于其他三类数据尺度更大,存在尺度量级上的差异,所以针对飞机场目标单独训练检测模型。训练不同的网络用来检测大小差异悬殊的物体,并且对于小物体的检测,可以将iou阈值调低以提升对小物体的检测效果。
27.进一步的,步骤6)还包括:项目中构建的网络结构是基于yolo改进而来,yolo结构包含卷积层和最大池化层。网络结构里27层和24层合并到一起输出到下一层,route层的作用是进行层的合并。
28.进一步的,步骤7)还包括:项目中使用到的网络模型在8层和16层卷积层间增添了直通层,这是为了将不同层的特征图进行融合,使得检测器可以在扩展的特征图上得到更加细粒度的特征。在yolo的模型结构中,也存在直通层即步骤6提及的route层,本质就是特征重排,直通层本身是不学习参数的,把模型中前面层的特征重排后拼接到后面的层,网络模型中越位于前面的层,感受野越小,越有利于小目标的检测,所以才需要把前面层的特征重排后拼接到后面的层。
29.进一步的,步骤8)还包括:在网络模型中引入适合图像增强任务的扰动层,旨在从
降质图像中复原出原始图像。这也是数据预处理的一环。
30.进一步的,步骤9)还包括:linear激活函数用于回归神经网络的输出,leakyrelu是relu的变体,leakyrelu保留了输入小于0时的梯度。
31.进一步的,步骤10)还包括:对于测试集,和训练数据集一样,需要一系列的预处理步骤。
32.进一步的,步骤11)还包括:目标检测过程中,重叠部分会被重复检测,所以会产生多个bounding box的预测值,采用非极大值抑制算法的意义在于只剔除iou高于阈值,即高度重叠的bounding box,而不会影响目标检测的结果。
33.进一步的,步骤12)还包括:该网络模型可以得到卫星图像上目标的位置信息,实现了通过多个传感器上相对较少的训练数据快速检测各种规模的物体。
34.本发明的工作过程和原理是:本发明提供一种基于深度学习的卫星图像目标检测方法,在卫星图像上进行目标检测,卫星图像中想要检测到的物体通常是十分小和密集的,卷积本身不具有旋转不变性,而卫星图像中的物体不会因为物体发生旋转而改变属性,则训练一个具有旋转不变性的网络,所以需要数据增强。在数据预处理的过程中使用到了多种数据增强的手段,对输入的训练图像在色相和饱和度上进行旋转和缩放以及超分辨率技术。在输出结果上也做了后处理工作,用非极大值抑制算法减轻重叠检测,将不同检测模型、不同划分区域的检测结果合并得到一张卫星图像的输出。本发明还具有逻辑清晰、处理效果好、容易实施的优点。
35.本发明的工作过程和原理是:
36.与现有技术相比,本发明还具有以下优点:
37.(1)本发明所提供的基于深度学习的卫星图像目标检测方法与传统技术相比,在传统方法中,当输入图片尺寸很大时,一般会采用下采样,但是有时单靠下采样是不可行的,极易造成数据丢失;传统方法在数据样本不足时,可能会造成模型过拟合使得训练结果不理想。本方法解决了上述问题,使用滑动窗口上采样寻找小物体,在多尺度数据集上运行探测器,通过滑动窗口分区、裁切原始数据不仅避免了输入数据尺寸过大,还能增加数据样本。
38.(2)本发明所提供的基于深度学习的卫星图像目标检测方法实现了不同尺度的模型融合以及针对特殊目标单独训练模型。将不同检测模型、不同划分区域的检测结果合并在一起,得到最终一张卫星图像的输出。之所以采取不同尺度的模型融合是因为卫星图像整体所包含的信息比裁剪得到的一系列小图像更有用。针对特殊目标单独训练模型是从数据出发,解决了实际场景中目标数据太少带来的问题。
39.(3)本发明所提供的基于深度学习的卫星图像目标检测方法是应用在卫星图像上具有高鲁棒性的目标检测方案,实现了通过多个传感器上相对较少的训练数据快速检测出各种规模的物体。
附图说明
40.图1是本发明所提供的基于深度学习的卫星图像目标检测方法的流程图。
41.图2是本发明所提供的网络模型的结构示意图。
42.图3是本发明所提供的网络模型中扰动层的结构示意图。
43.图4是本发明所提供的目标检测输出结果的示意图。
具体实施方式
44.为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明作进一步说明。
45.以下首先就本发明的技术术语进行解释与说明:
46.感受野:感受野表示输入空间中一个特定cnn特征的范围区域。一个特征的感受野可以采用区域的中心位置和特征大小进行描述。cnn中每层的feature map上的像素点在原始图像中映射的区域大小,相当于高层的特征图中的像素点受原图多大区域的影响。
47.上采样:上采样又称为放大图像或图像插值,主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。
48.下采样:即缩小图像,主要目的有两个:使得图像符合显示区域的大小以及生成对应图像的缩略图。
49.数据增强:图像增强的方式有很多,如裁剪、翻转、旋转、缩放、扭曲等几何变换,还有像素扰动、添加噪声、光照调节、对比度调节、样本加和或插值、分割补丁等,另外还有用强化学习做数据增强。数据增强可以提高模型性能,原因在于:增强的样本和原来的样本存在强相关性,数据增强扩充了数据集,并且可以带来某种正则化作用,因为模型会更集中地观测数据总的普遍模式,而消除了某些和普遍模式无关的数据,进而可以减小模型的结构风险。
50.地面采样距离:对于卫星图像而言,地面采样距离(gsd)是一种常见的衡量图像质量的方法,其表示图像中单个像素表示的实际物理距离。
51.超分辨率技术:可以通过降低(优化)卫星图像中的地面采样距离实现图像增强,通过合成图像中的子像素信息来提高图像分辨率。
52.非极大值抑制算法:非极大值抑制就是一个寻找局部最大值的过程。目标检测时采用窗口滑动,在图像上生成很多候选框,把候选框特征提取后送入分类器,对得分排序后,在每个局部区域选取得分最高的框,计算其他框与当前框的重合程度,得到iou值,如果该值大于一定阈值就删除对应的框。
53.实施例1:
54.如图1至图4所示,本实施例公开了一种基于深度学习的卫星图像目标检测方法,包括如下具体实施步骤:
55.1)准备数据集,数据集中包含了开放水域的船、在港湾的船、飞机以及飞机场这四类目标的卫星图。
56.2)对训练数据集进行预处理,分区通过滑动窗口进行,滑动窗口具有可定义的裁剪尺寸和重叠比例。采用滑动窗口将训练数据集裁剪成指定尺寸大小。
57.3)为了扩充数据集,对输入的训练图像在色相和饱和度上进行旋转和缩放。
58.4)采用超分辨率技术来增强卫星图像,通过合成图像中的子像素信息来提高图像分辨率。
59.5)因为训练数据集中飞机场类别的训练数据非常少,在项目中采用的解决办法
是:单独针对飞机场图像训练了一个检测模型,该解决方法不仅解决了飞机场图像少的问题,还解决了飞机场与其他类别在图像尺度上的差异,在处理测试图像时也是类似的做法。
60.6)构造针对卫星图像目标检测的卷积神经网络模型。该网络结构基于yolo改进而来,在yolo基础上降低下采样率以及减少网络层数来提高对小目标和密集目标的检测。
61.7)项目中使用到的网络模型在第8层和第16层卷积层间增添了直通层。
62.8)搭建网络模型时增添了扰动层,通过优化前一层与当前层的凸组合来扩展自身结构,每次仅扩展一层,并产生可训练参数。
63.9)项目中使用到的网络模型结构除了18层卷积层的激活函数使用linear激活函数,结构中在18层前的所有卷积层,其激活函数都采用leakyrule加上batch normalization(批量归一化处理)。
64.10)准备测试数据集。对测试数据的处理与训练数据的处理过程是类似的,也是从原图裁剪出多个小图再输入到网络。
65.11)对结果进行后处理。目标检测过程中,重叠部分会被重复检测到两次,所以会产生两个bounding box的预测值,把非极大值抑制方法应用于边界框预测的全局矩阵,来减轻此类重叠检测。
66.12)由于卫星图像整体所包含的信息比裁剪得到的一系列小图像更有用,最后将不同检测模型、不同划分区域的检测结果合并在一起,得到最终一张卫星图像的输出。
67.步骤1)从收集的卫星图像中挑选出如下四类目标构成训练数据集:开放水域的船、在港湾的船、飞机以及飞机场,之所以选择这四类目标,原因有如下几个方面,其一是在数据集中需要包含尺度变化明显的图像,比如飞机场和飞机这两类图像;其二是目标类别特点鲜明,这里选择了船和飞机;其三是考虑背景对于目标检测的影响,这里选择了开放水域的船、在港湾的船这两类数据。
68.步骤2)因为数据集中图片分辨率太大,所以需要采用滑动窗口裁剪成指定尺寸后再作为模型的输入。裁剪后相邻的小图会有15%的重叠,重叠比例是为了保证每个区域都能被完整检测到,虽然这带来了一些重复检测,但可以通过nms非极大抑制算法滤掉。通过这种操作,一张卫星图像会被裁剪出数百上千张指定尺寸的图像,进而间接扩充了数据集。
69.步骤3)对输入的训练图像在色相和饱和度上进行旋转和缩放是一种增强数据的手段。图像增强的方式有很多,除了上面使用到的在色相和饱和度上进行旋转和缩放,还有降噪等。
70.步骤4)对于卫星图像,地面采样距离(gsd)是用来衡量图像质量的方法,表示了图像单个像素所表征的实际物理距离。可以通过降低(优化)卫星图像中的地面采样距离实现图像增强,也就是通常所说的超分辨率技术。超分辨率技术通过合成图像中的子像素信息来提高图像分辨率。合成方法有图像相邻像素间插值、影像中相邻帧间插值、频域滤波。
71.步骤5)针对飞机场目标单独训练检测模型,这是因为一方面飞机场数据量相对于其他三类图像存在严重不平衡,类别不平衡会对训练效果产生不好的影响;另一方面,飞机场相对于其他三类数据尺度更大,存在尺度量级上的差异,如果用同一个检测模型去检测大小十分悬殊的不同目标,检测效果可能不理想。训练不同的网络用来检测大小差异悬殊的物体,并且对于小物体的检测,可以将iou阈值调低以提升对小物体的检测效果。
72.步骤6)项目中构建的网络结构是基于yolo改进而来,yolo网络结构中第23层以上
是darknet-19网络,后面是添加的检测网络。结构包含卷积层和最大池化层,其中包含了1x 1卷积层。网络结构里27层和24层合并到一起输出到下一层,route层的作用是进行层的合并。
73.步骤7)项目中使用到的网络模型在8层和16层卷积层间增添了直通层,这是为了将不同层的特征图进行融合,使得检测器可以在扩展的特征图上得到更加细粒度的特征。在yolo的模型结构中,也存在直通层即步骤6提及到的route层,本质就是特征重排,例如26x 26x 512的feature map分别按行和列隔点采样,可以得到4幅13x 13x 512的feature map,把这4张feature map按channel串联,得到13x 13x 2048的feature map。直通层本身是不学习参数的,把模型中前面层的特征重排后拼接到后面的层,网络模型中越位于前面的层,感受野越小,越有利于小目标的检测,所以才需要把前面层的特征重排后拼接到后面的层。
74.步骤8)对于航天行业中日益增多的低成本卫星图像,项目中使用到的卫星图像增强方法用于改善低质量传感器返回的图像。在网络模型中引入适合图像增强任务的扰动层,在神经网络中嵌入高分辨率图像的图像细节,并且在增强地理相似图像时提取这些图像细节,旨在从降质图像中复原出原始图像。这也是数据预处理的一环。扰动层包含两个卷积层,每个卷积层间还包含一个非线性relu层。扰动层中更多的卷积层提高了扰动层增强图像的能力。
75.步骤9)linear激活函数用于回归神经网络的输出,leakyrelu是relu的变体,relu对于所有负值输入都输出零,leakyrelu所有负值输入在输出时赋予一个非零斜率,可以用于隐层神经元的输出。relu缓解了梯度消失的问题,提供了神经网络的稀疏表达能力。随着训练进行,可能会出现神经元死亡,权重无法更新,如果是使用relu激活函数,那么这种神经元死亡是不可逆的。换用leakyrelu可以避免这种情况,因为leakyrelu保留了输入小于0时的梯度。
76.步骤10)对于测试集,和训练数据集一样,同样需要一系列的预处理步骤。
77.步骤11)目标检测过程中,重叠部分会被重复检测,所以会产生多个bounding box的预测值,同一个类别可能会检测出多个物体,每个物体又可能存在多个高度重叠的bounding box,如果只选择得分最高的bounding box,则一个类别只能检测出一个物体,采用非极大值抑制算法的意义在于只剔除iou高于阈值,即高度重叠的bounding box,而不会影响目标检测的结果。
78.步骤12)使用相同的评价标准评估测试图像,在相同区域上进行输出结果的对比与分析,该网络模型可以得到卫星图像上目标的位置信息,实现了通过多个传感器上相对较少的训练数据快速检测各种规模的物体。
79.本发明的工作过程和原理是:本发明提供一种基于深度学习的卫星图像目标检测方法,在卫星图像上进行目标检测,卫星图像中想要检测到的物体通常是十分小和密集的,卷积本身不具有旋转不变性,而卫星图像中的物体不会因为物体发生旋转而改变属性,则训练一个具有旋转不变性的网络,所以需要数据增强。在数据预处理的过程中使用到了多种数据增强的手段,对输入的训练图像在色相和饱和度上进行旋转和缩放以及超分辨率技术。在输出结果上也做了后处理工作,用非极大值抑制算法减轻重叠检测,将不同检测模型、不同划分区域的检测结果合并得到一张卫星图像的输出。本发明还具有逻辑清晰、处理
效果好、容易实施的优点。
80.上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。