训练深度学习模型 (Image Analyst)

获得 Image Analyst 许可后可用。

摘要

使用导出训练数据进行深度学习工具的输出训练深度学习模型。

使用情况

  • 该工具使用深度学习框架训练深度学习模型。

  • 要设置计算机以在 ArcGIS Pro 中使用深度学习框架,请参阅安装 ArcGIS 的深度学习框架

  • 如果要在离线环境中训练模型,请参阅离线环境的其他安装以获取详细信息。

  • 该工具还可用于对现有经过训练的模型进行微调。 例如,可以对已针对汽车进行了训练的现有模型进行微调,以训练用于识别卡车的模型。

  • 要使用 GPU 运行此工具,将处理器类型环境设置为 GPU。 如果您具有多个 GPU,还可以指定 GPU ID 环境。

  • 默认情况下,当模型类型参数设置为以下选项之一时,该工具将使用所有可用 GPU:

    • ConnectNet
    • 要素分类器
    • MaskRCNN
    • 多任务道路提取器
    • 单帧检测器
    • U-Net

    要使用特定的 GPU,使用 GPU ID 环境。

  • 该工具的输入训练数据必须包括从导出训练数据进行深度学习工具生成的影像和标注文件夹。

    当训练数据使用 Pascal Visual Object Classes 或 KITTI 矩形元数据格式时,会有例外情况。 对于这两种格式,训练数据可以来自其他来源,但影像片必须放置在 image 文件夹中,且对应的标注必须位于 labels 文件夹中。

  • 使用 transforms.json 文件为训练和验证数据集的数据增强指定 fastai 转换,该文件位于训练数据所在的文件夹中。 下面是 transforms.json 文件的示例:

    自定义增强参数

    
    {
        "Training": {
            "rotate": {
                "degrees": 30,
                "p": 0.5
            },
            "crop": {
                "size": 224,
                "p": 1,
                "row_pct": "0, 1",
                "col_pct": "0, 1"
            },
            "brightness": {
                "change": "0.4, 0.6"
            },
            "contrast": {
                "scale": "1.0, 1.5"
            },
            "rand_zoom": {
                "scale": "1, 1.2"
            }
        },
        "Validation": {
            "crop": {
                "size": 224,
                "p": 1.0,
                "row_pct": 0.5,
                "col_pct": 0.5
            }
        }
    }

  • 有关运行此工具的要求以及您可能遇到的问题的信息,请参阅深度学习常见问题

  • 有关深度学习的详细信息,请参阅使用 ArcGIS Image Analyst 的深度学习

参数

标注说明数据类型
输入训练数据

包含训练模型所需的影像片、标注和统计数据的文件夹。 此数据为导出训练数据进行深度学习工具的输出。

当满足以下条件时,支持多个输入文件夹:

  • 元数据格式必须是以下格式之一:分类切片、标注切片、多标注切片、Pascal 视觉对象类或 RCNN 掩码。
  • 所有训练数据必须具有相同的元数据格式。
  • 所有训练数据必须具有相同的波段数。

Folder
输出文件夹

将存储训练模型的输出文件夹位置。

Folder
最大轮数
(可选)

将用于训练模型的最大轮数。 最大轮数值为 1 意味着数据集将通过神经网络向前和向后传递一次。 默认值为 20。

Long
模型类型
(可选)

指定将用于训练深度学习模型的模型类型。

  • BDCN 边缘检测器(像素分类)双向级联网络 (BDCN) 架构将用于训练模型。 BDCN 边缘检测器 用于像素分类。 此方法对于改进不同比例对象的边缘检测非常有用。
  • 变化检测器(像素分类)变化检测器架构将用于训练模型。 变化检测器用于像素分类。 这种方法将创建一个模型对象,该模型对象将使用两个时空影像来创建变化的分类栅格。 该模型类型的输入训练数据使用“分类切片”元数据格式。
  • ClimaX(像素分类)ClimaX 是一种架构,用于模型训练。 该模型主要用于天气和气候分析。 ClimaX 适用于像素分类。 该方法使用的初始数据是多维数据。
  • ConnectNet(像素分类)ConnectNet 架构将用于训练模型。 ConnectNet 用于像素分类。 此方法对于从卫星影像提取道路网络非常有用。
  • CycleGAN(影像转换)CycleGAN 架构将用于训练模型。 CycleGAN 可用于影像之间的转换。 此方法将创建一个模型对象,该模型对象会将一种类型的影像生成为另一种类型影像。 这种方法的独特之处在于,要训练的影像不需要重叠。 该模型类型的输入训练数据使用 CycleGAN 元数据格式。
  • DeepLabV3(像素分类)DeepLabV3 架构将用于训练模型。 DeepLab 将用于像素分类。
  • 深度排序(对象追踪器)深度排序架构将用于训练模型。 深度排序将用于在视频中进行对象检测。 该模型使用视频帧进行训练,并检测每一帧中对象的类别和边界框。 该模型类型的输入训练数据使用 Imagenet 元数据格式。 Siam Mask 可用于跟踪对象,而 Deep Sort 可用于将模型训练为跟踪多个对象。
  • DETReg(对象检测)DETReg 架构将用于训练模型。 DETReg 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类。 此模型类型为 GPU 密集型;需要具有至少 16 GB 内存的专用 GPU 才能正常运行。
  • FasterRCNN(对象检测)FasterRCNN 架构将用于训练模型。 FasterRCNN 将用于对象检测。
  • 要素分类器(对象分类)将使用要素分类器架构训练模型。 要素分类器用于对象或影像分类。
  • HED 边缘检测器(像素分类)整体嵌套边缘检测 (HED) 架构将用于训练模型。 HED 边缘检测器用于像素分类。 这种方法可用于检测边缘和对象边界。
  • 图像标题生成器(影像转换)图像标题生成器架构将用于训练模型。 图像标题生成器可用于图像到文本的转换。 此方法将创建一个用于为图像生成文本标题的模型。
  • MaskRCNN(对象检测)MaskRCNN 架构将用于训练模型。 MaskRCNN 将用于对象检测。 可将此方法用于实例分割,即对影像中对象的精确划分。 此模型类型可用于检测建筑物覆盖区。 该类型将 MaskRCNN 元数据格式作为输入用于训练数据。 输入训练数据的类值必须从 1 开始。 只能使用支持 CUDA 的 GPU 来训练此模型类型。
  • MaX-DeepLab(全景分割)MaX-DeepLab 架构将用于训练模型。 用于全景分割的 MaX-DeepLab。 此方法将创建一个模型对象,该模型对象会将生成影像和要素。 此模型类型的输入训练数据使用全景分割元数据格式。
  • MMDetection(目标检测)MMDetection 架构将用于训练模型。 MMDetection 将用于对象检测。 受支持的元数据格式包括 Pascal 视觉对象类矩形和 KITTI 矩形。
  • MMSegmentation(像素分类)MMSegmentation 架构将用于训练模型。 MMSegmentation 用于像素分类。 受支持的元数据格式为分类切片。
  • 多任务道路提取器(像素分类)多任务道路提取器架构将用于训练模型。 多任务道路提取器用于像素分类。 此方法对于从卫星影像提取道路网络非常有用。
  • Pix2Pix(影像转换)Pix2Pix 架构将用于训练模型。 Pix2Pix 可用于影像之间的转换。 此方法将创建一个模型对象,该模型对象会将一种类型的影像生成为另一种类型影像。 该模型类型的输入训练数据使用“导出切片”元数据格式。
  • Pix2PixHD(影像转换)Pix2PixHD 架构将用于训练模型。 Pix2PixHD 可用于影像之间的转换。 此方法将创建一个模型对象,该模型对象会将一种类型的影像生成为另一种类型影像。 该模型类型的输入训练数据使用“导出切片”元数据格式。
  • PSETAE(像素分类)将使用像素集编码器和时间注意力 (PSETAE) 架构针对时间序列分类训练模型。 PSETAE 用于像素分类。 该方法使用的初始数据是多维数据。
  • 金字塔场景解析网络(像素分类)金字塔场景解析网络 (PSPNET) 架构将用于训练模型。 PSPNET 用于像素分类。
  • RetinaNet(对象检测)RetinaNet 架构将用于训练模型。 RetinaNet 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • SAMLoRA(像素分类)具有低秩适应 (LoRA) 的 Segment Anything Model (SAM) 将用于训练模型。 此模型类型使用 SAM 作为基础模型并使用针对计算要求相对较低且数据集较小的特定任务进行微调。
  • Siam Mask(对象追踪器)Siam Mask 架构将用于训练模型。 Siam Mask 将用于在视频中进行对象检测。 该模型使用视频帧进行训练,并检测每一帧中对象的类别和边界框。 此模型类型的输入训练数据使用 MaskRCNN 元数据格式。
  • 单帧检测器(对象检测)单帧检测器 (SSD) 架构将用于训练模型。 SSD 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • 超分辨率(影像转换)超分辨率架构将用于训练模型。 超分辨率可用于影像之间的转换。 这种方法将创建一个模型对象,该模型对象可以提高分辨率并改善影像质量。 该模型类型的输入训练数据使用“导出切片”元数据格式。
  • U-Net(像素分类)U-Net 架构将用于训练模型。 U-Net 用于像素分类。
  • YOLOv3(对象检测)YOLOv3 架构将用于训练模型。 YOLOv3 将用于对象检测。
String
批处理大小
(可选)

训练时一次处理的样本数量。

增加批处理大小可以提高工具性能;但是,随着批处理大小的增加,会占用更多内存。

如果可用于批量大小集的 GPU 内存不足,则该工具将尝试估计并使用最佳批量大小。 如果发生内存不足错误,请使用较小的批处理大小。

Long
模型参数
(可选)

将使用模型类型参数中的信息填充此参数。 这些参数将有所不同,具体取决于模型架构。 下面介绍了在 ArcGIS 中训练的模型支持的模型参数。 ArcGIS 预训练模型和自定义深度学习模型可能具有该工具支持的其他参数。

有关适用于每种模型类型的参数的详细信息,请参阅深度学习参数

Value Table
学习率
(可选)

在整个训练过程中,现有信息将被新获取的信息覆盖的比率。 如果未指定任何值,则系统将在训练过程中从学习曲线中提取最佳学习率。

Double
骨干模型
(可选)

指定要用作训练新模型的架构的、预先配置的神经网络。 这种方法称为迁移学习。

此外,从 PyTorch Image Models (timm) 指定受支持卷积神经网络时还可以使用 timm 作为前缀,例如 timm:resnet31、timm:inception_v4、timm:efficientnet_b3 等。

  • 1.40625 度该骨干网络经过训练,影像分辨率为每个格网像元覆盖 1.40625 度 × 1.40625 度的区域。 主要用于天气和气候预测。 这是一种高分辨率设置,能够提供更精确的输出,但需要更多的计算资源。
  • 5.625 度该骨干网络经过训练,影像分辨率为每个格网像元覆盖 5.625 度 × 5.625 度的区域。 主要用于天气和气候预测。 这种设置为低分辨率,计算需求较低。
  • DenseNet-121预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 121 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DenseNet-161预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 161 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DenseNet-169预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 169 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DenseNet-201预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 201 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • MobileNet 2 版由于预配置模型将基于 Imagenet 数据库进行训练,且深度为 54 个图层,适用于边缘设备计算,因为其所用的内存更少。
  • ResNet-18预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 18 个图层。
  • ResNet-34预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 34 个图层。 这是默认设置。
  • ResNet-50预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 50 个图层。
  • ResNet-101预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 101 个图层。
  • ResNet-152预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 152 个图层。
  • VGG-11预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 11 个图层。
  • 使用批量归一化的 VGG-11预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 11 个图层。
  • VGG-13预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 13 个图层。
  • 使用批量归一化的 VGG-13预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 13 个图层。
  • VGG-16预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 16 个图层。
  • 使用批量归一化的 VGG-16预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 16 个图层。
  • VGG-19预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 19 个图层。
  • 使用批量归一化的 VGG-19预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 19 个图层。
  • DarkNet-53预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像,且深度为 53 个图层。
  • Reid_v1预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • Reid_v2预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • ResNeXt-50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 它是同质神经网络,可减少常规 ResNet 所需的超参数的数量。
  • Wide ResNet-50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 其架构与 ResNET 相同,但是通道更多。
  • SR3预配置模型将使用通过重复细化的超分辨率 (SR3) 模型。 SR3 将根据条件图像生成调整去噪扩散概率模型并通过随机去噪过程实现超分辨率。 有关详细信息,请参阅 arXiv 站点上的通过迭代细化实现图像超分辨率
  • SR3 U-ViT此骨干网络是 Vision Transformer (ViT) 架构的特定实现,设计用于扩散模型中的图像生成和 SR3 任务。
  • ViT-B预配置的 Segment Anything Model (SAM) 将与基础神经网络大小搭配使用。 这是最小大小。 有关详细信息,请参阅 arXiv 站点上的 Segment Anything
  • ViT-L预配置的 Segment Anything Model (SAM) 将与较大的神经网络大小搭配使用。 有关详细信息,请参阅 arXiv 站点上的 Segment Anything
  • ViT-H预配置的 Segment Anything Model (SAM) 将与巨大的神经网络大小搭配使用。 这是最大大小。 有关详细信息,请参阅 arXiv 站点上的 Segment Anything
String
预训练模型
(可选)

将用于微调新模型的预训练模型。 输入为 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。

可以对具有相似类的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。

File
验证百分比
(可选)

将用于验证模型的训练样本的百分比。 默认值为 10。

Double
当模型停止改进时停止
(可选)

指定是否将实施提前停止。

  • 选中 - 将实施提前停止,当模型不再改进时,无论所指定的最大轮数参数值是什么,模型训练都将停止。 这是默认设置。
  • 未选中 - 不会实施提前停止,模型训练将一直持续,直至达到最大轮数参数值为止。
Boolean
冻结模型
(可选)

指定是否冻结预训练模型中的骨干层,以使权重和偏差保持原始设计。

  • 选中 - 将冻结骨干图层,预定义的权重和偏差不会在骨干模型参数中进行更改。 这是默认设置。
  • 未选中 - 不会冻结骨干图层,骨干模型参数的权重和偏差可能会进行更改以更好地适合您的训练样本。 这将需要花费更多的时间来处理,但通常会产生更好的结果。

Boolean
数据增强
(可选)

指定要使用的数据增强类型。

数据增强方法使用现有数据创建经过修改的数据集副本,实现人为增加训练集合。

  • 默认值将使用默认数据增强方法和值。包含的默认数据增强方法包括 cropdihedral_affinebrightnesscontrastzoom。 这些默认值通常适用于卫星影像。
  • 将不会使用数据增强。
  • 自定义数据增强值将使用增强参数参数进行指定。
  • 文件将使用 transforms.json 文件为训练和验证数据集的数据增强指定 fastai 转换,该文件位于训练数据所在的文件夹中。有关不同转换的详细信息,请参阅 fastai 网站中的 vision transforms
String
增强参数
(可选)

在增强参数中指定每个转换对应的值。

  • rotate - 影像将按概率 (p) 随机旋转(以度为单位)。 如果度数是一个范围 (a,b),将在 ab 之间均匀赋值。 默认值为 30.0; 0.5。
  • brightness - 影像亮度将根据变化值随机调整,概率为 (p)。 变化为 0 时会将影像转换为最暗,变化为 1 时会将影像转换为最亮。 变化为 0.5 时不会调整亮度。 如果变化是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.4,0.6); 1.0。
  • contrast - 影像对比度将根据比例值随机调整,概率为 (p)。 比例为 0 时会将影像转换为灰度,比例大于 1 时会将影像转换为超级对比度。 比例为 1 时不会调整对比度。 如果比例是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.75, 1.5); 1.0。
  • zoom - 影像将根据比例值随机放大。 缩放值采用 scale(a,b); p 形式。 默认值为 (1.0, 1.2); 1.0,其中 p 为概率。 仅当比例大于 1.0 时,才会在影像上进行放大。 如果比例是一个范围 (a,b),将在 ab 之间进行均匀赋值。
  • crop - 将随机裁剪影像。 裁剪值采用 size;p;row_pct;col_pct 形式,其中 p 为概率。 位置根据 (col_pct, row_pct), 确定,其中 col_pctrow_pct 在 0 和 1 之间进行归一化。 如果 col_pctrow_pct 是一个范围 (a,b),将在 ab 之间进行均匀赋值。 默认值为 chip_size;1.0; (0, 1); (0, 1),其中 224 为默认影像片大小。

Value Table
影像片大小
(可选)

将用于训练模型的影像大小。 影像将裁剪为指定的影像片大小。

默认影像片大小将为训练数据的切片大小。 如果 x- 和 y- 切片大小不同,则会使用较小的值作为默认影像片大小。 影像片大小应小于输入文件夹中所有影像的最小 x- 或 y- 切片大小。

Long
将大小调整为
(可选)

调整影像片大小。 在调整影像片大小后,将裁剪影像片大小的像素块,以用于训练。 该参数将仅应用于对象检测 (PASCAL VOC)、对象分类(已标注切片)和超分辨率数据。

大小调整值通常为影像片大小值的一半。 如果此大小调整值小于影像片大小值,则将使用大小调整值创建像素块进行训练。

String
权重初始化方案
(可选)

指定要用于为图层初始化权重的方案。

要使用多光谱数据训练模型,模型必须容纳不同类型的可用波段。 为此,需要重新初始化模型中的第一个图层。

仅当在模型中使用多光谱影像时,此参数才适用。

  • 随机随机权重将针对非 RGB 波段进行初始化,而预培训权重将为 RGB 波段保留。 这是默认设置。
  • 红色波段与预训练模型图层中的红色波段对应的权重将针对非 RGB 波段进行克隆,而预训练权重将为 RGB 波段保留。
  • 全部随机随机权重将针对 RGB 波段以及非 RGB 波段进行初始化。 此选项仅适用于多光谱影像。
String
监控指标
(可选)

指定在检查点设置和提前停止时要监控的指标。

  • 验证损失将监控验证损失。 如果验证损失不再发生明显变化,则模型将停止。 这是默认设置。
  • 平均精确率将监控每个阈值处的加权精度均值。 如果此值不再发生明显变化,则模型将停止。
  • 精度将监控正确预测数与预测总数之比。 如果此值不再发生明显变化,则模型将停止。
  • F1 得分将监控模型的精确率和召回率得分组合。 如果此值不再发生明显变化,则模型将停止。
  • MIoU将监控测试数据集的所有影像中已分割对象的交并比平均值。 如果此值不再发生明显变化,则模型将停止。
  • 切分将使用切分指标监控模型性能。 如果此值不再发生明显变化,则模型将停止。该值范围可以介于 0 到 1 之间。 值 1 表示验证数据与训练数据之间像素完全匹配。
  • 精度将监控衡量模型在将样本分类为正样本时的准确性的精确率。 如果此值不再发生明显变化,则模型将停止。精确率为正确分类的正样本数与已分类样本总数(正确或错误)之比。
  • 召回率将监控衡量模型检测正样本的能力的召回率。 如果此值不再发生明显变化,则模型将停止。召回率越高,检测到的正样本越多。 召回率值为正确分类的正样本数与正样本总数之比。
  • Corpus bleu将监控 Corpus blue 分数。 如果此值不再发生明显变化,则模型将停止。此分数用于计算多个句子的准确性,例如段落或文档。
  • 多标注 F-beta将监控精确率和召回率的加权调和均值。 如果此值不再发生明显变化,则模型将停止。这通常称为 F-beta 分数。
String

派生输出

标注说明数据类型
输出模型

输出已训练模型文件。

File

TrainDeepLearningModel(in_folder, out_folder, {max_epochs}, {model_type}, {batch_size}, {arguments}, {learning_rate}, {backbone_model}, {pretrained_model}, {validation_percentage}, {stop_training}, {freeze}, {augmentation}, {augmentation_parameters}, {chip_size}, {resize_to}, {weight_init_scheme}, {monitor})
名称说明数据类型
in_folder
[in_folder,...]

包含训练模型所需的影像片、标注和统计数据的文件夹。 此数据为导出训练数据进行深度学习工具的输出。

当满足以下条件时,支持多个输入文件夹:

  • 元数据格式必须是以下格式之一:分类切片、标注切片、多标注切片、Pascal 视觉对象类或 RCNN 掩码。
  • 所有训练数据必须具有相同的元数据格式。
  • 所有训练数据必须具有相同的波段数。

Folder
out_folder

将存储训练模型的输出文件夹位置。

Folder
max_epochs
(可选)

将用于训练模型的最大轮数。 最大轮数值为 1 意味着数据集将通过神经网络向前和向后传递一次。 默认值为 20。

Long
model_type
(可选)

指定将用于训练深度学习模型的模型类型。

  • BDCN_EDGEDETECTOR双向级联网络 (BDCN) 架构将用于训练模型。 BDCN 边缘检测器 用于像素分类。 此方法对于改进不同比例对象的边缘检测非常有用。
  • CHANGEDETECTOR变化检测器架构将用于训练模型。 变化检测器用于像素分类。 这种方法将创建一个模型对象,该模型对象将使用两个时空影像来创建变化的分类栅格。 该模型类型的输入训练数据使用“分类切片”元数据格式。
  • CLIMAXClimaX 是一种架构,用于模型训练。 该模型主要用于天气和气候分析。 ClimaX 适用于像素分类。 该方法使用的初始数据是多维数据。
  • CONNECTNETConnectNet 架构将用于训练模型。 ConnectNet 用于像素分类。 此方法对于从卫星影像提取道路网络非常有用。
  • CYCLEGANCycleGAN 架构将用于训练模型。 CycleGAN 可用于影像之间的转换。 此方法将创建一个模型对象,该模型对象会将一种类型的影像生成为另一种类型影像。 这种方法的独特之处在于,要训练的影像不需要重叠。 该模型类型的输入训练数据使用 CycleGAN 元数据格式。
  • DEEPLABDeepLabV3 架构将用于训练模型。 DeepLab 将用于像素分类。
  • DEEPSORT深度排序架构将用于训练模型。 深度排序将用于在视频中进行对象检测。 该模型使用视频帧进行训练,并检测每一帧中对象的类别和边界框。 该模型类型的输入训练数据使用 Imagenet 元数据格式。 Siam Mask 可用于跟踪对象,而 Deep Sort 可用于将模型训练为跟踪多个对象。
  • DETREGDETReg 架构将用于训练模型。 DETReg 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类。 此模型类型为 GPU 密集型;需要具有至少 16 GB 内存的专用 GPU 才能正常运行。
  • FASTERRCNNFasterRCNN 架构将用于训练模型。 FasterRCNN 将用于对象检测。
  • FEATURE_CLASSIFIER将使用要素分类器架构训练模型。 要素分类器用于对象或影像分类。
  • HED_EDGEDETECTOR整体嵌套边缘检测 (HED) 架构将用于训练模型。 HED 边缘检测器用于像素分类。 这种方法可用于检测边缘和对象边界。
  • IMAGECAPTIONER图像标题生成器架构将用于训练模型。 图像标题生成器可用于图像到文本的转换。 此方法将创建一个用于为图像生成文本标题的模型。
  • MASKRCNNMaskRCNN 架构将用于训练模型。 MaskRCNN 将用于对象检测。 可将此方法用于实例分割,即对影像中对象的精确划分。 此模型类型可用于检测建筑物覆盖区。 该类型将 MaskRCNN 元数据格式作为输入用于训练数据。 输入训练数据的类值必须从 1 开始。 只能使用支持 CUDA 的 GPU 来训练此模型类型。
  • MAXDEEPLABMaX-DeepLab 架构将用于训练模型。 用于全景分割的 MaX-DeepLab。 此方法将创建一个模型对象,该模型对象会将生成影像和要素。 此模型类型的输入训练数据使用全景分割元数据格式。
  • MMDETECTIONMMDetection 架构将用于训练模型。 MMDetection 将用于对象检测。 受支持的元数据格式包括 Pascal 视觉对象类矩形和 KITTI 矩形。
  • MMSEGMENTATIONMMSegmentation 架构将用于训练模型。 MMSegmentation 用于像素分类。 受支持的元数据格式为分类切片。
  • MULTITASK_ROADEXTRACTOR多任务道路提取器架构将用于训练模型。 多任务道路提取器用于像素分类。 此方法对于从卫星影像提取道路网络非常有用。
  • PIX2PIXPix2Pix 架构将用于训练模型。 Pix2Pix 可用于影像之间的转换。 此方法将创建一个模型对象,该模型对象会将一种类型的影像生成为另一种类型影像。 该模型类型的输入训练数据使用“导出切片”元数据格式。
  • PIX2PIXHDPix2PixHD 架构将用于训练模型。 Pix2PixHD 可用于影像之间的转换。 此方法将创建一个模型对象,该模型对象会将一种类型的影像生成为另一种类型影像。 该模型类型的输入训练数据使用“导出切片”元数据格式。
  • PSETAE将使用像素集编码器和时间注意力 (PSETAE) 架构针对时间序列分类训练模型。 PSETAE 用于像素分类。 该方法使用的初始数据是多维数据。
  • PSPNET金字塔场景解析网络 (PSPNET) 架构将用于训练模型。 PSPNET 用于像素分类。
  • RETINANETRetinaNet 架构将用于训练模型。 RetinaNet 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • SAMLORA具有低秩适应 (LoRA) 的 Segment Anything Model (SAM) 将用于训练模型。 此模型类型使用 SAM 作为基础模型并使用针对计算要求相对较低且数据集较小的特定任务进行微调。
  • SIAMMASKSiam Mask 架构将用于训练模型。 Siam Mask 将用于在视频中进行对象检测。 该模型使用视频帧进行训练,并检测每一帧中对象的类别和边界框。 此模型类型的输入训练数据使用 MaskRCNN 元数据格式。
  • SSD单帧检测器 (SSD) 架构将用于训练模型。 SSD 将用于对象检测。 该模型类型的输入训练数据使用 Pascal 可视化对象类元数据格式。
  • SUPERRESOLUTION超分辨率架构将用于训练模型。 超分辨率可用于影像之间的转换。 这种方法将创建一个模型对象,该模型对象可以提高分辨率并改善影像质量。 该模型类型的输入训练数据使用“导出切片”元数据格式。
  • UNETU-Net 架构将用于训练模型。 U-Net 用于像素分类。
  • YOLOV3YOLOv3 架构将用于训练模型。 YOLOv3 将用于对象检测。
String
batch_size
(可选)

训练时一次处理的样本数量。

增加批处理大小可以提高工具性能;但是,随着批处理大小的增加,会占用更多内存。

如果可用于批量大小集的 GPU 内存不足,则该工具将尝试估计并使用最佳批量大小。 如果发生内存不足错误,请使用较小的批处理大小。

Long
arguments
[arguments,...]
(可选)

model_type 参数中的信息将用于设置此参数的默认值。 这些参数将有所不同,具体取决于模型架构。 下面介绍了在 ArcGIS 中训练的模型支持的模型参数。 ArcGIS 预训练模型和自定义深度学习模型可能具有该工具支持的其他参数。

有关适用于每种模型类型的参数的详细信息,请参阅深度学习参数

Value Table
learning_rate
(可选)

在整个训练过程中,现有信息将被新获取的信息覆盖的比率。 如果未指定任何值,则系统将在训练过程中从学习曲线中提取最佳学习率。

Double
backbone_model
(可选)

指定要用作训练新模型的架构的、预先配置的神经网络。 这种方法称为迁移学习。

  • 1.40625deg该骨干网络经过训练,影像分辨率为每个格网像元覆盖 1.40625 度 × 1.40625 度的区域。 主要用于天气和气候预测。 这是一种高分辨率设置,能够提供更精确的输出,但需要更多的计算资源。
  • 5.625deg该骨干网络经过训练,影像分辨率为每个格网像元覆盖 5.625 度 × 5.625 度的区域。 主要用于天气和气候预测。 这种设置为低分辨率,计算需求较低。
  • DENSENET121预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 121 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DENSENET161预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 161 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DENSENET169预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 169 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • DENSENET201预先配置的模型将是在 Imagenet 数据集上训练的密集网络,其中包含一百万个以上的影像,且深度为 201 个图层。 与使用求和来合并图层的 ResNET 不同,DenseNet 使用串联来合并图层。
  • MOBILENET_V2由于预配置模型将基于 Imagenet 数据库进行训练,且深度为 54 个图层,适用于边缘设备计算,因为其所用的内存更少。
  • RESNET18预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 18 个图层。
  • RESNET34预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 34 个图层。 这是默认设置。
  • RESNET50预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 50 个图层。
  • RESNET101预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 101 个图层。
  • RESNET152预先配置的模型将是在 Imagenet 数据集上训练的残差网络,其中包含一百万个以上的影像,且深度为 152 个图层。
  • VGG11预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 11 个图层。
  • VGG11_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 11 个图层。
  • VGG13预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 13 个图层。
  • VGG13_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 13 个图层。
  • VGG16预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 16 个图层。
  • VGG16_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 16 个图层。
  • VGG19预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像以将影像分类为 1000 个对象类别,且深度为 19 个图层。
  • VGG19_BN预配置模型将基于 VGG 网络,但具有批量归一化功能,这意味着网络中的每个图层都已归一化。 它在 Imagenet 数据集上进行了训练,具有 19 个图层。
  • DARKNET53预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,其中包含一百万个以上的影像,且深度为 53 个图层。
  • REID_V1预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • REID_V2预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,用于对象追踪。
  • RESNEXT50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 它是同质神经网络,可减少常规 ResNet 所需的超参数的数量。
  • WIDE_RESNET50预先配置的模型将是在 Imagenet 数据集上训练的卷积神经网络,深度为 50 个图层。 其架构与 ResNET 相同,但是通道更多。
  • SR3预配置模型将使用通过重复细化的超分辨率 (SR3) 模型。 SR3 将根据条件图像生成调整去噪扩散概率模型并通过随机去噪过程实现超分辨率。 有关详细信息,请参阅 arXiv 站点上的通过迭代细化实现图像超分辨率
  • SR3_UVIT此骨干网络是 Vision Transformer (ViT) 架构的特定实现,设计用于扩散模型中的图像生成和 SR3 任务。
  • VIT_B预配置的 Segment Anything Model (SAM) 将与基础神经网络大小搭配使用。 这是最小大小。 有关详细信息,请参阅 arXiv 站点上的 Segment Anything
  • VIT_L预配置的 Segment Anything Model (SAM) 将与较大的神经网络大小搭配使用。 有关详细信息,请参阅 arXiv 站点上的 Segment Anything
  • VIT_H预配置的 Segment Anything Model (SAM) 将与巨大的神经网络大小搭配使用。 这是最大大小。 有关详细信息,请参阅 arXiv 站点上的 Segment Anything

此外,从 PyTorch Image Models (timm) 指定受支持卷积神经网络时还可以使用 timm 作为前缀,例如 timm:resnet31、timm:inception_v4、timm:efficientnet_b3 等。

String
pretrained_model
(可选)

将用于微调新模型的预训练模型。 输入为 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。

可以对具有相似类的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。

File
validation_percentage
(可选)

将用于验证模型的训练样本的百分比。 默认值为 10。

Double
stop_training
(可选)

指定是否将实施提前停止。

  • STOP_TRAINING将实施提前停止,当模型不再改进时,无论所指定的 max_epochs 参数值是什么,模型训练都将停止。 这是默认设置。
  • CONTINUE_TRAINING不会实施提前停止,模型训练将一直持续,直至达到 max_epochs 参数值为止。
Boolean
freeze
(可选)

指定是否冻结预训练模型中的骨干层,以使权重和偏差保持原始设计。

  • FREEZE_MODEL将冻结骨干图层,预定义的权重和偏差不会在 backbone_model 参数中进行更改。 这是默认设置。
  • UNFREEZE_MODEL不会冻结骨干图层,backbone_model 参数的权重和偏差可能会进行更改以更好地适合您的训练样本。 这将需要花费更多的时间来处理,但通常会产生更好的结果。
Boolean
augmentation
(可选)

指定要使用的数据增强类型。

数据增强方法使用现有数据创建经过修改的数据集副本,实现人为增加训练集合。

  • DEFAULT将使用默认数据增强方法和值。包含的默认数据增强方法包括 cropdihedral_affinebrightnesscontrastzoom。 这些默认值通常适用于卫星影像。
  • NONE将不会使用数据增强。
  • CUSTOM数据增强值将使用 augmentation_parameters 参数进行指定。
  • FILE将使用 transforms.json 文件为训练和验证数据集的数据增强指定 fastai 转换,该文件位于训练数据所在的文件夹中。有关不同转换的详细信息,请参阅 fastai 网站中的 vision transforms
String
augmentation_parameters
[augmentation_parameters,...]
(可选)

在增强参数中指定每个转换对应的值。

  • rotate - 影像将按概率 (p) 随机旋转(以度为单位)。 如果度数是一个范围 (a,b),将在 ab 之间均匀赋值。 默认值为 30.0; 0.5。
  • brightness - 影像亮度将根据变化值随机调整,概率为 (p)。 变化为 0 时会将影像转换为最暗,变化为 1 时会将影像转换为最亮。 变化为 0.5 时不会调整亮度。 如果变化是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.4,0.6); 1.0。
  • contrast - 影像对比度将根据比例值随机调整,概率为 (p)。 比例为 0 时会将影像转换为灰度,比例大于 1 时会将影像转换为超级对比度。 比例为 1 时不会调整对比度。 如果比例是一个范围 (a,b),将在 ab 之间对增强进行均匀赋值。 默认值为 (0.75, 1.5); 1.0。
  • zoom - 影像将根据比例值随机放大。 缩放值采用 scale(a,b); p 形式。 默认值为 (1.0, 1.2); 1.0,其中 p 为概率。 仅当比例大于 1.0 时,才会在影像上进行放大。 如果比例是一个范围 (a,b),将在 ab 之间进行均匀赋值。
  • crop - 将随机裁剪影像。 裁剪值采用 size;p;row_pct;col_pct 形式,其中 p 为概率。 位置根据 (col_pct, row_pct), 确定,其中 col_pctrow_pct 在 0 和 1 之间进行归一化。 如果 col_pctrow_pct 是一个范围 (a,b),将在 ab 之间进行均匀赋值。 默认值为 chip_size;1.0; (0, 1); (0, 1),其中 224 为默认影像片大小。

Value Table
chip_size
(可选)

将用于训练模型的影像大小。 影像将裁剪为指定的影像片大小。

默认影像片大小将为训练数据的切片大小。 如果 x- 和 y- 切片大小不同,则会使用较小的值作为默认影像片大小。 影像片大小应小于输入文件夹中所有影像的最小 x- 或 y- 切片大小。

Long
resize_to
(可选)

调整影像片大小。 在调整影像片大小后,将裁剪影像片大小的像素块,以用于训练。 该参数将仅应用于对象检测 (PASCAL VOC)、对象分类(已标注切片)和超分辨率数据。

大小调整值通常为影像片大小值的一半。 如果此大小调整值小于影像片大小值,则将使用大小调整值创建像素块进行训练。

String
weight_init_scheme
(可选)

指定要用于为图层初始化权重的方案。

要使用多光谱数据训练模型,模型必须容纳不同类型的可用波段。 为此,需要重新初始化模型中的第一个图层。

  • RANDOM随机权重将针对非 RGB 波段进行初始化,而预培训权重将为 RGB 波段保留。 这是默认设置。
  • RED_BAND与预训练模型图层中的红色波段对应的权重将针对非 RGB 波段进行克隆,而预训练权重将为 RGB 波段保留。
  • ALL_RANDOM随机权重将针对 RGB 波段以及非 RGB 波段进行初始化。 此选项仅适用于多光谱影像。

仅当在模型中使用多光谱影像时,此参数才适用。

String
monitor
(可选)

指定在检查点设置和提前停止时要监控的指标。

  • VALID_LOSS将监控验证损失。 如果验证损失不再发生明显变化,则模型将停止。 这是默认设置。
  • AVERAGE_PRECISION将监控每个阈值处的加权精度均值。 如果此值不再发生明显变化,则模型将停止。
  • ACCURACY将监控正确预测数与预测总数之比。 如果此值不再发生明显变化,则模型将停止。
  • F1_SCORE将监控模型的精确率和召回率得分组合。 如果此值不再发生明显变化,则模型将停止。
  • MIOU将监控测试数据集的所有影像中已分割对象的交并比平均值。 如果此值不再发生明显变化,则模型将停止。
  • DICE将使用切分指标监控模型性能。 如果此值不再发生明显变化,则模型将停止。该值范围可以介于 0 到 1 之间。 值 1 表示验证数据与训练数据之间像素完全匹配。
  • PRECISION将监控衡量模型在将样本分类为正样本时的准确性的精确率。 如果此值不再发生明显变化,则模型将停止。精确率为正确分类的正样本数与已分类样本总数(正确或错误)之比。
  • RECALL将监控衡量模型检测正样本的能力的召回率。 如果此值不再发生明显变化,则模型将停止。召回率越高,检测到的正样本越多。 召回率值为正确分类的正样本数与正样本总数之比。
  • CORPUS_BLEU将监控 Corpus blue 分数。 如果此值不再发生明显变化,则模型将停止。此分数用于计算多个句子的准确性,例如段落或文档。
  • MULTI_LABEL_FBETA将监控精确率和召回率的加权调和均值。 如果此值不再发生明显变化,则模型将停止。这通常称为 F-beta 分数。
String

派生输出

名称说明数据类型
out_model_file

输出已训练模型文件。

File

代码示例

TrainDeepLearningModel 示例 1(Python 窗口)

本示例使用 U-Net 方法来训练树分类模型。

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
# Execute 
TrainDeepLearningModel(r"C:\DeepLearning\TrainingData\Roads_FC", 
     r"C:\DeepLearning\Models\Fire", 40, "UNET", 16, "# #", None, 
     "RESNET34", None, 10, "STOP_TRAINING", "FREEZE_MODEL")
TrainDeepLearningModel 示例 2(独立脚本)

本示例使用 SSD 方法来训练对象检测模型。

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
#Define input parameters
in_folder = "C:\\DeepLearning\\TrainingData\\Cars" 
out_folder = "C:\\Models\\Cars"
max_epochs = 100
model_type = "SSD"
batch_size = 2
arg = "grids '[4, 2, 1]';zooms '[0.7, 1.0, 1.3]';ratios '[[1, 1], [1, 0.5], [0.5, 1]]'"
learning_rate = 0.003
backbone_model = "RESNET34" 
pretrained_model = "C:\\Models\\Pretrained\\vehicles.emd"
validation_percent = 10
stop_training = "STOP_TRAINING"
freeze = "FREEZE_MODEL"


# Execute
TrainDeepLearningModel(in_folder, out_folder, max_epochs, model_type, 
     batch_size, arg, learning_rate, backbone_model, pretrained_model, 
     validation_percent, stop_training, freeze)

许可信息

  • Basic: 需要 Image Analyst
  • Standard: 需要 Image Analyst
  • Advanced: 需要 Image Analyst

相关主题