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