深度学习与ArcGIS概述(1)_arcgis深度学习-程序员宅基地

技术标签: GIS  深度学习  

课程整体概况:arcgis10.8深度学习介绍课程梳理

1、深度学习与ArcGIS基础概念介绍

在这里插入图片描述
在这里插入图片描述
三者的区别和联系:

机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。
深度学习,作为目前最热的机器学习方法,但并不意味着是机器学习的终点。起码目前存在以下问题:
深度学习模型需要大量的训练数据,才能展现出神奇的效果,但现实生活中往往会遇到小样本问题,此时深度学习方法无法入手,传统的机器学习方法就可以处理;深度学习在计算机视觉、自然语言处理领域的应用远超过传统的机器学习方法,这就是深度学习火得发红发紫的原因。
有些领域,采用传统的简单的机器学习方法,可以很好地解决了,没必要非得用复杂的深度学习方法;
深度学习的思想,来源于人脑的启发,但绝不是人脑的模拟,举个例子,给一个三四岁的小孩看一辆自行车之后,再见到哪怕外观完全不同的自行车,小孩也十有八九能做出那是一辆自行车的判断,也就是说,人类的学习过程往往不需要大规模的训练数据,而现在的深度学习方法显然不是对人脑的模拟。

神经网络的发展分为了三个不同的阶段:
最早的神经网络的思想起源于1943年的MCP人工神经元模型,当时是希望能够用计算机来模拟人的神经元反应的过程,该模型将神经元简化为了三个过程:输入信号线性加权,求和,非线性激活(阈值法)

现代DL大牛Hinton在1986年发明了适用于多层感知器(MLP)的BP算法,并采用Sigmoid进行非线性映射,有效解决了非线性分类和学习的问题。
也是在1989年,LeCun发明了卷积神经网络-LeNet,并将其用于数字识别,且取得了较好的成绩,不过当时并没有引起足够的注意。

爆发期(2012~至今)2012年,Hinton课题组为了证明深度学习的潜力,首次参加ImageNet图像识别比赛,其通过构建的CNN网络Al。

AlexNet一举夺得冠军,且碾压第二名(SVM方法)的分类性能。也正是由于该比赛,CNN吸引到了众多研究者的注意
在这里插入图片描述
图像分类:给定一张输入图像,图像分类任务旨在判断该图像所属类别
目前较为流行的图像分类架构是卷积神经网络(CNN)——将图像送入网络,然后网络对图像数据进行分类。卷积神经网络从输入“扫描仪”开始,该输入“扫描仪”也不会一次性解析所有的训练数据。比如输入一个大小为 100*100 的图像,你也不需要一个有 10,000 个节点的网络层。相反,你只需要创建一个大小为 10 10 的扫描输入层,扫描图像的前 1010 个像素。然后,扫描仪向右移动一个像素,再扫描下一个 10 *10 的像素,这就是滑动窗口。

在这里插入图片描述
AlexNet的创新点: (1)首次采用ReLU激活函数,极大增大收敛速度且从根本上解决了梯度消失问题;(2)由于ReLU方法可以很好抑制梯度消失问题,AlexNet抛弃了“预训练+微调”的方法,完全采用有监督训练。也正因为如此,DL的主流学习方法也因此变为了纯粹的有监督学习;(3)扩展了LeNet5结构,添加Dropout层减小过拟合,LRN层增强泛化能力/减小过拟合;(4)首次采用GPU对计算进行加速;2013,2014,2015年,通过ImageNet图像识别比赛,DL的网络结构,训练方法,GPU硬件的不断进步,促使其在其他领域也在不断的征服战场
MNIST 将初学者领进了深度学习领域,而 ImageNet 数据集对深度学习的浪潮起了巨大的推动作用。深度学习领域大牛 Hinton 在2012年发表的论文《ImageNet Classification with Deep Convolutional Neural Networks》在计算机视觉领域带来了一场“革命”,此论文的工作正是基于 ImageNet 数据集。
ImageNet 数据集有1400多万幅图片,涵盖2万多个类别;其中有超过百万的图片有明确的类别标注和图像中物体位置的标注,

目标定位:在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式。
对象识别:在目标定位中,通常只有一个或固定数目的目标,而目标检测更一般化,其图像中出现的目标种类和数目都不定。因此,目标检测是比目标定位更具挑战性的任务。
(2) 基于候选区域的目标检测算法
使用不同大小的窗口在图像上滑动,在每个区域,对窗口内的区域进行目标定位。两步:第一步是从图像中提取深度特征,第二步是对每个候选区域进行定位(包括分类和回归)。其中,第一步是图像级别计算,一张图像只需要前馈该部分网络一次,而第二步是区域级别计算,每个候选区域都分别需要前馈该部分网络一次。
(3) 基于直接回归的目标检测算法
基于候选区域的方法由于有两步操作,虽然检测性能比较好,但速度上离实时仍有一些差距。基于直接回归的方法不需要候选区域,直接输出分类/回归结果。这类方法由于图像只需前馈网络一次,速度通常更快,可以达到实时。

在这里插入图片描述
目前的分割任务主要有两种: 语义分割实例分割。那语义分割和实例分割具体都是什么含义呢?二者又有什么区别和联系呢?语义分割是对图像中的每个像素都划分出对应的类别,即实现像素级别的分类; 而类的具体对象,即为实例,那么实例分割不但要进行像素级别的分类,还需在具体的类别基础上区别开不同的实例。
在这里插入图片描述
语义分割的任务描述:
搞清楚语义分割的输入输出都是什么。我们输入当然是一张原始的RGB图像或者单通道的灰度图,但是输出不再是简单的分类类别或者目标定位,而是带有各个像素类别标签的与输入同分辨率的分割图像。简单来说,我们的输入输出都是图像,而且是同样大小的图像。

在这里插入图片描述
从输入到输出语义标签(from https://www.jeremyjordan.me/semantic-segmentation)
类似于处理分类标签数据,对预测分类目标采用像素上的 one-hot 编码,即为每个分类类别创建一个输出的 channel 。如下图所示:
在这里插入图片描述
下图是将分割图添加到原始图像上的效果验证。这里有个概念需要明确一下——mask,在图像处理中我们将其译为掩膜,如 mask-rcnn 中的 mask。mask 可以理解为我们将预测结果叠加到单个 channel 时得到的该分类所在区域。
在这里插入图片描述
由于语义分割需要输入输出都是图像,所以与之前经典的图像分类和目标检测网络在分割任务上就不大适用了。在此前的经典网络中,经过多层卷积和池化之后输出的特征图尺寸会逐渐变小,所以对于语义分割任务我们需要将逐渐变小的特征图给还原到输入图像的大小。
网络结构与编码解码:为了实现上述目标,现有的语义分割等图像分割模型的一种通用做法就是采用编码和解码的网络结构,此前的多层卷积和池化的过程可以视作是图像编码的过程,也即不断的下采样的过程。那解码的过程就很好理解了,可以将解码理解为编码的逆运算,对编码的输出特征图进行不断的上采样逐渐得到一个与原始输入大小一致的全分辨率的分割图。
在这里插入图片描述
编码的过程就是卷积和池化的过程。
实例分割(Instance Segmentation)
相较于语义分割,实例分割不仅要做出像素级别的分类,还要在此基础上将同一类别不同个体分出来,即做到每个实例的分割。这对分割算法提出了更高的要求。好在我们此前积累足够的目标检测算法基础。实例分割的基本思路就是在语义分割的基础上加上目标检测,先用目标检测算法将图像中的实例进行定位,再用语义分割方法对不同定位框中的目标物体进行标记,从而达到实例分割的目的。
在这里插入图片描述
以 mask R-CNN 为例
Mask R-CNN 将 Fast R-CNN 的 ROI Pooling 层升级成了 ROI Align 层,并且在边界框识别的基础上添加了分支FCN层,即mask层,用于语义 Mask 识别,通过 RPN 网络生成目标候选框,然后对每个目标候选框分类判断和边框回归,同时利用全卷积网络对每个目标候选框预测分割。Mask R-CNN 本质上一个实例分割算法(Instance Segmentation),相较于语义分割(Semantic Segmentation),实例分割对同类物体有着更为精细的分割。
在这里插入图片描述
mask R-CNN 开源实现参考:https://github.com/matterport/Mask_RCNN

在这里插入图片描述
在这里插入图片描述
TensorFlow:2015年11月谷歌(Google)出品,基于Python和C++编写。GitHub上最热,谷歌搜索最多,使用人数最多;如果你最终想找一份深度学习的工作,最好学习下TensorFlow
Keras:2015年3月首次发布,拥有“为人类而不是机器设计的API”,得到Google的支持。它是一个用于快速构建深度学习原型的高层神经网络库,由纯Python编写而成,以TensorFlow,CNTK,Theano和MXNet为底层引擎,提供简单易用的API接口,能够极大地减少一般应用下用户的工作量。如果你是深度学习的初学者,想要快速入门,建议从Keras开始。
PyTorch:PyTorch于2016年10月发布,是一款专注于直接处理数组表达式的低级API。 前身是 Torch(一个基于 Lua 语言的深度学习库)。Facebook 人工智能研究院对PyTorch提供了强力支持。 PyTorch 支持动态计算图,为更具数学倾向的用户提供了更低层次的方法和更多的灵活性,目前许多新发表的论文都采用PyTorch作为论文实现的工具,成为学术研究的首选解决方案。如果你是一名科研工作者,倾向于理解你的模型真正在做什么,那么就考虑选择PyTorch。
Caffe/Caffe2.0:
Caffe的全称是Convolutional Architecture for Fast Feature Embedding,它是一个清晰、高效的深度学习框架,于2013年底由加州大学伯克利分校开发,核心语言是C++。它支持命令行、Python和MATLAB接口。Caffe的一个重要特色是可以在不编写代码的情况下训练和部署模型。
如果您是C++熟练使用者,并对CUDA计算游刃有余,你可以考虑选择Caffe

2、ArcGIS使用的深度学习框架

数十年来,机器学习工具一直是 GIS 空间分析的核心组件。您已经能够在 ArcGIS 中使用机器学习来执行图像分类、通过聚类来丰富数据或对空间关系进行建模。机器学习是人工智能的一个分支,将在机器学习中使用算法来处理结构化数据以解决问题。传统结构化数据需要用户标记数据,例如猫和狗的图片,以便能够在算法中理解每种动物类型的特定要素,然后在其他图片中识别这些动物。

深度学习是机器学习的子集,它以神经网络的形式使用多层算法。通过不同的网络层来分析输入数据,每一层都定义数据中的特定要素和模式。例如,如果您希望识别诸如建筑物和道路等要素,则将使用不同建筑物和道路的图像来训练深度学习模型,通过神经网络内的层来处理图像,然后找到对建筑物或道路进行分类所需的标识符。

Esri 开发了工具和工作流,以利用深度学习中的最新创新来回答 GIS 和遥感应用程序中的一些难题。计算机视觉或者计算机从数字图像或视频中获取理解的能力这一领域已经从传统机器学习算法转变为深度学习方法。在 ArcGIS Pro 中将深度学习应用于影像之前,了解深度学习在计算机视觉中的不同应用非常重要。

在这里插入图片描述

3、ArcGIS深度学习处理流程和优势

ArcGIS Pro 允许使用统计或机器学习分类方法对遥感影像进行分类。深度学习是一种机器学习,依赖于多图层的非线性处理以便进行模型中描述的要素识别和图案识别。深度学习模型可以与 ArcGIS Pro 集成,用于对象检测、对象分类和影像分类。

使用分类和深度学习工具在 ArcGIS Pro 中生成感兴趣要素或对象的训练样本。这些训练样本用于通过地理处理工具来训练深度学习模型,生成的模型定义文件或深度学习模型包 (DLPK) 用于运行推断地理处理工具以提取特定对象位置、对对象进行分类或标注,或对影像中的像素进行分类。也可以在 ArcGIS Pro 外部使用外部第三方框架训练模型,然后使用模型定义文件运行推断地理处理工具。模型定义文件和 DLPK 可以多次用作地理处理工具的输入,从而可以在训练模型后可轻松评估不同位置和时间段的多个影像。
在这里插入图片描述
深度学习步骤 1
使用标注对象以供深度学习窗格创建训练样本,然后使用导出训练数据进行深度学习工具将样本转换为深度学习训练数据。

深度学习步骤 2

使用 训练深度学习模型工具通过 PyTorch 训练模型,或在 ArcGIS Pro 外部使用支持的第三方 深度学习框架训练模型。

深度学习步骤 3

使用训练模型运行使用深度学习检测对象工具、使用深度学习分类像素工具或使用深度学习分类对象以生成输出。

处理流程梳理
在这里插入图片描述
ArcGIS 深度学习提供了一个完整的空间数据科学平台、强大的空间分析处理能力,包含了大量的工具箱,涉及到地理空间分析的方方面面,用新的方式来处理新的GIS问题。面向数据科学家、数据分析师等角色主要用来满足基于空间数据进行数据处理、建模、挖掘与分析、ArcGIS平台管理和运维等方面的工作。同时ArcGIS提供集成化的环境,结合ArcGIS平台海量的地理数据资源,让用户随心所欲进行数据建模、数据分析、数据挖掘等工作流,其强大的集成化环境,为数据科学领域用户提供强有力的技术支撑。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40625478/article/details/104964357

智能推荐

java获取cpu、内存、硬盘信息_如何用java调用电脑的cpu属性-程序员宅基地

文章浏览阅读4.9k次。摘要java获取cpu、内存、硬盘信息1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息。 下载地址:http://sourceforge.net/projects/sigar/files/latest/download?source=files 解压压缩包,将lib下si_如何用java调用电脑的cpu属性

kmeans中的k的含义_《K-means》知识点与思考-程序员宅基地

文章浏览阅读1.4k次。一、K-means概述K-means方法是非监督学习(Unsupervised learning)中的一种,非监督学习仍然需要数据,但是这些数据无需标签。K-means是一种常见的聚类算法,所谓聚类,即把相似的物体聚集在一起,用于发现数据的规律或模式。聚类可以用于用户分群、图像分割等方面。K-means中的K代表将数据集分为K个类。二、K-means算法K-means的中心思想与监督学习中的kNN..._k-means k是什么

sysbench基准测试(2)——oltp.lua测试-程序员宅基地

文章浏览阅读298次。前面知道sysbench基准测试的主要步骤为:prepare(准备数据集)→ run(运行测试)→ cleanup(清除数据集)这一节介绍oltp.lua测试。oltp基准测试模拟了一个简单的事物处理系统的工作负载。①、准备数据集(使用test数据库,用户名root,密码123456,表数目8,每张表记录10万,测试oltp.lua):[root@loc..._sysbench oltp.lua

小米发布会:雷军成长故事与创新壮举,AI大模型技术引领未来,雷军探索之路之从创业波折到小米AI领航,成就高端化传奇!_雷军小米创新之路-程序员宅基地

文章浏览阅读541次,点赞4次,收藏2次。小米发布会展现了雷军的成长历程和小米的创新之路。从大学时代的努力到创业的失败,再到小米的高端化探索,雷军不断克服挑战,坚持创新。通过与团队的沟通和坚持高端化品牌战略,小米终于找到了自己的定位。同时,小米对大模型AI技术的探索也显示出其在技术领域的前瞻性。无论是产品创新还是技术探索,小米都在不断成长,展现出强大的发展潜力。_雷军小米创新之路

Java集成ElasticSearch_java集成es-程序员宅基地

文章浏览阅读925次。Java集成ElasticSearch,包含:ES客户端依赖的引入,创建客户端,ES索引管理,ES管道管理,ES新增、修改、删除、查询数据。_java集成es

Win10无线投屏功能安装失败解决办法_笔记本电脑无线投屏下载失败怎么办-程序员宅基地

文章浏览阅读4.7k次。搜索无线投屏安装即可大多数可能是关闭了win10的更新功能必须要开启win10的更新功能才能够下载对应的组件然后输入找到开启再次下载即可如果还不行的话可以换网络(手机热点)、重启等。_笔记本电脑无线投屏下载失败怎么办

随便推点

百度地图的基本使用_百度地图用途-程序员宅基地

文章浏览阅读222次。前言随着移动互联网的急速发展,对位置服务的需求越来越强烈,如美团、滴滴、共享单车等等一系列的互联网应用都是基于位置提供服务的。国内两大地图提供商百度地图、高德地图不仅仅在导航等应用提供基础的服务,还对外提供一些开放的位置服务的API,开发者可以利用这些第三方的API快速构建自己的位置服务应用。好了好了上面是百度来的,“借鉴”。第一次听说在网页上应用百度地图我首先想到了iframe,就这样不就完..._百度地图用途

Map的表结构、遍历哈希 Map 、有无线程安全的线程_java hashmap的循环获取数据 安全-程序员宅基地

文章浏览阅读834次,点赞21次,收藏19次。是 Java 中提供的线程安全的哈希 Map 实现,它通过使用分段锁(Segment)来支持并发访问,从而提高了性能。每个段上都有一个锁,多个线程可以同时访问不同的段,从而减小了锁的竞争范围,提高了并发性能。根据实现和特性的不同,Map 可以分为多种不同的类型。遍历哈希 Map 通常意味着访问其中的每一个键值对,并执行一些操作。时,多个线程可以安全地进行读取操作,而写入操作只锁定相关的段,而不是整个数据结构。有线程安全的 Map 集合,其中最常见的是。创建的同步 Map)具有更好的性能。_java hashmap的循环获取数据 安全

人工神经网络(一)概述_神经网络中连接权重-程序员宅基地

文章浏览阅读195次。人工神经网络(一)概述_神经网络中连接权重

探索 MegaTinyCore:一款超小型嵌入式 Linux 发行版-程序员宅基地

文章浏览阅读358次,点赞4次,收藏5次。探索 MegaTinyCore:一款超小型嵌入式 Linux 发行版项目地址:https://gitcode.com/SpenceKonde/megaTinyCoreMegaTinyCore 是一个极简主义的嵌入式 Linux 发行版,专为在受限硬件环境下运行而设计。它的核心理念是提供最基础的功能集,以实现最小的内存占用和高效的性能表现。这款项目的目标在于让开发者能够利用有限的资源构建功能丰富...

【新型敏捷硬件开发语言——Chisel】_chisel 语言-程序员宅基地

文章浏览阅读864次。初步学习Scala与Chisel,了解HDL发展历史,同时也熟悉了项目的部署过程。_chisel 语言

遍历Stream并设置属性值_stream遍历赋值-程序员宅基地

文章浏览阅读1.2w次。// 初始化数据,设置评价等级 List<TblApplyForCleaning> list = (List<TblApplyForCleaning>) tblApplyForCleaningRepository.findAll(); list.stream().forEach(p -> { if (p.getXing() != null)..._stream遍历赋值