热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于卷积神经网络的遥感图像养殖区自动划分

基于卷积神经网络的遥感图像养殖区自动划分摘要:卷积神经网络是目前计算机视觉领域广泛应用的模型。我们在传统卷积神经网络的基础上,替换了全连接层,借助高分辨率图像,对海水养殖区进行识别

基于卷积神经网络的遥感图像养殖区自动划分

摘要:卷积神经网络是目前计算机视觉领域广泛应用的模型。我们在传统卷积神经网络的基础上,替换了全连接层,借助高分辨率图像,对海水养殖区进行识别和标记,最终实现了模型对海水养殖区很好的识别,训练速度也较为理想。该研究减少了了人工识别养殖区的时间,节约人力物力,并且对海洋养殖区的分布布局具有重要意义。

关键字:高分辨率遥感图像;特征提取;全卷积神经网络;图像语义分割

随着科技发展,高分辨率图像分辨率越来越高,图像中所包含的信息更加丰富,如何准确高效处理利用这些信息愈来愈被人们关注。当今世纪,深度学习的迅速发展,成为人们处理这些信息的有力手段。

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网络,针对高分辨率养殖区图像,运用神经网络提取图片特征进行像素级别分类,高指标的完成了养殖区的分类任务,对于有些比较模糊的养殖区图像,该模型也可以识别出,通过这种方法,大大减少了人工投入。但是由于样本真值图养殖区标记数据的准确性不足,导致模型训练识别时一些误差出现,并且对于不同大小的输入图片,识别结果会出现明显误差。以后工作可以寻找更加优化的网络结构来提高分类精度并且降低程序的运行时间。


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 用c语言实现线画、填充图元生成算法多边形_【游戏场景剔除】剔除算法综述...
    之前在做场景优化的过程中,看了不少论文和博客阐述不同剔除算法的原理和过程,自己参照着算法去实现了Hiz和软件剔除。一直想写一篇关于剔除算法的综述 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 1.RoIPoolingRoIPooling顾名思义对Roi进行Pooling操作,主要用于目标检测任务。RoI(Regionofinterest&# ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • Python 可视化 | Seaborn5 分钟入门 (六)——heatmap 热力图
    微信公众号:「Python读财」如有问题或建议,请公众号留言Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seabo ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • csv转为矩阵 python_Python可视化 | Seaborn5分钟入门(六)——heatmap热力图
    Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API ... [详细]
author-avatar
猥琐的爆米花
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有