ArcGIS深度学习基础【01】

 干货~ 新鲜的干货~ 都来瞧一瞧看一看呐~~。

如果你看到这篇文章,首先不要问我为什么公众号可以“发语音”

。如果你看懂上一句话了,那说明你一定有一个有趣的灵魂。还是回归正题,从最近读者们的反馈来看,我觉得还是需要再将ArcGIS中的深度学习基础知识进行科普一下。毕竟深度学习这玩意,入门太难了!(天知道我当时花了多长时间才入门)

那么还是老套路,本文思路:深度学习是什么 -> ArcGIS中的深度学习 -> ArcGIS Pro深度学习工具箱

01

深度学习是什么

深度学习是什么?看图:

简单的来说,深度学习就是一个黑盒子,你往黑盒子里面放照片,黑盒子给你想要的特定格式的数据。比如说,我们上图中看到的棕榈树影像,丢给黑盒子,然后黑盒子给我们标注棕榈树位置的红框。这就是深度学习模型,再具体一点:

分类的意思是,我给黑盒子一张图片,黑盒子告诉我这个图片是什么。比如说图中的手写字母是哪个?(其实我也不知道是不是手写字母,随便找的图

),那中间有一系列过程:卷积、池化等等,这些过程你可以理解成复杂的数学公式就好了。经历过数学公式之后,算出来这个图片属于已知字母中的哪一个(概率最高)。当然,如果你不知道卷积池化的话,没关系,就当成黑盒子就行了。

现在我们知道深度学习大概是什么了,那我们经常看到的模型训练过程做了一件什么事情呢?其实就是在调整数学公式中那些个参数。比如说,y = kx + b,那训练模型就是找到k与b的值,让这个值满足特定的x,y组合,如:

此时此刻你一定知道,针对于上一组x、y,k与b的值是多少了(你说不知道,emmmm)。

但是在深度学习具体场景中,远远比y = kx + b要复杂的多,所以训练模型是在让数学公式找到最接近与某个数据集的参数的值(k,b)。这样,便可以让机器干一些amzing的事情。

02

ArcGIS中的深度学习

每次提到ArcGIS,我都会想到版本

,因为更新换代太快了。本文中的ArcGIS版本:

  • ArcGIS Pro >= 2.6

  • ArcGIS API for Python >= 1.8.1

深度学习(计算视觉领域)在实际应用中基本上分为以下场景:

这些场景中涉及到的算法模型有一部分在ArcGIS API for Python中,如果ArcGIS Pro版本在2.6之上的话,那上图中展示的模型,你所安装的产品都已经涵盖。

本小节基本上一张图就概括了,现在你了解了深度学习是什么,ArcGIS能用深度学习干什么,那就该了解怎么用了。

03

ArcGIS Pro深度学习工具箱

终于到了最重要的时刻了,使用ArcGIS Pro中的工具箱,可以在零代码的情况下,完成上面大部分场景。首先我们来看一下工具箱里面都有哪些东西:

(啊,马赛克是什么?那是后面文章的彩蛋。)

我们可以看到工具都被我用红框给框起来了,三个框分别对应着深度学习工作流的三个步骤。深度学习工作流有三个基础步骤:

我们按照流程来看这些工具:

(PS:如果你想结合某个场景看下面的工具的话,看一翻翻我之前的文章,比如说:ArcGIS Pro深度学习初体验(下)

首先样本制作

这个里面最重要的是元数据格式,为什么呢,因为不同的场景,元数据格式可能是完全不同的。并且不同的模型所对应样本的元数据格式也不完全一样。所以如果你想换一个模型,但是不知道用什么格式的话,记得多翻翻我的文章(你一定能翻到想要的东西)。

除了元数据格式需要注意之外,其余的工具参数输入就要靠折腾具体的场景了,本文中只点出最重要的。

然后我们来看一下模型训练:

好,本部分只需要关注批处理大小、模型训练轮数以及模型类型。

  • 模型类型:很好理解,就是不同的算法,需要依据场景找算法

  • 模型训练轮数:字面意思,就是训练多少轮,一般情况下30-50轮应该够了,如果模型表现不好的话,可以增大模型训练的轮数。

  • 批处理大小:这个尤其重要,如果你有一个大显存的显卡的话,这个可以设置大一点,如果没有的话,这个就得设置小一点。具体情况得看显卡显存。但是是越大越好。(不建议用CPU训练。你会怀疑人生的)

对了,还有一个很重要的参数在环境那一栏中选择:

有英伟达大显卡的土豪朋友们,一定要记得选择GPU的ID,一般情况下都是0。

然后到了最后的流程了:模型推理,此部分分为三个工具,比较复杂:

由于篇幅问题,在此处只能简单带大家区分,什么情况下使用什么工具,工具详情放在后面的文章中再看。首先我们观察工具的名字:

其实很多人会搞混这三个工具的,所以我将我如何区分三个工具思路讲给大家:

首先,你需要了解你的场景,因为场景不同(目标检测、语义分割),模型在ArcGIS整个流程中生成的数据格式不同:如目标检测生成的是矢量数据,那就用“使用深度学习检测对象”工具,此工具从名称都可以看出来是做目标检测的。语义分割、实例分割、xxxxx(彩蛋)场景下,ArcGIS深度学习流程中生成的是栅格数据,那就选“使用深度学习分类像素”。总之,你需要先明确场景,然后再选择,目前来看,除了目标检测之外,其余在ArcGIS Pro常见的场景都是使用分类像素的那个工具。还有一个工具“使用深度学习分类对象”,是在极少数情况下才会使用。所以还是要明确场景,思考一下数据整体的流向,然后选择工具使用。当然其实模型与工具之间是有对应关系的,后面文章我会整一个表。

(0)

相关推荐