作者:猥琐的爆米花 | 来源:互联网 | 2023-06-12 01:31
基于卷积神经网络的遥感图像养殖区自动划分摘要:卷积神经网络是目前计算机视觉领域广泛应用的模型。我们在传统卷积神经网络的基础上,替换了全连接层,借助高分辨率图像,对海水养殖区进行识别
基于卷积神经网络的遥感图像养殖区自动划分
摘要:卷积神经网络是目前计算机视觉领域广泛应用的模型。我们在传统卷积神经网络的基础上,替换了全连接层,借助高分辨率图像,对海水养殖区进行识别和标记,最终实现了模型对海水养殖区很好的识别,训练速度也较为理想。该研究减少了了人工识别养殖区的时间,节约人力物力,并且对海洋养殖区的分布布局具有重要意义。
关键字:高分辨率遥感图像;特征提取;全卷积神经网络;图像语义分割
随着科技发展,高分辨率图像分辨率越来越高,图像中所包含的信息更加丰富,如何准确高效处理利用这些信息愈来愈被人们关注。当今世纪,深度学习的迅速发展,成为人们处理这些信息的有力手段。
CNN网络是受自然视觉的启发机制而产生,由于其网络结构,使其在计算机视觉方面处理效果相当出色。卷积神经网络借助卷积核提取图片特征来进行训练,本文借助基于VGG19的全卷积神经网络,利用MATLAB将高分图像进行切割,得到多幅训练图片。训练完成后,全卷积神经网络会对测试图片中像素进行分类,实现图片的语义分割,这样,就能对一张图片的不同类别进行分类,从而达到目的。
1 原理与方法
1.1 VGG19+FCN网络结构
Vgg19模型也是一种CNN。VGG19网络层数非常深,卷积核大小为3x3,由卷积层、池化层、全连接层组成。VGG19模型结构图如下:
该卷积网络由5层卷积层,3层全连接层,softmax输出层组成,所有的隐藏层的**函数都采用relu**函数。卷积核使用的是3x3的小卷积核,不仅可以减少参数,而且方便提取更多的图片特征,增加了网络的拟合表达能力。与AlexNet网络相比,VGG模型没有采用AlexNet较大的卷积核尺寸(7x7),而是通过降低卷积核的大小,堆叠卷积子层来达到同样的性能。除此之外,VGG模型的通道数多,层数更深,后面对每层进行翻倍,最多达到了512个通道,有利于更多的特征被提取出来,VGG网络在每个全卷积层后加入了池化层,减小了特征向量提取后的宽和高,控制了计算量的增长规模。
FCN网络,如图二所示,对图像实现像素级别的分类,从而实现了语义级别的图像分割。与传统卷积神经网络在网络最后使用全连接层实现固定长度特征向量不同,FCN网络将最后的全连接层替换为卷积层,添加反卷积层对卷积层输出的heatmap(如图三所示)进行上采样,从而可以把抽象的特征图恢复出每个像素所属的类别,恢复到原来的图片大小,这就使得FCN网络可以接受任意大小的图片输入。
图二
图三
1.2 VGG网络特征提取
对于输入进卷积层的图片由我们设定好大小的卷积核在整幅图片上进行按照指定的步数进行滑动,在VGG模型中,我们将卷积核设定为3x3,如图四所示,
图四
将filter中的各个权重与其所对应的图片区域中的像素点乘,计算完之后,按照步长进行移动,进行下一轮的计算,当移动完整幅图片后,一个特征图也就提取出来了,
在filter移动过程中,我们通常会对图片进行padding操作,结果特征图的输出大小
有如下公式:
W2=(W1-F+2P)/S+1
H2=(H1-F+2P)/S+1
在上面两个公式中,W2是卷积后Feature Map的宽度;W1是卷积前图像的宽度;F是filter的宽度;P是Zero Padding数量,Zero Padding是指在原始图像周围补几圈0,如果P的值是1,那么就补1圈0;S是步幅;H2是卷积后Feature Map的高度;H1是卷积前图像的宽度。VGG在卷积层后,紧跟着的是池化层,池化层主要作用是下采样,通过去掉Feature Map上的不重要的样本,减少参数数量。VGG模型采用的方法是Max Pooling,实际上是在Feature Map上不同区域去最大值,作为采样后的样本。如图五所示:
图五
我们将提取到的特征没有经过通过全连接层,而是在卷积层后加入三个卷积层来代替原来三个全连接层。针对VGG里面第一个全连接层,由于与之相连的池化层输出是[2x2x512],所以我们只需将卷积核尺寸设置为2,步长设置为1,这样输出数据就会变成[1x1x4096],针对第二个全连接层,我们将卷积核尺寸设置1,步长设置为1,第三个全连接层类似,这样,我们最后得到输出[1x1x4096]的输出。
1.3 反卷积(Deconvolution)
在经过卷积层,最后的输出是heatmap(热图),热图是我们得到的最高维的特征图,接下来要做的是把热图进行反卷积,把图象放大到原图大小,最后的输出是一个分类好的图片。反卷积过程有时又被称为Fractional Strided Convolution,直译就是移动步长为小数的卷积。对于卷积过程如图六所示,卷积核在输入图像上移动。反卷积过程相当于在输入特征单元中插入s-1个0,s为步长,如图七所示
图六 图七
虽然这样,我们已经能够实现图片的语义分割,但是精确度不高,在实验中,根据文献[1]我们采用了Skip Architecture 。对于Heat Map,假如我们直接对其作三次次反卷积操作,我们得到的只是VGG19第五层卷积核中的特征,所以我们要继续向前迭代,由第四层卷积核对上一层得到的图进行反卷积,继续向前迭代,最后由第三层卷积核对图进行反卷积补充细节,最后完成了整幅图像的还原过程。
2. 基于VGG19 FCN养殖区分类实验
2.1 实验平台信息
1. 操作系统 Cenos +CUDA+Tensorflow-gpu
2. 实验设备:8个12G NVIDIA K80 GPU +2个Intel(R)Xeon CPU E5-2690 v4CPU
2.2数据集介绍
数据集准备主要由如下步骤:
1. 在高分图像中裁取合适范围的养殖区图像
2. 绘制该养殖区范围图像的矢量图
3. 根据养殖区图像矢量图制作真值图
4. 用MATLAB裁切养殖区遥感图像为32*32像素大小的图片,分别作为训练集和验证集;
5. 将真值图裁取为与训练集和验证集相同大小图片,作为样本照片
养殖区遥感图像
养殖区遥感图像矢量图
养殖区遥感图像
养殖区遥感图像真值图
养殖区:1
海水:0
2.3 训练模型(FCN全卷积网络)
2.3运行结果
迭代1000次输出结果 迭代20000次输出结果
精度:0.5338876 精度:0.97220755
迭代过程中损失变化曲线
3.结论
本文利用由VGG19模型为基础的FCN网络,针对高分辨率养殖区图像,运用神经网络提取图片特征进行像素级别分类,高指标的完成了养殖区的分类任务,对于有些比较模糊的养殖区图像,该模型也可以识别出,通过这种方法,大大减少了人工投入。但是由于样本真值图养殖区标记数据的准确性不足,导致模型训练识别时一些误差出现,并且对于不同大小的输入图片,识别结果会出现明显误差。以后工作可以寻找更加优化的网络结构来提高分类精度并且降低程序的运行时间。