应用ArcGIS Pro深度学习(Deep Learning)模块识别棕榈树案例

2
分享 2020-03-27

深度学习(Deep Learning)是最近比较热门的一门技术,小编就ArcGIS官网的这个例子也来凑个热闹,体验下这门高深的技术。
但是,一上来就说这么高深莫测的词容易让人打退堂鼓,我就先举一个不太恰当的例子先让大家初步理解一下流程,本文中做的是下图中的第一和第四部分,因为第二部分比较难,没有仔细研究过,就不在这里班门弄斧了
注:本文中用到的ArcGIS Pro是2.4版本

3.png


目录
1、准备相应的python环境
1.1克隆arcgis pro的python环境
1.2将目录导航至新的环境并激活
1.3 安装深度学习所需要的tensflow相关包
1.4管理pro中使用的python环境并激活
1.5重启Pro使上述设置生效
2、创建比例尺、书签(在1部分中安装的过程中,可以同步进行下面的步骤)
3、创建训练模式
3.1打开训练样本管理器
4、棕榈树检测

要求:
ArcGIS组织中的发布者或管理员角色(免费试用
ArcGIS Pro(推荐2.4及以上版本)
ArcGIS Image Analyst(影像许可)
可选:具有GTX 1080ti或更高版本的GPU且至少6 GB内存的计算机
相关资料链接:内容包括:1、深度学习包   2、本案例中用到的影像数据

因为要用到emd模型,模型中数据的位置在C:\DeepLearning\Data\frozen_inference_graph.pb,因此上面资料中除影像外,都需要放在C盘中。


4.png

---------------------------------------------------------------------------------------
1、准备相应的python环境
按照官网的教程中写的,首先应该是处理和影像相关的步骤,为什么我这里先提到先准备python环境呢?这个就好比我们小学时做过的数学题一样,小明早上起床后,要洗漱5分钟,听广播15分钟,煮鸡蛋7分钟,怎样可以更节省时间完成这些事情呢?这个也是类似的,准备相应的python环境大部分时间都是等待机器操作,人为干预的时间比较短,因此我先说这部分。
1.1克隆arcgis pro的python环境
   arcgis pro自带了一套python3的环境,但是这个是只读的,而DeepLearning需要的不是一个只读的环境,因此需要克隆一个一模一样的环境,让只读环境变为读写环境
conda create -n palm-detection –-clone arcgispro-py3
上述命令的意思是,新建一个名为palm-detection的文件夹,用来克隆arcgispro-py3的环境,因此,palm-detection这个参数可以更改。
因此,我在运行上面那个命令的时候,将文件夹名称命名为:newdeeplearning,文件路径如下
5.png

运行命令方式,打开如图所示界面
6.png

启动python命令窗口的时候一定记得区分,尤其是像小编这样,电脑中同时安装了server和ArcGIS Pro的,在第一次克隆的时候没有仔细看,克隆完了才发现克隆错了
补充一些基础知识,在最前面的括号里写的arcgispro-py3代表的是当前激活的是arcgispro-py3这个环境
1.2将目录导航至新的环境并激活
7.png

8.png
cd ../(这个命令的意思是从第一张图的路径切换到第二张图的路径)
cd newdeeplearning(进入到第二张图newdeeplearning路径)
activate newdeeplearning
9.png

1.3 安装深度学习所需要的tensflow相关包
(采用conda命令,在实验中我用过pip命令,并不适用于我的电脑,Pro是用conda管理python环境,所以安装相应包推荐用conda命令)
需要在上面的界面中逐个安装,有的会提示需要升级或者已有,要注意区分,本案例中用到的是这些版本。
conda install tensorflow-gpu=1.14.0
conda install keras-gpu=2.2.4
conda install scikit-image=0.15.0
conda install Pillow=6.1.0
conda install fastai=1.0.54
conda install pytorch=1.1.0
conda install libtiff=4.0.10 --no-deps
安装中的截图
10.png

1.4管理pro中使用的python环境并激活
11.png

1.5重启Pro使上述设置生效
2、创建比例尺、书签(在1部分中安装的过程中,可以同步进行下面的步骤)

将上述资料中的数据下载下来,加载到Pro中,如图所示(强烈建议在做本文中的练习时保存工程文件)
12.png

在Map左下角的比例尺中,自定义一个1:500的比例尺并保存,后面新建书签会用到。
打开Map标签下的Locate功能,搜索如下几个坐标,将地图切换至1:500比例尺,创建书签。
在Locate中输入的值 在书签中保存的名称

175.3458501°W 21.0901350°S             西北棕榈
175.3413074°W21.0949798°S             中央东棕榈
175.3479054°W 21.1018014°S            西南棕榈
175.3409475°W 21.1035265°S            东南棕榈
175.3479457°W 21.0959058°S            中西部棕榈
 
书签创建完如下图所示
13.png

3、创建训练模式
3.1打开训练样本管理器

步骤如图所示
14.png

如果上述页面中Training Samples Manager是灰色的不可用,那就说明是许可的问题,需要检查下Pro中是否有Image Analyst和Spatial Analyst两种许可。
打开后,按照如下步骤操作。(这个地方类似于遥感中的监督分类)
15.png

点击之前保存好的书签,将比例尺固定在1:500,圈棕榈树即可,为了保证识别的更加准确,可以多圈几个。圈好的界面如图所示
16.png

需要在五个书签处都圈出来一些,如下图,创建完成后保存该成果。
17.png

3.2导出学习培训数据
在地理处理窗口中搜索Export Training Data for Deep Learning,导出即可。
18.png

导出的成果如下图所示
19.png

至此,所有前提条件需要准备好,才能进行接下来的步骤,前提条件为上面1、2、3三个步骤。

接下来就需要训练深度学习模型和审查模型了,这是深度学习中的难点,小编因为水平有限,本文中就用esri提供的训练好的模型直接去用,为了梳理下整个工作流,感兴趣的小伙伴儿可以在这个地方多花些精力去做。


4、棕榈树检测
因为在上文中准备好了工程,python环境、Pro也重启了,这里需要在地理处理工具中搜索Detect Objects Using Deep Learning工具,并按照下图方式填写
20.png

参数说明:Input Raster:当前要识别的影像
                  Output Detected Objects:识别后输出的结果,为featureClass
                  Model Defintion:前面训练好的模型,需要输入的文件格式为emd文件
在填写第3个参数的时候,如果识别的到如下错误,那么大概率是python环境的问题,最主要的没装tensflow相对应版本的python(这个解决方法仅对本文中的案例,对于别的案例不一定适用,可以确定的是缺少对应正确的python环境,是不是tensflow需要具体模型具体分析)
21.png

接下来就是运行,这个过程会比较漫长,根据电脑性能和要识别的影像来决定。
成果如下:
22.png

23.png

可以看下识别出来的结果还是蛮准的。
原文链接:https://blog.csdn.net/weixin_4 ... 59215

2 个评论

你好,在第3和第4步骤中间模型训练部分出了错误。3.2结束后的训练数据使用时出错,你对这部分熟悉吗
在安装环境的时候,所有的包都是正常装的?有没有报错?

要回复文章请先登录注册