获得 Image Analyst 许可后可用。
使用使用深度学习分类对象工具对影像中的对象进行分类。 该工具将在输入栅格上运行已训练深度学习模型,每个输入要素均已分配类标注。 下图是使用深度学习工具的对象分类的实力。
使用深度学习的典型对象分类工作流主要分三步:
- 创建并导出训练样本。 使用标注对象以供深度学习窗格创建训练样本,然后使用导出训练数据进行深度学习工具将样本转换为深度学习训练数据。
- 训练深度学习模型。 使用训练深度学习模型工具通过在上一步中创建的训练样本训练模型。
- 执行推断。 使用使用深度学习分类对象工具。 您将使用在步骤 2 中创建的模型。
有关更多示例、支持的元数据格式和模型类型架构,请参阅深度学习模型架构。
创建并导出训练样本
创建训练方案和训练样本并导出训练数据。
如果栅格数据集或要素类中存在现有训练样本,则可以使用导出训练数据进行深度学习工具继续执行下面的“训练深度学习模型”部分。
- 创建训练方案。
- 将要用于生成训练样本的图像添加到地图。
- 在内容窗格中,选择之前添加的图像。
- 单击影像选项卡。
- 单击深度学习工具,然后单击标注对象以进行深度学习。
影像分类窗格随即显示,其中包含空白方案。
- 在影像分类窗格中,右键单击新建方案并单击编辑属性。
- 提供方案名称。
- 单击保存。
- 向方案添加新类。
- 右键单击之前创建的方案,然后选择添加新类。
- 提供类名称。
- 提供类值。
值不能为 0。
- (可选)选择类的颜色。
- 单击确定。
该类即会添加至影像分类窗格中的方案。
- (可选)重复步骤 2a 到 2e 添加更多类。
- 右键单击之前创建的方案,然后选择添加新类。
- 创建训练样本。
- 在影像分类窗格中,选择要创建训练样本的类。
- 选择绘制工具,例如多边形。
- 在要分类的像素周围绘制一个多边形。
新的记录将添加到影像分类窗格的标注对象组。
- 重复步骤 3a 到 3c 为所有类创建训练样本。
由于最终的模型将考虑所识别对象的大小,因为您可以选择各种大小的对象。
- 在创建完样本后,在影像分类窗格中单击保存。
- 在保存当前训练样本窗口中,浏览至地理数据库。
- 提供要素类的名称,然后单击保存。
在训练模型之前,必须将训练样本导出为影像片。 影像片为包含一个或多个要检测对象的小影像。 将为方案中类的每个训练样本创建和标注影像片。
- 在影像分类窗格中,单击导出训练数据选项卡。
- 提供输出文件夹值。
这是将存储输出影像片和元数据的文件夹的路径和名称。
- (可选)选择元数据格式值。
适用于要素分类器模型类型的元数据格式包括已标注切片、Imagenet 和多标注切片。
- 单击运行导出训练数据。
- 提供输出文件夹值。
训练深度学习模型
训练深度学习模型工具使用已标注影像片确定每张影像中用于表示对象的像素组合。 您将使用这些训练样本训练深度学习模型。 在该工具中,仅需要输入训练数据和输出模型参数。
由于输入训练数据基于元数据格式值,因此适当的模型类型默认值已确定。 例如,如果您在导出过程中指定了已标注切片元数据格式,则模型类型参数将设置为要素分类器选项。 模型类型下拉列表也会更新为包含支持已标注切片元数据格式的模型类型。 批量大小、模型自变量和骨干模型参数也已基于模型类型参数值进行填充。
- 打开训练深度学习模型工具。
- 对于输入训练数据参数,浏览到存储影像片的训练数据文件夹并将其选中。
- 对于输出模型参数,提供在训练后存储输出模型的文件夹的文件路径和名称。
- (可选)指定最大轮数参数值。
一个轮数代表整个训练数据集的完整周期。 在每轮中,您存储在影像片文件夹中的训练数据集都将通过神经网络向前和向后传递一次。 通常,初始检查所用轮数为 20 到 50。 默认值为 20。 如果可以进一步改善模型,则可以使用相同的工具重新对其进行训练。
- 确保在模型类型参数下拉列表中选择要素分类器(对象分类)值。
模型类型决定了将用于训练模型的深度学习算法和神经网络,例如要素分类器模型架构。 有关模型、支持的元数据和模型架构详细信息的更多信息,请参阅深度学习模型架构和 ArcGIS 中的深度学习模型。
- (可选)更改模型自变量参数值。
模型自变量参数将使用模型定义中的信息进行填充。 这些自变量会有所变化,具体取决于指定的模型架构。 可在模型自变量参数中找到适用于工具的模型自变量列表。
- (可选)设置批量大小参数值。
此参数可确定每次训练的训练样本数。 批量大小值取决于诸多因素,例如影像片数、GPU 内存(如果使用了 GPU)以及学习率(如果使用了自定义值)。 通常,默认批量大小即可生成优质结果。
- (可选)提供学习率参数值。
如果未提供任何值,则系统将在训练过程中从学习曲线中提取最佳学习率。
- (可选)指定骨干模型参数值。
默认值基于模型架构。 可使用下拉列表更改默认骨干模型。
- (可选)提供预训练模型参数值。
可以对具有相似类的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。
- (可选)更改验证百分比参数值。
这是将用于验证模型的训练样本百分比。 该值取决于各种因素,例如训练样本数和模型架构。 通常,对于较小数量的训练数据,10% 到 20% 适用于验证。 如果存在大量训练数据,例如数千个样本,2% 到 5% 等较低的数据百分比适用于验证。 默认值为 10。
- (可选)选中当模型停止改进时停止参数。
如果选中,则当模型不再改进时,无论所指定的最大轮数值为何,模型训练都将停止。 默认选中该选项。
- (可选)选中冻结模型参数。
此参数用于指定是否冻结预训练模型中的骨干图层,以使权重和偏差保持原始设计。 如果选中此参数,将冻结骨干图层,并且不会在骨干模型参数中更改预定义权重和偏差。 如果未选中此选项,则不会冻结骨干图层,可以更改骨干模型参数值的权重和偏差以适应训练样本。 这需要更多的处理时间,但通常会产生更好的结果。 默认选中该选项。
- 单击运行开始训练。
执行推断
推断指使用在深度学习训练过程中学到的信息将类或分类标注分配给在输入图像中检测到的每个对象的过程。 由于您要执行对象分类工作流,因此使用使用深度学习分类对象工具。
- 打开使用深度学习分类对象工具。
- 对于输入栅格参数,浏览至要分类的输入栅格数据并将其选中。
输入可以是单一栅格数据集、镶嵌数据集或影像服务中的多个栅格、影像文件夹或具有影像附件的要素类。
- 对于输出分类对象要素类参数,提供输出要素类的名称。
输出要素类将包含输入影像中检测到的对象周围的几何以及用于存储分类标注的字段。
- 执行模型定义值(*.emd 或 *.dlpk)。
这是包含训练输出的模型文件。 这是训练深度学习部分的输出。
- 对于自变量参数,接受默认值或进行修改。
自变量参数将使用模型定义参数中的信息进行填充。 这些自变量会有所变化,具体取决于指定的模型架构。 在此示例中,使用了要素分类器模型架构,因此填充了以下自变量。
- batch_size - 模型推断每个步骤中处理的影像切片数。 这取决于显卡的内存大小。
- test_time_augmentation - 将在预测期间执行测试时数据增强。 如果为 true,则输入影像的翻转和旋转变体的预测将合并到最终输出中。
- 单击运行开始推断。