1.一种基于深度学习的遥感影像水域自动提取方法,其特征在于:包括以下步骤:
S1:将某一遥感影像的光谱数据进行大气校正,并对校正后的数据进行重采样,得到遥感影像各波段数据;
S2:通过遥感影像处理软件的波段运算工具,对所述遥感影像各波段数据进行归一化处理,分别计算出归一化差异水体指数NDWI、改进的水体指数模型NDWI3、改进的归一化差异水体指数MNDWI、增强型水体指数EWI、新型水体指数NWI、归一化植被覆盖指数NDVI及湿地森林指数,并标识红、绿、蓝三个可见光波段,以及近红外NIR、中红外SWIR‑1和SWIR‑2波段,每个波段数据或上述指数数据输出为一张灰度图,由此得到12个灰度图;
S3:通过ArcGIS软件新建水域面矢量文件,加载所述12个灰度图,并根据遥感目视解译的方法矢量化出水域分布区域,最终输出12个处理后的灰度图,对处理后的灰度图进行二值化处理,得到遥感影像水域分布区域的一个标签文件;
S4:调用python内opencv‑python库函数读取所述12个处理后的灰度图和对应的标签文件,按步长m和图像尺寸n一一对应进行裁剪,使得裁剪后的图像尺寸为n*n*1,m和n均为大于0的正整数,分别保存在若干个文件夹下;
调用imgaug库函数对裁剪后的所有图像根据数据增强的方法一一进行变换和增广处理,得到扩展后的数据集;最后分别统计数据集中各个图像的像素均值和标准差,对数据进行标准化处理;然后对数据集中的所有图像进行归一化处理,将归一化后的所有图像进行划分,得到训练集、验证集和测试集;
S5:调用深度学习框架TensorFlow和Keras中的卷积层、池化层、上采样层、损失函数与激活函数,搭建基于深度学习的遥感影像水域分割模型,该遥感影像水域分割模型在训练样本时有13个输入,分别为12个灰度图和一个对应的标签文件;
所述遥感影像水域分割模型是通过以下的编码阶段、解码阶段、残差学习模块阶段、全局注意力模块阶段和边界学习单元阶段进行实现的:
在编码阶段,通过卷积和池化提取水域的特征信息;
在解码阶段,通过卷积和4次上采样还原图像大小,得到水域提取的结果;
在残差学习模块阶段,在卷积神经网络中设置一个快捷连接,以提高信息流通的速度和网路训练的效率,同时增加两个卷积层提高模型提取特征信息的能力;残差学习模块以编码阶段尺度大小为2w*2h*c的特征图为输入,特征图经过两个3*3*c*c的卷积核后的结果直接与原特征图按像元一一对应相加,之后通过softmax进行变换和激活,这个通路被称为快捷连接,最终得到的特征图与原特征图的尺度大小一致,均为2w*2h*c;
在全局注意力模块阶段,融合解码阶段的语义分割信息和编码阶段的位置信息,并通过全局平均池化加权的方式压缩并增强特征提取信息;全局注意力模块以编码阶段尺度为
2w*2h*c和解码阶段尺度为w*h*2c的特征图为输入,先将解码阶段的特征图经过全局平均池化后得到特征信息,再以特征信息为权值为编码阶段的特征图进行加权得到新的特征图,再使得解码阶段的特征图上采样后尺度变为2w*2h*2c,最后将上采样后得到的特征图与加权后的特征图按通道进行拼接得到融合后的特征图,该特征图的尺度为2w*2h*3c;
在边界学习单元阶段,通过不同尺度的卷积层和快捷连接shortcut组成残差学习模块,并在支路上添加一个卷积核,消除因为特征图在上采样和融合不同尺度特征图的过程中产生的混叠效应,并学习不同尺度的遥感影像特征信息;边界学习单元以全局注意力模块阶段输出的特征图为输入,特征图要经过三个不同支路进行信息流通,第一个支路是一个快捷连接,不做数据变换,第二个支路经过c个大小为3*3*3c的卷积后将特征图的尺度大小由2w*2h*3c变为2w*2h*c,第三个支路经过c个大小为3*3*3c的卷积后将特征图的尺度大小由2w*2h*3c变为2w*2h*c后再经过c个尺度大小为3*3*c的卷积,将三个支路的特征图按像元进行相加,最后得到已消除混叠的特征图;
其中,上述w、h、c分别代表特征图的宽、高和通道数;
S6:根据显卡的计算性能和模型参数量,设置训练批量batch size和学习率参数learning,调用train函数利用所述训练集对所述遥感影像水域分割模型进行迭代训练,并利用验证集和测试集对每一轮训练后的遥感影像水域分割模型进行验证及测试;当遥感影像水域分割模型已经收敛时,得到并保存训练好后的遥感影像水域分割模型;
S7:在训练好后的遥感影像水域分割模型的输出分割结果之后,通过导向滤波GF和条件随机场模型CRF对该分割结果进行细调处理;其中,导向滤波GF将标签文件视为导向图,以原始图像为输入图像,优化水域提取结果的边界,以消除椒盐噪声;条件随机场模型CRF中的二元势函数对任意两个像素点间的颜色和位置进行约束,使得相近颜色和相邻位置的像素点更容易拥有相同的分类,同时根据相邻像素点之间的平滑度,对边缘进行平滑;
S8:以本机为服务器通过flask框架发布REST服务;客户端通过base64编码工具将遥感影像转成的base64格式字符,通过post请求将字符传递给本机服务器;本机服务器响应post请求,解码出实际的遥感影像,对该实际的遥感影像调用训练好后的遥感影像水域分割模型和后处理算法导向滤波GF和条件随机场模型CRF,实现水域的自动提取,并将提取结果通过base64编码返回至客户端。
2.如权利要求1所述的一种基于深度学习的遥感影像水域自动提取方法,其特征在于:
步骤S4中,12个灰度图及该12个灰度图对应的标签文件的尺寸均为n*n*1。
3.如权利要求1所述的一种基于深度学习的遥感影像水域自动提取方法,其特征在于:
编码阶段以12个灰度图为输入数据,通过卷积融合输入数据得到特征图,特征图每经过一个池化层就是一个尺度,包括原图尺度一共有5个尺度,即256*256*32、128*128*64、64*64*
128、32*32*256和16*16*512;经过池化层后,特征图的尺寸减半且通道数加倍,再经过两个卷积神经网络提取图像的水域特征信息。
4.如权利要求2所述的一种基于深度学习的遥感影像水域自动提取方法,其特征在于:
n=256时,解码阶段的特征图每采样一次,就和编码阶段对应的尺寸相同的特征图经过全局注意力模块进行融合,再通过边界学习单元整合和提取特征图中水域部分的边界纹理信息;最终输出尺寸为256*256*1的二值灰度图,若二值化灰度图的取值为1则代表水域部分,为0则代表非水域部分。
5.一种基于深度学习的遥感影像水域自动提取系统,其特征在于:包括以下模块:
数据预处理模块,用于某一遥感影像的光谱数据进行大气校正,并对校正后的数据进行重采样,以得到遥感影像各波段数据;
信息提取模块,用于通过遥感影像处理软件的波段运算工具,对所述遥感影像各波段数据进行归一化处理,分别计算出归一化差异水体指数NDWI、改进的水体指数模型NDWI3、改进的归一化差异水体指数MNDWI、增强型水体指数EWI、新型水体指数NWI、归一化植被覆盖指数NDVI及湿地森林指数,并标识红、绿、蓝三个可见光波段,以及近红外NIR、中红外SWIR‑1和SWIR‑2波段,每个波段数据或上述指数数据输出为一张灰度图,由此得到12个灰度图;
标签文件制作模块,用于通过ArcGIS软件新建水域面矢量文件water.shp,加载所述12个灰度图,并根据遥感目视解译的方法矢量化出水域分布区域,最终输出灰度图water.png,将灰度图water.png二值化,二值化后的water.png文件即为制作好的遥感影像水域分布区域的标签文件;
数据集生成模块,用于调用python内opencv‑python的库函数读取所述的12个灰度图和所述标签文件,并按步长为128、图像尺寸为256且一一对应进行裁剪,使得裁剪后的图片尺寸为256*256*1,分别保存在13个文件夹下;调用imgaug库函数对裁剪后的图像根据数据增强的方法一一对应进行变换和增广,以扩展数据集;最后统计所有数据的像素均值和标准差,对数据进行标准化;然后将归一化处理后多张图片进行划分,得到训练集、验证集和测试集;
分类模型建立模块,用于调用深度学习框架TensorFlow和Keras中的卷积层、池化层、上采样层、损失函数与激活函数,从而搭建基于深度学习的遥感影像水域分割模型WE‑Net,其中分割模型在训练样本时有13个输入,分别为12个灰度图和一个对应的标签文件;分割模型WE‑Net通过如下编码步骤、解码步骤、残差学习模块、全局注意力模块步骤和边界学习单元步骤实现;
编码模块:用于在编码阶段,通过卷积和池化提取水域的特征信息;编码阶段以12个灰度图为输入数据,通过卷积融合输入数据得到特征图,特征图每经过一个池化层就是一个尺度,包括原图尺度一共有5个尺度,即256*256*32、128*128*64、64*64*128、32*32*256和
16*16*512;经过池化层后,特征图的尺寸大小减半且通道数加倍,再经过两个卷积神经网络提取图像的水域特征信息;
解码模块:用于在解码阶段,通过卷积和4次上采样还原图像大小,得到水域提取的结果;解码阶段的特征图每上采样一次,就和编码阶段对应的尺寸大小相同的特征图经过全局注意力模块进行融合,再通过边界学习单元整合和提取特征图中水域部分的边界纹理信息;最终输出尺度大小为256*256*1的二值灰度图,若灰度图的取值为1则代表水域部分,为
0则代表非水域部分;
残差学习模块:用于在残差学习模块阶段,为卷积神经网络设置一个快捷连接,提高信息流通的速度和网路训练的效率,同时增加两个卷积层提高模型提取特征信息的能力;残差学习模块以编码阶段尺度为2w*2h*c的特征图为输入,特征图经过c个3*3*c的卷积核做两次卷积的结果直接与原特征图按像元一一对应相加,之后通过softmax进行变换和激活,这个通路被称为快捷连接,最终得到的特征图与原特征图的尺度一致,均为2w*2h*c;
全局注意力模块:用于在全局注意力模块阶段,融合解码阶段的语义分割信息和编码阶段的位置信息,并通过全局平均池化加权的方式压缩并增强特征提取信息;全局注意力模块以编码阶段尺度为2w*2h*c和解码阶段尺度为w*h*2c的特征图为输入,先将解码阶段的特征图经过全局平均池化后得到特征信息,再以特征信息为权值为编码阶段的特征图进行加权得到新的特征图,再使得解码阶段的特征图上采样后尺度变为2w*2h*2c,最后将上采样后得到的特征图与加权后的特征图按通道进行拼接得到融合后的特征图,该特征图的尺度为2w*2h*3c;
边界学习模块:用于在边界学习单元阶段,通过不同尺度的卷积层和快捷连接shortcut组成残差学习模块,并在支路上添加一个卷积核,消除因为特征图在上采样和融合不同尺度特征图的过程中产生的混叠效应,并学习不同尺度的遥感影像特征信息;边界学习单元以全局注意力模块阶段输出的特征图为输入,特征图要经过三个不同支路进行信息流通,第一个支路是一个快捷连接,不做数据变换,第二个支路经过c个大小为3*3*3c的卷积后将特征图的尺度大小由2w*2h*3c变为2w*2h*c,第三个支路经过c个大小为3*3*3c的卷积后将特征图的尺度大小由2w*2h*3c变为2w*2h*c后再经过c个尺度大小为3*3*c的卷积,将三个支路的特征图按像元进行相加,最后得到已消除混叠的特征图;
模型训练模块,用于根据显卡的计算性能和模型参数量,设置训练批量batch size和学习率参数learning,调用train函数利用所述训练集对遥感影像水域分割模型WE‑Net进行迭代训练,并利用验证集对每一轮训练后的遥感影像水域分割模型WE‑Net进行验证;以训练轮数为横轴,以IOU值为纵轴对训练过程进行可视化,经过几十轮的训练之后,IOU先上升然后无限逼近某个IOU值,则遥感影像水域分割模型WE‑Net已经收敛,保存遥感影像水域分割模型WE‑Net参数,停止训练;最后,通过test函数调用保存的遥感影像水域分割模型WE‑Net,在测试集上计算的IOU值,评价遥感影像水域分割模型WE‑Net的精度;
模型细调模块,用于在训练好后的遥感影像水域分割模型输出水域自动提取的结果之后,再通过导向滤波GF和条件随机场模型CRF对结果做后处理;导向滤波将标签文件视为导向图,以原始图像为输入图像,优化水域提取结果的边界,以消除椒盐噪声;条件随机场中的二元势函数对任意两个像素点间的颜色和位置进行约束,使得相近颜色和相邻位置的像素点更容易拥有相同的分类,同时考虑相邻像素点之间的平滑度,对边缘进行平滑,从而对语义分割结果进行细调;
模型应用模块,用于在训练并测试遥感影像水域分割模型WE‑Net,满足预设精度之后,保存权值参数,得到并保存网络模型WE‑Net.h5,以本机为服务器通过flask框架发布REST服务;客户端通过base64编码工具将遥感影像转成的base64格式字符,通过post请求将字符传递给本机服务器;服务器响应post请求,解码出遥感影像,调用遥感影像水域分割模型WE‑Net和后处理算法导向滤波GF和条件随机场CRF,实现水域自动提取,再将提取结果通过base64编码返回至客户端。